v0.15.0
What's Changed
- refactor(core): architecture improvements for maintainability and testability by @bug-ops in #1526
- refactor: Phase 2 architecture improvements — deduplication and file splits by @bug-ops in #1527
- feat(config): add migrate-config command by @bug-ops in #1528
- fix(tools): enforce shell blocklist before permission policy check by @bug-ops in #1529
- fix(lsp): use file_path parameter for mcpls 0.3.4 compatibility by @bug-ops in #1537
- fix(init): generate mcpls.toml config instead of unsupported --workspace-root flag by @bug-ops in #1540
- fix(acp): use file_path parameter for mcpls tool calls by @bug-ops in #1539
- fix(lsp): fix hover-on-read hook — strip cat-n prefix and correct MCP param by @bug-ops in #1541
- chore(deps): document upstream blocker for RUSTSEC-2025-0134 by @bug-ops in #1542
- chore(deps): bump quinn-proto from 0.11.13 to 0.11.14 in the cargo group across 1 directory by @dependabot[bot] in #1543
- fix(tools): SEC-001..004 tool execution hardening by @bug-ops in #1546
- fix(tools): skip permission policy for MCP/LSP tools in Supervised mode by @bug-ops in #1547
- feat(memory): share single QdrantOps instance across all subsystems by @bug-ops in #1549
- fix(tools): handle ConfirmationRequired in native tool path and fix MCP tools in Supervised mode by @bug-ops in #1548
- perf(tools): restore parallel native tool execution with selective retry by @bug-ops in #1550
- feat(index): hybrid tree-sitter + LSP code understanding (#1551) by @bug-ops in #1555
- fix(zeph-llm): use max_completion_tokens for GPT-5 OpenAI requests by @bug-ops in #1559
- feat(debug-dump): include request metadata in debug dumps (#1485) by @bug-ops in #1560
- fix(openai): handle null assistant content in tool calls by @bug-ops in #1562
- Fix issue 1563 by @bug-ops in #1564
- Preserve requested working directory when starting ACP sessions by @bug-ops in #1567
- Cap Claude cache-control blocks to four by @bug-ops in #1568
- Resolve issue 1569 in Zeph by @bug-ops in #1571
- Fix issue 1570 by @bug-ops in #1572
- fix(acp): log startup runtime paths by @bug-ops in #1580
- Normalize legacy runtime defaults by @bug-ops in #1582
- Track shared ACP models and preserve session defaults by @bug-ops in #1583
- Fix regression reported in issue 1579 by @bug-ops in #1584
- Add ACP readiness probes and notifications by @bug-ops in #1585
- Track MCP server connectivity for MCP LSP provider by @bug-ops in #1586
- Refactor Zeph ACP agent for Send+Sync LSP runtime by @bug-ops in #1587
- Add debug tracing to LSP diagnostics and hover hooks by @bug-ops in #1588
- #1557 by @bug-ops in #1589
- Enable ACP auto-start when configured by @bug-ops in #1590
- Fix issue 1556 agent configuration across toolchain by @bug-ops in #1591
- fix(scheduler): initialize scheduler in ACP mode by @bug-ops in #1602
- fix(search_code): use relative paths to prevent path redaction in CLI display by @bug-ops in #1604
- feat(gemini): Gemini provider Phase 1 — basic generateContent chat by @bug-ops in #1605
- feat(orchestration): typed ConcurrencyLimit error, edge-case tests, cancel token by @bug-ops in #1606
- fix(lsp-hooks): add McpCaller trait and regression tests for parameter names (#1538) by @bug-ops in #1615
- feat(orchestration): allow /plan cancel delivery during run_scheduler_loop by @bug-ops in #1616
- feat(gemini): Phase 2 -- SSE streaming support by @bug-ops in #1617
- fix(orchestration): exponential backoff in DagScheduler when concurrency limit hit by @bug-ops in #1620
- perf(memory): stream edge list in chunks during community detection by @bug-ops in #1621
- refactor(orchestrator): downgrade noisy fallback log to debug by @bug-ops in #1622
- test(tools): add execute_confirmed + blocklist regression test by @bug-ops in #1623
- docs: update for changes since v0.14.3 by @bug-ops in #1631
- fix(orchestration): prevent DagScheduler deadlock on concurrency exhaustion (#1619) by @bug-ops in #1624
- feat(scheduler): accept standard 5-field cron expressions by @bug-ops in #1632
- feat(gemini): Phase 3 -- tool use / function calling by @bug-ops in #1635
- fix(acp): apply graph memory config to ACP sessions by @bug-ops in #1645
- feat(memory): add debug logging to SemanticMemory search pipeline by @bug-ops in #1644
- feat(scheduler): add list_tasks tool and /scheduler list slash command by @bug-ops in #1648
- feat(gemini): Phase 4 -- vision / multimodal (inlineData) by @bug-ops in #1655
- fix(acp): apply document RAG and graph memory config to ACP sessions by @bug-ops in #1653
- feat(router): add debug logging for provider selection decisions by @bug-ops in #1657
- feat(gemini): document SSE functionCall gap with TODO for Phase 4 by @bug-ops in #1660
- feat(gemini): document parse_tool_response single-candidate limitation by @bug-ops in #1662
- feat(llm): update Opus 4.6 thinking to use effort parameter GA by @bug-ops in #1663
- feat(gemini): Phase 5 -- embeddings (embedContent) by @bug-ops in #1664
- fix(gemini): depth counter in inline_refs_inner only decrements on $ref resolution by @bug-ops in #1665
- fix(acp): wire anomaly detector and orchestration config into ACP sessions by @bug-ops in #1667
- fix(llm): normalize JSON schema for OpenAI strict mode in chat_typed (#1656) by @bug-ops in #1670
- chore(llm): replace retired Claude 3 model IDs and add deprecation warning by @bug-ops in #1671
- fix(acp): forward /scheduler, /graph, /plan slash commands to agent loop by @bug-ops in #1675
- feat(gemini): omit parameters field for no-parameter tools by @bug-ops in #1674
- fix(memory): prioritize word count over snake_case in HeuristicRouter by @bug-ops in #1676
- fix(memory): wire semantic ranking options from config into SemanticMemory by @bug-ops in #1678
- fix(acp): invert slash command routing to allowlist approach by @bug-ops in #1679
- fix(tools): record anomaly outcomes in native tool_use path by @bug-ops in #1681
- fix(llm): omit parameters field for no-param tools in OpenAI strict mode by @bug-ops in #1682
- feat(llm): support Claude 1M token context window beta header by @bug-ops in #1684
- feat(gemini): Phase 6 - list models + remote discovery by @bug-ops in #1688
- fix(acp): emit flush after non-LLM slash commands to unblock session/prompt by @bug-ops in #1689
- feat(scheduler): cancel sub-agents on channel close and shutdown signal by @bug-ops in #1692
- feat(orchestration): count tasks completed before cancellation in metrics by @bug-ops in #1690
- test(agent): add COV-03 scheduler-loop integration test for non-cancel message queuing by @bug-ops in #1699
- test(gemini): add missing uppercase_types tests for number/boolean/array/null by @bug-ops in #1700
- feat(llm): Claude server-side compaction API (compact-2026-01-12 beta) by @bug-ops in #1696
- fix(llm): graceful degradation when compact-2026-01-12 beta header is rejected by @bug-ops in #1701
- test(gemini): add missing schema conversion edge case tests by @bug-ops in #1702
- deps: update clap 4.5→4.6, tempfile 3.26→3.27, tracing-subscriber 0.3.22→0.3.23 by @bug-ops in #1704
- fix(skills): consolidate EmbedUnsupported warnings into single summary by @bug-ops in #1703
- fix(llm): correct ContextManagement serialization for Claude server compaction API by @bug-ops in #1709
- feat(llm): Gemini thinking_level/thinking_budget support for flash-thinking models by @bug-ops in #1710
- feat(zeph-core): intra-turn parallel tool dispatch via dependency DAG (LLMCompiler) by @bug-ops in #1712
- fix(skills): collate EmbedUnsupported warnings into single info log by @bug-ops in #1711
- fix(llm): extend is_compact_beta_rejection() to catch context_management 400s by @bug-ops in #1716
- fix(llm): disable server_compaction for Haiku models with WARN by @bug-ops in #1717
- perf(orchestration): parallel task dispatch in DagScheduler by @bug-ops in #1718
- feat(memory): tiered context compaction — soft at 70%, hard at 90% (#1338) by @bug-ops in #1720
- feat(llm): cascade routing — try cheap provider first, escalate on degenerate output by @bug-ops in #1721
- fix(llm): remove top-level type field from ContextManagement by @bug-ops in #1726
- test(zeph-core): integration test for ConfirmationRequired dependency propagation (#1713) by @bug-ops in #1725
- fix(core): prevent context compaction loop when budget too tight (#1708) by @bug-ops in #1727
- release: v0.15.0 by @bug-ops in #1728
Full Changelog: v0.14.3...v0.15.0