Files
amethyst/commons/plans/README.md
Claude 78ddbc30bb build: bump quartz to 2.2.0; time quartz's own NIP-19 codec in the benchmark
2.2.0 carries the single-pass Bech32/TLV codec and the 255-byte TLV fix
(vitorpamplona/quartz#14). The test-only prototype that the benchmark
compared it against is gone: quartz now is that codec, so the benchmark
times quartz alone and checks that every entity round-trips. The plan
records the shipped state.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VN3PFcMEkCT9ZFXtoUw4Y2
2026-10-23 12:27:19 +00:00

40 lines
7.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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-20-nostr-dev-tools.md](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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. |