mirror of
https://github.com/purrgrammer/grimoire.git
synced 2026-04-10 23:47:12 +02:00
70df0a3d95b4c51adb4cf32f861962bf21938288
The previous approach using createSuggestionConfig() helper function was still broken because it created NEW function references for items() and render() on every call, even though the result was memoized. This commit completely rewrites the suggestion config creation to match the main branch pattern: 1. Create each TipTap config directly inside its own useMemo 2. Define items() and render() functions inline within that useMemo 3. Only recreate when the source config (mentionConfig/emojiConfig/slashConfig) changes This ensures: - items() function has stable reference (created once per config) - render() function has stable reference (created once per config) - TipTap receives same function references across renders - Suggestion state remains intact Removed unused createSuggestionConfig() helper and SuggestionOptions import. This matches exactly how the working main branch creates suggestion configs.
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%