mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 19:28:25 +00:00
Three read-only sweeps over commons (feeds, relayClient, model, viewmodels, services) and commonsUI produced 44 candidates; each was re-read in the source, 38 held up, 34 are fixed here, 4 are deferred with rationale in commons/plans/2026-09-12-audit-findings.md. Correctness highlights: - SecureKeyStorage (jvm): AES-GCM was initialised with IvParameterSpec, which every JDK rejects, so the no-keyring fallback never worked. GCMParameterSpec. - OnionLocationInterceptor cached any Onion-Location header and re-pointed all Tor traffic at it for 24h over plain http; only .onion targets now. - BasicBundledInsert wedged forever after one exception (no finally). - CachedRichTextParser keyed parses on a 32-bit hash without checking inputs. - noProtocolUrlValidator backtracked exponentially per composer keystroke. - Base83 indexed a 255-entry table with any char code from an imeta tag. - MetadataRateLimiter never flushed a batch smaller than 20 pubkeys. - FeedMetadataCoordinator mutated six HashSets from two threads and marked pubkeys 101+ as requested without asking for them. - Note: two discarded boolean/relay expressions, an NPE window in flow(), removeReport leaving empty buckets, unlocked read-modify-write on replies/boosts/edits/reactions/reports/labels. - EventCollectionState restarted its flush timer on every insert. - Chatroom prune outside the lock; top-zappers publish outside the mutex; hashCode used as dedup/feed keys; OnlyLatestVersionSet.addAll always true. - UI: ClickableTexts remembered a stale onClick, ZonedSwipeModifier a stale openDrawer, two robohash light-theme predicates thrashed one cache, a chess remember key summed two counters. Performance: user-cache search off the Compose dispatcher, regexes hoisted in SearchResultSorter, frame-rate animation reads moved out of composition in Shimmer/LoadingAnimation/BunkerHeartbeat, GlowingCard allocations cached, emoji inlineContent remembered, itemsIndexed in the search pickers. Ten regression tests added (rate limiter flush/dedup/rate, GCM round trip, regex timing, Base83 bounds, CosineCache key). Verified: commons and commonsUI jvmTest, compiles of cli, desktopApp, nappletHost, amethyst. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N56KzPSYiN5edMRamvKEgD
29 lines
2.4 KiB
Markdown
29 lines
2.4 KiB
Markdown
# commons plans
|
|
|
|
_Audited 2026-06-30 (+ 2026-09-12 split entry). 7 plans: 3 shipped, 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. |
|
|
| [2026-08-03-poll-results-page.md](2026-08-03-poll-results-page.md) | Extended NIP-88 poll results page (per-option counts + who voted for what) for Android and Desktop; also specifies four tally-correctness fixes and the missing poll-relay subscription. Proposed, not started. |
|
|
|
|
## Shipped
|
|
| Plan | Summary |
|
|
| ---- | ------- |
|
|
| [2026-09-12-audit-findings.md](2026-09-12-audit-findings.md) | Bug/performance audit of `commons` + `commonsUI` after the split: 34 verified fixes shipped, 4 deferred with rationale, 6 rejected. |
|
|
| [2026-09-12-commons-ui-split.md](2026-09-12-commons-ui-split.md) | Split the Compose half of `commons` into the new `:commonsUI` module (same packages, `api(:commons)`), so `cli` no longer carries Compose/Skiko; records the classification method and follow-ups. |
|
|
|
|
## Archived (shipped)
|
|
| Plan | Summary |
|
|
| ---- | ------- |
|
|
| [archive/2026-05-04-custom-feeds-testing-sheet.md](archive/2026-05-04-custom-feeds-testing-sheet.md) | Test sheet recording the completed custom-feeds phases (unit + manual coverage). |
|
|
| [archive/2026-05-05-feed-builder-enhancements-plan.md](archive/2026-05-05-feed-builder-enhancements-plan.md) | Six FeedBuilderDialog enhancements (npub decode, author search, kind filters, edit/delete, save-as-feed, exclude authors) — all landed. |
|