Files
amethyst/desktopApp/plans
nrobi144andClaude Opus 4.8 3f56d177d8 feat(desktop): note scheduling + NIP-37 opt-in draft sync
Adds note scheduling and NIP-37 opt-in encrypted draft sync to Amethyst
Desktop, and extracts the existing Android scheduled-post code into
`commons` so both platforms (and PowJobRestorer) share one implementation.

- Compose → clock icon → date/time picker (presets + exact-minute); the
  note is pre-signed and stored locally, then published at its time.
- Publishes while the app is open (45s in-app tick + launch catch-up) AND
  while fully closed: an OS job (launchd / schtasks / systemd, registered
  only while the queue is non-empty) relaunches the binary in a headless,
  key-free `--publish-scheduled` mode that opens a websocket and pushes the
  pre-signed bytes.
- A "Scheduled" deck destination (tabs Scheduled / Drafts / Articles):
  status, cancel, publish-now, edit (cancel + reopen prefilled).
- Drafts: save-as-draft with a default-OFF "Sync across devices
  (encrypted)" toggle publishing a NIP-37 DraftWrapEvent (kind 31234,
  NIP-44 to self); drafts sync down on a fresh device.

Extraction / de-dup: ScheduledPost → commons/commonMain; ScheduledPostStore
+ ScheduledPostPublisher → commons/jvmAndroid (Jackson/java.io.File are
gate-forbidden in commonMain). The commons store is a strict superset of
upstream's parallel Android store (account-scoped claim, CLAIM_TTL crash
recovery, PUBLISHING-only status guards, reload-before-claim); upstream's
new ScheduledPostWorkGate gating is adopted to drive it. Single-writer file
lock + reload-before-claim so the in-app timer and headless process never
double-publish. Store file 0600, dir 0700.

macOS verified on the packaged app-image (compose+schedule, in-app publish,
app-closed launchd firing, Scheduled screen, NIP-37 draft round-trip).
Windows/Linux OS-integration authored but untested; headless has no Tor
routing yet — both documented in the PR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 11:26:12 +03:00
..

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 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 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 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 In-process SQLite local relay with write-through + startup hydration + settings UI.
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 NWC wallet column (connect/balance/send/receive) plus upgraded zapping UX.
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 Manual QA sheet for the desktop wallet & zapping feature.
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 Send dialog accepts LNURL + lightning addresses with auto-detect/resolve flow.
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 JPEG re-encode/downscale upload pipeline with EXIF strip + failure dialog, shared with CLI.
archive/2026-06-17-feat-app-launch-optimization-plan.md Launch testing/benchmark foundation + targeted launch-path fixes (all in-scope phases landed).