Claude 9a1b066491 fix: cleaner solution for TipTap suggestion async bug
Root cause: TipTap's items() function has buggy async handling where
results arrive out of order or get lost entirely.

Solution: Bypass items() entirely for async work:
- items() returns empty array (sync, no async)
- All search logic lives in render callbacks
- onStart triggers initial search
- onUpdate detects query changes and triggers new searches
- doSearch() updates component directly with race protection

This is simpler and more robust than the previous workaround because:
1. All search logic is in one place (render callbacks)
2. We don't fight TipTap's broken async handling
3. Clear data flow: query change -> search -> update component
2026-01-20 17:21:24 +00:00
2025-12-18 15:46:02 +01:00
2025-12-19 12:49:29 +01:00
2025-12-22 20:40:16 +00:00
2025-12-20 14:25:40 +01:00
2026-01-14 19:24:37 +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%