mirror of
https://github.com/purrgrammer/grimoire.git
synced 2026-04-10 15:36:53 +02:00
f3603fbb4667882feb0d3349b76c888727e04bfd
Issue: Nostr mentions (e.g., nostr:npub...) were not correctly parsed when immediately followed by text without whitespace. For example: "nostr:npub1...how does this work?" would fail to parse the mention. Solution: - Created custom nostr mention transformer with proper word boundaries - Uses length constraints to prevent matching too many characters: * npub/note: exactly 58 bech32 chars after prefix (63 total) * nprofile/nevent/naddr: 40-300 bech32 chars (TLV encoded, variable length) - Added transformer BEFORE default textNoteTransformers to handle edge cases - Includes comprehensive test coverage Files: - src/lib/nostr-mention-transformer.ts: New custom transformer - src/lib/nostr-mention-transformer.test.ts: Test suite with 10 tests - src/components/nostr/RichText.tsx: Added transformer to defaults Tests: All 874 tests passing Build: Success Lint: No new errors (47 warnings, all pre-existing)
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%