Files
amethyst/desktopApp
Claude e4f4808c92 feat: find collaboration acceptances by their a tag, and apply late captions
Two gaps found reviewing this branch against what divine.video actually
publishes, plus the desktop half of the poll-builder change.

Collaboration acceptances (kind 34238) were looked up by a coordinate we
predicted — `34238:<collaborator>:<video coordinate>`. divine-mobile does key
them that way, but divine-web signs its acceptance with
`['d', crypto.randomUUID()]` (divine-web/src/hooks/useApproveCollab.ts:24), so
no coordinate a reader can construct will ever name it. The lookup now filters
on `kinds:[34238] + authors + #a:[video coord]`, which is the same filter
divine-web itself uses (src/hooks/useVideoCollaboratorStatus.ts) and matches
both publishers. Kind 34238 joins the `a`-tag engagement filter every rendered
addressable note already opens, so the relay side costs no extra REQ, and the
credit's check mark now reads LocalCache instead of opening a subscription per
credit — strictly fewer REQs than before.

Captions that resolve after the first frame never reached the player. A
`text-track` naming a kind-39307 coordinate rebuilds the MediaItem with the same
videoUri once that event arrives, and the warm-pool fast path reads the
unchanged mediaId as "already loaded". A MediaController doesn't carry the
item's localConfiguration across the service IPC, so the subtitles can't be read
back off it to compare; GetVideoController remembers the fingerprint it last
pushed instead, and re-applies at the current position only when it was the one
that loaded the item — a warm player carrying another mount's item is left
alone rather than rebuffered.

desktopApp's voteOnPoll still called PollResponseEvent.build with a Set. It now
dispatches on pollType() the way Account.pollRespond does, so a single-choice
vote writes one response tag rather than leaving the recorded answer to
iteration order.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JLEq2G6U29mKV8cfSTamZ9
2026-09-22 00:06:36 +00:00
..