Latency root causes:
1. handleSelectNote/handleReplaceActiveTab awaited IPC before updating
activeTabPath — zero visual feedback for 50-200ms file I/O
2. Trash/archive called updateEntry AFTER two sequential IPC calls —
note stayed visible in list for 100-400ms
Optimizations:
- Content prefetch cache: hover on NoteItem and keyboard arrow
navigation pre-load note content via IPC. When user clicks, content is
already in memory — eliminates the IPC round-trip entirely.
- Optimistic trash/archive/restore/unarchive: updateEntry runs
immediately, frontmatter writes happen async. On failure, UI rolls
back and shows error toast.
- Rapid-switch safety: sequence counter (navSeqRef) ensures only the
latest navigation sets activeTabPath — prevents stale content flash
when user clicks multiple notes in quick succession.
- Prefetch cache cleared on vault reload to prevent stale content after
external edits.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>