mirror of
https://github.com/purrgrammer/grimoire.git
synced 2026-04-13 08:57:04 +02:00
The root cause of broken autocompletion was that suggestion configs were being extracted via .find() outside useMemo, creating new object references on every render. These unstable references were then used as dependencies for the extensions useMemo, causing TipTap extensions to be recreated on every single render. This destroyed the suggestion system's internal state including popup visibility and search results. Changes: - Move .find() calls inside the extensions useMemo - Replace individual config dependencies with stable 'suggestions' array - Extensions now only recreate when suggestions actually change (rare) This matches React best practices: avoid computing values outside useMemo when those values are used as dependencies, as they create unstable references that defeat memoization. The issue was NOT with TipTap's async handling (my first fix was wrong), but with React's dependency tracking and object reference stability.