mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-27 07:52:24 +00:00
Fast-follows to the ensureEncryptionCapableSigner gate: every remaining signing/encryption flow now re-unlocks a reloaded nsec signer with one passphrase prompt instead of dead-ending. Each call site short-circuits ONLY on the user-driven outcomes (cancel / bad-passphrase); every other case falls through to the flow's own existing error handling, so non-nsec signers (e.g. an unresponsive NIP-07 extension) behave exactly as before. - Reactions (#54): ReactionController.handleReaction gates before the optimistic update with need:"sign" (kind-7 reactions don't need encryption) — fixes the "like/dislike does nothing" that was a rolled-back publish on a lost signer. - Blocks: handleProfileBlocklistMutation (need:"encrypt", NIP-04 mute/block lists). - Subscriptions: the channel Subscribe/Unsubscribe toggle (need:"encrypt", kind 30000). - DM send: both composers — handleSendProfileMessage and handleDmAppShellSendMessage (need:"encrypt", NIP-17/NIP-04). Reactions get the gate via a new ensureSigner callback on ReactionController; the modal flows use the services.ensureEncryptionCapableSigner already exposed. Tests: tests/reaction-signer-gate.test.mjs (3 — cancelled/bad-passphrase block publish, ok proceeds, asserts need:"sign"). Related suites (decision, DM, profile modal, switch delegators) green. Lint + build green. Co-Authored-By: Claude Opus 4.8 <[email protected]>