This release fixes issues for SREs watching stability and regressions.
✓ No known CVEs patched in this version
Topics
+13 more
Summary
AI summaryFixed multiple data races and panic handling bugs in the daemon broker.
Full changelog
Bug fixes and test coverage for the daemon broker, warmup gate, and scope config shipped in v0.6.0.
Fixed
- Data race on DaemonInfo: warmup goroutine and main event loop wrote to shared struct without synchronization. Added mutex.
- Data race on lastDisconn: inactivity timeout read without lock. Now synchronized.
- Global firstRefDone state: package-level atomic leaked state between clients in multi-server mode. Moved to per-warmupState field.
- Unprotected socketConn write: daemon Shutdown path set socketConn=nil without holding c.mu. Now locked.
- Panic recovery in broker goroutines: warmup and socket accept goroutines now recover from panics with warning-level logging instead of crashing the daemon silently.
- WriteDaemonInfo error now logged: previously discarded with
_ =, causing daemon to appear permanently stuck in "indexing" if the write failed. - Content-Length parse error handling: malformed headers from socket clients now return an error instead of silently producing contentLength=0.
- Error wrapping in StopDaemon: now includes PID and operation context.
Testing
- 17 new unit tests covering daemon lifecycle (NeedsDaemon, DaemonDir, WriteDaemonInfo round-trip, CleanupStaleDaemons), scope config generation (Python pyrightconfig.json, TypeScript tsconfig.json, Go no-op, backup/restore), and warmup state (FirstRefTimeout, MarkReady, NotifyDiagnostic).
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About blackwell-systems/agent-lsp
Stateful MCP server over real language servers. 50 tools, 30 CI-verified languages, 20 agent workflows. Persistent sessions keep the index warm across files and projects. Speculative execution simulates edits in memory before writing to disk.
Related context
Related tools
Earlier breaking changes
- v0.11.0 `get_change_impact` renamed to `blast_radius`. Same handler, same parameters, new name.
Beta — feedback welcome: [email protected]