Added
- Public LSP config schema and compatibility normalization
- Shared custom rules are now loaded from a user-level directory.
- The official Docker Language Server is now verified in nightly LSP smoke tests.
- Deferred formatting now announces settled completion with ownership identity
Changed
- Idle eviction is now enabled for
docker,json, andpython-jediafter consecutive safe measurements (refs #3989).
Fixed
- Report fixer restore loss.
- Batched scans keep their compiled query across a heal.
- A grammar that traps on two distinct files is retired, not retried until the heap aborts.
- The word index no longer holds its serialized copy while idle.
- Startup warm caches now cover up to 2,500 measured source files safely.
- The read guard keeps authorship through pi-lens-owned rewrites.
throw Error(x)style findings are now warnings, not blockers.- Shared secondary worktree roots now remain visible until every session holding them leaves.
- Lint fallback no longer hides missing type coverage.
- Keep source-build tools aligned with the lockfile (#4066).
- Scanners now avoid linked worktree duplicates.
- Prevented pi-lens's read-only registry-tool operations from being mistaken for learned edits after another operation mutates a file.
- Ast-grep rule validation no longer stalls on blank-heavy YAML (#4148)
- Pytest and go.mod parsing no longer stall on blank-heavy input (#4148)
- Refresh TypeScript clients across package roots (closes #4156)
- A project's data directory stays stable for the whole process
- Read-guard authorship now stays within bytes each writer actually changed.
- Outside-root edits now explain skipped analysis
- Answered LSP findings are preserved when another server times out
- Identity checks against
True/Falseare no longer flagged - Release summaries keep wrapped changelog entries intact
- Read evidence now survives relative paths, nested codemode calls and conversation moves
Plus 13 internal changes: tests, CI, tooling, and refactors.
🙏 Thanks
Thanks to the external contributors in this release:
- @AngriestBird — #4190, #4191, #4192, #4232