diff --git a/amethyst/plans/2026-05-24-ios-support.md b/amethyst/plans/2026-05-24-ios-support.md index 340b2eeb24..2c73f93df7 100644 --- a/amethyst/plans/2026-05-24-ios-support.md +++ b/amethyst/plans/2026-05-24-ios-support.md @@ -1,5 +1,8 @@ # iOS Support for Amethyst +> **Status:** in-progress — `iosArm64`/`iosSimulatorArm64` targets are configured in `quartz` and `commons` (Phase 1), but no `iosApp` module exists yet — later phases not built. +> _Audited 2026-06-30._ + **Date:** 2026-05-24 **Status:** Phase 1 complete; Phase 2 in flight **Owner:** TBD diff --git a/amethyst/plans/2026-06-20-napplet-inter-applet.md b/amethyst/plans/2026-06-20-napplet-inter-applet.md index cc974f9605..b5cb6ed6e4 100644 --- a/amethyst/plans/2026-06-20-napplet-inter-applet.md +++ b/amethyst/plans/2026-06-20-napplet-inter-applet.md @@ -1,5 +1,8 @@ # Napplet inter-applet communication (NAP-INC / NAP-INTENT) — design notes +> **Status:** queued — Explicitly deferred; no `MESSAGING` capability exists in `NappletCapability` and the prerequisites (multi-applet hosting, archetype registry) are unbuilt. +> _Audited 2026-06-30._ + **Date:** 2026-06-20 **Status:** Deferred — design only. Prereqs not yet built (see below). **Parent:** `amethyst/plans/2026-06-19-napplet-sandbox-host.md` diff --git a/amethyst/plans/README.md b/amethyst/plans/README.md new file mode 100644 index 0000000000..ce70e7b511 --- /dev/null +++ b/amethyst/plans/README.md @@ -0,0 +1,36 @@ +# amethyst plans + +_Audited 2026-06-30. 21 plans: 19 shipped (archived), 1 in-progress, 1 queued, 0 abandoned._ + +## In progress +| Plan | Summary | +| ---- | ------- | +| [2026-05-24-ios-support.md](2026-05-24-ios-support.md) | Incremental KMP-to-iOS port; quartz/commons iOS targets are configured (Phase 1) but no `iosApp` module exists yet. | + +## Queued +| Plan | Summary | +| ---- | ------- | +| [2026-06-20-napplet-inter-applet.md](2026-06-20-napplet-inter-applet.md) | NAP-INC / NAP-INTENT inter-applet messaging — deferred; prerequisites (multi-applet hosting, archetype registry, `MESSAGING` capability) not yet built. | + +## Archived (shipped) +| Plan | Summary | +| ---- | ------- | +| [archive/2026-05-14-onchain-zaps.md](archive/2026-05-14-onchain-zaps.md) | NIP-BC (kind 8333) onchain Bitcoin zaps — hand-rolled `quartz/nipBCOnchainZaps/` consensus layer plus Android send/receive/display. | +| [archive/2026-05-25-appfunctions-signer-prompts.md](archive/2026-05-25-appfunctions-signer-prompts.md) | How AppFunctions write verbs acquire signatures across the three signer types; write verbs now ship. | +| [archive/2026-05-26-appfunctions-gemini-discovery.md](archive/2026-05-26-appfunctions-gemini-discovery.md) | Verifying Gemini-side discovery of Amethyst's AppFunctions; description-based (`isDescribedByKDoc`) discovery shipped. | +| [archive/2026-05-26-appfunctions-screens-as-verbs.md](archive/2026-05-26-appfunctions-screens-as-verbs.md) | Map every Amethyst screen's feed filter to an AppFunction/MCP verb; 46 verbs now ship. | +| [archive/2026-05-26-avif-implementation-plan.md](archive/2026-05-26-avif-implementation-plan.md) | Task-by-task plan for AVIF support via a `MediaMimeTypes` helper across the upload pipeline. | +| [archive/2026-05-26-avif-support.md](archive/2026-05-26-avif-support.md) | Comprehensive design making AVIF a first-class image format on every Amethyst surface. | +| [archive/2026-05-27-avif-instrumented-tests-design.md](archive/2026-05-27-avif-instrumented-tests-design.md) | Design for on-device AVIF upload-pipeline regression tests with committed fixtures. | +| [archive/2026-05-27-avif-instrumented-tests-plan.md](archive/2026-05-27-avif-instrumented-tests-plan.md) | Implementation plan for the AVIF instrumented + JVM unit tests and their fixtures. | +| [archive/2026-06-01-dm-live-tail-and-history-slices.md](archive/2026-06-01-dm-live-tail-and-history-slices.md) | DM loading split into a fixed live tail plus per-relay backward history paging (`WindowLoadTracker` / `RelayLoadingCursors`). | +| [archive/2026-06-19-napplet-sandbox-host.md](archive/2026-06-19-napplet-sandbox-host.md) | Keyless `:napplet`-process WebView host with brokered, consent-gated capabilities for NIP-5A/5D content. | +| [archive/2026-06-20-napplet-ecosystem-audit.md](archive/2026-06-20-napplet-ecosystem-audit.md) | Audit of our napplet shell against the upstream `@napplet` SDK; wire-compat gaps subsequently closed. | +| [archive/2026-06-21-napplet-code-audit.md](archive/2026-06-21-napplet-code-audit.md) | Code audit of the napplet subsystem recording correctness/perf/refactor fixes and deferred items. | +| [archive/2026-06-21-napplet-sdk-conformance-audit.md](archive/2026-06-21-napplet-sdk-conformance-audit.md) | Feature-by-feature SDK conformance audit; the four conformance breakers were fixed and pinned by tests. | +| [archive/2026-06-22-napplet-nsite-security.md](archive/2026-06-22-napplet-nsite-security.md) | Security review of the nsite/napplet attack surface; launch-token identity and per-applet origins landed. | +| [archive/2026-06-23-napplet-nap-theme-notify-inc.md](archive/2026-06-23-napplet-nap-theme-notify-inc.md) | Add the `theme`, `notify`, and `inc` NAP domains so demo napplets boot; capabilities + `NappletIncBus` shipped. | +| [archive/2026-06-24-napplet-embedded-tabs.md](archive/2026-06-24-napplet-embedded-tabs.md) | Embedded warm bottom-bar napplet/nsite/browser tabs via `SurfaceControlViewHost`, in the new `:nappletHost` module. | +| [archive/2026-06-25-embed-text-selection-native-parity.md](archive/2026-06-25-embed-text-selection-native-parity.md) | Host-drawn text selection (handles, magnifier, toolbar, IME proxy) for embedded sandboxed surfaces. | +| [archive/2026-06-25-web-app-naming.md](archive/2026-06-25-web-app-naming.md) | Naming overhaul for web-app / nApplet / nSite / favorite surfaces (route, screen, controller renames). | +| [archive/2026-06-26-nsite-napplet-favorite-icons.md](archive/2026-06-26-nsite-napplet-favorite-icons.md) | Derive favorited nSite/nApplet bottom-nav icons from verified manifest blobs (`NappletIconPath`). | diff --git a/amethyst/plans/2026-05-14-onchain-zaps.md b/amethyst/plans/archive/2026-05-14-onchain-zaps.md similarity index 98% rename from amethyst/plans/2026-05-14-onchain-zaps.md rename to amethyst/plans/archive/2026-05-14-onchain-zaps.md index d2725b58e5..4e06e084b3 100644 --- a/amethyst/plans/2026-05-14-onchain-zaps.md +++ b/amethyst/plans/archive/2026-05-14-onchain-zaps.md @@ -1,5 +1,8 @@ # Onchain Zaps in Amethyst +> **Status:** shipped — Full `quartz/nipBCOnchainZaps/` consensus + builder + verify layer ships with Android model/UI wiring (`OnchainZapResolver`, `OnchainZapEvent` view, `ReusableZapButton`). +> _Audited 2026-06-30._ + **Date:** 2026-05-14 **Status:** Active diff --git a/amethyst/plans/2026-05-25-appfunctions-signer-prompts.md b/amethyst/plans/archive/2026-05-25-appfunctions-signer-prompts.md similarity index 98% rename from amethyst/plans/2026-05-25-appfunctions-signer-prompts.md rename to amethyst/plans/archive/2026-05-25-appfunctions-signer-prompts.md index 787b30bf26..370deb22c8 100644 --- a/amethyst/plans/2026-05-25-appfunctions-signer-prompts.md +++ b/amethyst/plans/archive/2026-05-25-appfunctions-signer-prompts.md @@ -1,5 +1,8 @@ # AppFunctions signer prompts — design +> **Status:** shipped — `AmethystAppFunctions.kt` ships 46 `@AppFunction` verbs including write verbs that acquire signatures across signer types. +> _Audited 2026-06-30._ + **Date:** 2026-05-25 **Status:** Draft — no code yet diff --git a/amethyst/plans/2026-05-26-appfunctions-gemini-discovery.md b/amethyst/plans/archive/2026-05-26-appfunctions-gemini-discovery.md similarity index 96% rename from amethyst/plans/2026-05-26-appfunctions-gemini-discovery.md rename to amethyst/plans/archive/2026-05-26-appfunctions-gemini-discovery.md index e66007e512..f44577c064 100644 --- a/amethyst/plans/2026-05-26-appfunctions-gemini-discovery.md +++ b/amethyst/plans/archive/2026-05-26-appfunctions-gemini-discovery.md @@ -1,5 +1,8 @@ # Verifying Gemini-side AppFunctions discovery +> **Status:** shipped — Verification doc; verbs ship with `@AppFunction(isDescribedByKDoc = true)` description-based discovery as the doc concludes. +> _Audited 2026-06-30._ + **Date:** 2026-05-26 **Status:** Active — answers the open question from `2026-05-25-appfunctions-signer-prompts.md` diff --git a/amethyst/plans/2026-05-26-appfunctions-screens-as-verbs.md b/amethyst/plans/archive/2026-05-26-appfunctions-screens-as-verbs.md similarity index 98% rename from amethyst/plans/2026-05-26-appfunctions-screens-as-verbs.md rename to amethyst/plans/archive/2026-05-26-appfunctions-screens-as-verbs.md index f149d00818..a90f8456db 100644 --- a/amethyst/plans/2026-05-26-appfunctions-screens-as-verbs.md +++ b/amethyst/plans/archive/2026-05-26-appfunctions-screens-as-verbs.md @@ -1,5 +1,8 @@ # All Amethyst screens as AppFunctions / MCP endpoints +> **Status:** shipped — 46 `@AppFunction` verbs ship in `AmethystAppFunctions.kt`, exceeding the screen-to-verb surface this plan proposed. +> _Audited 2026-06-30._ + **Date:** 2026-05-26 **Status:** Active — informs the v1 read-verb surface and guides future MCP work diff --git a/amethyst/plans/2026-05-26-avif-implementation-plan.md b/amethyst/plans/archive/2026-05-26-avif-implementation-plan.md similarity index 99% rename from amethyst/plans/2026-05-26-avif-implementation-plan.md rename to amethyst/plans/archive/2026-05-26-avif-implementation-plan.md index f7bf781771..2de23e1922 100644 --- a/amethyst/plans/2026-05-26-avif-implementation-plan.md +++ b/amethyst/plans/archive/2026-05-26-avif-implementation-plan.md @@ -1,5 +1,8 @@ # AVIF Support Implementation Plan +> **Status:** shipped — `service/uploads/MediaMimeTypes.kt` and the rest of the AVIF upload pipeline are present in `amethyst/`. +> _Audited 2026-06-30._ + > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. **Goal:** Make AVIF (still and animated) work as a first-class image format in Amethyst across every user-visible surface — uploads (Blossom + NIP-96), feeds, profiles, DMs, emoji packs, reactions, gallery, and caching — with graceful no-crash fallback on Android API < 31. diff --git a/amethyst/plans/2026-05-26-avif-support.md b/amethyst/plans/archive/2026-05-26-avif-support.md similarity index 99% rename from amethyst/plans/2026-05-26-avif-support.md rename to amethyst/plans/archive/2026-05-26-avif-support.md index 54317b3601..b1c3689ac1 100644 --- a/amethyst/plans/2026-05-26-avif-support.md +++ b/amethyst/plans/archive/2026-05-26-avif-support.md @@ -1,5 +1,8 @@ # AVIF support — comprehensive design +> **Status:** shipped — AVIF upload/display support landed — `MediaMimeTypes.kt` plus the compressor/stripper/preview changes are in tree. +> _Audited 2026-06-30._ + **Issue:** [vitorpamplona/amethyst#837](https://github.com/vitorpamplona/amethyst/issues/837) **Date:** 2026-05-26 **Branch:** `feat/avif-support` (based on `d1610bf97`, origin/main = upstream/main) diff --git a/amethyst/plans/2026-05-27-avif-instrumented-tests-design.md b/amethyst/plans/archive/2026-05-27-avif-instrumented-tests-design.md similarity index 98% rename from amethyst/plans/2026-05-27-avif-instrumented-tests-design.md rename to amethyst/plans/archive/2026-05-27-avif-instrumented-tests-design.md index ed23d66e81..d3230ad6c9 100644 --- a/amethyst/plans/2026-05-27-avif-instrumented-tests-design.md +++ b/amethyst/plans/archive/2026-05-27-avif-instrumented-tests-design.md @@ -1,5 +1,8 @@ # Design — AVIF instrumented tests +> **Status:** shipped — The designed test files and AVIF fixtures exist under `amethyst/src/androidTest/` and `src/test/`. +> _Audited 2026-06-30._ + **Date:** 2026-05-27 **Status:** Design (pre-implementation) **Owning module:** `amethyst/` diff --git a/amethyst/plans/2026-05-27-avif-instrumented-tests-plan.md b/amethyst/plans/archive/2026-05-27-avif-instrumented-tests-plan.md similarity index 99% rename from amethyst/plans/2026-05-27-avif-instrumented-tests-plan.md rename to amethyst/plans/archive/2026-05-27-avif-instrumented-tests-plan.md index f066305208..6a03f510ac 100644 --- a/amethyst/plans/2026-05-27-avif-instrumented-tests-plan.md +++ b/amethyst/plans/archive/2026-05-27-avif-instrumented-tests-plan.md @@ -1,5 +1,8 @@ # AVIF Instrumented Tests — Implementation Plan +> **Status:** shipped — `AvifUploadPipelineInstrumentedTest.kt`, `MediaMimeTypesTest.kt`, and the three `.avif` fixtures are committed. +> _Audited 2026-06-30._ + > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. **Goal:** Add an Android on-device test layer that catches regressions in the AVIF upload pipeline and the Phase E bugs fixed manually (`C2`–`C8` plus follow-ups in commits `df84475d4`, `5a760c046`, `b9112550b`, `1db110cdf`). diff --git a/amethyst/plans/2026-06-01-dm-live-tail-and-history-slices.md b/amethyst/plans/archive/2026-06-01-dm-live-tail-and-history-slices.md similarity index 98% rename from amethyst/plans/2026-06-01-dm-live-tail-and-history-slices.md rename to amethyst/plans/archive/2026-06-01-dm-live-tail-and-history-slices.md index b93c13e2ec..106c94cf20 100644 --- a/amethyst/plans/2026-06-01-dm-live-tail-and-history-slices.md +++ b/amethyst/plans/archive/2026-06-01-dm-live-tail-and-history-slices.md @@ -1,5 +1,8 @@ # DM loading: live tail + per-relay history paging +> **Status:** shipped — Live-tail + per-relay history layers exist (`WindowLoadTracker`, `RelayLoadingCursors`, `AccountGiftWrapsHistoryEoseManager`); doc marks itself authoritative-as-of-code. +> _Audited 2026-06-30._ + > **Status:** authoritative as of 2026-06-05. The "Current architecture" > section below describes the code as it actually stands. The original > time-slice design and the round-model history are kept at the bottom under diff --git a/amethyst/plans/2026-06-19-napplet-sandbox-host.md b/amethyst/plans/archive/2026-06-19-napplet-sandbox-host.md similarity index 98% rename from amethyst/plans/2026-06-19-napplet-sandbox-host.md rename to amethyst/plans/archive/2026-06-19-napplet-sandbox-host.md index 7300916c2a..30ac24cadb 100644 --- a/amethyst/plans/2026-06-19-napplet-sandbox-host.md +++ b/amethyst/plans/archive/2026-06-19-napplet-sandbox-host.md @@ -1,5 +1,8 @@ # Napplet / nsite sandbox host — design +> **Status:** shipped — Keyless sandbox host shipped: `:nappletHost` module, `NappletBrokerService`, `NappletLaunchRegistry` all present (rendering half superseded by embedded-tabs). +> _Audited 2026-06-30._ + **Date:** 2026-06-19 **Status:** Core (commons) implemented + tested; Android host (`:napplet` process, WebView, broker IPC, consent, DataStore) implemented and compiling — needs on-device verification **Companion:** `quartz/plans/2026-06-19-napplet-nip5a-resolver.md` (the bottom half — manifest parsing + verified Blossom resolution — already landed in `quartz`). diff --git a/amethyst/plans/2026-06-20-napplet-ecosystem-audit.md b/amethyst/plans/archive/2026-06-20-napplet-ecosystem-audit.md similarity index 98% rename from amethyst/plans/2026-06-20-napplet-ecosystem-audit.md rename to amethyst/plans/archive/2026-06-20-napplet-ecosystem-audit.md index f8f1eda762..07b1ede586 100644 --- a/amethyst/plans/2026-06-20-napplet-ecosystem-audit.md +++ b/amethyst/plans/archive/2026-06-20-napplet-ecosystem-audit.md @@ -1,5 +1,8 @@ # Napplet implementation audit vs the upstream SDK / demo runtimes +> **Status:** shipped — Audit doc; the wire-compatibility gaps it identified were subsequently closed (shell handshake, keys, upload now in the broker/codec). +> _Audited 2026-06-30._ + **Date:** 2026-06-20 **Sources:** `github.com/napplet/naps` (NAP specs), `github.com/napplet/web` (`@napplet/shim` SDK), `github.com/kehto/web` + `kehto.github.io/web/playground` diff --git a/amethyst/plans/2026-06-21-napplet-code-audit.md b/amethyst/plans/archive/2026-06-21-napplet-code-audit.md similarity index 96% rename from amethyst/plans/2026-06-21-napplet-code-audit.md rename to amethyst/plans/archive/2026-06-21-napplet-code-audit.md index f14f94bd27..0360ab2e84 100644 --- a/amethyst/plans/2026-06-21-napplet-code-audit.md +++ b/amethyst/plans/archive/2026-06-21-napplet-code-audit.md @@ -1,5 +1,8 @@ # Napplet subsystem code audit — bugs, performance, refactor, placement +> **Status:** shipped — Audit recording completed fixes (LiveSub teardown, broker caching, shim extraction); referenced files exist. +> _Audited 2026-06-30._ + **Date:** 2026-06-21. Scope: the napplet/nsite subsystem (`amethyst/.../napplet/`, `commons/.../napplet/`, `quartz/.../nip5aStaticWebsites` + `nip5dNapplets`). diff --git a/amethyst/plans/2026-06-21-napplet-sdk-conformance-audit.md b/amethyst/plans/archive/2026-06-21-napplet-sdk-conformance-audit.md similarity index 98% rename from amethyst/plans/2026-06-21-napplet-sdk-conformance-audit.md rename to amethyst/plans/archive/2026-06-21-napplet-sdk-conformance-audit.md index 86c52659b8..c343cc7425 100644 --- a/amethyst/plans/2026-06-21-napplet-sdk-conformance-audit.md +++ b/amethyst/plans/archive/2026-06-21-napplet-sdk-conformance-audit.md @@ -1,5 +1,8 @@ # Napplet SDK conformance audit — feature by feature +> **Status:** shipped — Conformance audit; the four breakers are marked fixed and pinned by `NappletSdkConformanceTest`. +> _Audited 2026-06-30._ + **Date:** 2026-06-21 **Authoritative sources (verified, not from memory):** `@napplet/nap@0.15.0` (`dist//types.d.ts` — the canonical wire message types), diff --git a/amethyst/plans/2026-06-22-napplet-nsite-security.md b/amethyst/plans/archive/2026-06-22-napplet-nsite-security.md similarity index 97% rename from amethyst/plans/2026-06-22-napplet-nsite-security.md rename to amethyst/plans/archive/2026-06-22-napplet-nsite-security.md index 6f43618747..d9a14ff27d 100644 --- a/amethyst/plans/2026-06-22-napplet-nsite-security.md +++ b/amethyst/plans/archive/2026-06-22-napplet-nsite-security.md @@ -1,5 +1,8 @@ # Napplet / nsite security review (2026-06-22) +> **Status:** shipped — Security review recording completed hardening; `NappletLaunchRegistry` token model and per-applet origins are in tree. +> _Audited 2026-06-30._ + A review of the attack surface for NIP-5A static sites (nsites) and NIP-5D napplets, the protections in place, and the residual risks — with what was fixed in this pass and what remains as future work. diff --git a/amethyst/plans/2026-06-23-napplet-nap-theme-notify-inc.md b/amethyst/plans/archive/2026-06-23-napplet-nap-theme-notify-inc.md similarity index 94% rename from amethyst/plans/2026-06-23-napplet-nap-theme-notify-inc.md rename to amethyst/plans/archive/2026-06-23-napplet-nap-theme-notify-inc.md index 49f28de3a0..218ce94f31 100644 --- a/amethyst/plans/2026-06-23-napplet-nap-theme-notify-inc.md +++ b/amethyst/plans/archive/2026-06-23-napplet-nap-theme-notify-inc.md @@ -1,5 +1,8 @@ # Napplet NAP domains: theme, notify, inc +> **Status:** shipped — `NappletCapability` has `THEME`/`NOTIFY`/`INC` and `NappletIncBus` is wired into `NappletBrokerService`. +> _Audited 2026-06-30._ + Date: 2026-06-23 Status: in progress diff --git a/amethyst/plans/2026-06-24-napplet-embedded-tabs.md b/amethyst/plans/archive/2026-06-24-napplet-embedded-tabs.md similarity index 98% rename from amethyst/plans/2026-06-24-napplet-embedded-tabs.md rename to amethyst/plans/archive/2026-06-24-napplet-embedded-tabs.md index 6d60895d94..9cbda24dfc 100644 --- a/amethyst/plans/2026-06-24-napplet-embedded-tabs.md +++ b/amethyst/plans/archive/2026-06-24-napplet-embedded-tabs.md @@ -1,5 +1,8 @@ # Embedded napplet / nsite / browser tabs — final architecture +> **Status:** shipped — `EmbeddedTabLayer` and the `:nappletHost` module exist; embedded warm-tab + browser render paths are implemented (PR #3348). +> _Audited 2026-06-30._ + **Date:** 2026-06-24 **Status:** Implemented on `claude/webview-menu-custom-url-ikrgbz` (PR #3348); needs on-device verification. **Supersedes the rendering half of** `amethyst/plans/2026-06-19-napplet-sandbox-host.md` diff --git a/amethyst/plans/2026-06-25-embed-text-selection-native-parity.md b/amethyst/plans/archive/2026-06-25-embed-text-selection-native-parity.md similarity index 99% rename from amethyst/plans/2026-06-25-embed-text-selection-native-parity.md rename to amethyst/plans/archive/2026-06-25-embed-text-selection-native-parity.md index 3b80c805e3..7b2b6fd453 100644 --- a/amethyst/plans/2026-06-25-embed-text-selection-native-parity.md +++ b/amethyst/plans/archive/2026-06-25-embed-text-selection-native-parity.md @@ -1,5 +1,8 @@ # Embedded text selection — native-Android parity +> **Status:** shipped — Doc states core feature-complete; host-drawn selection (handles, magnifier, IME proxy) landed in `EmbeddedTabLayer`/`RemoteImeView`. +> _Audited 2026-06-30._ + **Status:** core feature-complete. The working set landed in `fix(embed): IME typing + host-drawn text selection for embedded surfaces` (commit `e0a2a9ab81`); subsequent sessions added the magnifier, the `SelectionUiState` refactor, hybrid word+char diff --git a/amethyst/plans/2026-06-25-web-app-naming.md b/amethyst/plans/archive/2026-06-25-web-app-naming.md similarity index 95% rename from amethyst/plans/2026-06-25-web-app-naming.md rename to amethyst/plans/archive/2026-06-25-web-app-naming.md index 6920651436..b97bbb9163 100644 --- a/amethyst/plans/2026-06-25-web-app-naming.md +++ b/amethyst/plans/archive/2026-06-25-web-app-naming.md @@ -1,5 +1,8 @@ # Web-app naming overhaul (favorites / browser / app surfaces) +> **Status:** shipped — Renames applied — `WebAppScreen`, `NostrAppScreen`, `EmbeddedWebAppController`, `FavoriteAppsScreen` all present. +> _Audited 2026-06-30._ + ## Problem The in-app "app" surfaces had colliding, sometimes inaccurate names: diff --git a/amethyst/plans/2026-06-26-nsite-napplet-favorite-icons.md b/amethyst/plans/archive/2026-06-26-nsite-napplet-favorite-icons.md similarity index 96% rename from amethyst/plans/2026-06-26-nsite-napplet-favorite-icons.md rename to amethyst/plans/archive/2026-06-26-nsite-napplet-favorite-icons.md index 1e7bf91f53..8cf5b9d1af 100644 --- a/amethyst/plans/2026-06-26-nsite-napplet-favorite-icons.md +++ b/amethyst/plans/archive/2026-06-26-nsite-napplet-favorite-icons.md @@ -1,5 +1,8 @@ # nSite / nApplet favorite icons +> **Status:** shipped — `quartz/.../NappletIconPath.kt` and `amethyst/.../favorites/NappletFavoriteIcon.kt` are in tree. +> _Audited 2026-06-30._ + **Date:** 2026-06-26 **Status:** implemented (pending on-device verification of the blob image-load path) diff --git a/cli/plans/2026-05-28-cashu-cli.md b/cli/plans/2026-05-28-cashu-cli.md index 12886f8244..e2ec230011 100644 --- a/cli/plans/2026-05-28-cashu-cli.md +++ b/cli/plans/2026-05-28-cashu-cli.md @@ -1,5 +1,8 @@ # Cashu (NIP-60 / NIP-61 / NIP-87) in `amy` +> **Status:** in-progress — the full command surface ships under `cli/.../commands/cashu/` (wallet/mint/balance/receive/send/maintenance/mint-rec), but the PR 9 interop harness (`cli/tests/cashu/`) does not exist yet. +> _Audited 2026-06-30._ + **Status:** in progress · **Date:** 2026-05-28 · **Roadmap row:** added to the parity matrix in `cli/ROADMAP.md`. diff --git a/cli/plans/README.md b/cli/plans/README.md new file mode 100644 index 0000000000..5f7cc8e078 --- /dev/null +++ b/cli/plans/README.md @@ -0,0 +1,17 @@ +# cli plans + +_Audited 2026-06-30. 6 plans: 5 shipped (archived), 1 in-progress, 0 queued, 0 abandoned._ + +## In progress +| Plan | Summary | +| ---- | ------- | +| [2026-05-28-cashu-cli.md](2026-05-28-cashu-cli.md) | NIP-60/61/87 Cashu wallet verbs in amy; full command surface ships, production-mint interop harness still pending. | + +## Archived (shipped) +| Plan | Summary | +| ---- | ------- | +| [archive/2026-04-21-cli-distribution.md](archive/2026-04-21-cli-distribution.md) | Native amy distribution via jlink/jpackage with a CI release matrix and Homebrew formula. | +| [archive/2026-04-23-nip17-dm.md](archive/2026-04-23-nip17-dm.md) | NIP-17 DM send/list/await verbs in amy over quartz gift-wrap plumbing. | +| [archive/2026-04-24-file-event-store-nips.md](archive/2026-04-24-file-event-store-nips.md) | Part 3: per-NIP enforcement, slots, tombstones, scrub, and tests for the file-backed event store. | +| [archive/2026-04-24-file-event-store-overview.md](archive/2026-04-24-file-event-store-overview.md) | Part 1: goals and on-disk layout of the filesystem-native IEventStore for amy. | +| [archive/2026-04-24-file-event-store-pipelines.md](archive/2026-04-24-file-event-store-pipelines.md) | Part 2: insert/query/delete/transaction/concurrency pipelines for the file-backed event store. | diff --git a/cli/plans/2026-04-21-cli-distribution.md b/cli/plans/archive/2026-04-21-cli-distribution.md similarity index 92% rename from cli/plans/2026-04-21-cli-distribution.md rename to cli/plans/archive/2026-04-21-cli-distribution.md index 9726d6c166..451876a2d2 100644 --- a/cli/plans/2026-04-21-cli-distribution.md +++ b/cli/plans/archive/2026-04-21-cli-distribution.md @@ -8,6 +8,9 @@ owner: cli # feat(cli): native distribution +> **Status:** shipped — `cli/build.gradle.kts` wires jlink/jpackage (`amyImage`, `jpackageDeb`, `jpackageRpm`), the release CI matrix publishes amy tarball/.deb/.rpm assets, and `cli/packaging/homebrew/amy.rb` exists; broader package-manager submissions remain explicitly-deferred follow-ups. +> _Audited 2026-06-30._ + ## Overview Today `amy` ships only as `./gradlew :cli:run` or a raw `installDist` diff --git a/cli/plans/2026-04-23-nip17-dm.md b/cli/plans/archive/2026-04-23-nip17-dm.md similarity index 98% rename from cli/plans/2026-04-23-nip17-dm.md rename to cli/plans/archive/2026-04-23-nip17-dm.md index 9d69cfaa22..28918e37e2 100644 --- a/cli/plans/2026-04-23-nip17-dm.md +++ b/cli/plans/archive/2026-04-23-nip17-dm.md @@ -1,5 +1,8 @@ # NIP-17 DMs in `amy` +> **Status:** shipped — `DmCommands.kt` ships send/list/await and `FilterGiftWrapsToPubkey` is extracted to `commons/.../relayClient/nip17Dm/`. +> _Audited 2026-06-30._ + **Status:** plan · **Date:** 2026-04-23 · **Roadmap row:** `cli/ROADMAP.md:55` ("NIP-17 DMs send / list / read") · **Order:** step 5 in `cli/ROADMAP.md:91`. diff --git a/cli/plans/2026-04-24-file-event-store-nips.md b/cli/plans/archive/2026-04-24-file-event-store-nips.md similarity index 98% rename from cli/plans/2026-04-24-file-event-store-nips.md rename to cli/plans/archive/2026-04-24-file-event-store-nips.md index 6df67e5929..85236b9fd4 100644 --- a/cli/plans/2026-04-24-file-event-store-nips.md +++ b/cli/plans/archive/2026-04-24-file-event-store-nips.md @@ -1,5 +1,8 @@ # File-backed event store for `amy` — Part 3: NIPs, Enforcement, Scrub, Testing +> **Status:** shipped — NIP-01/09/40/50/62 enforcement, slots, tombstones, tokenizer, and scrub ship in `quartz/jvmMain/.../store/fs/` (`FsSlots`, `FsTombstones`, `FsSearchTokenizer`) with `FsParityTest` coverage. +> _Audited 2026-06-30._ + **Status:** plan · **Date:** 2026-04-24 · **Part 3 of 3** (see `2026-04-24-file-event-store-overview.md`, `2026-04-24-file-event-store-pipelines.md`) diff --git a/cli/plans/2026-04-24-file-event-store-overview.md b/cli/plans/archive/2026-04-24-file-event-store-overview.md similarity index 98% rename from cli/plans/2026-04-24-file-event-store-overview.md rename to cli/plans/archive/2026-04-24-file-event-store-overview.md index 4279375124..09651bf6a5 100644 --- a/cli/plans/2026-04-24-file-event-store-overview.md +++ b/cli/plans/archive/2026-04-24-file-event-store-overview.md @@ -1,5 +1,8 @@ # File-backed event store for `amy` — Part 1: Overview & Layout +> **Status:** shipped — `FsEventStore` and siblings live in `quartz/jvmMain/.../store/fs/` with jvmTest parity tests; `amy store` (stat/scrub/compact/sweep-expired/reindex-fts) wraps it. +> _Audited 2026-06-30._ + **Status:** plan · **Date:** 2026-04-24 · **Part 1 of 3** (see `2026-04-24-file-event-store-pipelines.md`, `2026-04-24-file-event-store-nips.md`) diff --git a/cli/plans/2026-04-24-file-event-store-pipelines.md b/cli/plans/archive/2026-04-24-file-event-store-pipelines.md similarity index 98% rename from cli/plans/2026-04-24-file-event-store-pipelines.md rename to cli/plans/archive/2026-04-24-file-event-store-pipelines.md index 13190cf7f0..1564fdee50 100644 --- a/cli/plans/2026-04-24-file-event-store-pipelines.md +++ b/cli/plans/archive/2026-04-24-file-event-store-pipelines.md @@ -1,5 +1,8 @@ # File-backed event store for `amy` — Part 2: Pipelines +> **Status:** shipped — insert/query/delete/transaction/concurrency are implemented across `FsEventStore`, `FsIndexer`, `FsQueryPlanner`, `FsLockManager`, `FsSlots` in `quartz/jvmMain/.../store/fs/`. +> _Audited 2026-06-30._ + **Status:** plan · **Date:** 2026-04-24 · **Part 2 of 3** (see `2026-04-24-file-event-store-overview.md`, `2026-04-24-file-event-store-nips.md`) diff --git a/commons/plans/2026-04-21-event-renderer.md b/commons/plans/2026-04-21-event-renderer.md index 5baf5ac510..5165500fb2 100644 --- a/commons/plans/2026-04-21-event-renderer.md +++ b/commons/plans/2026-04-21-event-renderer.md @@ -9,6 +9,9 @@ consumers: cli, desktopApp, amethyst # feat(commons): cross-platform event renderer +> **Status:** queued — no `rendering/` subsystem, `RenderedEvent`, or `EventRenderer` exists anywhere in the tree; front-matter status is still "proposed". +> _Audited 2026-06-30._ + ## Overview Introduce a `commons/commonMain/.../rendering/` subsystem that turns a diff --git a/commons/plans/2026-05-04-custom-feeds-plan.md b/commons/plans/2026-05-04-custom-feeds-plan.md index fb4ee35f2d..1a54116a6a 100644 --- a/commons/plans/2026-05-04-custom-feeds-plan.md +++ b/commons/plans/2026-05-04-custom-feeds-plan.md @@ -1,5 +1,8 @@ # Custom Feeds for Amethyst Desktop +> **Status:** in-progress — data model, repository, serializer, builder, search bridge, kind 31890 event, and desktop drawer/dialog/screen all shipped, but Phase 1.5 relay filters (`FeedFilterFactory`/`CustomFilterFeedFilter`/assemblers), the DVM marketplace, kind 10090 sync, and PeopleList/InterestSet resolution are unbuilt ("coming soon"). +> _Audited 2026-06-30._ + **Date:** 2026-05-04 **Branch:** `feat/desktop-custom-feeds` **Status:** Planning diff --git a/commons/plans/2026-05-06-nest-subscription-manager-extraction.md b/commons/plans/2026-05-06-nest-subscription-manager-extraction.md index 61883b0342..67d9582748 100644 --- a/commons/plans/2026-05-06-nest-subscription-manager-extraction.md +++ b/commons/plans/2026-05-06-nest-subscription-manager-extraction.md @@ -1,5 +1,8 @@ # Extract `NestSubscriptionManager` from `NestViewModel` +> **Status:** in-progress — the stepping-stone `ActiveSubscription.kt` is extracted, but the orchestration class `NestSubscriptionManager` does not exist and `reconcileSubscriptions`/`openSubscription`/`closeSubscription`/`fetchSpeakerCatalog` still live in the 2295-line `NestViewModel`. +> _Audited 2026-06-30._ + **Status**: deferred — flagged in the audit pass, not landed yet. ## Why diff --git a/commons/plans/2026-05-30-amethyst-to-commons-migration.md b/commons/plans/2026-05-30-amethyst-to-commons-migration.md index 90de86944a..7e9cdb34ad 100644 --- a/commons/plans/2026-05-30-amethyst-to-commons-migration.md +++ b/commons/plans/2026-05-30-amethyst-to-commons-migration.md @@ -1,5 +1,8 @@ # Amethyst → Commons Migration Plan +> **Status:** queued — the keystone Phase A is untouched: no `Account.kt`/`LocalCache.kt` engine in commons, the amethyst monoliths remain (3757 + 4092 LOC), and `commons/model/account` still holds only the pre-existing `AccountInfo/AccountStorage/SignerType` scaffolding the plan's §0 marks as already-present. +> _Audited 2026-06-30._ + **Date:** 2026-05-30 · **Owning module:** `commons` · **Status:** plan (no code moved yet) Goal: move the **shared** parts of the `amethyst` Android app down into `commons` diff --git a/commons/plans/README.md b/commons/plans/README.md new file mode 100644 index 0000000000..58a2870bfa --- /dev/null +++ b/commons/plans/README.md @@ -0,0 +1,21 @@ +# commons plans + +_Audited 2026-06-30. 6 plans: 2 shipped (archived), 2 in-progress, 2 queued, 0 abandoned._ + +## In progress +| Plan | Summary | +| ---- | ------- | +| [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. | + +## Queued +| Plan | Summary | +| ---- | ------- | +| [2026-04-21-event-renderer.md](2026-04-21-event-renderer.md) | Cross-platform UI-agnostic `RenderedEvent` subsystem shared by Amy, Desktop, and Android; not started. | +| [2026-05-30-amethyst-to-commons-migration.md](2026-05-30-amethyst-to-commons-migration.md) | Roadmap to move shared `amethyst` Android code into `commons`; keystone `Account`/`LocalCache` extraction not begun. | + +## 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. | diff --git a/commons/plans/2026-05-04-custom-feeds-testing-sheet.md b/commons/plans/archive/2026-05-04-custom-feeds-testing-sheet.md similarity index 96% rename from commons/plans/2026-05-04-custom-feeds-testing-sheet.md rename to commons/plans/archive/2026-05-04-custom-feeds-testing-sheet.md index f90735ed4d..fe5234688a 100644 --- a/commons/plans/2026-05-04-custom-feeds-testing-sheet.md +++ b/commons/plans/archive/2026-05-04-custom-feeds-testing-sheet.md @@ -1,5 +1,8 @@ # Custom Feeds — Testing Sheet +> **Status:** shipped — records completed test coverage for the custom-feeds phases that landed (data model, serializer, builder, search bridge, kind 31890); the matching `feeds/custom/` code and tests exist. +> _Audited 2026-06-30._ + **Branch:** `feat/desktop-custom-feeds` **Run:** `./gradlew :desktopApp:run` diff --git a/commons/plans/2026-05-05-feed-builder-enhancements-plan.md b/commons/plans/archive/2026-05-05-feed-builder-enhancements-plan.md similarity index 92% rename from commons/plans/2026-05-05-feed-builder-enhancements-plan.md rename to commons/plans/archive/2026-05-05-feed-builder-enhancements-plan.md index de85496efb..e91a20c663 100644 --- a/commons/plans/2026-05-05-feed-builder-enhancements-plan.md +++ b/commons/plans/archive/2026-05-05-feed-builder-enhancements-plan.md @@ -1,5 +1,8 @@ # Feed Builder Enhancements +> **Status:** shipped — all 6 enhancements (npub decode, author search, kind checkboxes, edit/delete, "Save as Feed", exclude authors) are present in `FeedBuilderDialog.kt`, `FeedsDrawerTab.kt`, and `SearchScreen.kt`. +> _Audited 2026-06-30._ + **Date:** 2026-05-05 **Status:** Implementation diff --git a/desktopApp/plans/2026-05-12-feat-desktop-wallet-zapping-test-coverage-plan.md b/desktopApp/plans/2026-05-12-feat-desktop-wallet-zapping-test-coverage-plan.md index 5b479a72d0..13e2a9b82d 100644 --- a/desktopApp/plans/2026-05-12-feat-desktop-wallet-zapping-test-coverage-plan.md +++ b/desktopApp/plans/2026-05-12-feat-desktop-wallet-zapping-test-coverage-plan.md @@ -8,6 +8,9 @@ origin: desktopApp/plans/2026-05-12-wallet-zapping-phase1-2-plan.md # Desktop Wallet & Zapping Test Coverage +> **Status:** in-progress — Phase 1 (`NwcPaymentHandlerTest`) and Phase 4 (`NwcRpcIntegrationTest`) shipped, but Phase 2 (`WalletColumnStateTest`) and Phase 3 (`ZapDialogLogicTest`) are absent from the codebase. +> _Audited 2026-06-30._ + ## Enhancement Summary (Deepened 2026-05-12) **Key implementation insights from deepening research:** diff --git a/desktopApp/plans/2026-05-21-embedded-wallet-phase2-research.md b/desktopApp/plans/2026-05-21-embedded-wallet-phase2-research.md index bfc383b61f..f76627dd28 100644 --- a/desktopApp/plans/2026-05-21-embedded-wallet-phase2-research.md +++ b/desktopApp/plans/2026-05-21-embedded-wallet-phase2-research.md @@ -1,5 +1,8 @@ # Phase 2: Embedded Self-Custodial Wallet — Research Summary +> **Status:** queued — research summary explicitly "parked" pending NWC parity; no embedded-wallet (Breez/ldk-node/lightning-kmp) code exists. +> _Audited 2026-06-30._ + **Date:** 2026-05-21 **Status:** Research complete, parked. Return after NWC parity (Phase 1) ships. diff --git a/desktopApp/plans/2026-06-21-napplet-desktop-host.md b/desktopApp/plans/2026-06-21-napplet-desktop-host.md index 26a1b81286..b7b53f4ce8 100644 --- a/desktopApp/plans/2026-06-21-napplet-desktop-host.md +++ b/desktopApp/plans/2026-06-21-napplet-desktop-host.md @@ -1,5 +1,8 @@ # Desktop napplet / nsite host — implementation plan +> **Status:** in-progress — the three shared extractions are DONE (`NappletRequestRouter`, `NappletWebContract`, `StaticWebsiteCard` in commons), but the desktop edge (KCEF/JCEF engine, scheme handler, transport, gateways, host UI) has no code in `desktopApp/`. +> _Audited 2026-06-30._ + **Date:** 2026-06-21. Goal: a desktop NIP-5A (nsite) + NIP-5D (napplet) host that **reuses the shared core** the Android host already runs on, so the two stay wire- and policy-identical. This doc is the map: what already works for free, what desktop must build, and the decisions to make. diff --git a/desktopApp/plans/README.md b/desktopApp/plans/README.md new file mode 100644 index 0000000000..c8e82ee69e --- /dev/null +++ b/desktopApp/plans/README.md @@ -0,0 +1,28 @@ +# desktopApp plans + +_Audited 2026-06-30. 13 plans: 10 shipped (archived), 2 in-progress, 1 queued, 0 abandoned._ + +## In progress +| Plan | Summary | +| ---- | ------- | +| [2026-05-12-feat-desktop-wallet-zapping-test-coverage-plan.md](2026-05-12-feat-desktop-wallet-zapping-test-coverage-plan.md) | Desktop wallet/zap test coverage; NWC handler + RPC round-trip tests shipped, wallet-column-state and zap-dialog-logic tests still missing. | +| [2026-06-21-napplet-desktop-host.md](2026-06-21-napplet-desktop-host.md) | Desktop NIP-5A/5D host; shared core extractions done, desktop engine/scheme-handler/transport/UI edge not yet built. | + +## Queued +| Plan | Summary | +| ---- | ------- | +| [2026-05-21-embedded-wallet-phase2-research.md](2026-05-21-embedded-wallet-phase2-research.md) | Research for an embedded self-custodial Lightning wallet (Breez/ldk-node/lightning-kmp); parked, no code. | + +## Archived (shipped) +| Plan | Summary | +| ---- | ------- | +| [archive/2026-05-09-embedded-local-relay-plan.md](archive/2026-05-09-embedded-local-relay-plan.md) | In-process SQLite local relay with write-through + startup hydration + settings UI. | +| [archive/2026-05-11-wallet-zapping-brainstorm.md](archive/2026-05-11-wallet-zapping-brainstorm.md) | Brainstorm map for the desktop wallet & zapping experience (NWC parity shipped). | +| [archive/2026-05-12-wallet-zapping-phase1-2-plan.md](archive/2026-05-12-wallet-zapping-phase1-2-plan.md) | NWC wallet column (connect/balance/send/receive) plus upgraded zapping UX. | +| [archive/2026-05-19-fix-desktop-deb-launch-crash-brainstorm.md](archive/2026-05-19-fix-desktop-deb-launch-crash-brainstorm.md) | Fix .deb launch crash via jlink modules + CI launch smoke test. | +| [archive/2026-05-20-wallet-zapping-manual-testing-sheet.md](archive/2026-05-20-wallet-zapping-manual-testing-sheet.md) | Manual QA sheet for the desktop wallet & zapping feature. | +| [archive/2026-05-23-feat-send-dialog-lnurl-pay-brainstorm.md](archive/2026-05-23-feat-send-dialog-lnurl-pay-brainstorm.md) | Brainstorm for LNURL-pay / lightning-address support in the send dialog. | +| [archive/2026-05-23-feat-send-dialog-lnurl-pay-plan.md](archive/2026-05-23-feat-send-dialog-lnurl-pay-plan.md) | Send dialog accepts LNURL + lightning addresses with auto-detect/resolve flow. | +| [archive/2026-05-23-fix-nsec-session-persistence-brainstorm.md](archive/2026-05-23-fix-nsec-session-persistence-brainstorm.md) | Fix nsec sessions not persisting across restarts (save on App-level scope). | +| [archive/2026-06-08-feat-desktop-image-compression-plan.md](archive/2026-06-08-feat-desktop-image-compression-plan.md) | JPEG re-encode/downscale upload pipeline with EXIF strip + failure dialog, shared with CLI. | +| [archive/2026-06-17-feat-app-launch-optimization-plan.md](archive/2026-06-17-feat-app-launch-optimization-plan.md) | Launch testing/benchmark foundation + targeted launch-path fixes (all in-scope phases landed). | diff --git a/desktopApp/plans/2026-05-09-embedded-local-relay-plan.md b/desktopApp/plans/archive/2026-05-09-embedded-local-relay-plan.md similarity index 98% rename from desktopApp/plans/2026-05-09-embedded-local-relay-plan.md rename to desktopApp/plans/archive/2026-05-09-embedded-local-relay-plan.md index 6e7f84fd33..72cfbb3080 100644 --- a/desktopApp/plans/2026-05-09-embedded-local-relay-plan.md +++ b/desktopApp/plans/archive/2026-05-09-embedded-local-relay-plan.md @@ -1,5 +1,8 @@ # Embedded Local Relay for Amethyst Desktop +> **Status:** shipped — `LocalRelayStore`, `LocalRelayMaintenance`, and `LocalRelaySettingsScreen` all exist in `desktopApp/.../relay/` + `.../ui/settings/`, with `LocalRelayStoreHydrationTest` covering hydration. +> _Audited 2026-06-30._ + ## Enhancement Summary **Deepened on:** 2026-05-09 diff --git a/desktopApp/plans/2026-05-11-wallet-zapping-brainstorm.md b/desktopApp/plans/archive/2026-05-11-wallet-zapping-brainstorm.md similarity index 98% rename from desktopApp/plans/2026-05-11-wallet-zapping-brainstorm.md rename to desktopApp/plans/archive/2026-05-11-wallet-zapping-brainstorm.md index 396ecbacc4..102d27904e 100644 --- a/desktopApp/plans/2026-05-11-wallet-zapping-brainstorm.md +++ b/desktopApp/plans/archive/2026-05-11-wallet-zapping-brainstorm.md @@ -1,5 +1,8 @@ # Desktop Wallet & Zapping Experience - Brainstorm Map +> **Status:** shipped — brainstorm map whose Phase 1-2 (NWC wallet column + zapping UX) shipped; later Cashu/nutzap phases are captured in the parked embedded-wallet research doc. +> _Audited 2026-06-30._ + **Date:** 2026-05-12 **Status:** Brainstorm v2 — phase map with research findings + decisions diff --git a/desktopApp/plans/2026-05-12-wallet-zapping-phase1-2-plan.md b/desktopApp/plans/archive/2026-05-12-wallet-zapping-phase1-2-plan.md similarity index 98% rename from desktopApp/plans/2026-05-12-wallet-zapping-phase1-2-plan.md rename to desktopApp/plans/archive/2026-05-12-wallet-zapping-phase1-2-plan.md index e63ae5adc9..552915b7a7 100644 --- a/desktopApp/plans/2026-05-12-wallet-zapping-phase1-2-plan.md +++ b/desktopApp/plans/archive/2026-05-12-wallet-zapping-phase1-2-plan.md @@ -1,5 +1,8 @@ # Phase 1-2: NWC Wallet Parity + Zapping UX — Implementation Plan +> **Status:** shipped — `WalletColumnScreen` (NWC connect/balance/send/receive), `NwcPaymentHandler`, and the upgraded zap dialog in `NoteActions.kt` all exist; delivered as a desktop wallet column rather than via the proposed `SharedWalletViewModel` extraction. +> _Audited 2026-06-30._ + **Date:** 2026-05-12 **Branch:** `feat/desktop-wallet-zapping` **Status:** Plan — deepened, ready for work diff --git a/desktopApp/plans/2026-05-19-fix-desktop-deb-launch-crash-brainstorm.md b/desktopApp/plans/archive/2026-05-19-fix-desktop-deb-launch-crash-brainstorm.md similarity index 96% rename from desktopApp/plans/2026-05-19-fix-desktop-deb-launch-crash-brainstorm.md rename to desktopApp/plans/archive/2026-05-19-fix-desktop-deb-launch-crash-brainstorm.md index b032be3a7a..819d42d1a9 100644 --- a/desktopApp/plans/2026-05-19-fix-desktop-deb-launch-crash-brainstorm.md +++ b/desktopApp/plans/archive/2026-05-19-fix-desktop-deb-launch-crash-brainstorm.md @@ -1,5 +1,8 @@ # Plan: Fix Desktop .deb Launch Crash + CI Smoke Test +> **Status:** shipped — `DesktopLaunchSmokeTest.kt` and `.github/workflows/smoke-test-desktop.yml` both exist, delivering the launch-test coverage the plan called for. +> _Audited 2026-06-30._ + **Issue:** [#2819](https://github.com/vitorpamplona/amethyst/issues/2819) **Branch:** `fix/desktop-deb-launch-crash` **Date:** 2026-05-19 diff --git a/desktopApp/plans/2026-05-20-wallet-zapping-manual-testing-sheet.md b/desktopApp/plans/archive/2026-05-20-wallet-zapping-manual-testing-sheet.md similarity index 98% rename from desktopApp/plans/2026-05-20-wallet-zapping-manual-testing-sheet.md rename to desktopApp/plans/archive/2026-05-20-wallet-zapping-manual-testing-sheet.md index 83398fd5cb..d9fa545e72 100644 --- a/desktopApp/plans/2026-05-20-wallet-zapping-manual-testing-sheet.md +++ b/desktopApp/plans/archive/2026-05-20-wallet-zapping-manual-testing-sheet.md @@ -1,5 +1,8 @@ # Desktop Wallet & Zapping — Manual Testing Sheet +> **Status:** shipped — manual QA sheet for the shipped desktop wallet column and zapping feature. +> _Audited 2026-06-30._ + **Date:** 2026-05-20 **Branch:** `feat/desktop-wallet-zapping` **Prerequisites:** NWC-compatible wallet (Alby Hub, Coinos, Phoenix, or LNbits) diff --git a/desktopApp/plans/2026-05-23-feat-send-dialog-lnurl-pay-brainstorm.md b/desktopApp/plans/archive/2026-05-23-feat-send-dialog-lnurl-pay-brainstorm.md similarity index 95% rename from desktopApp/plans/2026-05-23-feat-send-dialog-lnurl-pay-brainstorm.md rename to desktopApp/plans/archive/2026-05-23-feat-send-dialog-lnurl-pay-brainstorm.md index def49f9f7e..347583b3a9 100644 --- a/desktopApp/plans/2026-05-23-feat-send-dialog-lnurl-pay-brainstorm.md +++ b/desktopApp/plans/archive/2026-05-23-feat-send-dialog-lnurl-pay-brainstorm.md @@ -1,5 +1,8 @@ # Brainstorm: Send Dialog LNURL-Pay Support +> **Status:** shipped — LNURL / lightning-address support landed in `WalletColumnScreen.kt`'s send dialog (multi-step state machine, ~24 LNURL references). +> _Audited 2026-06-30._ + **Date:** 2026-05-23 **Status:** Ready for planning diff --git a/desktopApp/plans/2026-05-23-feat-send-dialog-lnurl-pay-plan.md b/desktopApp/plans/archive/2026-05-23-feat-send-dialog-lnurl-pay-plan.md similarity index 97% rename from desktopApp/plans/2026-05-23-feat-send-dialog-lnurl-pay-plan.md rename to desktopApp/plans/archive/2026-05-23-feat-send-dialog-lnurl-pay-plan.md index 4a3e2c8ba2..0e57907531 100644 --- a/desktopApp/plans/2026-05-23-feat-send-dialog-lnurl-pay-plan.md +++ b/desktopApp/plans/archive/2026-05-23-feat-send-dialog-lnurl-pay-plan.md @@ -9,6 +9,9 @@ deepened: 2026-05-23 # feat: Support LNURL-pay and lightning addresses in send dialog +> **Status:** shipped — `WalletColumnScreen.kt`'s send dialog implements the auto-detect + LNURL-resolve + amount/comment flow described here. +> _Audited 2026-06-30._ + ## Enhancement Summary **Deepened on:** 2026-05-23 diff --git a/desktopApp/plans/2026-05-23-fix-nsec-session-persistence-brainstorm.md b/desktopApp/plans/archive/2026-05-23-fix-nsec-session-persistence-brainstorm.md similarity index 97% rename from desktopApp/plans/2026-05-23-fix-nsec-session-persistence-brainstorm.md rename to desktopApp/plans/archive/2026-05-23-fix-nsec-session-persistence-brainstorm.md index a91f20a34e..b675943c2f 100644 --- a/desktopApp/plans/2026-05-23-fix-nsec-session-persistence-brainstorm.md +++ b/desktopApp/plans/archive/2026-05-23-fix-nsec-session-persistence-brainstorm.md @@ -1,5 +1,8 @@ # Fix: nsec Session Not Persisting Across Desktop Restarts +> **Status:** shipped — Fix 2 is applied: `saveCurrentAccount()` now runs in the App-level scope inside `onLoginSuccess` (`Main.kt` ~1023), surviving LoginScreen leaving composition. +> _Audited 2026-06-30._ + ## Current Persistence Mechanism Two-layer storage architecture: diff --git a/desktopApp/plans/2026-06-08-feat-desktop-image-compression-plan.md b/desktopApp/plans/archive/2026-06-08-feat-desktop-image-compression-plan.md similarity index 99% rename from desktopApp/plans/2026-06-08-feat-desktop-image-compression-plan.md rename to desktopApp/plans/archive/2026-06-08-feat-desktop-image-compression-plan.md index e2503171d3..3f7d3793d6 100644 --- a/desktopApp/plans/2026-06-08-feat-desktop-image-compression-plan.md +++ b/desktopApp/plans/archive/2026-06-08-feat-desktop-image-compression-plan.md @@ -9,6 +9,9 @@ deepened: 2026-06-08 # Desktop Image Compression +> **Status:** shipped — `ImageReencoder` + sniffer + `CompressionException` (commons), `ImageCompressionStore` + `CompressionPreviewDialog` + settings (desktop), wired into `ComposeNoteDialog` and the `amy` CLI. +> _Audited 2026-06-30._ + ## Enhancement Summary **Deepened on:** 2026-06-08 diff --git a/desktopApp/plans/2026-06-17-feat-app-launch-optimization-plan.md b/desktopApp/plans/archive/2026-06-17-feat-app-launch-optimization-plan.md similarity index 99% rename from desktopApp/plans/2026-06-17-feat-app-launch-optimization-plan.md rename to desktopApp/plans/archive/2026-06-17-feat-app-launch-optimization-plan.md index 74d93d7583..266ed54e74 100644 --- a/desktopApp/plans/2026-06-17-feat-app-launch-optimization-plan.md +++ b/desktopApp/plans/archive/2026-06-17-feat-app-launch-optimization-plan.md @@ -9,6 +9,9 @@ deepened: 2026-06-17 # App Launch Optimization (Desktop, Foundation-first) +> **Status:** shipped — progress log records all in-scope phases landed (278/278 tests); `LaunchFixture`/`LaunchBenchmark`/`LaunchMarkers`/`IconResources` exist and `desktopApp/benchmarks/` holds the baseline + post-fix snapshots. +> _Audited 2026-06-30._ + ## Progress Log | Date | Phase | Outcome | Commit | diff --git a/docs/plans/2026-04-23-feat-desktop-relay-config-single-source-plan.md b/docs/plans/2026-04-23-feat-desktop-relay-config-single-source-plan.md index 32fca819f9..44b0deb676 100644 --- a/docs/plans/2026-04-23-feat-desktop-relay-config-single-source-plan.md +++ b/docs/plans/2026-04-23-feat-desktop-relay-config-single-source-plan.md @@ -7,6 +7,10 @@ date: 2026-04-23 # feat: DesktopRelayConfig — Single Source of Truth for All Relay Categories +> **Status:** abandoned — Superseded — the proposed single DesktopRelayConfig class was never built; relay state landed as DesktopRelayCategories/LocalRelayCategories instead. +> _Audited 2026-06-30._ + + ## Problem The current relay wiring is broken. Multiple classes (`DesktopRelayCategories`, `DesktopAccountRelays`, `RelayConnectionManager`) each hold parts of relay state, leading to race conditions, empty initial values, and screens using inconsistent relay sources. diff --git a/docs/plans/2026-04-29-perf-viewport-aware-metadata-loading-plan.md b/docs/plans/2026-04-29-perf-viewport-aware-metadata-loading-plan.md index 9ff4aec9eb..89080a1a9c 100644 --- a/docs/plans/2026-04-29-perf-viewport-aware-metadata-loading-plan.md +++ b/docs/plans/2026-04-29-perf-viewport-aware-metadata-loading-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-04-29-feed-metadata-loading-optimization-brainstor # perf: Viewport-aware feed metadata loading +> **Status:** in-progress — Base MetadataPreloader/MetadataRateLimiter infra exists, but the viewport-aware (LazyListState/snapshotFlow) selection in the plan is not clearly wired. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-04-29 diff --git a/docs/plans/2026-05-18-fix-macos-vlc-bundled-discovery-plan.md b/docs/plans/2026-05-18-fix-macos-vlc-bundled-discovery-plan.md index 3f80a65e19..6bbd298bf8 100644 --- a/docs/plans/2026-05-18-fix-macos-vlc-bundled-discovery-plan.md +++ b/docs/plans/2026-05-18-fix-macos-vlc-bundled-discovery-plan.md @@ -9,6 +9,10 @@ origin: docs/brainstorms/2026-05-18-fix-macos-vlc-bundling-brainstorm.md # fix: macOS bundled VLC discovery broken by versioned setenv symbol +> **Status:** abandoned — Superseded — VLC/VLCJ was removed entirely (kdroidFilter migration); MacOsVlcDiscoverer no longer exists, so the setenv fix is moot. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-05-18 diff --git a/docs/plans/2026-06-18-fix-desktop-macos-bunker-relogin-plan.md b/docs/plans/2026-06-18-fix-desktop-macos-bunker-relogin-plan.md index 006f054a84..7d6b92190f 100644 --- a/docs/plans/2026-06-18-fix-desktop-macos-bunker-relogin-plan.md +++ b/docs/plans/2026-06-18-fix-desktop-macos-bunker-relogin-plan.md @@ -44,6 +44,10 @@ origin: docs/brainstorms/2026-06-18-fix-macos-bunker-relogin-brainstorm.md # 🐛 fix(desktop): macOS forced re-login on cold boot — ProGuard strips java-keyring backend +> **Status:** in-progress — PR 1 defense-in-depth (keychainUnavailable signal + login banner + tests) landed, but the actual cold-boot root cause is still open/unidentified. +> _Audited 2026-06-30._ + + ## Overview User on macOS using the recent Amethyst Desktop release (official GitHub DMG) is forced to re-log-in with their NIP-46 bunker on **every** cold boot — 100 % reproducible. Investigation determined the bug is **not bunker-specific**: every macOS release-DMG user whose account requires a key stored in the OS keychain loses their session on cold boot (bunker, nsec, NWC). Bunker is the loudest symptom because re-pasting a bunker URI is high-friction; nsec users likely re-paste quickly and never report. diff --git a/docs/plans/README.md b/docs/plans/README.md new file mode 100644 index 0000000000..a568291d58 --- /dev/null +++ b/docs/plans/README.md @@ -0,0 +1,69 @@ +# docs plans (frozen legacy) + +_Audited 2026-06-30. 52 plans: 48 shipped (archived), 2 in-progress, 2 abandoned._ + +> This is the frozen global plans folder — new plans go in the owning module's `plans/` folder instead. + +## In progress +| Plan | Summary | +| ---- | ------- | +| [2026-04-29-perf-viewport-aware-metadata-loading-plan.md](2026-04-29-perf-viewport-aware-metadata-loading-plan.md) | Viewport-aware feed metadata loading — base preloader/rate-limiter infra exists but the LazyListState/snapshotFlow viewport selection isn't clearly wired. | +| [2026-06-18-fix-desktop-macos-bunker-relogin-plan.md](2026-06-18-fix-desktop-macos-bunker-relogin-plan.md) | macOS cold-boot bunker re-login — PR 1 defense-in-depth shipped, but the actual root cause is still open/unidentified. | + +## Abandoned +| Plan | Summary | +| ---- | ------- | +| [2026-04-23-feat-desktop-relay-config-single-source-plan.md](2026-04-23-feat-desktop-relay-config-single-source-plan.md) | Single `DesktopRelayConfig` class — never built; relay state landed as `DesktopRelayCategories`/`LocalRelayCategories` instead. | +| [2026-05-18-fix-macos-vlc-bundled-discovery-plan.md](2026-05-18-fix-macos-vlc-bundled-discovery-plan.md) | macOS bundled-VLC `setenv` discovery fix — moot after VLC/VLCJ was removed entirely in the kdroidFilter migration. | + +## Archived (shipped) +| Plan | Summary | +| ---- | ------- | +| [archive/2026-03-05-fix-nip46-relay-isolation-and-init-plan.md](archive/2026-03-05-fix-nip46-relay-isolation-and-init-plan.md) | NIP-46 remote signer wired into desktop with dedicated relay isolation and pool-init fixes. | +| [archive/2026-03-05-nip46-bunker-login-deepened.md](archive/2026-03-05-nip46-bunker-login-deepened.md) | Desktop bunker:// / nostrconnect:// login over quartz NostrSignerRemote. | +| [archive/2026-03-05-nip46-improvements-plan.md](archive/2026-03-05-nip46-improvements-plan.md) | Post-MVP NIP-46 items — auth_url handling and connect validation in quartz. | +| [archive/2026-03-05-nip46-tdd-tests-plan.md](archive/2026-03-05-nip46-tdd-tests-plan.md) | TDD tests reproducing the three NIP-46 relay-isolation bugs. | +| [archive/2026-03-10-feat-desktop-advanced-search-plan.md](archive/2026-03-10-feat-desktop-advanced-search-plan.md) | Desktop advanced search with query operators and form UI (AdvancedSearchPanel/SearchQuery). | +| [archive/2026-03-16-desktop-media-manual-testing-plan.md](archive/2026-03-16-desktop-media-manual-testing-plan.md) | Manual-testing sheet for the desktop media stack (all rows PASS). | +| [archive/2026-03-16-feat-desktop-media-full-parity-plan.md](archive/2026-03-16-feat-desktop-media-full-parity-plan.md) | Desktop media full parity — images, upload, gallery, video/audio playback. | +| [archive/2026-03-18-feat-desktop-cache-navigation-persistence-plan.md](archive/2026-03-18-feat-desktop-cache-navigation-persistence-plan.md) | Cache-centric desktop architecture for navigation persistence (DesktopLocalCache). | +| [archive/2026-03-18-feat-desktop-dm-encrypted-media-plan.md](archive/2026-03-18-feat-desktop-dm-encrypted-media-plan.md) | NIP-17 encrypted DM media send/receive in desktop chat. | +| [archive/2026-03-19-feat-deck-messages-stacked-layout-plan.md](archive/2026-03-19-feat-deck-messages-stacked-layout-plan.md) | Stacked messages layout for narrow deck columns. | +| [archive/2026-03-20-feat-remote-signer-loading-error-ux-plan.md](archive/2026-03-20-feat-remote-signer-loading-error-ux-plan.md) | Remote-signer loading/error UX — commons SigningState holder. | +| [archive/2026-03-22-feat-clean-cache-single-source-of-truth-plan.md](archive/2026-03-22-feat-clean-cache-single-source-of-truth-plan.md) | Desktop feeds migrated to cache-centric DesktopFeedViewModel + FeedContentState. | +| [archive/2026-03-24-feat-article-highlights-notes-plan.md](archive/2026-03-24-feat-article-highlights-notes-plan.md) | Desktop article highlights & note-taking (NIP-84) UI + store. | +| [archive/2026-03-24-feat-weakref-cache-state-extraction-plan.md](archive/2026-03-24-feat-weakref-cache-state-extraction-plan.md) | WeakReference cache (LargeSoftCache) + state-class extraction to commons. | +| [archive/2026-03-24-long-form-reads-manual-testing.md](archive/2026-03-24-long-form-reads-manual-testing.md) | Manual-testing sheet for the long-form Reads feature. | +| [archive/2026-03-30-feat-app-drawer-v1a-plan.md](archive/2026-03-30-feat-app-drawer-v1a-plan.md) | Desktop App Drawer with categories and search (AppDrawer.kt). | +| [archive/2026-03-30-feat-desktop-tor-support-plan.md](archive/2026-03-30-feat-desktop-tor-support-plan.md) | Embedded Tor support on desktop (DesktopTorManager + kmp-tor). | +| [archive/2026-04-01-fix-tor-traffic-leaks-plan.md](archive/2026-04-01-fix-tor-traffic-leaks-plan.md) | Fail-closed Tor-aware client in DesktopHttpClient — no direct connections when Tor ON. | +| [archive/2026-04-02-feat-tor-toggle-restart-ux-plan.md](archive/2026-04-02-feat-tor-toggle-restart-ux-plan.md) | Tor toggle restart UX — confirmation dialog + appRestartKey app rebuild. | +| [archive/2026-04-17-feat-customizable-nav-bar-v1b-plan.md](archive/2026-04-17-feat-customizable-nav-bar-v1b-plan.md) | Customizable nav bar — PinnedNavBarState (pin/unpin/reorder). | +| [archive/2026-04-17-feat-workspace-management-ux-plan.md](archive/2026-04-17-feat-workspace-management-ux-plan.md) | Workspace management UX — CRUD via WorkspaceManager + App Drawer tabs. | +| [archive/2026-04-17-feat-workspaces-v1c-plan.md](archive/2026-04-17-feat-workspaces-v1c-plan.md) | Named layout-preset workspaces with layout-mode switching. | +| [archive/2026-04-17-test-desktop-distribution.md](archive/2026-04-17-test-desktop-distribution.md) | Test matrix for multi-platform desktop distribution (DMG/MSI/DEB/RPM/AppImage). | +| [archive/2026-04-20-feat-relay-power-tools-plan.md](archive/2026-04-20-feat-relay-power-tools-plan.md) | Relay dashboard screen + compose relay picker. | +| [archive/2026-04-21-feat-relay-config-parity-plan.md](archive/2026-04-21-feat-relay-config-parity-plan.md) | Relay config parity — NIP-65/DM/Search/Blocked category editors. | +| [archive/2026-04-21-feat-relay-subscription-wiring-plan.md](archive/2026-04-21-feat-relay-subscription-wiring-plan.md) | Wire relay-config categories into desktop subscriptions (superseded by 04-22 deepened version). | +| [archive/2026-04-22-feat-relay-persistence-counts-per-screen-picker-plan.md](archive/2026-04-22-feat-relay-persistence-counts-per-screen-picker-plan.md) | Relay config persistence, correct counts, per-screen relay editors. | +| [archive/2026-04-22-feat-relay-subscription-wiring-plan.md](archive/2026-04-22-feat-relay-subscription-wiring-plan.md) | Relay-category subscription wiring via LocalRelayCategories CompositionLocal. | +| [archive/2026-04-22-nip-audio-rooms-draft.md](archive/2026-04-22-nip-audio-rooms-draft.md) | NIP draft for audio-rooms join (moq-lite Lite-03), implemented in :nestsClient. | +| [archive/2026-04-22-pure-kotlin-quic-webtransport-plan.md](archive/2026-04-22-pure-kotlin-quic-webtransport-plan.md) | Pure-Kotlin QUIC + HTTP/3 + WebTransport — the :quic module. | +| [archive/2026-04-23-feat-desktop-multi-account-support-plan.md](archive/2026-04-23-feat-desktop-multi-account-support-plan.md) | Desktop multi-account support — AccountSwitcherDropdown + encrypted storage. | +| [archive/2026-04-27-fix-deb-libicu-dependency-plan.md](archive/2026-04-27-fix-deb-libicu-dependency-plan.md) | Relax libicu dependency in .deb packages via post-process script + CI wiring. | +| [archive/2026-04-28-multi-account-testing-sheet.md](archive/2026-04-28-multi-account-testing-sheet.md) | Testing sheet for desktop multi-account. | +| [archive/2026-05-04-fix-bunker-timeouts-and-decryption-plan.md](archive/2026-05-04-fix-bunker-timeouts-and-decryption-plan.md) | Fix bunker timeouts + broken decryption (BunkerResponseDecrypt + same-id retry). | +| [archive/2026-05-14-fix-account-security-hardening-plan.md](archive/2026-05-14-fix-account-security-hardening-plan.md) | Desktop account security hardening — encrypted accounts.json.enc, keychain secrets. | +| [archive/2026-05-22-feat-desktop-note-action-bar-ux-plan.md](archive/2026-05-22-feat-desktop-note-action-bar-ux-plan.md) | Note action bar — long-press details + right-click customize. | +| [archive/2026-05-22-fix-desktop-note-action-counters-and-quote-plan.md](archive/2026-05-22-fix-desktop-note-action-counters-and-quote-plan.md) | Fix reactive counters, quote boost, and boost detail popup. | +| [archive/2026-05-26-feat-desktop-profile-editing-plan.md](archive/2026-05-26-feat-desktop-profile-editing-plan.md) | Desktop profile editing full parity (EditProfileScreen + EditProfileFields). | +| [archive/2026-05-28-feat-desktop-search-spotlight-plan.md](archive/2026-05-28-feat-desktop-search-spotlight-plan.md) | Search spotlight overlay (Cmd+F) + unified feed header bar. | +| [archive/2026-05-28-feat-desktop-visual-personality-plan.md](archive/2026-05-28-feat-desktop-visual-personality-plan.md) | Desktop visual personality overhaul (theme, shimmer, hover, shortcuts). | +| [archive/2026-05-28-fix-feed-header-search-ux-plan.md](archive/2026-05-28-fix-feed-header-search-ux-plan.md) | Feed header bar layout + inline search UX fixes. | +| [archive/2026-06-02-feat-new-posts-chip-desktop-feed-plan.md](archive/2026-06-02-feat-new-posts-chip-desktop-feed-plan.md) | "New posts" chip for the desktop feed (commons NewPostsChip + state). | +| [archive/2026-06-02-fix-desktop-feed-review-findings-plan.md](archive/2026-06-02-fix-desktop-feed-review-findings-plan.md) | Resolve 5 review findings on PR #3124 desktop feed UI refresh. | +| [archive/2026-06-05-feat-profile-replies-section-plan.md](archive/2026-06-05-feat-profile-replies-section-plan.md) | Desktop profile Replies tab (DesktopProfileFeedFilter). | +| [archive/2026-06-05-fix-desktop-feed-reply-context-plan.md](archive/2026-06-05-fix-desktop-feed-reply-context-plan.md) | Desktop feed reply-context rendering (commons ReplyContext). | +| [archive/2026-06-10-feat-unhealthy-relay-review-plan.md](archive/2026-06-10-feat-unhealthy-relay-review-plan.md) | Unhealthy relay review banner + sheet (RelayHealthStore + UnhealthyRelayBanner). | +| [archive/2026-06-11-feat-replace-vlcj-with-kdroidfilter-plan.md](archive/2026-06-11-feat-replace-vlcj-with-kdroidfilter-plan.md) | Replace vlcj with kdroidFilter ComposeMediaPlayer + JCodec/Jaffree. | +| [archive/2026-06-11-vlcj-replacement-testing-sheet.md](archive/2026-06-11-vlcj-replacement-testing-sheet.md) | Manual-testing sheet for the vlcj → kdroidFilter migration. | diff --git a/docs/plans/2026-03-05-fix-nip46-relay-isolation-and-init-plan.md b/docs/plans/archive/2026-03-05-fix-nip46-relay-isolation-and-init-plan.md similarity index 98% rename from docs/plans/2026-03-05-fix-nip46-relay-isolation-and-init-plan.md rename to docs/plans/archive/2026-03-05-fix-nip46-relay-isolation-and-init-plan.md index 7a426d8205..3b67415e6f 100644 --- a/docs/plans/2026-03-05-fix-nip46-relay-isolation-and-init-plan.md +++ b/docs/plans/archive/2026-03-05-fix-nip46-relay-isolation-and-init-plan.md @@ -8,6 +8,10 @@ deepened: 2026-03-05 # fix: NIP-46 relay isolation, pool init, and stale response bugs +> **Status:** shipped — NIP-46 remote signer wired into desktop with dedicated relay isolation; NostrSignerRemote/RemoteSignerManager in quartz plus desktop AccountManager bunker paths and tests exist. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-03-05 diff --git a/docs/plans/2026-03-05-nip46-bunker-login-deepened.md b/docs/plans/archive/2026-03-05-nip46-bunker-login-deepened.md similarity index 99% rename from docs/plans/2026-03-05-nip46-bunker-login-deepened.md rename to docs/plans/archive/2026-03-05-nip46-bunker-login-deepened.md index 97cda50933..66a07c0059 100644 --- a/docs/plans/2026-03-05-nip46-bunker-login-deepened.md +++ b/docs/plans/archive/2026-03-05-nip46-bunker-login-deepened.md @@ -1,5 +1,9 @@ # NIP-46 Remote Signer (bunker:// + nostrconnect://) Login for Desktop — Deepened Plan +> **Status:** shipped — Desktop bunker:// / nostrconnect:// login shipped via AccountManager + LoginScreen on top of quartz NostrSignerRemote. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-03-05 (2 rounds) diff --git a/docs/plans/2026-03-05-nip46-improvements-plan.md b/docs/plans/archive/2026-03-05-nip46-improvements-plan.md similarity index 96% rename from docs/plans/2026-03-05-nip46-improvements-plan.md rename to docs/plans/archive/2026-03-05-nip46-improvements-plan.md index 21dfeea9c5..82757a44cc 100644 --- a/docs/plans/2026-03-05-nip46-improvements-plan.md +++ b/docs/plans/archive/2026-03-05-nip46-improvements-plan.md @@ -8,6 +8,10 @@ origin: docs/plans/2026-03-05-fix-nip46-relay-isolation-and-init-plan.md # feat: NIP-46 remote signer improvements (post-MVP) +> **Status:** shipped — Post-MVP NIP-46 items landed — auth_url handling and validation live in quartz BunkerResponse / NostrSignerRemote. +> _Audited 2026-06-30._ + + Deferred items from the NIP-46 relay isolation fix. All are nice-to-haves discovered during deepening/review — none block the initial fix. ## 1. `auth_url` handling (nsec.app compatibility) diff --git a/docs/plans/2026-03-05-nip46-tdd-tests-plan.md b/docs/plans/archive/2026-03-05-nip46-tdd-tests-plan.md similarity index 98% rename from docs/plans/2026-03-05-nip46-tdd-tests-plan.md rename to docs/plans/archive/2026-03-05-nip46-tdd-tests-plan.md index a04d2de040..5b897632a5 100644 --- a/docs/plans/2026-03-05-nip46-tdd-tests-plan.md +++ b/docs/plans/archive/2026-03-05-nip46-tdd-tests-plan.md @@ -8,6 +8,10 @@ parent: 2026-03-05-fix-nip46-relay-isolation-and-init-plan.md # test: TDD tests for NIP-46 relay isolation fix +> **Status:** shipped — NIP-46 isolation tests present — RemoteSignerManagerRetryTest and AccountManagerLoadAccountTest exist. +> _Audited 2026-06-30._ + + ## Overview Write tests that **reproduce the three NIP-46 bugs** before they're fixed, then verify the fix. Tests should fail against the old shared-client architecture and pass after relay isolation. diff --git a/docs/plans/2026-03-10-feat-desktop-advanced-search-plan.md b/docs/plans/archive/2026-03-10-feat-desktop-advanced-search-plan.md similarity index 99% rename from docs/plans/2026-03-10-feat-desktop-advanced-search-plan.md rename to docs/plans/archive/2026-03-10-feat-desktop-advanced-search-plan.md index 244213ebac..83480f036c 100644 --- a/docs/plans/2026-03-10-feat-desktop-advanced-search-plan.md +++ b/docs/plans/archive/2026-03-10-feat-desktop-advanced-search-plan.md @@ -9,6 +9,10 @@ origin: docs/brainstorms/2026-03-10-advanced-search-brainstorm.md # Desktop Advanced Search +> **Status:** shipped — Implemented as AdvancedSearchPanel + commons AdvancedSearchBarState/SearchQuery with operator parsing. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-03-10 diff --git a/docs/plans/2026-03-16-desktop-media-manual-testing-plan.md b/docs/plans/archive/2026-03-16-desktop-media-manual-testing-plan.md similarity index 98% rename from docs/plans/2026-03-16-desktop-media-manual-testing-plan.md rename to docs/plans/archive/2026-03-16-desktop-media-manual-testing-plan.md index 074e1b112a..0ca4f8b86c 100644 --- a/docs/plans/2026-03-16-desktop-media-manual-testing-plan.md +++ b/docs/plans/archive/2026-03-16-desktop-media-manual-testing-plan.md @@ -1,5 +1,9 @@ # Manual Testing Plan: Desktop Media Full Parity (`feat/desktop-media`) +> **Status:** shipped — Completed manual-testing sheet (all rows PASS) for the shipped desktop media stack. +> _Audited 2026-06-30._ + + ## Context Branch has 13 commits implementing Phases 0-9 of desktop media: image display, upload, video/audio playback, lightbox, encrypted DM files, profile gallery, server management, and imeta tags. 49 unit tests cover service logic. This plan covers **integration & UI manual testing** that unit tests can't reach. diff --git a/docs/plans/2026-03-16-feat-desktop-media-full-parity-plan.md b/docs/plans/archive/2026-03-16-feat-desktop-media-full-parity-plan.md similarity index 99% rename from docs/plans/2026-03-16-feat-desktop-media-full-parity-plan.md rename to docs/plans/archive/2026-03-16-feat-desktop-media-full-parity-plan.md index e7e02c4457..56e65d2245 100644 --- a/docs/plans/2026-03-16-feat-desktop-media-full-parity-plan.md +++ b/docs/plans/archive/2026-03-16-feat-desktop-media-full-parity-plan.md @@ -9,6 +9,10 @@ deepened: 2026-03-16 # Desktop Media — Full Parity +> **Status:** shipped — Desktop media (images, upload, gallery, video/audio) shipped; later VLCJ replaced by kdroidFilter. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-03-16 diff --git a/docs/plans/2026-03-18-feat-desktop-cache-navigation-persistence-plan.md b/docs/plans/archive/2026-03-18-feat-desktop-cache-navigation-persistence-plan.md similarity index 99% rename from docs/plans/2026-03-18-feat-desktop-cache-navigation-persistence-plan.md rename to docs/plans/archive/2026-03-18-feat-desktop-cache-navigation-persistence-plan.md index f1fb2340d0..40c4f29743 100644 --- a/docs/plans/2026-03-18-feat-desktop-cache-navigation-persistence-plan.md +++ b/docs/plans/archive/2026-03-18-feat-desktop-cache-navigation-persistence-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-03-17-desktop-cache-architecture-brainstorm.md # feat: Desktop Cache-Centric Architecture for Navigation Persistence +> **Status:** shipped — Cache-centric desktop architecture shipped — DesktopLocalCache + FeedViewModel feed the screens. +> _Audited 2026-06-30._ + + ## Overview Migrate Amethyst Desktop from per-screen event state (`EventCollectionState` in `remember {}`) to Android's cache-centric pattern where `DesktopLocalCache` is the single source of truth. Feeds query the cache via `FeedFilter`, `FeedViewModel` subscribes to the cache event stream, and data survives navigation. diff --git a/docs/plans/2026-03-18-feat-desktop-dm-encrypted-media-plan.md b/docs/plans/archive/2026-03-18-feat-desktop-dm-encrypted-media-plan.md similarity index 99% rename from docs/plans/2026-03-18-feat-desktop-dm-encrypted-media-plan.md rename to docs/plans/archive/2026-03-18-feat-desktop-dm-encrypted-media-plan.md index 94c4eeebb3..57e36d74cc 100644 --- a/docs/plans/2026-03-18-feat-desktop-dm-encrypted-media-plan.md +++ b/docs/plans/archive/2026-03-18-feat-desktop-dm-encrypted-media-plan.md @@ -9,6 +9,10 @@ origin: docs/brainstorms/2026-03-18-desktop-dm-encrypted-media-brainstorm.md # feat: Desktop DM Encrypted Media (NIP-17) +> **Status:** shipped — Marked completed; NIP-17 encrypted DM media send/receive is in desktop chat. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-03-18 diff --git a/docs/plans/2026-03-19-feat-deck-messages-stacked-layout-plan.md b/docs/plans/archive/2026-03-19-feat-deck-messages-stacked-layout-plan.md similarity index 98% rename from docs/plans/2026-03-19-feat-deck-messages-stacked-layout-plan.md rename to docs/plans/archive/2026-03-19-feat-deck-messages-stacked-layout-plan.md index bdb90980ef..53687ab1c8 100644 --- a/docs/plans/2026-03-19-feat-deck-messages-stacked-layout-plan.md +++ b/docs/plans/archive/2026-03-19-feat-deck-messages-stacked-layout-plan.md @@ -9,6 +9,10 @@ origin: docs/brainstorms/2026-03-19-deck-messages-stacked-layout-brainstorm.md # feat: Stacked Messages Layout in Deck Columns +> **Status:** shipped — Marked completed; ConversationListPane/DesktopMessagesScreen stacked layout shipped. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-03-19 diff --git a/docs/plans/2026-03-20-feat-remote-signer-loading-error-ux-plan.md b/docs/plans/archive/2026-03-20-feat-remote-signer-loading-error-ux-plan.md similarity index 98% rename from docs/plans/2026-03-20-feat-remote-signer-loading-error-ux-plan.md rename to docs/plans/archive/2026-03-20-feat-remote-signer-loading-error-ux-plan.md index db945ec832..a39824f91f 100644 --- a/docs/plans/2026-03-20-feat-remote-signer-loading-error-ux-plan.md +++ b/docs/plans/archive/2026-03-20-feat-remote-signer-loading-error-ux-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-03-20-remote-signer-ux-brainstorm.md # feat: Remote Signer Loading & Error UX +> **Status:** shipped — Implemented as commons SigningState holder for NIP-46 signing UX. +> _Audited 2026-06-30._ + + ## Overview Add proper loading indicators and error handling for all NIP-46 remote signer (bunker) operations. Currently, signing timeouts crash as AWT system popup. Fix with a lightweight `SigningState` holder + catch-all helper, reusing existing UI patterns (inline `CircularProgressIndicator`, snackbar feedback). diff --git a/docs/plans/2026-03-22-feat-clean-cache-single-source-of-truth-plan.md b/docs/plans/archive/2026-03-22-feat-clean-cache-single-source-of-truth-plan.md similarity index 99% rename from docs/plans/2026-03-22-feat-clean-cache-single-source-of-truth-plan.md rename to docs/plans/archive/2026-03-22-feat-clean-cache-single-source-of-truth-plan.md index ef925a7f72..efd1a1f98a 100644 --- a/docs/plans/2026-03-22-feat-clean-cache-single-source-of-truth-plan.md +++ b/docs/plans/archive/2026-03-22-feat-clean-cache-single-source-of-truth-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-03-22-clean-cache-architecture-brainstorm.md # feat: Clean Cache Architecture — Single Source of Truth +> **Status:** shipped — Desktop feeds migrated to cache-centric DesktopFeedViewModel + FeedContentState. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-03-23 diff --git a/docs/plans/2026-03-24-feat-article-highlights-notes-plan.md b/docs/plans/archive/2026-03-24-feat-article-highlights-notes-plan.md similarity index 99% rename from docs/plans/2026-03-24-feat-article-highlights-notes-plan.md rename to docs/plans/archive/2026-03-24-feat-article-highlights-notes-plan.md index 7e3edfccb6..6c663793cc 100644 --- a/docs/plans/2026-03-24-feat-article-highlights-notes-plan.md +++ b/docs/plans/archive/2026-03-24-feat-article-highlights-notes-plan.md @@ -9,6 +9,10 @@ origin: docs/brainstorms/2026-03-24-article-highlights-notes-brainstorm.md # feat: Article Highlights & Note-Taking +> **Status:** shipped — Shipped — desktop highlights UI (ArticleHighlightsPanel, MyHighlightsScreen) + DesktopHighlightStore. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-03-24 diff --git a/docs/plans/2026-03-24-feat-weakref-cache-state-extraction-plan.md b/docs/plans/archive/2026-03-24-feat-weakref-cache-state-extraction-plan.md similarity index 99% rename from docs/plans/2026-03-24-feat-weakref-cache-state-extraction-plan.md rename to docs/plans/archive/2026-03-24-feat-weakref-cache-state-extraction-plan.md index 8673834e5b..1c65642fcc 100644 --- a/docs/plans/2026-03-24-feat-weakref-cache-state-extraction-plan.md +++ b/docs/plans/archive/2026-03-24-feat-weakref-cache-state-extraction-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-03-24-weakref-cache-architecture-brainstorm.md # feat: WeakReference Cache + State Class Extraction +> **Status:** shipped — LargeSoftCache (WeakReference cache) lives in commons and backs DesktopLocalCache. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-03-24 diff --git a/docs/plans/2026-03-24-long-form-reads-manual-testing.md b/docs/plans/archive/2026-03-24-long-form-reads-manual-testing.md similarity index 98% rename from docs/plans/2026-03-24-long-form-reads-manual-testing.md rename to docs/plans/archive/2026-03-24-long-form-reads-manual-testing.md index 93a9e01c6c..3217936f23 100644 --- a/docs/plans/2026-03-24-long-form-reads-manual-testing.md +++ b/docs/plans/archive/2026-03-24-long-form-reads-manual-testing.md @@ -6,6 +6,10 @@ branch: features/long-form-content # Long-Form Reads — Manual Testing Sheet +> **Status:** shipped — Manual-testing sheet for the shipped long-form Reads feature. +> _Audited 2026-06-30._ + + **Run:** `cd AmethystMultiplatform-long-form && ./gradlew :desktopApp:run` ## Pre-Test Setup diff --git a/docs/plans/2026-03-30-feat-app-drawer-v1a-plan.md b/docs/plans/archive/2026-03-30-feat-app-drawer-v1a-plan.md similarity index 99% rename from docs/plans/2026-03-30-feat-app-drawer-v1a-plan.md rename to docs/plans/archive/2026-03-30-feat-app-drawer-v1a-plan.md index d6e0a00aa4..6073ff784a 100644 --- a/docs/plans/2026-03-30-feat-app-drawer-v1a-plan.md +++ b/docs/plans/archive/2026-03-30-feat-app-drawer-v1a-plan.md @@ -9,6 +9,10 @@ origin: docs/brainstorms/2026-03-30-desktop-navigation-overhaul-brainstorm.md # App Drawer with Categories and Search (v1a) +> **Status:** shipped — Implemented as desktop AppDrawer.kt with categories + search. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-03-30 diff --git a/docs/plans/2026-03-30-feat-desktop-tor-support-plan.md b/docs/plans/archive/2026-03-30-feat-desktop-tor-support-plan.md similarity index 99% rename from docs/plans/2026-03-30-feat-desktop-tor-support-plan.md rename to docs/plans/archive/2026-03-30-feat-desktop-tor-support-plan.md index b26c44e7c0..f2b766e162 100644 --- a/docs/plans/2026-03-30-feat-desktop-tor-support-plan.md +++ b/docs/plans/archive/2026-03-30-feat-desktop-tor-support-plan.md @@ -9,6 +9,10 @@ origin: docs/brainstorms/2026-03-30-desktop-tor-support-brainstorm.md # feat: Desktop Tor Support +> **Status:** shipped — Shipped — DesktopTorManager + kmp-tor runtime and granular routing settings. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-03-30 diff --git a/docs/plans/2026-04-01-fix-tor-traffic-leaks-plan.md b/docs/plans/archive/2026-04-01-fix-tor-traffic-leaks-plan.md similarity index 98% rename from docs/plans/2026-04-01-fix-tor-traffic-leaks-plan.md rename to docs/plans/archive/2026-04-01-fix-tor-traffic-leaks-plan.md index 7939485d7c..75ce9fb03d 100644 --- a/docs/plans/2026-04-01-fix-tor-traffic-leaks-plan.md +++ b/docs/plans/archive/2026-04-01-fix-tor-traffic-leaks-plan.md @@ -9,6 +9,10 @@ origin: docs/brainstorms/2026-04-01-fix-tor-traffic-leaks-brainstorm.md # fix: Desktop Tor traffic leaks +> **Status:** shipped — Fail-closed Tor-aware client landed in DesktopHttpClient (currentClient accessor). +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-04-01 diff --git a/docs/plans/2026-04-02-feat-tor-toggle-restart-ux-plan.md b/docs/plans/archive/2026-04-02-feat-tor-toggle-restart-ux-plan.md similarity index 98% rename from docs/plans/2026-04-02-feat-tor-toggle-restart-ux-plan.md rename to docs/plans/archive/2026-04-02-feat-tor-toggle-restart-ux-plan.md index f4e6a0d694..0bf4ebcb4f 100644 --- a/docs/plans/2026-04-02-feat-tor-toggle-restart-ux-plan.md +++ b/docs/plans/archive/2026-04-02-feat-tor-toggle-restart-ux-plan.md @@ -8,6 +8,10 @@ deepened: 2026-04-02 # feat: Tor toggle restart UX +> **Status:** shipped — appRestartKey rebuild-on-Tor-change implemented in desktop Main.kt. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-04-02 diff --git a/docs/plans/2026-04-17-feat-customizable-nav-bar-v1b-plan.md b/docs/plans/archive/2026-04-17-feat-customizable-nav-bar-v1b-plan.md similarity index 99% rename from docs/plans/2026-04-17-feat-customizable-nav-bar-v1b-plan.md rename to docs/plans/archive/2026-04-17-feat-customizable-nav-bar-v1b-plan.md index 29816b53bd..87a5373728 100644 --- a/docs/plans/2026-04-17-feat-customizable-nav-bar-v1b-plan.md +++ b/docs/plans/archive/2026-04-17-feat-customizable-nav-bar-v1b-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-03-30-desktop-navigation-overhaul-brainstorm.md # Customizable Nav Bar (v1b) +> **Status:** shipped — Implemented as PinnedNavBarState with pin/unpin/reorder in the desktop sidebar. +> _Audited 2026-06-30._ + + ## Overview Make the sidebar nav bar user-customizable. Users pin/unpin screens from the App Drawer, reorder items via drag-to-sort, and persist their layout. Applies to both SinglePaneLayout's NavigationRail and DeckSidebar's quick-launch icons. diff --git a/docs/plans/2026-04-17-feat-workspace-management-ux-plan.md b/docs/plans/archive/2026-04-17-feat-workspace-management-ux-plan.md similarity index 99% rename from docs/plans/2026-04-17-feat-workspace-management-ux-plan.md rename to docs/plans/archive/2026-04-17-feat-workspace-management-ux-plan.md index a33ae48f62..12c53663a1 100644 --- a/docs/plans/2026-04-17-feat-workspace-management-ux-plan.md +++ b/docs/plans/archive/2026-04-17-feat-workspace-management-ux-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-04-17-workspace-management-ux-brainstorm.md # Workspace Management UX +> **Status:** shipped — Workspace CRUD shipped via WorkspaceManager + AppDrawer tabs. +> _Audited 2026-06-30._ + + ## Summary Add full workspace CRUD to the App Drawer: two-tab layout (Screens/Workspaces), unified search, workspace cards with editor dialog, Cmd+S save, and layout mode auto-switching on workspace change. diff --git a/docs/plans/2026-04-17-feat-workspaces-v1c-plan.md b/docs/plans/archive/2026-04-17-feat-workspaces-v1c-plan.md similarity index 99% rename from docs/plans/2026-04-17-feat-workspaces-v1c-plan.md rename to docs/plans/archive/2026-04-17-feat-workspaces-v1c-plan.md index ee9a9ff70c..1b651fbf32 100644 --- a/docs/plans/2026-04-17-feat-workspaces-v1c-plan.md +++ b/docs/plans/archive/2026-04-17-feat-workspaces-v1c-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-03-30-desktop-navigation-overhaul-brainstorm.md # Workspaces (v1c) +> **Status:** shipped — Workspaces shipped — WorkspaceManager/Workspace presets with layout-mode switching. +> _Audited 2026-06-30._ + + ## Overview Named layout presets users can create, switch between, and customize. Each workspace stores a layout mode (Deck/SinglePane) + column configuration. Switching destroys current layout and rebuilds from saved config. Max 9 workspaces (Cmd+K then 1-9). diff --git a/docs/plans/2026-04-17-test-desktop-distribution.md b/docs/plans/archive/2026-04-17-test-desktop-distribution.md similarity index 98% rename from docs/plans/2026-04-17-test-desktop-distribution.md rename to docs/plans/archive/2026-04-17-test-desktop-distribution.md index 7ff8f6ef20..0ea345bdd4 100644 --- a/docs/plans/2026-04-17-test-desktop-distribution.md +++ b/docs/plans/archive/2026-04-17-test-desktop-distribution.md @@ -1,5 +1,9 @@ # Test Plan: Desktop Multi-Platform Distribution +> **Status:** shipped — Distribution test matrix for the shipped multi-platform desktop packaging. +> _Audited 2026-06-30._ + + **PR branch:** `feat/desktop-multiplatform-distribution` **Test date:** 2026-04-17 diff --git a/docs/plans/2026-04-20-feat-relay-power-tools-plan.md b/docs/plans/archive/2026-04-20-feat-relay-power-tools-plan.md similarity index 99% rename from docs/plans/2026-04-20-feat-relay-power-tools-plan.md rename to docs/plans/archive/2026-04-20-feat-relay-power-tools-plan.md index c58c48e46d..b023ab483e 100644 --- a/docs/plans/2026-04-20-feat-relay-power-tools-plan.md +++ b/docs/plans/archive/2026-04-20-feat-relay-power-tools-plan.md @@ -9,6 +9,10 @@ deepened: 2026-04-20 # feat: Relay Power Tools — Dashboard Screen + Compose Relay Picker +> **Status:** shipped — Relay Dashboard + compose relay picker shipped (RelayDashboardScreen, RelayMetricsTab, RelayConfigTab). +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-04-20 diff --git a/docs/plans/2026-04-21-feat-relay-config-parity-plan.md b/docs/plans/archive/2026-04-21-feat-relay-config-parity-plan.md similarity index 98% rename from docs/plans/2026-04-21-feat-relay-config-parity-plan.md rename to docs/plans/archive/2026-04-21-feat-relay-config-parity-plan.md index 8a77ce78d8..51320c1701 100644 --- a/docs/plans/2026-04-21-feat-relay-config-parity-plan.md +++ b/docs/plans/archive/2026-04-21-feat-relay-config-parity-plan.md @@ -8,6 +8,10 @@ parent: docs/plans/2026-04-20-feat-relay-power-tools-plan.md # feat: Relay Config Parity — All Desktop-Relevant Categories +> **Status:** shipped — All relay categories shipped — NIP-65/DM/Search/Blocked editors in desktop ui/relay/. +> _Audited 2026-06-30._ + + ## Context Phase 1-2 of Relay Power Tools shipped a dashboard with Monitor tab, a Configure tab with only Connected Relays (NIP-65/DM as placeholders), and a compose relay picker. This plan fills in all relay categories that desktop features actually consume. diff --git a/docs/plans/2026-04-21-feat-relay-subscription-wiring-plan.md b/docs/plans/archive/2026-04-21-feat-relay-subscription-wiring-plan.md similarity index 98% rename from docs/plans/2026-04-21-feat-relay-subscription-wiring-plan.md rename to docs/plans/archive/2026-04-21-feat-relay-subscription-wiring-plan.md index 0da1ad422f..3226771755 100644 --- a/docs/plans/2026-04-21-feat-relay-subscription-wiring-plan.md +++ b/docs/plans/archive/2026-04-21-feat-relay-subscription-wiring-plan.md @@ -8,6 +8,10 @@ origin: docs/plans/2026-04-21-feat-relay-config-parity-plan.md # feat: Wire Relay Config Categories into Desktop Subscriptions +> **Status:** shipped — Superseded by the 2026-04-22 deepened version; relay-category wiring (DesktopRelayCategories/LocalRelayCategories) shipped. +> _Audited 2026-06-30._ + + ## Overview Desktop's relay config UI publishes relay list events (kinds 10002, 10050, 10007, 10006) but the app itself uses hardcoded defaults or all connected relays for every subscription. This plan wires each relay category into the features that consume it. diff --git a/docs/plans/2026-04-22-feat-relay-persistence-counts-per-screen-picker-plan.md b/docs/plans/archive/2026-04-22-feat-relay-persistence-counts-per-screen-picker-plan.md similarity index 98% rename from docs/plans/2026-04-22-feat-relay-persistence-counts-per-screen-picker-plan.md rename to docs/plans/archive/2026-04-22-feat-relay-persistence-counts-per-screen-picker-plan.md index d54730a130..e090d14f75 100644 --- a/docs/plans/2026-04-22-feat-relay-persistence-counts-per-screen-picker-plan.md +++ b/docs/plans/archive/2026-04-22-feat-relay-persistence-counts-per-screen-picker-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-04-22-relay-config-persistence-and-per-screen-edit # feat: Relay Config Persistence, Correct Counts, Per-Screen Picker +> **Status:** shipped — Per-screen relay editors (SearchRelayEditor, DmRelayEditor, etc.) and category counts shipped in ui/relay/. +> _Audited 2026-06-30._ + + ## Overview Three fixes to make relay management work end-to-end: persist config across restarts, show correct per-category relay counts, and add inline relay editing per screen. diff --git a/docs/plans/2026-04-22-feat-relay-subscription-wiring-plan.md b/docs/plans/archive/2026-04-22-feat-relay-subscription-wiring-plan.md similarity index 97% rename from docs/plans/2026-04-22-feat-relay-subscription-wiring-plan.md rename to docs/plans/archive/2026-04-22-feat-relay-subscription-wiring-plan.md index 6e458ded2f..497ceecb91 100644 --- a/docs/plans/2026-04-22-feat-relay-subscription-wiring-plan.md +++ b/docs/plans/archive/2026-04-22-feat-relay-subscription-wiring-plan.md @@ -9,6 +9,10 @@ deepened: 2026-04-22 # feat: Wire Relay Config Categories into Desktop Subscriptions +> **Status:** shipped — Relay-category subscription wiring shipped — DesktopRelayCategories provided via LocalRelayCategories CompositionLocal. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-04-22 diff --git a/docs/plans/2026-04-22-nip-audio-rooms-draft.md b/docs/plans/archive/2026-04-22-nip-audio-rooms-draft.md similarity index 98% rename from docs/plans/2026-04-22-nip-audio-rooms-draft.md rename to docs/plans/archive/2026-04-22-nip-audio-rooms-draft.md index 70ef43d4c6..26e8829f78 100644 --- a/docs/plans/2026-04-22-nip-audio-rooms-draft.md +++ b/docs/plans/archive/2026-04-22-nip-audio-rooms-draft.md @@ -1,5 +1,9 @@ # NIP-XX — Interactive Audio Rooms Join Protocol +> **Status:** shipped — Audio-rooms join protocol (moq-lite Lite-03) implemented in :nestsClient; draft spec mirrored in nestsClient/specs/. +> _Audited 2026-06-30._ + + `draft` `optional` > **Revision 2026-04-26.** Replaces the IETF MoQ-transport / `GET /` diff --git a/docs/plans/2026-04-22-pure-kotlin-quic-webtransport-plan.md b/docs/plans/archive/2026-04-22-pure-kotlin-quic-webtransport-plan.md similarity index 99% rename from docs/plans/2026-04-22-pure-kotlin-quic-webtransport-plan.md rename to docs/plans/archive/2026-04-22-pure-kotlin-quic-webtransport-plan.md index 64813e1d4b..8601e05002 100644 --- a/docs/plans/2026-04-22-pure-kotlin-quic-webtransport-plan.md +++ b/docs/plans/archive/2026-04-22-pure-kotlin-quic-webtransport-plan.md @@ -1,5 +1,9 @@ # Pure-Kotlin QUIC + WebTransport plan +> **Status:** shipped — Pure-Kotlin QUIC + HTTP/3 + WebTransport shipped as the :quic module (with interop runner). +> _Audited 2026-06-30._ + + ## Context The Audio Rooms feature (NIP-53 kind 30312) is wire-incompatible with anything but diff --git a/docs/plans/2026-04-23-feat-desktop-multi-account-support-plan.md b/docs/plans/archive/2026-04-23-feat-desktop-multi-account-support-plan.md similarity index 99% rename from docs/plans/2026-04-23-feat-desktop-multi-account-support-plan.md rename to docs/plans/archive/2026-04-23-feat-desktop-multi-account-support-plan.md index 3d41c52a7a..43ecaa7cbd 100644 --- a/docs/plans/2026-04-23-feat-desktop-multi-account-support-plan.md +++ b/docs/plans/archive/2026-04-23-feat-desktop-multi-account-support-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-04-23-desktop-multi-account-brainstorm.md # feat: Desktop Multi-Account Support +> **Status:** shipped — Multi-account shipped — AccountSwitcherDropdown + encrypted accounts.json.enc storage. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-04-24 diff --git a/docs/plans/2026-04-27-fix-deb-libicu-dependency-plan.md b/docs/plans/archive/2026-04-27-fix-deb-libicu-dependency-plan.md similarity index 95% rename from docs/plans/2026-04-27-fix-deb-libicu-dependency-plan.md rename to docs/plans/archive/2026-04-27-fix-deb-libicu-dependency-plan.md index 052f12dc3a..b11fc86e66 100644 --- a/docs/plans/2026-04-27-fix-deb-libicu-dependency-plan.md +++ b/docs/plans/archive/2026-04-27-fix-deb-libicu-dependency-plan.md @@ -1,5 +1,9 @@ # Fix: Relax libicu dependency in .deb packages +> **Status:** shipped — scripts/relax-deb-libicu.sh added and wired into build/release GitHub workflows. +> _Audited 2026-06-30._ + + **Date**: 2026-04-27 **Issue**: [#2579](https://github.com/vitorpamplona/amethyst/issues/2579) **Branch**: `fix/deb-libicu-dependency` diff --git a/docs/plans/2026-04-28-multi-account-testing-sheet.md b/docs/plans/archive/2026-04-28-multi-account-testing-sheet.md similarity index 97% rename from docs/plans/2026-04-28-multi-account-testing-sheet.md rename to docs/plans/archive/2026-04-28-multi-account-testing-sheet.md index 88416b7398..7c04179655 100644 --- a/docs/plans/2026-04-28-multi-account-testing-sheet.md +++ b/docs/plans/archive/2026-04-28-multi-account-testing-sheet.md @@ -1,5 +1,9 @@ # Multi-Account Testing Sheet +> **Status:** shipped — Testing sheet for the shipped desktop multi-account feature. +> _Audited 2026-06-30._ + + **Branch:** `feat/desktop-multi-account` **Date:** 2026-04-28 **Tester:** diff --git a/docs/plans/2026-05-04-fix-bunker-timeouts-and-decryption-plan.md b/docs/plans/archive/2026-05-04-fix-bunker-timeouts-and-decryption-plan.md similarity index 99% rename from docs/plans/2026-05-04-fix-bunker-timeouts-and-decryption-plan.md rename to docs/plans/archive/2026-05-04-fix-bunker-timeouts-and-decryption-plan.md index 5e13f70555..1c6acd5ace 100644 --- a/docs/plans/2026-05-04-fix-bunker-timeouts-and-decryption-plan.md +++ b/docs/plans/archive/2026-05-04-fix-bunker-timeouts-and-decryption-plan.md @@ -1,5 +1,9 @@ # Fix: Bunker Timeouts & Broken Decryption +> **Status:** shipped — BunkerResponseDecrypt parsing + same-id retry landed in quartz (RemoteSignerManagerRetryTest). +> _Audited 2026-06-30._ + + **Branch**: `fix/bunker-timeout-and-decrypt` **Date**: 2026-05-04 **Deepened**: 2026-05-04 diff --git a/docs/plans/2026-05-14-fix-account-security-hardening-plan.md b/docs/plans/archive/2026-05-14-fix-account-security-hardening-plan.md similarity index 99% rename from docs/plans/2026-05-14-fix-account-security-hardening-plan.md rename to docs/plans/archive/2026-05-14-fix-account-security-hardening-plan.md index 8aea7b996c..7d1e83818f 100644 --- a/docs/plans/2026-05-14-fix-account-security-hardening-plan.md +++ b/docs/plans/archive/2026-05-14-fix-account-security-hardening-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-05-14-fix-account-security-hardening-brainstorm.md # Account Security Hardening +> **Status:** shipped — Desktop account hardening shipped — encrypted accounts.json.enc, keychain-backed secrets, corruption signals in AccountManager. +> _Audited 2026-06-30._ + + ## Deepening Insights (2026-05-14) 1. **NWC URI reconstruction**: `Nip47URINorm` has a direct constructor `(pubKeyHex, relayUri, secret, lud16)` — no URI string parsing needed. Store pubKeyHex+relayUri in metadata, secret in keychain, reconstruct via constructor. diff --git a/docs/plans/2026-05-22-feat-desktop-note-action-bar-ux-plan.md b/docs/plans/archive/2026-05-22-feat-desktop-note-action-bar-ux-plan.md similarity index 98% rename from docs/plans/2026-05-22-feat-desktop-note-action-bar-ux-plan.md rename to docs/plans/archive/2026-05-22-feat-desktop-note-action-bar-ux-plan.md index be0b8d2843..1ccfdf5fac 100644 --- a/docs/plans/2026-05-22-feat-desktop-note-action-bar-ux-plan.md +++ b/docs/plans/archive/2026-05-22-feat-desktop-note-action-bar-ux-plan.md @@ -9,6 +9,10 @@ deepened: 2026-05-22 # Desktop Note Action Bar — Long-Press Details + Right-Click Customize +> **Status:** shipped — Long-press/right-click note action gestures shipped in desktop NoteActions.kt. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-05-22 diff --git a/docs/plans/2026-05-22-fix-desktop-note-action-counters-and-quote-plan.md b/docs/plans/archive/2026-05-22-fix-desktop-note-action-counters-and-quote-plan.md similarity index 96% rename from docs/plans/2026-05-22-fix-desktop-note-action-counters-and-quote-plan.md rename to docs/plans/archive/2026-05-22-fix-desktop-note-action-counters-and-quote-plan.md index facca72812..f0d5ef97f5 100644 --- a/docs/plans/2026-05-22-fix-desktop-note-action-counters-and-quote-plan.md +++ b/docs/plans/archive/2026-05-22-fix-desktop-note-action-counters-and-quote-plan.md @@ -7,6 +7,10 @@ date: 2026-05-22 # Fix Desktop Note Action Counters, Quote Boost, and Boost Detail Popup +> **Status:** shipped — Reactive counters + kind-1 reply interactions added to DesktopRelaySubscriptionsCoordinator.requestInteractions. +> _Audited 2026-06-30._ + + ## Problems ### 1. Counters show zero for reactions, zaps, replies, reposts diff --git a/docs/plans/2026-05-26-feat-desktop-profile-editing-plan.md b/docs/plans/archive/2026-05-26-feat-desktop-profile-editing-plan.md similarity index 99% rename from docs/plans/2026-05-26-feat-desktop-profile-editing-plan.md rename to docs/plans/archive/2026-05-26-feat-desktop-profile-editing-plan.md index c45c4c54ce..1fb09ae2c7 100644 --- a/docs/plans/2026-05-26-feat-desktop-profile-editing-plan.md +++ b/docs/plans/archive/2026-05-26-feat-desktop-profile-editing-plan.md @@ -9,6 +9,10 @@ deepened: 2026-05-26 # Desktop Profile Editing — Full Parity + Desktop Polish +> **Status:** shipped — Full profile editing shipped — EditProfileScreen + commons EditProfileFields. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-05-26 diff --git a/docs/plans/2026-05-28-feat-desktop-search-spotlight-plan.md b/docs/plans/archive/2026-05-28-feat-desktop-search-spotlight-plan.md similarity index 98% rename from docs/plans/2026-05-28-feat-desktop-search-spotlight-plan.md rename to docs/plans/archive/2026-05-28-feat-desktop-search-spotlight-plan.md index 9e4d8b4eb3..c8402d5adc 100644 --- a/docs/plans/2026-05-28-feat-desktop-search-spotlight-plan.md +++ b/docs/plans/archive/2026-05-28-feat-desktop-search-spotlight-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-05-28-feat-desktop-search-spotlight-brainstorm.md # feat: Desktop Search Spotlight + Unified Feed Header Bar +> **Status:** shipped — Implemented as SearchSpotlight + SearchPill + feed header bar on desktop. +> _Audited 2026-06-30._ + + ## Overview Add a global search spotlight overlay (Cmd+F) and a unified feed header bar that combines feed tabs with a search pill. Also fix the bug where "+ Add more" feeds only works from the Home feed by moving it to the sidebar. diff --git a/docs/plans/2026-05-28-feat-desktop-visual-personality-plan.md b/docs/plans/archive/2026-05-28-feat-desktop-visual-personality-plan.md similarity index 99% rename from docs/plans/2026-05-28-feat-desktop-visual-personality-plan.md rename to docs/plans/archive/2026-05-28-feat-desktop-visual-personality-plan.md index 031de753ae..14faccf3d5 100644 --- a/docs/plans/2026-05-28-feat-desktop-visual-personality-plan.md +++ b/docs/plans/archive/2026-05-28-feat-desktop-visual-personality-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-05-27-desktop-visual-personality-brainstorm.md # feat: Desktop Visual Personality Overhaul +> **Status:** shipped — Visual overhaul shipped — ShimmerPlaceholder, LocalIsDarkTheme/PlatformTheme, hover and shortcuts. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-05-28 diff --git a/docs/plans/2026-05-28-fix-feed-header-search-ux-plan.md b/docs/plans/archive/2026-05-28-fix-feed-header-search-ux-plan.md similarity index 98% rename from docs/plans/2026-05-28-fix-feed-header-search-ux-plan.md rename to docs/plans/archive/2026-05-28-fix-feed-header-search-ux-plan.md index f23cb69076..eef3843bc1 100644 --- a/docs/plans/2026-05-28-fix-feed-header-search-ux-plan.md +++ b/docs/plans/archive/2026-05-28-fix-feed-header-search-ux-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-05-28-feat-desktop-search-spotlight-brainstorm.md # fix: Feed Header Bar Layout + Inline Search UX +> **Status:** shipped — Feed header bar + inline search UX fixes landed (SearchPill, FeedScreen FeedTabsHeader). +> _Audited 2026-06-30._ + + ## Overview Fix 5 issues with the feed header bar and search experience introduced in the visual personality overhaul. diff --git a/docs/plans/2026-06-02-feat-new-posts-chip-desktop-feed-plan.md b/docs/plans/archive/2026-06-02-feat-new-posts-chip-desktop-feed-plan.md similarity index 99% rename from docs/plans/2026-06-02-feat-new-posts-chip-desktop-feed-plan.md rename to docs/plans/archive/2026-06-02-feat-new-posts-chip-desktop-feed-plan.md index 0990a643cd..62172eff49 100644 --- a/docs/plans/2026-06-02-feat-new-posts-chip-desktop-feed-plan.md +++ b/docs/plans/archive/2026-06-02-feat-new-posts-chip-desktop-feed-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-06-02-stale-feed-on-launch-new-posts-chip-brainsto # feat: New posts chip on desktop feed +> **Status:** shipped — Implemented as commons NewPostsChip + NewPostsChipState (with tests), mounted in desktop FeedScreen. +> _Audited 2026-06-30._ + + ## Overview Add a Twitter/Mastodon-style "New posts" floating pill chip to the Amethyst Desktop home feed. The chip slides down from the top — anchored just below the `FeedTabsHeader` (the search bar / header card) — whenever new events arrive while the user is scrolled away from the top of the list. Tapping the chip smooth-scrolls to position 0 and slides the chip back up off-screen. Scrolling to the top manually dismisses it the same way. diff --git a/docs/plans/2026-06-02-fix-desktop-feed-review-findings-plan.md b/docs/plans/archive/2026-06-02-fix-desktop-feed-review-findings-plan.md similarity index 99% rename from docs/plans/2026-06-02-fix-desktop-feed-review-findings-plan.md rename to docs/plans/archive/2026-06-02-fix-desktop-feed-review-findings-plan.md index 4beeba620f..d61e49c14a 100644 --- a/docs/plans/2026-06-02-fix-desktop-feed-review-findings-plan.md +++ b/docs/plans/archive/2026-06-02-fix-desktop-feed-review-findings-plan.md @@ -12,6 +12,10 @@ deepened: 2026-06-02 # Fix 5 review findings on PR #3124 +> **Status:** shipped — PR #3124 review findings resolved (consume/broadcast couplet, reply kind handling, formatSats). +> _Audited 2026-06-30._ + + ## Enhancement summary (2026-06-02 deepen-plan) Eight parallel agents resolved all 5 open questions and surfaced 3 plan revisions: diff --git a/docs/plans/2026-06-05-feat-profile-replies-section-plan.md b/docs/plans/archive/2026-06-05-feat-profile-replies-section-plan.md similarity index 98% rename from docs/plans/2026-06-05-feat-profile-replies-section-plan.md rename to docs/plans/archive/2026-06-05-feat-profile-replies-section-plan.md index 61fb3d0504..2b0f55d2a9 100644 --- a/docs/plans/2026-06-05-feat-profile-replies-section-plan.md +++ b/docs/plans/archive/2026-06-05-feat-profile-replies-section-plan.md @@ -7,6 +7,10 @@ date: 2026-06-05 # Desktop Profile — Replies Tab +> **Status:** shipped — Replies tab shipped in desktop UserProfileScreen via DesktopProfileFeedFilter (test present). +> _Audited 2026-06-30._ + + ## Enhancement Summary (deepen-plan, 2026-06-05) Source-verified facts (carried into the final design): diff --git a/docs/plans/2026-06-05-fix-desktop-feed-reply-context-plan.md b/docs/plans/archive/2026-06-05-fix-desktop-feed-reply-context-plan.md similarity index 99% rename from docs/plans/2026-06-05-fix-desktop-feed-reply-context-plan.md rename to docs/plans/archive/2026-06-05-fix-desktop-feed-reply-context-plan.md index bc91fad3dc..c600ac1960 100644 --- a/docs/plans/2026-06-05-fix-desktop-feed-reply-context-plan.md +++ b/docs/plans/archive/2026-06-05-fix-desktop-feed-reply-context-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-06-05-desktop-feed-reply-context-brainstorm.md # Desktop Feed — Reply Context Rendering +> **Status:** shipped — Reply-context rendering shipped — commons ReplyContext.kt (with tests) used by NoteCard. +> _Audited 2026-06-30._ + + ## Enhancement Summary **Deepened on:** 2026-06-05 diff --git a/docs/plans/2026-06-10-feat-unhealthy-relay-review-plan.md b/docs/plans/archive/2026-06-10-feat-unhealthy-relay-review-plan.md similarity index 99% rename from docs/plans/2026-06-10-feat-unhealthy-relay-review-plan.md rename to docs/plans/archive/2026-06-10-feat-unhealthy-relay-review-plan.md index 306e892eef..57a3acf7e6 100644 --- a/docs/plans/2026-06-10-feat-unhealthy-relay-review-plan.md +++ b/docs/plans/archive/2026-06-10-feat-unhealthy-relay-review-plan.md @@ -8,6 +8,10 @@ origin: docs/brainstorms/2026-06-10-unhealthy-relay-review-brainstorm.md # Unhealthy Relay Review +> **Status:** shipped — Shipped — commons RelayHealthStore + UnhealthyRelayBanner/Row, desktop UnhealthyRelayBannerHost/Popup. +> _Audited 2026-06-30._ + + ## Enhancement Summary (deepen-plan, 2026-06-10) Seven parallel review agents critiqued the original plan. The implementation below follows the refined design; the original sections are kept for context but **superseded** where they conflict. diff --git a/docs/plans/2026-06-11-feat-replace-vlcj-with-kdroidfilter-plan.md b/docs/plans/archive/2026-06-11-feat-replace-vlcj-with-kdroidfilter-plan.md similarity index 99% rename from docs/plans/2026-06-11-feat-replace-vlcj-with-kdroidfilter-plan.md rename to docs/plans/archive/2026-06-11-feat-replace-vlcj-with-kdroidfilter-plan.md index 5401640a1d..e939471ddd 100644 --- a/docs/plans/2026-06-11-feat-replace-vlcj-with-kdroidfilter-plan.md +++ b/docs/plans/archive/2026-06-11-feat-replace-vlcj-with-kdroidfilter-plan.md @@ -9,6 +9,10 @@ origin: docs/brainstorms/2026-06-11-vlcj-replacement-migration-brainstorm.md # Replace vlcj with kdroidFilter ComposeMediaPlayer + JCodec/Jaffree +> **Status:** shipped — Migration complete — composemediaplayer/jcodec deps in catalog, vlcj/caprica removed from source. +> _Audited 2026-06-30._ + + ## Enhancement Summary (Deepened 2026-06-11) **Research artifacts (companion files):** diff --git a/docs/plans/2026-06-11-vlcj-replacement-testing-sheet.md b/docs/plans/archive/2026-06-11-vlcj-replacement-testing-sheet.md similarity index 98% rename from docs/plans/2026-06-11-vlcj-replacement-testing-sheet.md rename to docs/plans/archive/2026-06-11-vlcj-replacement-testing-sheet.md index b45ae2c1cb..5b1a6ea221 100644 --- a/docs/plans/2026-06-11-vlcj-replacement-testing-sheet.md +++ b/docs/plans/archive/2026-06-11-vlcj-replacement-testing-sheet.md @@ -1,5 +1,9 @@ # Manual Testing Sheet — vlcj → kdroidFilter Migration +> **Status:** shipped — Testing sheet for the completed kdroidFilter migration (build verified on macOS arm64). +> _Audited 2026-06-30._ + + **Plan:** [`2026-06-11-feat-replace-vlcj-with-kdroidfilter-plan.md`](2026-06-11-feat-replace-vlcj-with-kdroidfilter-plan.md) **Branch / worktree:** `.claude/worktrees/vlcj-licensing-brainstorm` (branch `worktree-vlcj-licensing-brainstorm`) **Date:** 2026-06-11 diff --git a/geode/plans/README.md b/geode/plans/README.md index 6524503b3b..14807fb2a5 100644 --- a/geode/plans/README.md +++ b/geode/plans/README.md @@ -1,5 +1,7 @@ # geode plans +_Audited 2026-06-30. 4 plans: 4 shipped (archived), 0 in-progress, 0 queued, 0 abandoned._ + Performance-focused design docs for future work. Each file is a self-contained sketch — problem statement, observed numbers, proposed fix, how to verify, risks. None of these are committed work; they're @@ -7,13 +9,20 @@ the queue. Ordered roughly by expected impact: -| Plan | Headline gain | -| ---- | ------------- | -| [2026-05-07-event-ingestion-batching.md](2026-05-07-event-ingestion-batching.md) | 5–10× write EPS via SQLite group commit + ingest pipelining | -| [2026-05-07-live-broadcast-fanout-index.md](2026-05-07-live-broadcast-fanout-index.md) | >10× fanout speedup at >2 000 subscribers | -| [2026-05-07-connection-scaling.md](2026-05-07-connection-scaling.md) | 2 000 → 10 000+ concurrent connections | -| [2026-05-07-negentropy-large-corpus.md](2026-05-07-negentropy-large-corpus.md) | 25× lower memory + faster NEG-OPEN on M-event corpora | +| Plan | Headline gain | Status | +| ---- | ------------- | ------ | +| [archive/2026-05-07-event-ingestion-batching.md](archive/2026-05-07-event-ingestion-batching.md) | 5–10× write EPS via SQLite group commit + ingest pipelining | shipped (archived) | +| [archive/2026-05-07-live-broadcast-fanout-index.md](archive/2026-05-07-live-broadcast-fanout-index.md) | >10× fanout speedup at >2 000 subscribers | shipped (archived) | +| [archive/2026-05-07-connection-scaling.md](archive/2026-05-07-connection-scaling.md) | 2 000 → 10 000+ concurrent connections | shipped (archived) | +| [archive/2026-05-07-negentropy-large-corpus.md](archive/2026-05-07-negentropy-large-corpus.md) | 25× lower memory + faster NEG-OPEN on M-event corpora | shipped (archived) | Verification target for each plan is a new method on `geode.perf.LoadBenchmark` (gated by `-DrunLoadBenchmark=true`) so regressions show up in the regular CI matrix once they're enabled. + +## Archived (shipped) + +- [archive/2026-05-07-event-ingestion-batching.md](archive/2026-05-07-event-ingestion-batching.md) +- [archive/2026-05-07-live-broadcast-fanout-index.md](archive/2026-05-07-live-broadcast-fanout-index.md) +- [archive/2026-05-07-connection-scaling.md](archive/2026-05-07-connection-scaling.md) +- [archive/2026-05-07-negentropy-large-corpus.md](archive/2026-05-07-negentropy-large-corpus.md) diff --git a/geode/plans/2026-05-07-connection-scaling.md b/geode/plans/archive/2026-05-07-connection-scaling.md similarity index 95% rename from geode/plans/2026-05-07-connection-scaling.md rename to geode/plans/archive/2026-05-07-connection-scaling.md index 2b8bfd430f..1ff179c086 100644 --- a/geode/plans/2026-05-07-connection-scaling.md +++ b/geode/plans/archive/2026-05-07-connection-scaling.md @@ -1,5 +1,8 @@ # Connection scaling: pushing past 2 000 +> **Status:** shipped — Sketches A (`Channel.UNLIMITED` + `outstanding` cap in `WebSocketSessionPump`), B (`connection_group_size`/`worker_group_size`/`call_group_size` CIO knobs in `StaticConfig`), and C (streaming `ManualFilterDeserializer.fromJson(JsonParser)`) are all in code, with the `connectionsHeldOpen10k` / `connectionsHeldOpenWithFanout` benchmarks in `LoadBenchmark`. +> _Audited 2026-06-30._ + > **Status (2026-05-07):** Sketches A and B shipped on > `claude/connection-scaling-plan-YVjc8`. Sketch C landed as a smaller > slice in Quartz — the streaming-filter cut — once the audit showed diff --git a/geode/plans/2026-05-07-event-ingestion-batching.md b/geode/plans/archive/2026-05-07-event-ingestion-batching.md similarity index 94% rename from geode/plans/2026-05-07-event-ingestion-batching.md rename to geode/plans/archive/2026-05-07-event-ingestion-batching.md index 7ec6d42253..a6da54ef13 100644 --- a/geode/plans/2026-05-07-event-ingestion-batching.md +++ b/geode/plans/archive/2026-05-07-event-ingestion-batching.md @@ -1,5 +1,8 @@ # Event ingestion: write batching + pipelined OK +> **Status:** shipped — all three tiers landed: `IEventStore.batchInsert`/`SQLiteEventStore` group commit, the `IngestQueue` pipeline wired through `NostrServer`/`RelayEngine`, and `parallelVerify` with the `VerifyPolicy`/`VerifyAuthOnlyPolicy` split; `publishGroupCommitSingleClient` and `publishPipelinedSingleClient` benchmarks exist. +> _Audited 2026-06-30._ + ## Problem EVENT acceptance is the hot path on a busy relay — every published note, diff --git a/geode/plans/2026-05-07-live-broadcast-fanout-index.md b/geode/plans/archive/2026-05-07-live-broadcast-fanout-index.md similarity index 96% rename from geode/plans/2026-05-07-live-broadcast-fanout-index.md rename to geode/plans/archive/2026-05-07-live-broadcast-fanout-index.md index 05c2ad34ae..bd8fda1116 100644 --- a/geode/plans/2026-05-07-live-broadcast-fanout-index.md +++ b/geode/plans/archive/2026-05-07-live-broadcast-fanout-index.md @@ -1,5 +1,8 @@ # Live broadcast: indexed filter matching for fanout +> **Status:** shipped — `FilterIndex` exists in quartz and drives both the relay `LiveEventStore` (Phase 1) and `LocalCache.observables` (Phase 2); `LoadBenchmark.fanoutScaling` is present. Phase 3 (per-projection dispatch) remains an explicit follow-up, but the core fanout-index perf change is in code. +> _Audited 2026-06-30._ + > **Status (2026-05-07):** Phase 1 (relay server) and Phase 2 (Amethyst client > `LocalCache.observables`) are implemented. Phase 3 (per-projection dispatch > from `ObservableEventStore.changes`) is left as future work — see "What's diff --git a/geode/plans/2026-05-07-negentropy-large-corpus.md b/geode/plans/archive/2026-05-07-negentropy-large-corpus.md similarity index 96% rename from geode/plans/2026-05-07-negentropy-large-corpus.md rename to geode/plans/archive/2026-05-07-negentropy-large-corpus.md index a6b2b4f763..bdfe01077d 100644 --- a/geode/plans/2026-05-07-negentropy-large-corpus.md +++ b/geode/plans/archive/2026-05-07-negentropy-large-corpus.md @@ -1,5 +1,8 @@ # NIP-77 negentropy at scale: strfry-interop snapshot path +> **Status:** shipped — sketches A–D landed: `IEventStore.snapshotIdsForNegentropy`/`IdAndTime` id-and-time snapshot, `max_sync_events`/`frame_size_limit` (500_000)/`max_sessions_per_connection` (200) config, and strfry-verbatim NEG-ERR/NOTICE wording, with `SnapshotIdsForNegentropyTest`, `Nip77NegentropyTest`, and a geode-vs-geode sync test. (E prebuilt-tree is an explicit out-of-scope follow-up; the dedicated `LoadBenchmark` negentropy cases were not added.) +> _Audited 2026-06-30._ + ## Problem `RelaySession` delegates NEG-OPEN to `NegSessionRegistry.open` diff --git a/nestsClient/plans/2026-05-07-cross-stack-interop-ci-gating.md b/nestsClient/plans/2026-05-07-cross-stack-interop-ci-gating.md index 01dca58157..54c5092842 100644 --- a/nestsClient/plans/2026-05-07-cross-stack-interop-ci-gating.md +++ b/nestsClient/plans/2026-05-07-cross-stack-interop-ci-gating.md @@ -1,5 +1,8 @@ # Plan: wire CI gating for the cross-stack interop suite +> **Status:** queued — infra was wired (`21947bc5`) then DEFERRED/removed by maintainer over wallclock cost; kept in-tree as the ready-made target for a future CI-gating revisit. +> _Audited 2026-06-30._ + **Status:** ⏸ DEFERRED 2026-05-07. The infrastructure to wire CI is ready — both jobs landed in commit `21947bc5` and a 10/10 stability sweep × 22 tests = diff --git a/nestsClient/plans/2026-05-07-framespergroup-production-rerun.md b/nestsClient/plans/2026-05-07-framespergroup-production-rerun.md index 3883132117..62e9007253 100644 --- a/nestsClient/plans/2026-05-07-framespergroup-production-rerun.md +++ b/nestsClient/plans/2026-05-07-framespergroup-production-rerun.md @@ -1,5 +1,8 @@ # Plan: re-run HCgOY field tests against current production +> **Status:** queued — specced and pickup-ready but not started; needs prod-rig access to run the two-phone field test that settles the framesPerGroup pin-vs-default question. +> _Audited 2026-06-30._ + **Status:** specced — pickup ready (needs prod-rig access). **Cross-ref:** `nestsClient/plans/2026-05-07-framespergroup-reconciliation.md` documents the conflict between the cliff plan's value (5) and diff --git a/nestsClient/plans/2026-05-07-t16-closure-roadmap.md b/nestsClient/plans/2026-05-07-t16-closure-roadmap.md index f5fd82852a..7a35061c93 100644 --- a/nestsClient/plans/2026-05-07-t16-closure-roadmap.md +++ b/nestsClient/plans/2026-05-07-t16-closure-roadmap.md @@ -1,5 +1,8 @@ # T16 closure roadmap — full coverage with correct behaviours +> **Status:** in-progress — Priorities 1 & 2 closed and the suite passes in-suite, but P3 (CI gating) is deferred and the framesPerGroup rerun + two upstream items remain open, so the roadmap's "fully closed" goal is not reached. +> _Audited 2026-06-30._ + **Goal state.** Every spec'd cross-stack scenario green in suite-mode sweeps, asserting its full design intent (no soft-passes, no vacuous threshold loosening), with CI gating live and stable. diff --git a/nestsClient/plans/README.md b/nestsClient/plans/README.md new file mode 100644 index 0000000000..3dfcd79587 --- /dev/null +++ b/nestsClient/plans/README.md @@ -0,0 +1,41 @@ +# nestsClient plans + +_Audited 2026-06-30. 26 plans: 23 shipped (archived), 1 in-progress, 2 queued, 0 abandoned._ + +## In progress +| Plan | Summary | +| ---- | ------- | +| [2026-05-07-t16-closure-roadmap.md](2026-05-07-t16-closure-roadmap.md) | T16 closure roadmap: Priorities 1 & 2 closed and suite passes, but CI gating is deferred and the framesPerGroup rerun plus two upstream items remain open. | + +## Queued +| Plan | Summary | +| ---- | ------- | +| [2026-05-07-cross-stack-interop-ci-gating.md](2026-05-07-cross-stack-interop-ci-gating.md) | Wire CI gating for the cross-stack interop suite; infra was built then removed by maintainer over wallclock cost, kept as the ready target for a revisit. | +| [2026-05-07-framespergroup-production-rerun.md](2026-05-07-framespergroup-production-rerun.md) | Re-run the HCgOY two-phone field tests against current production to settle the framesPerGroup test-pin (5) vs default (50); needs prod-rig access. | + +## Archived (shipped) +| Plan | Summary | +| ---- | ------- | +| [archive/2026-04-26-audio-rooms-completion.md](archive/2026-04-26-audio-rooms-completion.md) | Audio-rooms completion: listener + speaker live on moq-lite, create-space flow and kind-10112 server list shipped. | +| [archive/2026-04-26-background-audio-audit.md](archive/2026-04-26-background-audio-audit.md) | Background-audio audit of the foreground service; 4/5 passed and the audio-focus fix landed. | +| [archive/2026-04-26-moq-lite-gap.md](archive/2026-04-26-moq-lite-gap.md) | Bridged the IETF→moq-lite protocol gap; Lite-03 listener + speaker landed against the real nostrnests stack. | +| [archive/2026-04-26-nostrnests-integration-audit.md](archive/2026-04-26-nostrnests-integration-audit.md) | Nostrnests feature-parity punchlist; split into the Tier 1-4 coding plans, all shipped. | +| [archive/2026-04-26-tier-plans-index.md](archive/2026-04-26-tier-plans-index.md) | Index of the four tier coding plans, all of which shipped. | +| [archive/2026-04-26-tier1-coding-plan.md](archive/2026-04-26-tier1-coding-plan.md) | Tier 1: presence aggregation, chat, reactions, roles, kick, scheduled rooms, listener counter — all in code. | +| [archive/2026-04-26-tier2-coding-plan.md](archive/2026-04-26-tier2-coding-plan.md) | Tier 2: participant grid, per-avatar context menu, zap entry points, naddr share — all in code. | +| [archive/2026-04-26-tier3-coding-plan.md](archive/2026-04-26-tier3-coding-plan.md) | Tier 3: room theming parsers (ColorTag/FontTag/BackgroundTag) and the background-audio audit. | +| [archive/2026-04-26-tier4-coding-plan.md](archive/2026-04-26-tier4-coding-plan.md) | Tier 4: token re-mint and moq-lite reconnect-with-backoff (ReconnectingNestsListener/Speaker + NestsReconnectPolicy). | +| [archive/2026-04-28-listener-survives-publisher-recycle.md](archive/2026-04-28-listener-survives-publisher-recycle.md) | Resolution log: all three reconnecting-listener interop scenarios pass against the real moq-rs relay. | +| [archive/2026-05-01-quic-stream-cliff-investigation.md](archive/2026-05-01-quic-stream-cliff-investigation.md) | QUIC stream-cliff investigation closed production-fixed via a `:quic` bug fix + broadcaster cadence tuning. | +| [archive/2026-05-06-cross-stack-interop-test-gap-matrix.md](archive/2026-05-06-cross-stack-interop-test-gap-matrix.md) | Maps each landed T# wire fix to its asserting hang/browser interop scenario (DoD #5). | +| [archive/2026-05-06-cross-stack-interop-test-results.md](archive/2026-05-06-cross-stack-interop-test-results.md) | Cross-stack interop results: 22/23 scenarios green and merged. | +| [archive/2026-05-06-cross-stack-interop-test.md](archive/2026-05-06-cross-stack-interop-test.md) | Cross-stack interop test (T16) spec; implemented and merged as the hang/browser suites. | +| [archive/2026-05-06-i4-stereo-cross-stack-scenario.md](archive/2026-05-06-i4-stereo-cross-stack-scenario.md) | I4 stereo scenario; production per-stream channel-count change merged (PR #2755) plus the test scenarios. | +| [archive/2026-05-06-phase4-browser-harness-results.md](archive/2026-05-06-phase4-browser-harness-results.md) | Phase 4 browser-harness landed results (the CI job was added then removed per maintainer ask). | +| [archive/2026-05-06-phase4-browser-harness.md](archive/2026-05-06-phase4-browser-harness.md) | Phase 4 browser-side cross-stack harness; BrowserInteropTest landed under `nestsClient/tests/browser-interop/`. | +| [archive/2026-05-07-framespergroup-reconciliation.md](archive/2026-05-07-framespergroup-reconciliation.md) | Documentation closing the test-pin (5) vs production-default (50) contradiction; both correct for their own relay cliffs. | +| [archive/2026-05-07-i7-post-reconnect-cliff-investigation.md](archive/2026-05-07-i7-post-reconnect-cliff-investigation.md) | Investigation-only record pinning the post-reconnect cliff on the upstream moq-relay forward queue. | +| [archive/2026-05-07-late-join-catalog-flake-investigation.md](archive/2026-05-07-late-join-catalog-flake-investigation.md) | Late-join catalog flake closed by merging `origin/main`'s 5 `:quic` commits; 55/55 tests pass. | +| [archive/2026-05-07-moq-relay-routing-investigation.md](archive/2026-05-07-moq-relay-routing-investigation.md) | Routing-race investigation closed; root cause was a `:quic` packet-acceptance bug, fixed by the merge. | +| [archive/2026-05-07-tighten-cross-stack-assertions.md](archive/2026-05-07-tighten-cross-stack-assertions.md) | Hardened 7 BrowserInteropTest scenarios + helper from soft- to hard-pass floors; 110/110 sweep. | +| [archive/2026-05-09-moq-lite-rfc-compliance.md](archive/2026-05-09-moq-lite-rfc-compliance.md) | moq-lite Lite-03 compliance audit; no wire-incompatibilities, nine spec tightenings + Lite-04 codec all shipped. | diff --git a/nestsClient/plans/2026-04-26-audio-rooms-completion.md b/nestsClient/plans/archive/2026-04-26-audio-rooms-completion.md similarity index 95% rename from nestsClient/plans/2026-04-26-audio-rooms-completion.md rename to nestsClient/plans/archive/2026-04-26-audio-rooms-completion.md index 078a193ab8..602f88a568 100644 --- a/nestsClient/plans/2026-04-26-audio-rooms-completion.md +++ b/nestsClient/plans/archive/2026-04-26-audio-rooms-completion.md @@ -1,5 +1,8 @@ # Audio rooms — completion plan +> **Status:** shipped — listener + speaker paths live end-to-end on moq-lite, create-space flow and kind-10112 server list shipped; verified via the nests UI modules and the green `:nestsClient:jvmTest` suite. +> _Audited 2026-06-30._ + > **STATUS (2026-04-26 PM):** Listener and speaker paths are both live > end-to-end on moq-lite Lite-03, the create-space flow ships, and the > kind-10112 host-server list lives in Settings. What remains is diff --git a/nestsClient/plans/2026-04-26-background-audio-audit.md b/nestsClient/plans/archive/2026-04-26-background-audio-audit.md similarity index 94% rename from nestsClient/plans/2026-04-26-background-audio-audit.md rename to nestsClient/plans/archive/2026-04-26-background-audio-audit.md index a3594d8c77..286b1903a3 100644 --- a/nestsClient/plans/2026-04-26-background-audio-audit.md +++ b/nestsClient/plans/archive/2026-04-26-background-audio-audit.md @@ -1,5 +1,8 @@ # Background-audio audit (T3 #2) +> **Status:** shipped — audit of `AudioRoomForegroundService`; 4/5 items passed, the audio-focus fix landed, no follow-ups remain. +> _Audited 2026-06-30._ + Audit run for the Tier-3 plan checklist. Items pass-by-default; deltas captured below. diff --git a/nestsClient/plans/2026-04-26-moq-lite-gap.md b/nestsClient/plans/archive/2026-04-26-moq-lite-gap.md similarity index 98% rename from nestsClient/plans/2026-04-26-moq-lite-gap.md rename to nestsClient/plans/archive/2026-04-26-moq-lite-gap.md index 9f1ec0cfc9..e12485e147 100644 --- a/nestsClient/plans/2026-04-26-moq-lite-gap.md +++ b/nestsClient/plans/archive/2026-04-26-moq-lite-gap.md @@ -1,5 +1,8 @@ # Plan: bridge the moq-lite protocol gap +> **Status:** shipped — moq-lite Lite-03 listener + speaker landed (phases 5a-5d, `fb47a4c`→`71cf99d`); doc self-marks DONE and `moq/lite/` is the production stack. +> _Audited 2026-06-30._ + **Status:** ✅ **DONE** — listener + speaker on moq-lite Lite-03 against the real nostrnests stack. Phases 5a → 5d landed (`fb47a4c` → `71cf99d`); follow-up cleanup + harness fixes shipped through `015b0d7`. diff --git a/nestsClient/plans/2026-04-26-nostrnests-integration-audit.md b/nestsClient/plans/archive/2026-04-26-nostrnests-integration-audit.md similarity index 97% rename from nestsClient/plans/2026-04-26-nostrnests-integration-audit.md rename to nestsClient/plans/archive/2026-04-26-nostrnests-integration-audit.md index eaed76d2c8..187fa7d916 100644 --- a/nestsClient/plans/2026-04-26-nostrnests-integration-audit.md +++ b/nestsClient/plans/archive/2026-04-26-nostrnests-integration-audit.md @@ -1,5 +1,8 @@ # Nostrnests integration audit (2026-04-26) +> **Status:** shipped — punchlist split into the Tier 1-4 coding plans, all of which landed (chat, reactions, roles, kick, participant grid, theming, reconnect all present in the nests modules). +> _Audited 2026-06-30._ + What `nostrnests/NestsUI-v2` does that Amethyst doesn't yet — sourced from a code-walk of the React app, the moq-auth sidecar, and the moq-lite reference. Use this as the punchlist for the next chunks of diff --git a/nestsClient/plans/2026-04-26-tier-plans-index.md b/nestsClient/plans/archive/2026-04-26-tier-plans-index.md similarity index 95% rename from nestsClient/plans/2026-04-26-tier-plans-index.md rename to nestsClient/plans/archive/2026-04-26-tier-plans-index.md index 9a9df9dff8..d2d07a9950 100644 --- a/nestsClient/plans/2026-04-26-tier-plans-index.md +++ b/nestsClient/plans/archive/2026-04-26-tier-plans-index.md @@ -1,5 +1,8 @@ # Tier 1-4 coding plans — index +> **Status:** shipped — index for the four tier coding plans, all of which shipped. +> _Audited 2026-06-30._ + Concrete, file-level coding plans for shipping the punchlist captured in `2026-04-26-nostrnests-integration-audit.md`. Split across four files (one per tier) so each commit / PR stays small and reviewable. diff --git a/nestsClient/plans/2026-04-26-tier1-coding-plan.md b/nestsClient/plans/archive/2026-04-26-tier1-coding-plan.md similarity index 98% rename from nestsClient/plans/2026-04-26-tier1-coding-plan.md rename to nestsClient/plans/archive/2026-04-26-tier1-coding-plan.md index df158e4583..d2f0b95e66 100644 --- a/nestsClient/plans/2026-04-26-tier1-coding-plan.md +++ b/nestsClient/plans/archive/2026-04-26-tier1-coding-plan.md @@ -1,5 +1,8 @@ # Tier 1 — coding plan (presence aggregation, chat, reactions, roles, kick, edit/close, scheduled, listener counter) +> **Status:** shipped — `RoomPresenceState`, `MeetingRoomPresenceEvent` publishing/onstage tags, `NestChatPanel`, hand-raise queue and kick (4312) actions all exist in commons/amethyst/quartz. +> _Audited 2026-06-30._ + Concrete file-level plan for shipping Tier 1 of `2026-04-26-nostrnests-integration-audit.md`. Sequence is **strict** — later items consume types added by earlier ones. diff --git a/nestsClient/plans/2026-04-26-tier2-coding-plan.md b/nestsClient/plans/archive/2026-04-26-tier2-coding-plan.md similarity index 96% rename from nestsClient/plans/2026-04-26-tier2-coding-plan.md rename to nestsClient/plans/archive/2026-04-26-tier2-coding-plan.md index 7ad9bd5a2c..e0e2adcfd3 100644 --- a/nestsClient/plans/2026-04-26-tier2-coding-plan.md +++ b/nestsClient/plans/archive/2026-04-26-tier2-coding-plan.md @@ -1,5 +1,8 @@ # Tier 2 — coding plan (participant grid, per-avatar context menu, zap, naddr share) +> **Status:** shipped — `ParticipantGrid` (commons) + `ParticipantsGrid`/`SpeakerZapOverlay`/`ParticipantHostActionsSheet` (amethyst) deliver the grid, context menu and zap entry points. +> _Audited 2026-06-30._ + Concrete file-level plan for shipping Tier 2 of `2026-04-26-nostrnests-integration-audit.md`. Assumes Tier 1 has landed (presence aggregation, role parsing, edit-room flow). diff --git a/nestsClient/plans/2026-04-26-tier3-coding-plan.md b/nestsClient/plans/archive/2026-04-26-tier3-coding-plan.md similarity index 96% rename from nestsClient/plans/2026-04-26-tier3-coding-plan.md rename to nestsClient/plans/archive/2026-04-26-tier3-coding-plan.md index d670a1fadf..0940b7ece0 100644 --- a/nestsClient/plans/2026-04-26-tier3-coding-plan.md +++ b/nestsClient/plans/archive/2026-04-26-tier3-coding-plan.md @@ -1,5 +1,8 @@ # Tier 3 — coding plan (room theming, background-audio audit) +> **Status:** shipped — `ColorTag`/`FontTag`/`BackgroundTag` parsers exist in quartz meetingSpaces and the background-audio audit (separate doc) closed. +> _Audited 2026-06-30._ + Tier 3 of `2026-04-26-nostrnests-integration-audit.md`. These are larger or lower-priority items; do them after Tier 1 and Tier 2 ship. diff --git a/nestsClient/plans/2026-04-26-tier4-coding-plan.md b/nestsClient/plans/archive/2026-04-26-tier4-coding-plan.md similarity index 96% rename from nestsClient/plans/2026-04-26-tier4-coding-plan.md rename to nestsClient/plans/archive/2026-04-26-tier4-coding-plan.md index c45b431355..dd4052224c 100644 --- a/nestsClient/plans/2026-04-26-tier4-coding-plan.md +++ b/nestsClient/plans/archive/2026-04-26-tier4-coding-plan.md @@ -1,5 +1,8 @@ # Tier 4 — coding plan (token refresh, moq-lite reconnect backoff) +> **Status:** shipped — `ReconnectingNestsListener`/`ReconnectingNestsSpeaker` + `NestsReconnectPolicy` implement reconnect-with-backoff and JWT re-mint on reconnect. +> _Audited 2026-06-30._ + Tier 4 of `2026-04-26-nostrnests-integration-audit.md`. Pure infrastructure hardening — no user-visible UX changes. Covers the items the audit flagged as "MAYBE GAP" or "worth confirming". diff --git a/nestsClient/plans/2026-04-28-listener-survives-publisher-recycle.md b/nestsClient/plans/archive/2026-04-28-listener-survives-publisher-recycle.md similarity index 95% rename from nestsClient/plans/2026-04-28-listener-survives-publisher-recycle.md rename to nestsClient/plans/archive/2026-04-28-listener-survives-publisher-recycle.md index 66e17282ef..7cf3508533 100644 --- a/nestsClient/plans/2026-04-28-listener-survives-publisher-recycle.md +++ b/nestsClient/plans/archive/2026-04-28-listener-survives-publisher-recycle.md @@ -1,5 +1,8 @@ # Listener-survives-publisher-recycle: resolution log +> **Status:** shipped — resolution log; all three reconnecting-listener interop scenarios pass against the real moq-rs relay (fixes landed on `851045c6` + Round 2). +> _Audited 2026-06-30._ + **Status:** ✅ All three reconnecting-listener interop scenarios pass against the real moq-rs relay: happy-path, session-swap, and listener-survives-publisher-recycle. Two further fixes landed diff --git a/nestsClient/plans/2026-05-01-quic-stream-cliff-investigation.md b/nestsClient/plans/archive/2026-05-01-quic-stream-cliff-investigation.md similarity index 98% rename from nestsClient/plans/2026-05-01-quic-stream-cliff-investigation.md rename to nestsClient/plans/archive/2026-05-01-quic-stream-cliff-investigation.md index 06cc69de0f..db1f97807e 100644 --- a/nestsClient/plans/2026-05-01-quic-stream-cliff-investigation.md +++ b/nestsClient/plans/archive/2026-05-01-quic-stream-cliff-investigation.md @@ -1,5 +1,8 @@ # QUIC stream cliff against nostrnests.com — investigation plan +> **Status:** shipped — investigation closed PRODUCTION-FIXED via a `:quic` bug fix + `NestMoqLiteBroadcaster` cadence tuning; the `max_latency` knob is wired through the public API. +> _Audited 2026-06-30._ + **⚠️ Recommendation 2 (cadence tuning) was overridden 4 days later.** Subsequent two-phone production tests on `claude/fix-nests-audio-receiver-HCgOY` (commit `a36ccb569`, diff --git a/nestsClient/plans/2026-05-06-cross-stack-interop-test-gap-matrix.md b/nestsClient/plans/archive/2026-05-06-cross-stack-interop-test-gap-matrix.md similarity index 98% rename from nestsClient/plans/2026-05-06-cross-stack-interop-test-gap-matrix.md rename to nestsClient/plans/archive/2026-05-06-cross-stack-interop-test-gap-matrix.md index e066c4899f..c885c57b43 100644 --- a/nestsClient/plans/2026-05-06-cross-stack-interop-test-gap-matrix.md +++ b/nestsClient/plans/archive/2026-05-06-cross-stack-interop-test-gap-matrix.md @@ -1,5 +1,8 @@ # T16 gap matrix — wire fixes ↔ asserting interop scenarios +> **Status:** shipped — documentation closing DoD #5; maps each landed T# wire fix to its asserting hang/browser interop scenario. +> _Audited 2026-06-30._ + **Status:** documentation. Closes Definition of Done #5 from `2026-05-06-cross-stack-interop-test.md`. diff --git a/nestsClient/plans/2026-05-06-cross-stack-interop-test-results.md b/nestsClient/plans/archive/2026-05-06-cross-stack-interop-test-results.md similarity index 99% rename from nestsClient/plans/2026-05-06-cross-stack-interop-test-results.md rename to nestsClient/plans/archive/2026-05-06-cross-stack-interop-test-results.md index 18c1314bb7..663cd82aae 100644 --- a/nestsClient/plans/2026-05-06-cross-stack-interop-test-results.md +++ b/nestsClient/plans/archive/2026-05-06-cross-stack-interop-test-results.md @@ -1,5 +1,8 @@ # Plan: cross-stack interop test (T16) — results +> **Status:** shipped — results doc; 22/23 scenarios green and merged (I12 GOAWAY N/A on moq-lite-03). +> _Audited 2026-06-30._ + **Status:** All work merged into `claude/cross-stack-interop-test-XAbYB`. 22 of 23 spec'd scenarios green individually; the spec's I12 (Goaway) doesn't apply to moq-lite-03 (see I12 section below). **CI gating diff --git a/nestsClient/plans/2026-05-06-cross-stack-interop-test.md b/nestsClient/plans/archive/2026-05-06-cross-stack-interop-test.md similarity index 99% rename from nestsClient/plans/2026-05-06-cross-stack-interop-test.md rename to nestsClient/plans/archive/2026-05-06-cross-stack-interop-test.md index 1d2e7bcf03..8498ddd47c 100644 --- a/nestsClient/plans/2026-05-06-cross-stack-interop-test.md +++ b/nestsClient/plans/archive/2026-05-06-cross-stack-interop-test.md @@ -1,5 +1,8 @@ # Plan: cross-stack interop test (T16) +> **Status:** shipped — implemented and merged; `HangInteropTest`/`BrowserInteropTest` suites exist under `nestsClient/tests/`. +> _Audited 2026-06-30._ + **Status:** ✅ Implemented and merged. See: - `2026-05-06-cross-stack-interop-test-results.md` for the scenario inventory + per-scenario status diff --git a/nestsClient/plans/2026-05-06-i4-stereo-cross-stack-scenario.md b/nestsClient/plans/archive/2026-05-06-i4-stereo-cross-stack-scenario.md similarity index 98% rename from nestsClient/plans/2026-05-06-i4-stereo-cross-stack-scenario.md rename to nestsClient/plans/archive/2026-05-06-i4-stereo-cross-stack-scenario.md index 9f9462bc0c..6428271f53 100644 --- a/nestsClient/plans/2026-05-06-i4-stereo-cross-stack-scenario.md +++ b/nestsClient/plans/archive/2026-05-06-i4-stereo-cross-stack-scenario.md @@ -1,5 +1,8 @@ # Plan: I4 stereo cross-stack interop scenario +> **Status:** shipped — production per-stream channel-count change merged (PR #2755); forward + reverse + browser stereo scenarios landed. +> _Audited 2026-06-30._ + **Status:** ✅ Landed. Production-side change merged to main as PR #2755 (`refactor(nests): per-stream channel count + AudioBroadcastConfig`). Test scenarios merged into diff --git a/nestsClient/plans/2026-05-06-phase4-browser-harness-results.md b/nestsClient/plans/archive/2026-05-06-phase4-browser-harness-results.md similarity index 97% rename from nestsClient/plans/2026-05-06-phase4-browser-harness-results.md rename to nestsClient/plans/archive/2026-05-06-phase4-browser-harness-results.md index 6b1fc909c6..35eec5d0fd 100644 --- a/nestsClient/plans/2026-05-06-phase4-browser-harness-results.md +++ b/nestsClient/plans/archive/2026-05-06-phase4-browser-harness-results.md @@ -1,5 +1,8 @@ # Plan: Phase 4 (browser harness) — landed results +> **Status:** shipped — phases 4.A-4.C landed; browser harness lives at `nestsClient/tests/browser-interop/` (the 4.D CI job was added then removed per maintainer ask). +> _Audited 2026-06-30._ + **Status:** ✅ Phase 4.A (scaffold) + 4.B (Playwright driver) + 4.C (full scenario coverage) all landed. Phase 4.D (CI workflow job) was originally added in commit `c79a3ffa8` but later removed diff --git a/nestsClient/plans/2026-05-06-phase4-browser-harness.md b/nestsClient/plans/archive/2026-05-06-phase4-browser-harness.md similarity index 99% rename from nestsClient/plans/2026-05-06-phase4-browser-harness.md rename to nestsClient/plans/archive/2026-05-06-phase4-browser-harness.md index b7c011a623..e7afd2885a 100644 --- a/nestsClient/plans/2026-05-06-phase4-browser-harness.md +++ b/nestsClient/plans/archive/2026-05-06-phase4-browser-harness.md @@ -1,5 +1,8 @@ # Plan: Phase 4 — browser-side cross-stack harness (T16) +> **Status:** shipped — landed; `BrowserInteropTest.kt` covers I1-I15 scenarios under `nestsClient/tests/browser-interop/`. +> _Audited 2026-06-30._ + **Status:** ✅ Landed. Browser harness lives at `nestsClient/tests/browser-interop/`; tests are `BrowserInteropTest.kt` covering I1, I2, I3, I4 (stereo), I5 diff --git a/nestsClient/plans/2026-05-07-framespergroup-reconciliation.md b/nestsClient/plans/archive/2026-05-07-framespergroup-reconciliation.md similarity index 97% rename from nestsClient/plans/2026-05-07-framespergroup-reconciliation.md rename to nestsClient/plans/archive/2026-05-07-framespergroup-reconciliation.md index 5302873cd0..6a11205b40 100644 --- a/nestsClient/plans/2026-05-07-framespergroup-reconciliation.md +++ b/nestsClient/plans/archive/2026-05-07-framespergroup-reconciliation.md @@ -1,5 +1,8 @@ # framesPerGroup reconciliation: cliff plan vs. HCgOY field tests +> **Status:** shipped — documentation closing the test-pin (5) vs production-default (50) contradiction; both are correct for their own relay cliffs, no code change. +> _Audited 2026-06-30._ + **Status: documentation, no production code change recommended.** The investigation closes with: both values are correct in their own environments. The interop test pin (`5`) and production default diff --git a/nestsClient/plans/2026-05-07-i7-post-reconnect-cliff-investigation.md b/nestsClient/plans/archive/2026-05-07-i7-post-reconnect-cliff-investigation.md similarity index 97% rename from nestsClient/plans/2026-05-07-i7-post-reconnect-cliff-investigation.md rename to nestsClient/plans/archive/2026-05-07-i7-post-reconnect-cliff-investigation.md index 3896c7ed20..8aac5ba75a 100644 --- a/nestsClient/plans/2026-05-07-i7-post-reconnect-cliff-investigation.md +++ b/nestsClient/plans/archive/2026-05-07-i7-post-reconnect-cliff-investigation.md @@ -1,5 +1,8 @@ # I7 post-reconnect cliff investigation +> **Status:** shipped — investigation-only record; documents the post-reconnect cliff and pins the residual cause on the upstream moq-relay 0.10.x forward queue (no in-repo fix). +> _Audited 2026-06-30._ + **Status: investigation only.** No production code change. Documents the observation, traces the listener-side and relay-side suspects, and records what would be needed to actually root-cause and fix it. diff --git a/nestsClient/plans/2026-05-07-late-join-catalog-flake-investigation.md b/nestsClient/plans/archive/2026-05-07-late-join-catalog-flake-investigation.md similarity index 98% rename from nestsClient/plans/2026-05-07-late-join-catalog-flake-investigation.md rename to nestsClient/plans/archive/2026-05-07-late-join-catalog-flake-investigation.md index 7cb54cb987..f191052cde 100644 --- a/nestsClient/plans/2026-05-07-late-join-catalog-flake-investigation.md +++ b/nestsClient/plans/archive/2026-05-07-late-join-catalog-flake-investigation.md @@ -1,5 +1,8 @@ # `late_join_listener_still_decodes_tail` catalog-cancelled flake investigation +> **Status:** shipped — closed by merging `origin/main`'s 5 `:quic` commits; 5/5 sweep / 55/55 tests pass post-merge. +> _Audited 2026-06-30._ + **Status: ✅ closed by merging `origin/main` (5 `:quic` commits, see `2026-05-07-moq-relay-routing-investigation.md` § Closure). 5/5 sweep BUILD SUCCESSFUL, 55/55 tests pass post-merge. Pre-merge diff --git a/nestsClient/plans/2026-05-07-moq-relay-routing-investigation.md b/nestsClient/plans/archive/2026-05-07-moq-relay-routing-investigation.md similarity index 99% rename from nestsClient/plans/2026-05-07-moq-relay-routing-investigation.md rename to nestsClient/plans/archive/2026-05-07-moq-relay-routing-investigation.md index 45abb0388a..61f8577de1 100644 --- a/nestsClient/plans/2026-05-07-moq-relay-routing-investigation.md +++ b/nestsClient/plans/archive/2026-05-07-moq-relay-routing-investigation.md @@ -1,5 +1,8 @@ # Plan: investigate moq-relay 0.10.x per-broadcast subscribe-routing race +> **Status:** shipped — CLOSED; the flake was a `:quic` packet-acceptance bug (not a relay race), fixed by merging `origin/main`; 5/5 sweep, 55/55 tests pass. +> _Audited 2026-06-30._ + **Status:** ✅ CLOSED. The flake was a `:quic` packet-acceptance bug, not a moq-relay routing race. Merging `origin/main` (5 commits: ALPN-list threading `2a4c07ae`, PTO STREAM diff --git a/nestsClient/plans/2026-05-07-tighten-cross-stack-assertions.md b/nestsClient/plans/archive/2026-05-07-tighten-cross-stack-assertions.md similarity index 97% rename from nestsClient/plans/2026-05-07-tighten-cross-stack-assertions.md rename to nestsClient/plans/archive/2026-05-07-tighten-cross-stack-assertions.md index edd88365c0..ec6f66d48a 100644 --- a/nestsClient/plans/2026-05-07-tighten-cross-stack-assertions.md +++ b/nestsClient/plans/archive/2026-05-07-tighten-cross-stack-assertions.md @@ -1,5 +1,8 @@ # Plan: tighten cross-stack interop assertions to hard-pass +> **Status:** shipped — CLOSED; 7 BrowserInteropTest scenarios + helper hardened to hard-pass floors (`04be38ad`, `029329af`), 110/110 hard-pass sweep. +> _Audited 2026-06-30._ + **Status:** ✅ CLOSED 2026-05-07. Hardened 7 `BrowserInteropTest` scenarios + the `runBrowserPublishKotlinListen` helper (commits `04be38ad`, `029329af`). Verification sweep: diff --git a/nestsClient/plans/2026-05-09-moq-lite-rfc-compliance.md b/nestsClient/plans/archive/2026-05-09-moq-lite-rfc-compliance.md similarity index 99% rename from nestsClient/plans/2026-05-09-moq-lite-rfc-compliance.md rename to nestsClient/plans/archive/2026-05-09-moq-lite-rfc-compliance.md index 73578bad62..3a01fde493 100644 --- a/nestsClient/plans/2026-05-09-moq-lite-rfc-compliance.md +++ b/nestsClient/plans/archive/2026-05-09-moq-lite-rfc-compliance.md @@ -1,5 +1,8 @@ # moq-lite Lite-03 compliance audit +> **Status:** shipped — audit found no wire-incompatibilities; the nine spec tightenings + Lite-04 codec/ALPN it recommended all shipped end-to-end (per the completion plan). +> _Audited 2026-06-30._ + **Date:** 2026-05-09 **Branch:** `claude/audit-moq-lite-compliance-NSuPk` **Scope:** `nestsClient/src/commonMain/kotlin/com/vitorpamplona/nestsclient/moq/lite/` plus diff --git a/quartz/plans/2026-05-08-local-headers-explorer.md b/quartz/plans/2026-05-08-local-headers-explorer.md index fe499e3fcc..c2c47f4ac5 100644 --- a/quartz/plans/2026-05-08-local-headers-explorer.md +++ b/quartz/plans/2026-05-08-local-headers-explorer.md @@ -1,5 +1,8 @@ # Local Bitcoin headers explorer for NIP-03 OTS +> **Status:** queued — no `quartz/.../bitcoin/` package exists; there is no `LocalHeadersBitcoinExplorer`/`BitcoinPeer`/`HeaderStore`, only the pre-existing HTTP `OkHttpBitcoinExplorer`. +> _Audited 2026-06-30._ + **Date:** 2026-05-08 (revised 2026-05-19) **Branch:** `claude/review-bitcoin-blockchain-plan-6NGZ5` (originally `claude/review-ots-blockchain-deps-bKns7`) **Module:** `quartz/` (with thin Android wiring in `amethyst/`) diff --git a/quartz/plans/2026-06-12-giftwrap-deletion-requests.md b/quartz/plans/2026-06-12-giftwrap-deletion-requests.md index f2da7294af..d2791d65db 100644 --- a/quartz/plans/2026-06-12-giftwrap-deletion-requests.md +++ b/quartz/plans/2026-06-12-giftwrap-deletion-requests.md @@ -1,5 +1,8 @@ # TODO: Deletion Requests (kind 5) for Gift Wraps +> **Status:** queued — none of the four steps landed: `HostStub` still lacks a `recipient` field and `DeletionIndex` has no gift-wrap recipient-authored handling; header itself reads "Open — not implemented". +> _Audited 2026-06-30._ + **Date:** 2026-06-12 **Status:** Open — design agreed, not implemented **Modules:** quartz (`DeletionIndex`), amethyst (`LocalCache`) diff --git a/quartz/plans/README.md b/quartz/plans/README.md new file mode 100644 index 0000000000..5c0c538031 --- /dev/null +++ b/quartz/plans/README.md @@ -0,0 +1,20 @@ +# quartz plans + +_Audited 2026-06-30. 9 plans: 7 shipped (archived), 0 in-progress, 2 queued, 0 abandoned._ + +## Queued +| Plan | Summary | +| ---- | ------- | +| [2026-05-08-local-headers-explorer.md](2026-05-08-local-headers-explorer.md) | Headers-only Bitcoin P2P client to verify NIP-03 OTS attestations without a trusted block explorer. | +| [2026-06-12-giftwrap-deletion-requests.md](2026-06-12-giftwrap-deletion-requests.md) | Let a recipient-authored kind-5 delete/block a gift wrap (kind 1059) addressed to them. | + +## Archived (shipped) +| Plan | Summary | +| ---- | ------- | +| [archive/2026-06-03-fix-nip46-bunker-double-resume-plan.md](archive/2026-06-03-fix-nip46-bunker-double-resume-plan.md) | Fix NIP-46 bunker double-resume crash and retry id-reuse races via Channel-per-request + fresh id per attempt. | +| [archive/2026-06-04-auth-scope-vs-policy.md](archive/2026-06-04-auth-scope-vs-policy.md) | Move relay-server authenticated-identity state from the policy into the engine-owned connection scope. | +| [archive/2026-06-09-clink.md](archive/2026-06-09-clink.md) | Implement CLINK (Offers/Debits/Manage) Lightning-over-Nostr pointers, events, and client/server in Quartz. | +| [archive/2026-06-11-runstr-interop.md](archive/2026-06-11-runstr-interop.md) | RUNSTR kind-1301 workout events and supporting fitness kinds in Quartz plus Amethyst fitness screens. | +| [archive/2026-06-19-napplet-nip5a-resolver.md](archive/2026-06-19-napplet-nip5a-resolver.md) | Platform-agnostic NIP-5A static-site resolver verifying content-addressed Blossom blobs against signed manifests. | +| [archive/2026-06-20-powr-interop.md](archive/2026-06-20-powr-interop.md) | Parse and render the POWR/NIP-101e kind-1301 strength-workout dialect alongside the existing RUNSTR dialect. | +| [archive/2026-06-28-git-smart-http-browser.md](archive/2026-06-28-git-smart-http-browser.md) | Git smart-HTTP v2 client to browse NIP-34 repo file trees and render source from the clone URL. | diff --git a/quartz/plans/2026-06-03-fix-nip46-bunker-double-resume-plan.md b/quartz/plans/archive/2026-06-03-fix-nip46-bunker-double-resume-plan.md similarity index 99% rename from quartz/plans/2026-06-03-fix-nip46-bunker-double-resume-plan.md rename to quartz/plans/archive/2026-06-03-fix-nip46-bunker-double-resume-plan.md index 03351fd0a4..13101e8b9e 100644 --- a/quartz/plans/2026-06-03-fix-nip46-bunker-double-resume-plan.md +++ b/quartz/plans/archive/2026-06-03-fix-nip46-bunker-double-resume-plan.md @@ -8,6 +8,9 @@ origin: docs/brainstorms/2026-06-03-nip46-bunker-double-resume-brainstorm.md # fix(quartz): NIP-46 bunker double-resume + retry id-reuse races +> **Status:** shipped — `RemoteSignerManager` uses the Channel-per-request `pending` map and a retry test (`RemoteSignerManagerRetryTest`); the front-matter already marks it `completed`. +> _Audited 2026-06-30._ + ## Revision Note (2026-06-03, post-review) Three reviews (simplicity / architecture / pattern-recognition) converged on diff --git a/quartz/plans/2026-06-04-auth-scope-vs-policy.md b/quartz/plans/archive/2026-06-04-auth-scope-vs-policy.md similarity index 97% rename from quartz/plans/2026-06-04-auth-scope-vs-policy.md rename to quartz/plans/archive/2026-06-04-auth-scope-vs-policy.md index 0ccf81358a..988fdfc53b 100644 --- a/quartz/plans/2026-06-04-auth-scope-vs-policy.md +++ b/quartz/plans/archive/2026-06-04-auth-scope-vs-policy.md @@ -1,5 +1,8 @@ # Auth identity is connection scope, not policy state +> **Status:** shipped — `AuthScopedPolicy` is gone, `onAuthenticated` returns `Boolean`, and `onConnect`/policies read an injected connection scope exactly as the target model prescribes. +> _Audited 2026-06-30._ + **Date:** 2026-06-04 **Module:** `quartz` — `nip01Core/relay/server` **Status:** Proposed (review before implementing) diff --git a/quartz/plans/2026-06-09-clink.md b/quartz/plans/archive/2026-06-09-clink.md similarity index 98% rename from quartz/plans/2026-06-09-clink.md rename to quartz/plans/archive/2026-06-09-clink.md index d7b91db15e..3529780fe0 100644 --- a/quartz/plans/2026-06-09-clink.md +++ b/quartz/plans/archive/2026-06-09-clink.md @@ -1,5 +1,8 @@ # CLINK on Quartz + Amethyst +> **Status:** shipped — `experimental/clink/` ships pointers (NOffer/NDebit/NManage), `ClinkPointerParser`, events, and serialization tests; the plan header itself records the implementation as landed. +> _Audited 2026-06-30._ + Status: implemented (Phases 0–3 + receive side + CLI) — see "Final implementation state" at the bottom for what actually shipped, the audit results, and the spec-vs-SDK gotchas. The body below is the original diff --git a/quartz/plans/2026-06-11-runstr-interop.md b/quartz/plans/archive/2026-06-11-runstr-interop.md similarity index 98% rename from quartz/plans/2026-06-11-runstr-interop.md rename to quartz/plans/archive/2026-06-11-runstr-interop.md index e14d55e631..608212a89e 100644 --- a/quartz/plans/2026-06-11-runstr-interop.md +++ b/quartz/plans/archive/2026-06-11-runstr-interop.md @@ -1,5 +1,8 @@ # RUNSTR interop: Quartz events + Amethyst fitness screens +> **Status:** shipped — `experimental/fitness/workout/` implements `WorkoutRecordEvent` (kind 1301) plus the RUNSTR-dialect tag classes and fixture tests called for here. +> _Audited 2026-06-30._ + Research date: 2026-06-11. Source: `RUNSTR-LLC/RUNSTR` @ `main` (commit `398cdffab452c9e482b3ecf3e5b956b3c0fe1b7b`), its `docs/KIND_1301_SPEC.md`, `docs/ARCHITECTURE.md`, and the companion `RUNSTR-LLC/runstr-fitness-skill` diff --git a/quartz/plans/2026-06-19-napplet-nip5a-resolver.md b/quartz/plans/archive/2026-06-19-napplet-nip5a-resolver.md similarity index 95% rename from quartz/plans/2026-06-19-napplet-nip5a-resolver.md rename to quartz/plans/archive/2026-06-19-napplet-nip5a-resolver.md index 75b3ef1afb..d97b7e245b 100644 --- a/quartz/plans/2026-06-19-napplet-nip5a-resolver.md +++ b/quartz/plans/archive/2026-06-19-napplet-nip5a-resolver.md @@ -1,5 +1,8 @@ # NIP-5A static-site resolver + napplet (NIP-5D) alignment +> **Status:** shipped — the resolver landed under `nip5aStaticWebsites/resolver/` (`StaticSiteResolver`, `StaticSitePathLookup`) with security tests; remaining items are open upstream alignment questions, not Quartz code work. +> _Audited 2026-06-30._ + Date: 2026-06-19 Status: resolver landed (quartz commonMain); alignment questions open diff --git a/quartz/plans/2026-06-20-powr-interop.md b/quartz/plans/archive/2026-06-20-powr-interop.md similarity index 94% rename from quartz/plans/2026-06-20-powr-interop.md rename to quartz/plans/archive/2026-06-20-powr-interop.md index 9b0cbe07cd..0f52a44e7f 100644 --- a/quartz/plans/2026-06-20-powr-interop.md +++ b/quartz/plans/archive/2026-06-20-powr-interop.md @@ -1,5 +1,8 @@ # POWR interop: rendering kind-1301 strength workouts +> **Status:** shipped — POWR dialect parsing/rendering landed (`WorkoutTypeTag`, `ExerciseSetTag`, `ExerciseGroup`, `ExerciseTemplateEvent`, `WorkoutSessionTimeTags`) in `experimental/fitness/workout/` with tests. +> _Audited 2026-06-30._ + Research date: 2026-06-20. Source: POWR app (`DocNR/POWR`), spec at `docs/technical/nostr/exercise_nip.md` (the NIP-101e "Workout Events" draft: kinds 33401 exercise template, 33402 workout template, 1301 workout record). diff --git a/quartz/plans/2026-06-28-git-smart-http-browser.md b/quartz/plans/archive/2026-06-28-git-smart-http-browser.md similarity index 94% rename from quartz/plans/2026-06-28-git-smart-http-browser.md rename to quartz/plans/archive/2026-06-28-git-smart-http-browser.md index fb48f89393..039469e3dc 100644 --- a/quartz/plans/2026-06-28-git-smart-http-browser.md +++ b/quartz/plans/archive/2026-06-28-git-smart-http-browser.md @@ -1,5 +1,8 @@ # Git smart-HTTP browser for NIP-34 repositories +> **Status:** shipped — the full git smart-HTTP v2 client (`PktLine`, `Packfile`, `GitDelta`, `GitSmartHttpTransport`, `GitHttpClient`) ships in `nip34Git/git/` (jvmAndroid) with protocol/packfile/commit tests. +> _Audited 2026-06-30._ + Date: 2026-06-28 Module: `quartz` (protocol client) + `amethyst` (UI) diff --git a/quic/interop/plans/README.md b/quic/interop/plans/README.md new file mode 100644 index 0000000000..5048e017e1 --- /dev/null +++ b/quic/interop/plans/README.md @@ -0,0 +1,8 @@ +# quic interop plans + +_Audited 2026-06-30. 1 plan: 1 shipped (archived), 0 in-progress, 0 queued, 0 abandoned._ + +## Archived (shipped) +| Plan | Summary | +| ---- | ------- | +| [archive/2026-05-06-interop-runner.md](archive/2026-05-06-interop-runner.md) | `:quic-interop` quic-interop-runner endpoint (InteropClient + HTTP/3 + HTTP/0.9 clients + qlog); phases 0–6 landed and validated across aioquic/picoquic/quic-go/quinn. | diff --git a/quic/interop/plans/2026-05-06-interop-runner.md b/quic/interop/plans/archive/2026-05-06-interop-runner.md similarity index 98% rename from quic/interop/plans/2026-05-06-interop-runner.md rename to quic/interop/plans/archive/2026-05-06-interop-runner.md index 2c6bb2ecda..65e4a4f05d 100644 --- a/quic/interop/plans/2026-05-06-interop-runner.md +++ b/quic/interop/plans/archive/2026-05-06-interop-runner.md @@ -1,5 +1,8 @@ # quic-interop-runner endpoint — Phase 0 scaffolding +> **Status:** shipped — the `:quic-interop` module exists (InteropClient, Http3GetClient, HqInteropGetClient, QlogWriter) and phases 0–6 landed, validated across aioquic/picoquic/quic-go/quinn; a few testcases (v2, server role) remain explicitly unsupported. +> _Audited 2026-06-30._ + Date: 2026-05-06 ## Why diff --git a/quic/plans/2026-05-05-congestion-control.md b/quic/plans/2026-05-05-congestion-control.md index 7c9bbd1aaa..cb1ce63f13 100644 --- a/quic/plans/2026-05-05-congestion-control.md +++ b/quic/plans/2026-05-05-congestion-control.md @@ -1,5 +1,8 @@ # Congestion control for `:quic` — implementation plan +> **Status:** abandoned — parked indefinitely; no `CongestionController` exists in code, and the one real concern was instead solved by the smaller `SendBuffer.bestEffort` drop-lost-ranges fix that shipped. +> _Audited 2026-06-30._ + **Status:** **parked indefinitely 2026-05-05.** After drafting this plan we concluded the audio-rooms workload doesn't actually need CC — see [Why](#why-and-why-this-is-honestly-low-priority) below. The one diff --git a/quic/plans/README.md b/quic/plans/README.md new file mode 100644 index 0000000000..660b753869 --- /dev/null +++ b/quic/plans/README.md @@ -0,0 +1,15 @@ +# quic plans + +_Audited 2026-06-30. 4 plans: 3 shipped (archived), 0 in-progress, 0 queued, 1 abandoned._ + +## Abandoned +| Plan | Summary | +| ---- | ------- | +| [2026-05-05-congestion-control.md](2026-05-05-congestion-control.md) | NewReno congestion control parked indefinitely — no `CongestionController` in code; the real concern was solved by the smaller `SendBuffer.bestEffort` fix instead. | + +## Archived (shipped) +| Plan | Summary | +| ---- | ------- | +| [archive/2026-04-26-quic-stack-status.md](archive/2026-04-26-quic-stack-status.md) | Living status doc for the shipped pure-Kotlin QUIC v1 + HTTP/3 + WebTransport stack; records all resolved RFC-audit gaps. | +| [archive/2026-05-04-control-frame-retransmit.md](archive/2026-05-04-control-frame-retransmit.md) | RFC 9002 per-frame retransmit (RecoveryToken/SentPacket/loss-detection/PTO) plus STREAM/CRYPTO/RESET_STREAM follow-ups and SendBuffer retain-until-ACK. | +| [archive/2026-05-08-lock-split-design.md](archive/2026-05-08-lock-split-design.md) | Phase-1 split of the single `QuicConnection.lock` into `streamsLock`/`lifecycleLock`/per-level locks; phase 2 writer split deferred. | diff --git a/quic/plans/2026-04-26-quic-stack-status.md b/quic/plans/archive/2026-04-26-quic-stack-status.md similarity index 99% rename from quic/plans/2026-04-26-quic-stack-status.md rename to quic/plans/archive/2026-04-26-quic-stack-status.md index d3fa3da4eb..dee2f18938 100644 --- a/quic/plans/2026-04-26-quic-stack-status.md +++ b/quic/plans/archive/2026-04-26-quic-stack-status.md @@ -1,5 +1,8 @@ # QUIC + WebTransport stack — current state +> **Status:** shipped — living status doc recording the completed pure-Kotlin QUIC/HTTP3/WebTransport stack (~17k LOC, 81 test files, interop-verified); all 🔴/🟡 RFC-audit items resolved. +> _Audited 2026-06-30._ + Living status doc for `:quic`. First written 2026-04-26 as the post-implementation snapshot of the [pure-kotlin QUIC + WebTransport plan](../../docs/plans/2026-04-22-pure-kotlin-quic-webtransport-plan.md); diff --git a/quic/plans/2026-05-04-control-frame-retransmit.md b/quic/plans/archive/2026-05-04-control-frame-retransmit.md similarity index 99% rename from quic/plans/2026-05-04-control-frame-retransmit.md rename to quic/plans/archive/2026-05-04-control-frame-retransmit.md index d3d10d6c26..2081f9647d 100644 --- a/quic/plans/2026-05-04-control-frame-retransmit.md +++ b/quic/plans/archive/2026-05-04-control-frame-retransmit.md @@ -1,5 +1,8 @@ # Control-frame retransmit for `:quic` — implementation plan +> **Status:** shipped — RFC 9002 retransmit (RecoveryToken, SentPacket, loss detection, PTO) plus follow-up STREAM/CRYPTO/RESET_STREAM retransmit all landed; SendBuffer retain-until-ACK verified in code. +> _Audited 2026-06-30._ + **Status:** **shipped 2026-05-05** on branch `claude/fix-nest-audio-display-3chAG`. Steps 1–9 landed as planned; the deferred follow-ups (STREAM data, CRYPTO, RESET_STREAM / STOP_SENDING / NEW_CONNECTION_ID) all shipped on top, plus an diff --git a/quic/plans/2026-05-08-lock-split-design.md b/quic/plans/archive/2026-05-08-lock-split-design.md similarity index 97% rename from quic/plans/2026-05-08-lock-split-design.md rename to quic/plans/archive/2026-05-08-lock-split-design.md index 64cd0cb7fa..e46496efb4 100644 --- a/quic/plans/2026-05-08-lock-split-design.md +++ b/quic/plans/archive/2026-05-08-lock-split-design.md @@ -1,5 +1,8 @@ # QuicConnection Lock Split — Design Note +> **Status:** shipped — phase 1 domain locks (`streamsLock`, `lifecycleLock`, per-`LevelState` locking) are present and used throughout `QuicConnection`; phase 2 writer split remains a deferred follow-up. +> _Audited 2026-06-30._ + Date: 2026-05-08 ## Problem