Harden, fix, and enhance Code Historian across capture, search, and tooling - #1
Merged
Merged
Conversation
…ooling Correctness fixes: - capture: saves no longer silently drop changes (fall back to last-known content); bound the in-memory document snapshot cache - metadata: wrap batch inserts in a transaction; gzip-compress diffs at rest and decompress transparently on read; detect/rebuild corrupt databases on load; cache stats (60s) to avoid full-table scans - vectorStore: escape quotes in delete predicate and cap vector topK - restoration: implement rename restoration - timeline: fallback diff now shows deletions too (proper LCS diff) - chat: fix broken module re-export Enhancements: - Zero-config built-in embedding provider (now default; deterministic hashing embedding, no API key/model/server needed) - Real BM25 keyword ranking (candidate retrieval + BM25) instead of unranked LIKE - Local BM25 reranker (free, offline) enabled by default - Symbol time-travel command + editor context menu entry - Bookmarks (pin changes) backed by a new table - Automatic retention enforcement on startup (prune changes + vectors, vacuum) - Encrypted SecretStorage for API keys with migration out of settings.json - Prompt-injection hardening for retrieved RAG context - Markdown rendering: links + fenced code blocks; safer emphasis parsing - Keybindings (Open Timeline, Search History) Tooling & docs: - Vitest unit tests (38) for pure modules + GitHub Actions CI - Fix broken eslint config; resolve all lint errors - Create missing walkthrough media; add CONTRIBUTING.md and CHANGELOG.md - README accuracy: BM25 (not FTS5), correct keybindings/config, qualified perf - Remove leftover console.log debugging from the webview
Bookmarks: - Star toggle on timeline items (all three view modes), the change-detail panel, and search results - "Bookmarks" view button in the Search panel - App tracks the bookmarked-id set (authoritative from the extension) with optimistic toggling Symbol history: - Clickable symbol tags in the timeline and detail panel jump to that symbol's history - Dedicated symbol input in the Search panel Protocol/extension: - New messages: getBookmarkIds, toggleBookmark, getBookmarks, symbolHistory (webview→ext) and bookmarkIds (ext→webview) - Handlers added; bookmark/symbol results render in the search results surface, and the webview switches to the Search tab when results arrive Verified: root + webview typecheck, lint (0 errors), 38 tests, build.
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.
Correctness fixes:
content); bound the in-memory document snapshot cache
and decompress transparently on read; detect/rebuild corrupt databases on
load; cache stats (60s) to avoid full-table scans
Enhancements:
embedding, no API key/model/server needed)
Tooling & docs: