fix: move sync to worker thread and optimize FTS indexing#33
Merged
doodlewind merged 3 commits intomainfrom Apr 2, 2026
Merged
fix: move sync to worker thread and optimize FTS indexing#33doodlewind merged 3 commits intomainfrom
doodlewind merged 3 commits intomainfrom
Conversation
- Move syncAll() to a Worker Thread so the Electron main thread is never blocked during sync. Eliminates UI freeze on first launch with large datasets (3000+ sessions caused 61s freeze, now 0s). - For bulk syncs (>100 files), drop FTS triggers before insert and rebuild the index once afterward. Reduces sync time ~3x (61s → 15.6s for 3000 sessions / 900K messages). - Fix install.sh DMG mount path parsing when path contains spaces. Closes #27 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Deduplicate concurrent runSyncWorker() calls — if a sync is already running, return the existing promise instead of spawning a second worker. Prevents FTS trigger drop/rebuild race condition. - Add 'indexing' phase to StatusBar so users see "Building search index…" during the FTS rebuild step. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
syncAll()to a Worker Thread so the Electron main thread is never blocked during initial sync. Eliminates UI freeze on first launch with large datasets.install.shDMG mount path parsing when path contains spaces (e.g./Volumes/Spool 2).Benchmark (3000 sessions / 900K messages)
Test plan
electron-vite buildpassesspool:sync-nowIPC triggers worker correctlyCloses #27
🤖 Generated with Claude Code