v0.3.0
Pre-release
Pre-release
Two strands: giving an operator control over what the server sees and what it
may do, and a documentation pass aimed at readers who have never seen the
project.
Configuration
- Per-root .project-lens.json contributes exclude patterns for that root only,
unioned with the global exclude. Never applies to a sibling root. - exclude is the only key that file may set. It lives inside a scanned tree,
so roots and allow_writes are ignored there by design: a cloned repository
must not be able to widen the scan or enable writes. Malformed fails startup. - allow_writes option with PROJECT_LENS_ALLOW_WRITES override. write_file and
scaffold_project are not registered unless set, so a client that connects
without them cannot call them. - Stricter schema validation in loadConfig for exclude and allowWrites.
Benchmarks
- Scenarios labelled stable vs unstable, so non-reproducing results are marked
rather than published beside ones that reproduce. - Token cost separates default-session from write-enabled schema sets, and
reports framing overhead and schema break-even directly. - search gains a scope: "all" scenario; redundant percentiles dropped.
Tests
- 100% coverage across affected modules; new withFakeRg helper for ripgrep
failure paths. - Integration tests assert write-tool absence from the tool list, not just
call refusal. Different guarantees, and only the former is what the security
model claims.
Documentation
- README rewritten for a cold reader: what it is and why, reference material
folded into collapsible sections, install routes and client registration
recipes for Claude Code, Codex CLI, Gemini CLI and generic JSON clients. - New CONTRIBUTING.md: setup, layout, design invariants, testing and
benchmarking guidance, commit conventions, patch submission.