mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 08:04:45 +00:00
Adds full NIP-88 poll support to Amethyst Desktop and a search content-type
filter for polls.
Polls (DesktopPollCard):
- Render kind-1068 polls in feed + thread (and reposted/boosted polls) as an
interactive card via NoteCard's bottomContent slot.
- Vote (single-choice radio / multi-choice checkbox), re-vote ("Change vote")
seeded with the prior selection; hide-until-voted with a "View results" opt-in.
- Tallies reuse commons PollResponsesCache; responses are fetched from the
poll's OWN declared relays (NIP-88 relay tags) unioned with connected relays,
so the full tally loads regardless of the viewer's relay set. Votes are
likewise published to the poll's relays (not just broadcastToAll).
- Result row marks the viewer's own choice (border + check), tap a row to see
its voters, footer shows distinct-voter count + deadline/ended state, and the
voter gallery draws the viewer front-most with a ring.
- Create polls from the composer (options, single/multi, optional deadline);
the dialog content scrolls with a pinned Cancel/Publish row; a poll requires
a question and >=2 options.
Wiring:
- DesktopLocalCache.consume for kind 1068/1018 (response links into pollState).
- DesktopFeedFilters + FilterBuilders surface polls; feed/thread interaction
subscriptions fetch kind-1018 responses.
- Thread + profile pass myPubKeyHex so the viewer's vote-state renders.
Search "Polls" facet:
- KindRegistry preset + alias for kind 1068 (auto-renders the filter chip and a
NIP-50 kind filter); SearchResultsList renders poll results interactively and
SearchScreen fetches their responses.
Also:
- Read-only accounts see results instead of dead vote controls.
- Cold-start: the response subscription re-evaluates as relays connect.
- Pull the upstream fix for the pre-existing RelayLatencyTracker.sweep
ConcurrentModificationException (synchronized(pending)) so relay-health
reclassify no longer crashes the UI during search.
Ripple/shaping: clickable elements clip to their shape for bounded ripple.
Tests: commons PollResponsesCache (dedup/tally/WoT sort) + DesktopLocalCache
response-linking.
Deferred (noted in review): wall-clock re-check of a poll expiring mid-view;
mention-dropdown now inside the composer scroll.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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). |