Cache files are now stored outside the vault directory at
~/.laputa/cache/<vault-hash>.json, preventing them from polluting
the user's git repo. Writes use atomic tmp+rename to avoid corruption.
Legacy .laputa-cache.json files are auto-migrated and cleaned up on
first run.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- .claude-pid: Claude Code runtime PID file, not repo content
- .laputa-index.json: generated search index, must not be committed
- *.key / *.key.pub: blanket guard against future signing key commits
* feat: bundle mcp-server into release app so AI Chat works
- Add esbuild bundle script (scripts/bundle-mcp-server.mjs) that compiles
mcp-server/index.js and ws-bridge.js into self-contained CJS bundles
- Output goes to src-tauri/resources/mcp-server/ (gitignored)
- Add Tauri resources config to copy bundles into Contents/Resources/mcp-server/
- Update mcp_server_dir() to look in Contents/Resources/ (not Contents/) in release
- Add bundle-mcp npm script; hook it into tauri beforeBuildCommand
- Exclude generated resources from ESLint
Previously AI Chat showed 'mcp-server not found at .../Contents/mcp-server'
because the release path lacked the 'Resources' segment and no files were bundled.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* ci: bundle mcp-server resources before Rust tests
* fix: add mcp-server as pnpm workspace package so esbuild can resolve its deps in CI
* fix: exclude src-tauri/target from eslint to fix CI lint failure
---------
Co-authored-by: Test <test@test.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Refactor settings.rs to expose testable internal functions (get_settings_at,
save_settings_at) and add integration tests for file I/O roundtrips, whitespace
trimming, directory creation, and malformed JSON handling. Coverage for
settings.rs improved from 46% to 91%. Overall Rust coverage now 86.2% (above
85% threshold). Also add coverage/ to .gitignore.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add snippet: string to VaultEntry TypeScript interface to match the
Rust backend. Update mock data with snippets for all entries. Add
.laputa-cache.json to .gitignore.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Scaffold Vite + React + TypeScript frontend
- Add Tauri v2 backend with Rust
- Implement list_vault command: recursively scans .md files, parses
YAML frontmatter (Is A, aliases, Belongs to, Related to, Status,
Owner, Cadence), extracts title from H1 or filename
- 10 passing Rust tests for frontmatter parsing and vault scanning
- Configure Vitest and Playwright (test infrastructure)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>