Files
amethyst/commons/plans
Claude af39263444 refactor(cordn): move the file stores and EncryptedAppendLog to commonMain on okio
FileCordnStores (CordnStorageLayout and the group, key-package,
coordinator and handoff stores), FileBackedCordnScopeFactory,
CordnMigrationStores and EncryptedAppendLog move from jvmAndroid to
commonMain. They now take an okio Path, plus a FileSystem that defaults
to platformFileSystem, where they used to take a java.io.File.

The on-disk format does not change. These files hold encrypted MLS group
state that cannot be re-derived, so CordnStorageFormatGoldenTest pinned
the exact tree of paths and the bytes of every file against the java.io
implementation first. It passes against this one with its constants
untouched; only its construction glue moved from File to Path.

- Cursor framing: ByteBuffer's default big-endian putLong/getLong is now
  okio Buffer.writeLong/readLong, which is also big-endian.
- Migration base64: java.util.Base64 is now
  kotlin.io.encoding.Base64.Default with PRESENT_OPTIONAL padding, the
  same alphabet and output. A new test checks it against java.util.Base64
  in both directions, padded and unpadded.
- Failure handling: File.delete(), deleteRecursively() and
  renameTo-else-copy returned false where okio throws, so the File
  behaviour is kept by deleteQuietly, deleteRecursivelyQuietly and
  moveOrCopy in commons/util/FileSystemExt.kt.
- Durability: the log's fsyncs are FileHandle.flush(), which is
  FileDescriptor.sync() on the JVM and Android.

Callers updated: the CLI's CordnContext, CordnRuntime,
Account.cordnFilesDir (now Path?), AccountCacheState, and
EncryptedMarmotMessageStore, which stays in jvmAndroid and passes
toOkioPath() to the log.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S7FuNBSKiyVecARSoE4B9P
2026-09-28 03:53:56 +00:00
..

commons plans

Audited 2026-06-30 (+ 2026-09-12 split entry, 2026-09-27 migration and one-UI entries).

In progress

Plan Summary
2026-05-04-custom-feeds-plan.md Custom feed creation/discovery/management for Desktop; core model + builder + kind 31890 + desktop UI shipped, but relay-filter layer, DVM marketplace, kind 10090 sync, and list resolution still pending.
2026-05-06-nest-subscription-manager-extraction.md Split the per-speaker subscription state machine out of NestViewModel; only the ActiveSubscription stepping-stone is extracted so far.
2026-09-27-one-ui-android-desktop.md The target. Android ships on laptops, so the whole UI (screens + navigation shell) moves to commonsUI, amethyst becomes an Android shim, and a new JVM desktopApp renders the same UI. Measures Wave 4: Account's 77-file move-group, its 5 blocked files and 14 seams, and AccountViewModel's dependencies; sequences the rest.
2026-08-30-commons-migration-sweep.md The running log of moving amethyst/ code into commons/commonsUI: waves, what moved each round. LocalCache has moved. Its STAY list and Wave 2 part B are superseded by the one-UI plan above.
2026-05-30-amethyst-to-commons-migration.md The original roadmap for the same move; superseded in practice by the sweep tracker above.

Queued

Plan Summary
2026-04-21-event-renderer.md Cross-platform UI-agnostic RenderedEvent subsystem shared by Amy, Desktop, and Android; not started.
2026-08-03-poll-results-page.md Extended NIP-88 poll results page (per-option counts + who voted for what) for Android and Desktop; also specifies four tally-correctness fixes and the missing poll-relay subscription. Proposed, not started.

Shipped

Plan Summary
2026-09-12-audit-findings.md Bug/performance audit of commons + commonsUI after the split: 34 verified fixes shipped, 4 deferred with rationale, 6 rejected.
2026-09-12-commons-ui-split.md Split the Compose half of commons into the new :commonsUI module (same packages, api(:commons)), so cli no longer carries Compose/Skiko; records the classification method and follow-ups.

Archived (shipped)

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