mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-10 00:16:59 +00:00
Clearing a connected client on logout had two gaps: - The user-facing "Forget this app" button only revoked the permission ledger; it never cleared the NIP-46 client store, so a forgotten app's metadata and relays lingered and were re-recovered on the next restart. Route NIP-46 coordinates through the host's new forgetClient() so the store is cleared too. - Neither logout path stopped the RUNNING session from listening on the app's relays — only the next restart picked up the change. extraRelays is now a live projection of the client store (recomputed on connect, on start, and on disconnect via a new onDisconnected hook), so a forgotten app's relays are dropped immediately. onLogout and the UI Forget now share one authorizer.forget() path (revoke grant + clear store + clear throttle entry + signal the host), so client-initiated and user-initiated disconnects behave identically. Adds tests for both. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015FHr2mu5SiHwYNR7evYUuF