Claude 9c9734f8bc fix(nwc): keep support$ subscribed to prevent encryption cache expiry
The primary cause of pay_invoice timeouts was the library's support$
observable losing its ReplaySubject(1) cache after 60 seconds with
zero subscribers.

The support$ observable uses share({ connector: () => new ReplaySubject(1),
resetOnRefCountZero: () => timer(60000) }). When no UI component
subscribes to wallet.support$ for 60s (e.g., user closes wallet window
and browses the app), the cached kind 13194 wallet info is discarded.

Since events$ is a hot shared observable that already received the info
event from the relay (past EOSE), a fresh support$ subscription will
never see a new info event. This causes genericCall's
firstValueFrom(encryption$) to hang indefinitely — the defer() block
never completes, so the request event is never created, never published,
and the simpleTimeout on responses$ never even starts.

The fix maintains a persistent subscription to wallet.support$ in the
NWC service module for the lifetime of the wallet connection. This
keeps the ReplaySubject(1) cache warm so encryption$ always resolves
immediately when genericCall needs it.

https://claude.ai/code/session_01LNdzz2qi4hvjCzKBjTK5Gy
2026-02-13 07:07:16 +00:00
👶
2025-12-09 16:26:31 +01:00
2025-12-19 12:49:29 +01:00
2026-01-22 18:38:26 +01:00
2025-12-13 15:06:05 +01:00
2025-12-22 20:40:16 +00:00
2025-12-20 14:25:40 +01:00
👶
2025-12-09 16:26:31 +01:00
👶
2025-12-09 16:26:31 +01:00
👶
2025-12-09 16:26:31 +01:00

Grimoire

A Nostr protocol explorer and developer tool with a tiling window manager interface.

Features

  • Tiling Windows - Each window is a Nostr "app" (profile viewer, event feed, NIP docs, etc.)
  • Command Palette - Unix-style commands via Cmd+K to open apps and navigate
  • Multi-workspace - Virtual desktops with independent layouts
  • Real-time - Reactive event subscriptions with automatic updates

Stack

React 19, TypeScript, Vite, TailwindCSS, Jotai, Dexie, Applesauce

Getting Started

npm install
npm run dev

Scripts

Command Description
npm run dev Start dev server
npm run build Build for production
npm test Run tests in watch mode
npm run lint Lint code
npm run format Format code

License

MIT

Description
No description provided
Readme MIT 14 MiB
Languages
TypeScript 98.9%
CSS 0.8%
JavaScript 0.3%