mirror of
https://github.com/purrgrammer/grimoire.git
synced 2026-04-09 15:07:10 +02:00
claude/fix-eose-tracking-a9Nn0
The bug: When events arrived after EOSE was received (live streaming), the subscription state was incorrectly reset from "eose" back to "receiving", causing: - False "LOADING" overall state - Relay UI showing "RECEIVING" spinner when EOSE was already received - Incorrect eoseCount in state machine The fix: Add a new "live" subscription state that represents "EOSE received AND actively receiving live events". State transitions: - waiting → receiving (on first historical event) - receiving → eose (on EOSE signal) - eose → live (on live event after EOSE) Changes: - Add "live" to RelaySubscriptionState type with proper documentation - Add liveCount to ReqOverallState for accurate counting - Update event handler to set "live" state when eoseAt exists - Update EOSE completion check to include "live" state - Update getRelayStateBadge: "live" shows green, "receiving" shows yellow - Update ReqViewer: show pulsing radio icon for live relays - Update tests for new state and color changes https://claude.ai/code/session_01DVTWqKNY4UHVSDDxckjkAh
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+Kto 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
Languages
TypeScript
98.9%
CSS
0.8%
JavaScript
0.3%