mirror of
https://github.com/purrgrammer/grimoire.git
synced 2026-04-11 07:56:50 +02:00
c0cee4320dd0ee33a11a5e0cbac0dc55cf6c3d88
Major performance improvements for NIP-17 gift wrap inbox: **Chunked Loading with RAF (Phase 2)**: - Load stored gift wraps in chunks of 20 events - Yield to browser between chunks using requestAnimationFrame() - Prevents UI lag when loading 50+ messages on cold start - Performance logging shows time to load all events - Expected improvement: 4-6x faster cold start (2-3s → <500ms) **Parallel Decryption (Phase 3)**: - Implement parallel decryption with max 5 concurrent operations - Add limitConcurrency() utility for controlled concurrency - Extract decryptInternal() to batch state updates - Single state emission after all decrypts complete (not per message) - Update autoDecryptPending() to use parallel decryptAll() - Performance logging shows decrypt timing and counts - Expected improvement: 2-3x faster bulk decryption (10s → 2-3s for 10 messages) **Benefits**: - Smoother cold start experience on desktop and mobile - Faster bulk decryption when clicking 'Decrypt All' - Reduced observable emissions (N → 1 per batch) - Single conversation rebuild per batch (not per message) - UI remains responsive during operations All tests passing (864/864), build successful.
…
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%