feat: content-addressed parse cache (Issue 11)

↗ view on GitHub · Eli Ziff · 2026-07-27 · 2959ca8c

Persistent parse cache keyed by file SHA-256 + parser name/version under
the app's local data home (parse-cache/), scoped per user/document so
matter content never crosses scopes. Wired into both production text
extraction paths (local extractLocalDocument and cloud
readDocumentContent) via a shared per-format parser table; content or
parser-version changes naturally miss, clearParseCache deletes a scope
or everything, hits log actually avoided work. Measured: 554KB PDF
1468ms -> 2ms, 121KB DOCX 128ms -> 1ms, byte-identical output.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yXxuitxX5h4wm1v88hnga
Repository eliziff/Beaver
Author Eli Ziff <eliasziff@gmail.com>
Authored
Parents 2d672de6
Stats 4 files changed , +248 , -74
Part of PDF pinpoint evidence and parse-lifecycle hardening

Capture this commit into my fork

Download a Markdown prompt that tells Claude how to port this exact commit into your working tree. Run it via claude -p < capture-commit-2959ca8c.md from inside the repo you want the change in.

⬇ Download capture-commit-2959ca8c.md