Files
amethyst/commons/plans/README.md
Claude ffce4af009 feat(napplet): run a napplet inside its note
A napplet card can run the app in place: a poster with Run here, one run
at a time, a bar above the page the page can't draw over (Open, Stop),
and the last frame left behind when it stops. Platforms supply the live
surface through AppPlatform.InlineNappletSurface.

The feed never asks the user anything: an inline run is marked by the
trusted launcher (NappletLaunch.inline), keeps what the user already
granted, and the broker refuses whatever would prompt and records it in
NappletInlineAsks, so the note can offer to open the app instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NQ76C3uhMzzWRfB6NNxYzf
2026-10-30 04:44:47 +00:00

8.4 KiB
Raw Permalink Blame History

commons plans

Audited 2026-06-30 (+ 2026-09-12 split entry, 2026-09-27 migration and one-UI entries, 2026-10-09 iOS and web entries, 2026-10-17 platform review).

In progress

Plan Summary
2026-10-30-inline-napplets.md Run a NIP-5D napplet inside its note: a poster with Run here, one run at a time, a trusted bar above the page, and no consent dialogs from the feed (the broker refuses and the note offers Open). Android reuses the favorite tabs' cross-process surface; the desktop draws an off-screen Chromium browser (OffscreenCefBrowser) as an image. Desktop verified headless; Android not yet run on a device.
2026-10-20-nostr-dev-tools.md In-app Nostr developer tools (Android + Desktop): a hub in Settings, NIP-19 converter, event inspector (id/signature check, also from a note's menu), kind lookup (type a number → name + every way clients encode it: events sampled from relays found via NIP-66, grouped by client or tag shape, with examples), kind browser, "find this event on relays", and a raw relay console with REQ/COUNT builders and confirm-before-AUTH. Prototype shipped; ranks the next tools (rebroadcast, REQ playground, kind 0/3/10002 history restore, zap/LNURL and NIP-05 debuggers).
2026-05-04-custom-feeds-plan.md Custom feed creation/discovery/management for Desktop; core model + builder + kind 31890 + desktop UI shipped, but relay-filter layer, DVM marketplace, kind 10090 sync, and list resolution still pending.
2026-05-06-nest-subscription-manager-extraction.md Split the per-speaker subscription state machine out of NestViewModel; only the ActiveSubscription stepping-stone is extracted so far.
2026-10-09-legacy-desktop-retirement.md What each legacy-desktop-only feature becomes before runLegacy is deleted: port the privacy lock (whole app / messages / wallet, Android too), the relay latency engine, custom feeds (in the top-bar picker), a compression preview with resolution steps, a NIP-30 emoji picker, and a deck with workspaces on the shared shell; discard the rest. Decided, not started.
2026-09-27-one-ui-android-desktop.md The target. Android ships on laptops, so the whole UI (screens + navigation shell) moves to commonsUI, amethyst becomes an Android shim, and a new JVM desktopApp renders the same UI. Measures Wave 4: Account's 77-file move-group, its 5 blocked files and 14 seams, and AccountViewModel's dependencies; sequences the rest.
2026-08-30-commons-migration-sweep.md The running log of moving amethyst/ code into commons/commonsUI: waves, what moved each round. LocalCache has moved. Its STAY list and Wave 2 part B are superseded by the one-UI plan above.
2026-05-30-amethyst-to-commons-migration.md The original roadmap for the same move; superseded in practice by the sweep tracker above.
2026-04-21-event-renderer.md Cross-platform UI-agnostic RenderedEvent subsystem shared by Amy, Desktop, and Android. Core, 12 kind renderers and the JSON formatter shipped (amy notes show/thread/feed, notifications); the Compose formatter and the Android/Desktop switch-over remain.

Queued

Plan Summary
2026-10-09-ios-app.md iOS as a third shim of the One-UI app, at feature parity with Android. Part A is groundwork shared with web: a nonJvmMain source set, Ktor transports, and the shim graph and last screens moved out of jvmAndroid. Part B is the iOS app: Keychain, AVPlayer, APNs + Notification Service Extension, WKWebView napplets, CallKit, nests, Tor. Decided: direct APNs, the richtext fork gains iOS/wasm targets, scheduled posts hidden on iOS. Supersedes amethyst/plans/2026-05-24-ios-support.md. Proposed.
2026-10-09-web-app.md The same app in the browser via Compose for Web (wasmJs), reusing the iOS plan's Part A. Starts with a spike that measures whether one browser thread keeps up with event ingest, then the IO-dispatcher and sync-crypto fixes for wasm, a :webApp shim, NIP-07 login, and CORS/fonts/media. Smaller scope than Android, with a table of what ships. On hold: a browser tab cannot inject NIP-07 into the websites its in-app browser opens, which the maintainer made a condition.
2026-10-07-wot-network-index.md Download every NIP-85 kind 30382 card from the user's trust provider (~300k) into a 6 MB on-disk sorted index (not LocalCache), kept current with small updates, to gate DM Known/New, Curated notifications and replies by a minimum trust score; includes Brainstorm onboarding. Implemented except public chats, amy wot and Desktop.
2026-08-03-poll-results-page.md Extended NIP-88 poll results page (per-option counts + who voted for what) for Android and Desktop; also specifies four tally-correctness fixes and the missing poll-relay subscription. Proposed, not started.
2026-10-17-platform-code-sharing-review.md Review of the code still in amethyst/ and desktopApp/ after the one-UI move: eight Desktop bugs (GIFs bypass Tor, blank place names and meeting events, a dead-end QR scanner, no-op calendar reminders, no WoT refresh, raw payment text, robohash Concord images; all fixed 2026-10-18), dead legacy Desktop code (deleted 2026-10-18), and ranked moves for each direction (Android→shared, Desktop→shared such as the tile map, and duplicates such as Tor, image loading, notifications and the image viewer). Proposed.

Shipped

Plan Summary
2026-10-23-nip19-codec-speed.md NIP-19 encode/decode cost, per entity: quartz's Bech32 boxes every 5-bit value, copies each string several times and parses TLV into a map of copies. The single-pass codec (identical output, benchmarked in commons jvmTest) encodes 3.5–4.2× faster with ~5× less allocation and decodes 3–4× faster with 6–9× less. Also records a TLV bug: values over 255 bytes produce an naddr quartz itself cannot decode. Shipped in quartz 2.2.0 (vitorpamplona/quartz#14) and bumped here, with the call sites that cite other people's d-tags moved to a fallback that never throws.
2026-10-20-nip05-remote-signer-login.md Signing login from a name@domain address: read the NIP-05 document's nip46 field (the spec's name=_ shape and the legacy nip46[pubkey] shape nostr-tools uses), connect through the existing bunker / nostrconnect:// use cases and auth_url prompt, and require the signer's account to match the address. Falls back to the read-only login. Implemented for Amethyst and amy; not yet checked against a live provider.
2026-10-15-dlist-three-tier-rendering.md Decentralized List items drawn in three tiers after Brainstorm-UI ADRs 0004/0007: raw tags, the governing definition (copy resolution, display hints, URL templates, media, location, "More fields"), and hand-made views for GitHub accounts, food and drink places and books on the item's page. Third-party enrichment (GitHub, Open Library) not ported.
2026-09-12-audit-findings.md Bug/performance audit of commons + commonsUI after the split: 34 verified fixes shipped, 4 deferred with rationale, 6 rejected.
2026-09-12-commons-ui-split.md Split the Compose half of commons into the new :commonsUI module (same packages, api(:commons)), so cli no longer carries Compose/Skiko; records the classification method and follow-ups.

Archived (shipped)

Plan Summary
archive/2026-05-04-custom-feeds-testing-sheet.md Test sheet recording the completed custom-feeds phases (unit + manual coverage).
archive/2026-05-05-feed-builder-enhancements-plan.md Six FeedBuilderDialog enhancements (npub decode, author search, kind filters, edit/delete, save-as-feed, exclude authors) — all landed.