Releases: bug-ops/zeph
Releases · bug-ops/zeph
Release list
v0.22.3
Immutable
release. Only release title and notes can be modified.
What's Changed
- fix(vault): respect vault-path/vault-key overrides in init, add overwrite guard by @bug-ops in #6499
- fix(subagent): close secret-leak, trust-cap, and finalize-skip gaps by @bug-ops in #6503
- fix(mcp): fail closed on Untrusted trust level with no tool_allowlist by @bug-ops in #6505
- fix(channels): close fail-open allowlist gap on Discord/Slack by @bug-ops in #6502
- fix(llm): dedupe colliding tool_calls[].id before serialization by @bug-ops in #6506
- fix(sanitizer): close exfiltration guard markdown/HTML image regex bypasses by @bug-ops in #6507
- fix(gateway): fail closed on missing auth token, disclose webhook in wizard by @bug-ops in #6509
- fix(security): close quarantine fail-open and ACP shell permission cache gaps by @bug-ops in #6511
- fix(skills): reuse trust snapshot on transient load failure instead of failing open by @bug-ops in #6513
- fix(channels): clamp negative or non-finite Retry-After before Duration conversion by @bug-ops in #6516
- fix(sanitizer): close case-insensitive scheme and scheme-relative URL bypasses in exfiltration guard by @bug-ops in #6518
- fix(gateway): surface serve() startup failures as TaskStatus::Failed, not Completed by @bug-ops in #6520
- fix(tools): harden shell command pattern-matching against flag-order and blocklist bypasses by @bug-ops in #6521
- fix(vault): thread parse_vault_args env/config resolution into vault subcommand by @bug-ops in #6522
- fix(acp): isolate permission.rs tests from real acp-permissions.toml by @bug-ops in #6514
- fix(sanitizer): close scheme-relative URL gap in exfiltration guard by @bug-ops in #6523
- ci(zeph-acp): add CI guard against AcpPermissionGate::new(_, None) reintroduction by @bug-ops in #6524
- fix(core): add grace window to vault-anchor reconcile-reap sweep by @bug-ops in #6525
- feat(core): enable runaway tool-call rate limiting and daily cost cap by default by @bug-ops in #6528
- refactor(durable): consolidate key-material params and split LocalBackend impl block by @bug-ops in #6529
- feat(subagent): wire per-task tool-allowlist into SpawnContext inheritance by @bug-ops in #6530
- fix(llm): add HTTP-status and transport-level retry to Ollama backend by @bug-ops in #6531
- perf(skills): use embed_batch in embed_skills_with_timeout by @bug-ops in #6532
- refactor(core): split tool_execution/tier_loop.rs into concern-scoped modules by @bug-ops in #6534
- refactor(agent-tools): trim dead AgentChannel scaffolding to only doom_loop_hash by @bug-ops in #6535
- feat(subagent): add delegation-mode gating and token-level transcript streaming by @bug-ops in #6537
- refactor(context): dedupe fetcher budget-append loops via shared helper by @bug-ops in #6540
- feat(subagent): derive tool-allowlist producers from parent permissions and planner by @bug-ops in #6538
- docs(specs): add Telegram rich-text formatting sub-spec for Bot API 10.1/10.2 by @bug-ops in #6542
- refactor(commands): split AgentAccess god-trait into 15 domain sub-traits by @bug-ops in #6543
- feat(memory): add write-time consent gate for untrusted memory writes by @bug-ops in #6544
- fix(core): sanitize compress_context summary before knowledge-block append by @bug-ops in #6585
- fix(serve): wire ContentSanitizer and ML classifier pipeline into zeph serve sessions by @bug-ops in #6586
- fix(security): wire security controls into all agent entry points by @bug-ops in #6587
- fix(bootstrap,durable): resolve vault CLI overrides across all key-material call sites by @bug-ops in #6590
- fix(subagent,sanitizer,tui): mask generic secrets and fix background transcript stall by @bug-ops in #6593
- fix(index,core): add depth-cap guards against unbounded recursion DoS by @bug-ops in #6595
- fix(memory)!: wire GraphConfig::retrieval_strategy into the live graph-recall path by @bug-ops in #6597
- fix(memory): close consent-gate TOCTOU bypasses across turns, tiers, and reload by @bug-ops in #6598
- fix(memory): correct ring-hop distance computation in WaterCircles retrieval by @bug-ops in #6600
- fix(core,memory): correct write-time provenance and audit gating in MemGhost consent gate by @bug-ops in #6599
- feat(channels): adopt Telegram Bot API 10.1 rich-text formatting and fix guest-mode escaping by @bug-ops in #6604
- fix(tools): audit declarative PolicyGateExecutor deny/allow decisions by @bug-ops in #6601
- fix(sanitizer,tools): add depth guards to unbounded JSON recursion in collect_strings by @bug-ops in #6605
- fix(zeph-experiments): route ParameterRange deserialization through new() by @bug-ops in #6606
- fix(acp): align test cfg gate with build_combined_deps' own feature gate by @bug-ops in #6608
- fix(security): close RiskChainAccumulator cross-turn and cross-session gaps by @bug-ops in #6602
- fix(context): require word-boundary match for JSON structural-key fidelity check by @bug-ops in #6611
- fix(cli,vault): honor --vault-key/--vault-path overrides in registry token resolution by @bug-ops in #6610
- refactor(context): dedupe assembler.rs fetcher params and timeout boilerplate by @bug-ops in #6612
- fix(core): repair truncation-severed spotlight wrapper in compaction prompt by @bug-ops in #6613
- refactor(mcp): replace bool parameters with type-safe enums in McpClient connect paths by @bug-ops in #6614
- fix(memory,a2a)!: harden Qdrant search limits and A2A trust defaults by @bug-ops in #6615
- fix(skills): scan and cap trust for self-learning auto-improved skills by @bug-ops in #6619
- refactor(core): remove legacy #[cfg(test)]-only dispatch harness duplicating production tool/LLM dispatch by @bug-ops in #6617
- refactor(core): consolidate security-relevant AgentBuilder wiring across entry points by @bug-ops in #6620
- test(core): add discriminating test for classify_tool_result's [stderr] branch by @bug-ops in #6621
- fix(memory): clamp VectorStore::search trait method directly by @bug-ops in #6622
- refactor(acp): split ZephAcpAgentState god-object into focused modules by @bug-ops in #6624
- fix(subagent): enforce GrantKind::Tool TTL/revocation before dispatch by @bug-ops in #6625
- fix(subagent)!: reject unknown keys in nested tools/permissions frontmatter by @bug-ops in #6626
- refactor(memory): enforce VectorStore search clamp via template method by @bug-ops in #6627
- docs(specs): correct stale references, broken links, and formatting by @bug-ops in #6629
- feat(core,llm,memory): add per-message usage/cost tracking by @bug-ops in #6628
- chore(deps): update github-actions by @bug-ops in #6639
- chore(deps): update ghcr.io/bug-ops/zeph:latest docker digest to ad52423 by @bug-ops in #6638
- chore(deps): update ollama/ollama:latest docker digest to 6345fbc by @bug-ops in #6640
- chore(deps): update prom/prometheus docker tag to v3.13.1 by @bug-ops in #6641
- chore(deps): update rust-minor-patch by @bug-ops in #6642
- chore(deps): update rust crate tokio to 1.53.0 by @bug-ops in #6643
- release: v0.22.3 by @bug-ops in #6645
Full Changelog: v0.22.2...v0.22.3
v0.22.2
Immutable
release. Only release title and notes can be modified.
What's Changed
- fix(subagent): strip MessagePart::Image from transcript writes by @bug-ops in #6310
- docs(specs): fix README.md spec-number index drift and resolve collisions by @bug-ops in #6312
- fix(core): redact image bytes from debug dumps by default by @bug-ops in #6314
- docs(specs): enumerate sub-agent transcripts as 4th persistence surface in spec-072 by @bug-ops in #6316
- fix(orchestration): validate idle-timeout wizard input, warn on inert idle_timeout_secs by @bug-ops in #6313
- chore(deps): update gcr.io/distroless/static-debian12:nonroot docker digest to aef9602 by @bug-ops in #6318
- test(orchestration): add direct SC-4/SC-9 assertions for Mode-1 recovery by @bug-ops in #6317
- fix(core): wire real turn_tool_calls counter and collapse delegate boilerplate by @bug-ops in #6328
- fix(subagent): reap orchestration-dispatched sub-agent handles by @bug-ops in #6333
- feat(mcp): MediaSanitizer decode/validate/attach + vision-tier routing for MCP image passthrough by @bug-ops in #6331
- fix(core): redact base64 blobs and message history from debug dumps by @bug-ops in #6326
- test(core): add e2e coverage for TurnSummary tool_calls/llm_requests counters by @bug-ops in #6334
- fix(core): recompute cached_prompt_tokens after system-prompt rebuild by @bug-ops in #6337
- fix(core): use atomic write for debug dumps, fix broken rustdoc links by @bug-ops in #6336
- fix(bench): correct stale Qdrant-collection claim and restore NFR-007 test coverage by @bug-ops in #6338
- fix(core): wire TurnSummary.tool_calls to hook env export and notification body by @bug-ops in #6339
- chore(deps): update ghcr.io/bug-ops/zeph:latest docker digest to 0ac4544 by @bug-ops in #6319
- chore(deps): update github-actions by @bug-ops in #6320
- refactor(experiments): make ParameterKind sync points compiler-enforced by @bug-ops in #6340
- chore(deps): update ollama/ollama:latest docker digest to 57f573b by @bug-ops in #6321
- feat(orchestration): activate idle_timeout via eviction-safe progress-signal plumbing by @bug-ops in #6341
- chore(deps): update rust-minor-patch by @bug-ops in #6324
- feat(mcp): add config/CLI/TUI/migration surface for image passthrough by @bug-ops in #6342
- chore(deps): update prom/prometheus docker tag to v3.13.0 by @bug-ops in #6323
- docs(memory): record hub-degree kill-criterion re-measurement (spec-067 §7.1) by @bug-ops in #6345
- fix(ci): gate ci-status on detect-changes result by @bug-ops in #6344
- feat(mcp): per-call result size override via _meta annotation by @bug-ops in #6343
- chore(deps): update rust:1.96-slim docker digest to 31ee7fc by @bug-ops in #6322
- feat(orchestration): implement Mode-2 route_to reroute-to-alternate recovery by @bug-ops in #6346
- build(docker): bump rust base image to 1.97.1 by @bug-ops in #6347
- chore(deps): update rust crate tokio-tungstenite to 0.30.0 by @bug-ops in #6351
- chore(deps): update actions/setup-node action to v7 by @bug-ops in #6352
- chore(deps): update rust crate rubato to v4 by @bug-ops in #6354
- chore(deps): update rust crate hf-hub to v1 by @bug-ops in #6353
- chore(deps): update debian:bookworm-slim docker digest to 7b140f3 by @bug-ops in #6350
- fix(orchestration): raise verifier_timeout_secs default to 120s by @bug-ops in #6367
- fix(core): wire dump_tool_output into production tool-result path by @bug-ops in #6368
- feat(testing): add coverage-guided fuzzing for parser-like components by @bug-ops in #6369
- fix(security): harden SessionId path handling, secret-mask nonce, stale comment by @bug-ops in #6372
- feat(testing): add plugin_manifest fuzz target and coverage reporting by @bug-ops in #6375
- fix(llm): attach MCP image siblings to Ollama tool-role messages by @bug-ops in #6376
- fix(memory): wire insert_tree_leaf and recent-embeddings fetch into production paths by @bug-ops in #6392
- fix(orchestration): mark task Failed when all tool calls were policy-blocked by @bug-ops in #6395
- feat(orchestration): cross-thread KV store and Command-style dynamic task handoff by @bug-ops in #6399
- fix(channels): forward elicit() and send_context_estimate() on AppChannel by @bug-ops in #6400
- fix(core,tui): wire classifier metrics into sanitizer, flash single tool calls by @bug-ops in #6401
- fix(channels): coordinate elicit()/confirm() readline with the background stdin reader by @bug-ops in #6403
- fix(memory): prevent stuck singleton leaves from starving TiMem consolidation by @bug-ops in #6402
- fix(orchestration): catch mixed-trace policy failures and propagate spawn-path corrections by @bug-ops in #6405
- fix(subagent): publish terminal status on LLM timeout and capture debug dumps by @bug-ops in #6406
- fix(core,config): wire ToolsConfig::enabled into tool-def gating by @bug-ops in #6409
- fix(llm): gate Ollama supports_vision on actual model capability by @bug-ops in #6410
- fix(subagent,core): reap panicked sub-agents via join_handle, scrub PII in sub-agent debug dumps by @bug-ops in #6414
- fix(session): record and surface lock holder PID on contention by @bug-ops in #6415
- fix: close spec-080 Command-handoff verification, rejection-visibility, and owner_key gaps by @bug-ops in #6416
- fix(core): stop injecting unfiltered full-body skill dumps outside per-turn matching by @bug-ops in #6422
- fix(llm): gate OpenAI/Compatible supports_vision on model capability by @bug-ops in #6423
- feat(orchestration): make whole-plan verify timeout independently configurable by @bug-ops in #6424
- fix(core,acp): reset owner_key/is_guest_context staleness, thread ACP identity into cross-thread store by @bug-ops in #6428
- fix(core,config): cap sub-agent skill-body token budget on default empty include by @bug-ops in #6429
- fix(channels): close residual ~50ms cli elicitation acquisition window with ack handshake by @bug-ops in #6430
- docs(specs): add resume UX and history visibility to session-persistence spec by @bug-ops in #6417
- chore(arch): enable workspace lints for zeph-experiments by @bug-ops in #6433
- perf(core): make /history transcript_len/transcript_page O(1)/O(count) by @bug-ops in #6434
- fix(serve): compute resume banner for created, reactivated, and forked sessions by @bug-ops in #6435
- fix(llm,memory): eliminate PID-recycled test flake and postgres-only mock panic by @bug-ops in #6436
- test(core): cover build_user_message vision-capability gate by @bug-ops in #6438
- feat(durable): add zeph durable cancel command and Canceled status by @bug-ops in #6439
- feat(tools,scheduler): agent time-awareness — get_current_time tool + schedule add --run-at by @bug-ops in #6441
- fix(experiments): skip postgres-only mock test without ZEPH_TEST_POSTGRES_URL by @bug-ops in #6443
- feat(tools): add native query-based web_search tool by @bug-ops in #6444
- fix(scheduler): stamp user_added provenance on CLI writes and fix periodic hydration prompt loss by @bug-ops in #6446
- feat(durable): add zeph durable rotate-key for AEAD payload key rotation by @bug-ops in #6452
- feat(plugins): add install-time reputation and typosquat scanning by @bug-ops in #6448
- feat(security): add tamper-evidence for transcript, session, and durable journal history by @bug-ops in #6453
- feat(subagent): add opt-in live transcript forwarding to TUI/--bare by @bug-ops in #6455
- f...
v0.22.1
Immutable
release. Only release title and notes can be modified.
What's Changed
- fix(session): route hydrate_from_event_log through bounded replay by @bug-ops in #5861
- docs(orchestration): correct llm-planning feature flag default claim by @bug-ops in #5858
- fix: correct workspace license declaration to MIT OR Apache-2.0 by @bug-ops in #5865
- chore: bump MSRV to 1.97 by @bug-ops in #5872
- feat(llm,commands,core): add runtime /think-tokens and /reasoning-effort commands by @bug-ops in #5876
- fix(skills): wire group_structured/similarity/injection-score at cold start by @bug-ops in #5877
- fix(llm): resolve OllamaProvider::name() hardcoding and embed misrouting by @bug-ops in #5879
- fix(init): require confirmation before overwriting ZEPH_DURABLE_KEY by @bug-ops in #5880
- fix(tools): scale adversarial policy timeout by provider type by @bug-ops in #5881
- fix(a2a,config): give --connect its own client-side TLS/SSRF policy by @bug-ops in #5884
- fix(gateway): expose Error::source() on GatewayError variants by @bug-ops in #5888
- fix(llm): delegate think-tokens/reasoning-effort through routed providers by @bug-ops in #5890
- ci: migrate lint-warning gate from RUSTFLAGS to build.warnings by @bug-ops in #5891
- fix(llm): sweep stale Claude model IDs and generalize staleness warning by @bug-ops in #5901
- fix(acp): scope persisted session listing/loading to owning client by @bug-ops in #5907
- fix(llm): populate provider_name across all remaining LLM backends by @bug-ops in #5908
- feat(plugins,skills,config,cli): add opt-in skill/plugin discovery-and-install marketplace by @bug-ops in #5910
- fix(tools): forward checkpoint and confirmation methods through executor wrappers by @bug-ops in #5930
- fix: resolve build.warnings gate fallout from #5891 migration by @bug-ops in #5960
- fix(mcp): rehydrate input_schema for Qdrant-matched MCP tools by @bug-ops in #5972
- fix(skills): wire trust config and RL routing head into ACP/serve/daemon by @bug-ops in #5976
- fix(core,acp,tools): wire memory maintenance and capability governance into ACP/daemon/serve by @bug-ops in #5978
- fix(commands): require trusted session for /image path reads by @bug-ops in #5988
- fix(subagent): deliver resolved vault secret value to sub-agents by @bug-ops in #5990
- fix(tools): forward checkpoint methods through Arc by @bug-ops in #5998
- fix(config,llm): redact secrets from Debug output on 7 config structs by @bug-ops in #6004
- fix(commands): require trusted session for /mcp and /plugins by @bug-ops in #6002
- fix(config,mcp,a2a): redact three more secret-bearing Debug/Serialize leaks by @bug-ops in #6005
- fix(serve): wire trust/policy/adversarial gate chain into serve-sessions by @bug-ops in #6007
- fix(tools): forward requires_confirmation/is_tool_speculatable/execute_tool_call_confirmed through remaining ToolExecutor wrappers by @bug-ops in #6011
- fix(db): redact_url no longer leaks part of password containing '@' by @bug-ops in #6013
- fix(subagent,core): replay journaled result on durable subagent resume by @bug-ops in #6014
- fix(config): stop migrate-config from duplicating advisory blocks and false-reporting orchestration inserts by @bug-ops in #6017
- fix(commands): close requires_auth() fail-open gap in 19 CommandHandler impls by @bug-ops in #6033
- fix(vault)!: default vault backend to age and reject unknown backend strings by @bug-ops in #6025
- fix(tools): ToolExecutor forwarding gaps, symlinked checkpoint drop, checkpoint tests by @bug-ops in #6036
- fix(serve,gateway): dispatch recognized slash commands before sanitization by @bug-ops in #6039
- fix(durable): enforce encryption_gate INV-8 policy at runtime by @bug-ops in #6040
- fix(acp,daemon,serve): wire SelfCheckPipeline, TrajectorySentinel, and SkillInvokeExecutor into all entry points by @bug-ops in #6047
- fix(worktree): reconcile detached-HEAD worktrees, run prune on clean, clamp zero timeout by @bug-ops in #6051
- fix(tui): clear durable overlay and distinguish gate-rejection status by @bug-ops in #6053
- fix(config): wire dead validate() functions and fix migrate idempotency guards by @bug-ops in #6058
- fix(tui): clear fleet/task-registry overlays and fix Display padding in fleet panel by @bug-ops in #6060
- fix(skills): gate load_skill through the same trust pipeline as invoke_skill by @bug-ops in #6062
- fix(tools)!: remove permissive defaults on ToolExecutor/ErasedToolExecutor by @bug-ops in #6067
- fix(mcp): drop input_schema on MAX_SCHEMA_DEPTH cap hit by @bug-ops in #6075
- fix(worktree): gate force-removal on git prunable marker, add --force flag by @bug-ops in #6076
- fix(mcp): pin SSRF-validated addresses on connect and add missing OAuth timeout by @bug-ops in #6078
- fix(config): validate hot-reloaded config before applying to live agent by @bug-ops in #6083
- fix(mcp): close three gaps in the MCP tool trust pipeline by @bug-ops in #6088
- fix(skills): wire requires_trust_check setter and route CLI invoke through SkillTrustGate by @bug-ops in #6090
- fix(security): consolidate duplicated sanitization and redaction logic by @bug-ops in #6091
- fix(mcp): pin cross-origin OAuth discovered-issuer requests per-request by @bug-ops in #6092
- fix(mcp): pin DNS resolution for OAuth redirect-hop targets by @bug-ops in #6097
- fix(channels): add 429 retry-with-backoff and Telegram send_status by @bug-ops in #6100
- fix(core): offload hot-path blocking fs I/O to spawn_blocking by @bug-ops in #6101
- fix(acp): wire shutdown-summary, channel identity, help/model registry, and code-RAG into ACP by @bug-ops in #6102
- fix(plugins): route add_remote/download_archive through anti-downgrade HTTPS client by @bug-ops in #6104
- chore(build): disable sccache and enable incremental compilation locally by @bug-ops in #6105
- fix(plugins): cap archive size in add_remote/download_archive by @bug-ops in #6112
- fix(channels): bound send_status timeout and add Telegram 429 retry by @bug-ops in #6113
- fix(scheduler): correct daemon_status recency, RTW-A provenance tiers, and eval_provider by @bug-ops in #6116
- fix(core): offload trace-file writes and fix MetricsBridge clobbering by @bug-ops in #6117
- fix(db): fix Postgres LIMIT=0 crash and collapse DbConfig pool fields by @bug-ops in #6121
- fix(subagent): live TTL re-check for delivered secrets and per-task secret-request lookup by @bug-ops in #6123
- fix(scheduler): harden provenance trust boundary and push recent-runs query into SQL by @bug-ops in #6125
- fix(scheduler): close RTW-A capability-attenuation and injection-pattern gaps by @bug-ops in #6126
- fix(durable): wire control-entry HMAC to a production key with read-side verification by @bug-ops in #6130
- fix(tui): close panel mutual-exclusion, status-label, and dispatch gaps by @bug-ops in #6131
- fix(durable): add process-exclusivity lock for colliding agent_turn ExecutionIds by @bug-ops in #6133
- fix(index): resolve workspace_root for IndexMcpServer registration by @bug-ops in #6134
- fix(memory): wire MAGE soft-escalation gate and fix community.rs newline injection by @bug-ops in #6135
- fix(core): parallelize apply_tier_results hooks and align WATCHED_SPANS names by @bug-ops in #6137
- fix(security): rate-limit failed-auth requests in gateway and a2a by @bug-ops in #6136
- fix(mcp): lock tool_list for OAuth-transport MCP connections by @bug-ops in #613...
v0.22.0
Immutable
release. Only release title and notes can be modified.
What's Changed
- refactor(llm): delegate gemini ApiError to map_error_response; docs(config): CandleConfig doc comment by @bug-ops in #4880
- refactor(memory): remove ScoredCandidate wrapper and fix entered() span in tiered_retrieval by @bug-ops in #4881
- fix(experiments): correct EvalReport total_tokens overcounting and improve evaluator tests by @bug-ops in #4888
- refactor(llm): extract generation_params() helper and fix context_window fallback in OpenAiProvider by @bug-ops in #4889
- perf(context),refactor(llm): add fidelity tracing spans and extract response body helper by @bug-ops in #4891
- refactor(acp): bump agent-client-protocol to 0.14.0 by @bug-ops in #4893
- feat(index): add embedding_provider config field and fix double provider construction by @bug-ops in #4894
- refactor(subagent): add tracing span to resume and remove utc_now_pub by @bug-ops in #4895
- fix(llm): add config-driven override for CompletionTokens resolution by @bug-ops in #4898
- refactor(sanitizer,mcp): add guardrail tracing spans and fix mcp client span naming by @bug-ops in #4907
- refactor(subagent): split manager.rs monolith into focused modules by @bug-ops in #4906
- fix(acp): use thread::Builder with 8 MiB stack for agent connection thread by @bug-ops in #4908
- refactor(config): replace stringly-typed fields with typed enums by @bug-ops in #4909
- fix(acp,gateway): fix stdio stack overflow and sanitize webhook body by @bug-ops in #4911
- fix(a2a): add TTL eviction to TaskManager and replace now_rfc3339 with chrono by @bug-ops in #4910
- refactor(agent-feedback,scheduler): expose judge rate limit via config and add CronExpr newtype by @bug-ops in #4913
- refactor(config): split migrate/mod.rs monolith into subsystem submodules by @bug-ops in #4914
- refactor(config): split providers.rs monolith into per-family submodules by @bug-ops in #4915
- refactor(llm): split router/mod.rs monolith into focused submodules by @bug-ops in #4920
- refactor(core): split agent/persistence.rs into focused submodules by @bug-ops in #4921
- refactor(config): split memory.rs monolith into per-concern submodules by @bug-ops in #4922
- refactor(plugins): split manager.rs monolith into per-concern submodules by @bug-ops in #4927
- refactor: extract inline test blocks to dedicated tests modules by @bug-ops in #4932
- refactor(mcp): split manager.rs monolith into focused submodules by @bug-ops in #4931
- refactor(core): split agent/mod.rs monolith into focused submodules by @bug-ops in #4933
- chore(config,core,llm): post-split code-quality cleanup (#4926, #4928, #4929, #4930) by @bug-ops in #4934
- refactor(tui): split app/mod.rs monolith into focused submodules by @bug-ops in #4938
- refactor(config): dedup unit-interval validators and complete must_use sweep by @bug-ops in #4939
- perf(acp): offload list_directory and find_path fs walks to spawn_blocking by @bug-ops in #4940
- refactor(acp): extract session-usage and llm-providers clusters from agent/mod.rs by @bug-ops in #4942
- docs(spec-064): refresh stale references after monolith splits by @bug-ops in #4959
- feat(durable): scaffold zeph-durable crate, core newtypes, journal schema by @bug-ops in #4965
- fix(db): restore postgres backend compile and sqlite/postgres parity by @bug-ops in #4966
- feat(durable): payload AEAD cipher, AAD binding, max-payload fail-closed (#4945) by @bug-ops in #4967
- feat(durable): journal writer actor, sealed backend, local durable.db backend (#4946) by @bug-ops in #4968
- docs(agents): track all AGENTS.md guides and refresh review instructions by @bug-ops in #4969
- feat(durable): durable step, &self context, and replay divergence guard by @bug-ops in #4970
- feat(durable): durable promises, timers, and retention/compaction by @bug-ops in #4971
- feat(durable): zeph durable CLI, config wiring, init wizard, migrate-config, TUI view by @bug-ops in #4972
- refactor: add #[must_use] to public validate/scan functions across workspace by @bug-ops in #4974
- feat(core): durable agent tool-loop steps with crash-resume (#4951) by @bug-ops in #4975
- fix(subagent): offload blocking FS IO to spawn_blocking by @bug-ops in #4979
- feat(tui,experiments): reverse search backward nav and subject error tolerance by @bug-ops in #4976
- docs/refactor: fix acp intra-doc links and extract DRY helpers by @bug-ops in #4980
- feat(durable): --json flag for durable CLI, remove dead TUI consts, degraded metric by @bug-ops in #4986
- fix(init,config): sanitize provider env vars, fix embedding and eval_model prompts by @bug-ops in #4991
- fix(init): align default config output path with runtime search order by @bug-ops in #4992
- feat(durable,subagent): criterion benchmarks + durable subagent promise adapter by @bug-ops in #4994
- refactor(experiments,init): rename eval_model → eval_provider, add XDG parity test by @bug-ops in #4999
- fix(skills): use compact skill catalog when embedding matcher is unavailable by @bug-ops in #4998
- feat(durable): P2+P3 durable adapters — replan budget restore and exactly-once scheduler fires by @bug-ops in #5001
- fix(tui): add transcript scroll in Insert mode (PageUp/PageDown + mouse wheel) by @bug-ops in #4996
- fix(durable): use AtomicU32 counter in append benchmarks to avoid UNIQUE violation by @bug-ops in #5002
- refactor(tui) + docs(spec-063): scroll-step constant and panic=abort Drop limitation by @bug-ops in #5005
- feat(skills): add built-in caveman ultra-compressed output mode by @bug-ops in #5008
- spec(deep-link-scheme): add zeph:// URI scheme specification by @bug-ops in #5009
- spec(knowledge-ingest): add specification for zeph knowledge ingest (spec-067) by @bug-ops in #5025
- fix(orchestration): remove INV-1 violating deps and track durable writer handle by @bug-ops in #5028
- fix(llm): apply restored reasoning_effort to active provider (Phase 2) by @bug-ops in #5031
- feat(commands): add /undo and /redo slash commands with checkpoint stack by @bug-ops in #5029
- fix(tools): checkpoint_undo(0) misleading message and has_traversal backslash bypass by @bug-ops in #5036
- fix(core,config): de-dup CAVEMAN_DIRECTIVE injection and add migration tests by @bug-ops in #5034
- test(context): add fidelity provider wiring assertions in apply_session_config by @bug-ops in #5038
- feat(knowledge): add knowledge ingest CLI, ledger, and notes sink (#5016, #5017, #5018) by @bug-ops in #5040
- test(core): add fidelity provider wiring tests for #5037 and #5039 by @bug-ops in #5042
- feat(deep-link): Phase 1 — parser, config, cwd validation by @bug-ops in #5041
- feat(memory): add provenance columns to graph tables + recall isolation flag by @bug-ops in #5044
- feat(knowledge): wire IngestProgress channel in knowledge ingest (FR-014) by @bug-ops in #5049
- fix(deep-link): add #[non_exhaustive] to DeepLinkError and gate DeepLinkConfig behind feature flag by @bug-ops in #5050
- fix(llm): delegate context_window, supports_vision, last_reasoning_tokens in CompatibleProvider by @bug-ops in #5051
- feat(knowledge): implement rollback command and TUI palette by @bug-ops in #5053
- feat(deep-link): Phase 2 — CLI dispatch, bootstrap integration, TUI notification, --init wizard by @bug-ops in #5052
- fix(knowledge): make rollback atomic across all three tables by @bug-ops in #5055
- feat(memory): add graph batch extraction API (ingest_documents) by @bug-ops in https://github.com/bug...
v0.21.4
Immutable
release. Only release title and notes can be modified.
What's Changed
- refactor(context): make embed and compress timeouts configurable in FidelityConfig by @bug-ops in #4664
- refactor(config): strengthen config type safety by @bug-ops in #4665
- feat(core): persist LLM provider override parameters per channel session by @bug-ops in #4668
- feat(plugins): add --plugin-url ephemeral session-scoped plugin loading by @bug-ops in #4669
- refactor(context): extract embed_prepass_dyn to eliminate inline duplication by @bug-ops in #4670
- fix(config): validate embed/compress timeouts and correct stale section refs by @bug-ops in #4671
- fix(plugins): tar-slip protection in add_remote and .bundled marker stripping in ephemeral plugins by @bug-ops in #4676
- spec(worktree-subsystem): add specification for native worktree subsystem by @bug-ops in #4677
- feat(tui): cocoon balance opt-in and Ctrl+R prompt history reverse-search by @bug-ops in #4678
- feat(plugins): support multiple --plugin-url values and add PluginName newtype by @bug-ops in #4680
- feat(subagent): enforce transitive constraint propagation across delegation chains by @bug-ops in #4681
- chore(parity): Goose v1.34–v1.35 competitive parity assessment by @bug-ops in #4688
- feat(worktree-subsystem): add native worktree isolation for background sub-agents by @bug-ops in #4692
- feat(security): add Stage-2 LLM semantic scan for third-party skills by @bug-ops in #4696
- feat(memory): Benna-Fusi multi-timescale SYNAPSE edges and MemORAI adaptive retrieval by @bug-ops in #4697
- spec(durable-execution): native durable execution layer (zeph-durable, spec 064) by @bug-ops in #4708
- fix(subagent): apply constraint propagation in resume() and add #[non_exhaustive] (#4690, #4693, #4694) by @bug-ops in #4700
- feat(skills): recursive nested skill discovery and egress attribution by @bug-ops in #4710
- fix(a2a): remove dead eviction_task field from AppState by @bug-ops in #4715
- fix(worktree): propagate config errors and ensure cleanup on early exit (#4701, #4702) by @bug-ops in #4720
- fix(skills): enforce fail-closed semantic scan provider validation by @bug-ops in #4721
- fix(tools): redact URLs in scrape audit log and fix IPI tracing span by @bug-ops in #4730
- fix(memory): propagate configured Benna-Fusi rates through extract_and_store by @bug-ops in #4722
- fix: add #[non_exhaustive] to ChannelError, sanitizer errors, SubAgentError by @bug-ops in #4737
- fix(agent-pipeline): add #[non_exhaustive] to error enums (#4717, #4718, #4719) by @bug-ops in #4742
- fix(memory,tools): propagate LLM edge confidence and fix tracing span by @bug-ops in #4745
- fix(channels): handle Discord API 429 rate-limit responses with retry by @bug-ops in #4746
- fix(llm): add #[non_exhaustive] to LLM enums, SSE buffer caps, Ollama HTTP timeout by @bug-ops in #4744
- fix: add #[non_exhaustive] to public enums in context, db, vault, bench by @bug-ops in #4748
- fix(security): add dispatch auth guard and complete URL redaction by @bug-ops in #4751
- fix(acp,feedback,core): non_exhaustive enums, judge_provider config, spawn_blocking by @bug-ops in #4756
- fix(sanitizer): add U+2060 to UNICODE_BYPASS_RE and wire CausalIpiConfig.provider by @bug-ops in #4757
- feat(skills): concurrent scan with buffer_unordered(4) and extension manifest parser by @bug-ops in #4758
- fix(commands): add requires_auth guard to Advanced/Debugging handlers by @bug-ops in #4762
- refactor: add #[non_exhaustive] to remaining pub enums (workspace sweep) by @bug-ops in #4759
- chore(deps): update github-actions by @bug-ops in #4766
- chore(deps): update busybox docker tag to v1.38 by @bug-ops in #4772
- chore(deps): update prom/prometheus docker tag to v3.12.0 by @bug-ops in #4773
- chore(deps): update debian:bookworm-slim docker digest to 0104b33 by @bug-ops in #4764
- chore(deps): update ghcr.io/bug-ops/zeph:latest docker digest to 013be93 by @bug-ops in #4765
- chore(deps): update rust docker tag to v1.96 by @bug-ops in #4774
- chore(deps): update busybox:1.37-musl docker digest to 222ad6d by @bug-ops in #4763
- chore(deps): update rust:1.95-slim docker digest to e14e873 by @bug-ops in #4767
- chore(deps): update qdrant/qdrant docker tag to v1.18.1 by @bug-ops in #4769
- chore(deps): update opentelemetry to 0.32.1 by @bug-ops in #4768
- chore(deps): refresh cargo lock file by @bug-ops in #4776
- chore(deps): update serde to 1.0.150 by @bug-ops in #4771
- chore(deps): update rust crate rubato to v3 by @bug-ops in #4775
- chore(deps): update rust-minor-patch by @bug-ops in #4770
- fix(bootstrap): restore three-level judge_provider fallback chain by @bug-ops in #4780
- feat(worktree): make DefaultGitRunner timeout configurable via WorktreeConfig by @bug-ops in #4784
- fix(core): handle unknown ChatResponse variant gracefully in tier_loop by @bug-ops in #4786
- fix(tracing): replace span.enter() across .await with .instrument() by @bug-ops in #4788
- fix(tracing): replace span.enter() across .await with .instrument(span) by @bug-ops in #4795
- fix(memory,scheduler): use distinct display strings for Sqlx and Db error variants by @bug-ops in #4797
- fix(sanitizer): extend UNICODE_BYPASS_RE to cover BIDI, soft hyphen, TAGS block (#4760) by @bug-ops in #4802
- fix(config): fix migrate_worktree_config false-positive idempotency guard by @bug-ops in #4803
- fix(llm): context_window for o-series models and openai_post helper by @bug-ops in #4811
- refactor(orchestration): extract init_common and add graph_dirty checkpoint by @bug-ops in #4809
- refactor(config): extract section_header_present helper and fix CRLF in worktree migration guards by @bug-ops in #4812
- refactor(errors): align sqlx error display string to "sqlx error: {0}" by @bug-ops in #4816
- perf(tracing): add #[tracing::instrument] to agent-context and agent-persistence hot paths by @bug-ops in #4821
- feat(llm): configurable SSE buffer caps and profiling tracing coverage by @bug-ops in #4823
- fix(tracing): replace EnteredSpan-across-.await with .instrument() in zeph-agent-context by @bug-ops in #4825
- refactor(tracing): add #[tracing::instrument] to hot-path async fns in index, commands, subagent by @bug-ops in #4826
- fix(orchestration): set graph_dirty in inject_tasks and record_predicate_outcome; add tracing spans to memory recall and zeph-db by @bug-ops in #4831
- refactor(tracing): add #[tracing::instrument] to channels, orchestration, and llm hot paths by @bug-ops in #4833
- fix(tracing): replace EnteredSpan-across-.await with .instrument() in zeph-context by @bug-ops in #4834
- fix(tracing): replace EnteredSpan-across-.await with .instrument() in zeph-memory by @bug-ops in #4844
- fix(plugins): replace blocking std::fs reads with tokio::fs in add_remote_ephemeral by @bug-ops in #4845
- fix(orchestration): set graph_dirty on all terminal transitions; instrument PlanCache by @bug-ops in #4848
- feat(init): add worktree isolation step to --init wizard (#4656) by @bug-ops in #4847
- refactor(acp): add #[tracing::instrument] to permission check and HTTP transport handlers by @bug-ops in #4851
- refactor(tracing): add #[tracing::instrument] to channels, skills, and mcp hot paths by @bug-ops in #4852
- perf(experiments): parallelize Phase 1 subject calls in Evaluator by @bug-ops in #4853
- refactor(llm,config): extract HTTP error mapper and move embeddin...
v0.21.3
Immutable
release. Only release title and notes can be modified.
What's Changed
- fix(tui): add fleet refresh spinner and tracing spans by @bug-ops in #4376
- feat(memory,subagent): add A* node cap and sub-agent fleet registration by @bug-ops in #4377
- feat(memory): implement TrajectoryRiskAccumulator and ImplicitConflictDetector by @bug-ops in #4386
- feat(index): add tracing spans to zeph-index hot-path async fns by @bug-ops in #4393
- refactor(channels): extract StreamingBuffer and add elicit() stubs to Discord/Slack by @bug-ops in #4398
- feat(memory): extend SYNAPSE to five-signal retrieval + async consolidation daemon by @bug-ops in #4392
- fix(memory): correct ephemeral message in bare mode and deduplicate audit types by @bug-ops in #4399
- fix(channels): enforce chat_id authorization loop in telegram confirm() by @bug-ops in #4403
- refactor(core,common): rename ShadowEvent to SentinelEvent; extract HTTP middleware by @bug-ops in #4401
- feat(memory,core): wire TrajectoryRiskAccumulator and add shadow memory metrics by @bug-ops in #4408
- spec(skills): GoSkills group-structured retrieval — RFC #4219 by @bug-ops in #4410
- fix(memory): use real access frequency in five_signal consolidation; add tracing spans by @bug-ops in #4414
- feat(memory): wire five_signal consolidation daemon, Prometheus metrics, and causal goal entity by @bug-ops in #4418
- fix(a2a,memory): wire ConnectInfo for rate limiting and register ConsolidationHandler by @bug-ops in #4419
- feat(skills): GoSkills group-structured retrieval and plugin tracing spans by @bug-ops in #4425
- fix(subagent): bound message history and track hook task handles by @bug-ops in #4429
- fix(core,memory): wire mage_accumulator config in agent builder; add five_signal SQLite tests by @bug-ops in #4428
- fix(scheduler,orchestration): fix five_signal cron for long intervals; add missing tracing spans by @bug-ops in #4433
- fix(runner): restore five_signal_metrics in spawn_metrics_sync_with_five_signal by @bug-ops in #4434
- fix(skills): rebuild matched_indices after channel allowlist filter in GoSkills by @bug-ops in #4435
- fix(skills,common): sync matched_indices with active_skills after allowlist filter; consolidate xml_escape by @bug-ops in #4437
- refactor(a2a,index): pre-hash auth token at startup; add NodeKind and Lang newtypes by @bug-ops in #4438
- refactor(orchestration,scheduler,tui): architecture cleanup group by @bug-ops in #4440
- fix(acp): read elicitation_enabled from _meta instead of hardcoding false by @bug-ops in #4441
- fix(core): wire ShadowMemory into agent loop by @bug-ops in #4443
- fix(acp): wire IDE-provided MCP servers into do_new_session by @bug-ops in #4444
- refactor(common,core): tracing spans for http_middleware; replace custom date math with chrono by @bug-ops in #4445
- spec(skills): AutoSkill-derived self-evolution specifications (6 features) by @bug-ops in #4459
- spec(acp): update to SDK 0.12.1 / schema 0.13.2 by @bug-ops in #4462
- fix(acp): read elicitation_timeout_secs from _meta in mcp_bridge by @bug-ops in #4453
- feat(memory): add MEMTIER five-signal retrieval scoring by @bug-ops in #4463
- feat(acp): upgrade agent-client-protocol to 0.12.1 and add standard session/delete by @bug-ops in #4464
- chore(deps): update github-actions by @bug-ops in #4467
- feat(acp): implement Providers API and Elicitation protocol by @bug-ops in #4473
- feat(skills): AutoSkill A1+A2 — trace extraction and versioned merging by @bug-ops in #4476
- chore(deps): update gcr.io/distroless/static-debian12:nonroot docker digest to d093aa3 by @bug-ops in #4465
- chore(deps): update ghcr.io/bug-ops/zeph:latest docker digest to 0127318 by @bug-ops in #4466
- chore(deps): update ollama/ollama:latest docker digest to a614923 by @bug-ops in #4468
- chore(deps): update qdrant/qdrant:v1.18.0 docker digest to b3063c6 by @bug-ops in #4469
- chore(deps): update rust:1.95-slim docker digest to 5021128 by @bug-ops in #4470
- chore(deps): update rust crate tokio to 1.52.3 by @bug-ops in #4471
- chore(deps): refresh cargo lock file by @bug-ops in #4472
- chore(deps): update opentelemetry to 0.32.0 by @bug-ops in #4477
- chore(deps): refresh workspace dependencies by @bug-ops in #4478
- fix(llm): update code for symphonia 0.6 and bech32 0.11 breaking API changes by @bug-ops in #4479
- fix(mcp): replace unbounded ToolRefreshEvent channel with bounded channel(16) by @bug-ops in #4488
- fix(memory,skills): mark Docker integration tests as ignored and track trace extraction handle by @bug-ops in #4489
- feat(skills): AutoSkill A2 — dedup_threshold config + Add/Merge/Discard in miner.rs by @bug-ops in #4499
- fix(channels): track JoinHandles for Discord gateway and Slack event server by @bug-ops in #4501
- fix(skills): repair trace_extractor frontmatter and embed provider bugs by @bug-ops in #4503
- fix(tools,index): replace blocking std::fs with tokio::fs and wire embed_provider by @bug-ops in #4502
- fix(core): bound trace_extraction shutdown await and preserve DbError type by @bug-ops in #4504
- test(vault): add AgeVault unit tests and deduplicate sanitizer regex patterns by @bug-ops in #4508
- feat(skills): AutoSkill A3+A4+A5 — query rewriting, BM25 hybrid retrieval, trigger set indexing by @bug-ops in #4506
- feat(acp): session/usage reporting and doc(cfg) annotations by @bug-ops in #4522
- fix(tools,agent-context): replace sync fs with tokio in FileExecutor, dedup box_err by @bug-ops in #4524
- feat(skills): AutoSkill A6 — periodic heuristic promotion from ERL to full skills (#4452) by @bug-ops in #4523
- fix(sanitizer): add LLM timeout to QuarantinedSummarizer::extract_facts by @bug-ops in #4526
- refactor(llm,commands,plugins,sanitizer,skills): add #[non_exhaustive] to extensible pub enums by @bug-ops in #4533
- fix(scheduler): adversarial policy bypass for list_tasks + #[non_exhaustive] on 17 enums by @bug-ops in #4536
- fix(skills,memory): AutoSkill A6 — NULL skill_name in promotion scan + blocking I/O in async by @bug-ops in #4535
- fix(acp,subagent): bound blocking awaits with configurable timeouts by @bug-ops in #4538
- fix(agent,context): fix heuristic_promotion lifecycle and validate_query_rewrite placement by @bug-ops in #4539
- docs: add missing pub API doc comments for zeph-common, zeph-db, zeph-context by @bug-ops in #4541
- fix(runner,llm): track JoinHandle for connect_oauth_deferred + debug log for unknown ThinkingBlock by @bug-ops in #4540
- refactor(types): replace raw String session_id fields with SessionId newtype by @bug-ops in #4543
- refactor(llm,orchestration,vault): AtomicU32 confidence, PlanSlug newtype, vault error-path tests by @bug-ops in #4542
- refactor(config): unify embed_provider to embedding_provider by @bug-ops in #4544
- refactor: add #[non_exhaustive] to extensible pub enums across all remaining crates by @bug-ops in #4545
- spec(context): add Context-Adaptive Memory specification (CAM) by @bug-ops in #4546
- security(scheduler): add RTW-A temporal re-entry defense by @bug-ops in #4548
- feat(context): add Acon tool-result compression and ARC agent-initiated compaction (#4021, #4020) by @bug-ops in #4554
- fix(sanitizer): add wildcard arms to non-exhaustive InjectionEnforcementMode match by @bug-ops in #4562
- feat(mcp,plugins): MCP startup retry backoff, tool timeout override, plugin disable enforcement by @bug-ops in #4568
- fix(context,plugins): deterministic com...
v0.21.2
Immutable
release. Only release title and notes can be modified.
What's Changed
- fix(zeph-common): add rt-multi-thread to tokio features by @bug-ops in #3783
- fix(memory): gate cfg-dependent call sites in zeph-memory by @bug-ops in #3785
- test(tools): add unit tests for CompressionRuleStore by @bug-ops in #3789
- refactor(config,experiments): strengthen provider field types and experiment lifecycle by @bug-ops in #3790
- feat(memory): add MemFlow tiered retrieval and ScrapMem optical forgetting by @bug-ops in #3791
- test(orchestration,memory): add unit tests for evaluate_abort and ExperienceStore by @bug-ops in #3792
- refactor(arch): decouple sanitizer from tools, add backend feature forwarding by @bug-ops in #3797
- fix(memory): wire classifier/validator providers and extract escalation loop by @bug-ops in #3806
- fix(scheduler): add in_flight guard to tick() and surface invalid-cron errors by @bug-ops in #3811
- fix(llm): preserve ToolUse/Thinking chunks in cascade stream and validate cost_tiers names by @bug-ops in #3812
- feat(memory): ExperienceId/EntityId newtypes + episodic consolidation daemon by @bug-ops in #3814
- fix(channels): move TcpListener::from_std before tokio::spawn in spawn_guest_proxy by @bug-ops in #3815
- fix(llm): wrap judge_score response in XML delimiters to prevent prompt injection by @bug-ops in #3816
- docs(llm): document LlmProvider object-safety and dyn dispatch path via LlmProviderDyn by @bug-ops in #3818
- fix(llm): replace XML delimiters with fenced block in build_judge_prompt by @bug-ops in #3823
- perf(memory): replace serial embed() with embed_batch() and add tracing spans by @bug-ops in #3839
- fix(llm): add judge_timeout_ms to prevent cascade classifier blocking indefinitely by @bug-ops in #3845
- fix(core,agent-tools): fix blocking I/O in load_instructions and add unit tests by @bug-ops in #3854
- fix(a2a): add per-request timeouts to server handlers and client HTTP calls by @bug-ops in #3847
- fix(orchestration): add LLM timeouts, config validation, and typed error variants by @bug-ops in #3860
- fix(skills): add configurable timeout to SkillGenerator and SkillMiner LLM calls by @bug-ops in #3862
- perf(orchestration,subagent): add tracing instrumentation to LLM-bound async paths by @bug-ops in #3865
- fix(tools): forward set_skill_env and set_effective_trust through CompositeExecutor by @bug-ops in #3870
- fix(tools): preserve env overrides and cwd across macOS sandbox rewrite by @bug-ops in #3872
- fix(orchestration): apply >=3 escalation to PlanVerifier timeout arms by @bug-ops in #3873
- fix(gateway): add timeout to webhook_tx.send() to prevent Axum worker stall by @bug-ops in #3882
- fix(db): add 8 missing PostgreSQL migrations to reach SQLite parity by @bug-ops in #3896
- perf(channels,memory): add tracing instrumentation to Discord, Slack and GraphExtractor by @bug-ops in #3905
- test(sanitizer,commands,plugins): add unit tests for zero-coverage modules by @bug-ops in #3914
- refactor(skills): introduce SkillEmbedding newtype for Vec embedding vectors by @bug-ops in #3935
- fix(common,bench,experiments): dedup UTC timestamp helpers and add evaluator tracing by @bug-ops in #3938
- fix(db): add PostgreSQL migrations 084-088 and fix SQLite-specific SQL syntax by @bug-ops in #3957
- fix(channels,plugins): enforce authorization in confirm() and reject unresolvable skill paths by @bug-ops in #3956
- refactor(bench): clean up BenchRunner API and add tracing instrumentation by @bug-ops in #3962
- feat(memory): wire recall_tiered and start_optical_forgetting_loop into agent loop by @bug-ops in #3968
- test(mcp,acp): add McpToolExecutor tracing spans and re-enable AcpPermissionGate tests by @bug-ops in #3971
- refactor(plugins): enforce first-char and length constraints in validate_plugin_name by @bug-ops in #3980
- fix(db,memory): add DEFAULT to experience_nodes.created_at and sanitize LLM-bound content by @bug-ops in #3992
- feat(hooks): add PostToolUse output replacement and duration_ms by @bug-ops in #3998
- fix(agent-context): replace sync span guard with .instrument() and remove unused _providers params by @bug-ops in #3999
- refactor(context): enforce invariants and remove dead code (#3985, #3990, #3986) by @bug-ops in #4007
- perf(scheduler): add handler timeout and tracing spans by @bug-ops in #4005
- fix(memory,agent-context): wire inject_semantic_recall into production path and fix async spans by @bug-ops in #4014
- fix(subagent): sanitize hook-replaced tool output and fix flaky bootstrap test by @bug-ops in #4025
- fix(hooks): eliminate fire_shell_hook timeout deadlock and EnteredSpan UB by @bug-ops in #4027
- feat(subagent): add orchestrator-identity fields to SpawnContext by @bug-ops in #4032
- fix(agent-context): wire inject_semantic_recall into production path and fix recall accumulation by @bug-ops in #4040
- fix(scheduler,gateway): fix sync span guard, rate-limiter proxy bypass, and JoinHandle drop by @bug-ops in #4043
- fix(scheduler,memory): replace sync .entered() with .instrument() in async fns by @bug-ops in #4050
- refactor(config): VaultBackend enum, #[non_exhaustive] enums, metrics bump by @bug-ops in #4051
- fix(a2a): store eviction JoinHandle, fix silent SSE error, abort processor on disconnect by @bug-ops in #4060
- fix(subagent): fix dangling pronoun in orchestrator header when role is absent by @bug-ops in #4070
- refactor(agent-persistence): fix O(N²) drain, add tracing spans, introduce LoadHistoryParams by @bug-ops in #4071
- fix(config): replace VaultBackend.as_str() with enum match in cocoon and gonka by @bug-ops in #4073
- refactor(agent-context): extract run_tiered_recall, SemanticRecallParams, and disambiguate_provider by @bug-ops in #4072
- fix(config): add #[non_exhaustive] to VaultBackend and warn on unknown backend string by @bug-ops in #4074
- perf(tracing): add instrumentation spans to gateway, commands, and context by @bug-ops in #4084
- refactor(commands,llm): propagate GoalCommand errors, deduplicate test helpers, consolidate EmaTracker state by @bug-ops in #4088
- refactor: deduplicate hook env, fix visibility leak, add #[non_exhaustive] by @bug-ops in #4103
- refactor(experiments): replace -1 sentinel with Option, enforce ParameterRange invariants; perf(context): Arc in run_chunk_summaries by @bug-ops in #4102
- refactor(commands): extract exit logic, fix error returns, fix LogCommand description by @bug-ops in #4104
- perf(orchestration): add tracing spans to adaptorch and DagScheduler by @bug-ops in #4109
- perf(context): instrument remaining 7 assembler fetch_* functions with tracing spans by @bug-ops in #4110
- fix(memory,agent): fix postgres compile failure and skill provider startup init by @bug-ops in #4117
- fix(core,commands): graph status consistency and ClearQueue error tracing by @bug-ops in #4123
- fix(experiments): activate sqlite feature for isolated zeph-experiments builds by @bug-ops in #4124
- perf(tracing): add spans to LLM-calling functions in plan_cache, consolidation, admission by @bug-ops in #4131
- feat(skills): Stage-1 advisory SKILL.md scan + SkillEmbedding::from_raw pub(crate) by @bug-ops in #4132
- fix(memory): add postgres cfg guards, doc comments, tracing spans in skills store by @bug-ops in #4140
- perf(experiments): add tracing spans to ExperimentEngine and tests by @bug-ops in #4147
- fix(core): resolve extract_provider in graph_backfill, extract guard helper, add spans by @bug-ops in #4150
- fix(memory): add tokio::time::t...
v0.21.1
Immutable
release. Only release title and notes can be modified.
What's Changed
- ci: add .cargo/config.toml for local build speedup, guard CI against it by @bug-ops in #3750
- chore(deps): update github-actions by @bug-ops in #3754
- test(telegram-e2e): add Bot API 10.0 scenarios and guard CI against .cargo/config.toml by @bug-ops in #3751
- chore(deps): update debian:bookworm-slim docker digest to 67b30a6 by @bug-ops in #3752
- chore(deps): update ghcr.io/bug-ops/zeph:latest docker digest to 7bc6545 by @bug-ops in #3753
- chore(deps): update ollama/ollama:latest docker digest to d00473c by @bug-ops in #3755
- chore(deps): update rust:1.95-slim docker digest to 985053e by @bug-ops in #3756
- chore(deps): update qdrant/qdrant docker tag to v1.18.0 by @bug-ops in #3759
- chore(deps): update rust crate tower-http to 0.6.10 by @bug-ops in #3757
- fix(core): fix orphaned tool pairs and budget underestimation in subagent context slicing by @bug-ops in #3763
- fix(tui): automatic view switch and real-time transcript for foreground subagents by @bug-ops in #3764
- chore(deps): upgrade qdrant-client to 1.18 by @bug-ops in #3766
- fix(subagent): normalize tool IDs in FilteredToolExecutor to fix case/format mismatch by @bug-ops in #3767
- chore(deps): enforce workspace dep hygiene by @bug-ops in #3768
- feat(channels): add Telegram reaction moderation tools by @bug-ops in #3770
- fix(core,subagent): wire MCP dispatch in on_turn_complete and allow memory=user sandbox writes by @bug-ops in #3776
- fix(tools): register built-in tools under builtin: namespace for capability_scopes by @bug-ops in #3778
- fix(channels): add 30s timeout to TelegramApiClient HTTP client by @bug-ops in #3780
- fix(hooks): fire permission_denied hook for all gate denials by @bug-ops in #3779
- release: v0.21.1 by @bug-ops in #3782
Full Changelog: v0.21.0...v0.21.1
v0.21.0
Immutable
release. Only release title and notes can be modified.
What's Changed
- refactor(build): promote task-metrics, self-check, env-vault to always-on by @bug-ops in #3661
- docs(specs): update constitution layer DAG to reflect actual workspace structure by @bug-ops in #3666
- fix(core): replace production unwrap() calls with expect() in zeph-core by @bug-ops in #3667
- refactor+feat(core): split native.rs into submodules and add tracing spans by @bug-ops in #3668
- feat(llm): add Cocoon decentralized TEE inference provider by @bug-ops in #3682
- feat(config): add Cocoon provider config validation, wizard, and migration by @bug-ops in #3683
- feat(cli): add zeph cocoon doctor diagnostic subcommand by @bug-ops in #3689
- feat(tui): add Cocoon TUI palette commands and status bar integration by @bug-ops in #3690
- feat(llm): add Cocoon live integration tests by @bug-ops in #3691
- fix(cli): validate cocoon_client_url scheme in cocoon doctor config check by @bug-ops in #3707
- fix(tui): thread tool_call_id through shell executor to fix parallel tool output corruption by @bug-ops in #3708
- feat(tui): native text selection + clipboard shortcuts by @bug-ops in #3722
- feat(tui): editor-inline spinner, priority-collapse footer, user message tint (#3687) by @bug-ops in #3721
- fix(tui): id-based DiffReady routing and two-tier tool rendering by @bug-ops in #3720
- fix(clippy): resolve --all-targets errors in tool_execution tests and cocoon.rs by @bug-ops in #3723
- feat(tui): wire grouping pre-pass into collect_message_lines_from (#3719) by @bug-ops in #3724
- feat(hooks): add PreToolUse/PostToolUse hook context env vars by @bug-ops in #3725
- docs(specs): Telegram Bot API 10.0 specifications (Guest Mode, Bot-to-Bot, Streaming) by @bug-ops in #3734
- feat(memory,security): BeliefMem probabilistic edges + ShadowSentinel safety probe by @bug-ops in #3735
- refactor(context): resolve same-layer violation zeph-context → zeph-memory by @bug-ops in #3736
- feat(cocoon): add per-token pricing and STT Whisper endpoint by @bug-ops in #3737
- fix(hooks): fire pre_tool_use hook before utility gate intercept by @bug-ops in #3740
- fix(security): wire ShadowProbeExecutor into agent executor chain by @bug-ops in #3742
- fix(llm): add missing backticks in stt.rs doc comments by @bug-ops in #3743
- fix(security): extend classify_tool to recognise bare shell and file-write tool ids by @bug-ops in #3745
- feat(channels): configurable Telegram streaming interval and Bot API 10.0 HTTP wrapper by @bug-ops in #3746
- test(memory-backend): add unit tests for ContextMemoryBackend and SemanticMemoryBackend by @bug-ops in #3747
- feat(channels): Telegram Guest Mode and Bot-to-Bot communication (Bot API 10.0) by @bug-ops in #3748
- release: v0.21.0 by @bug-ops in #3749
Full Changelog: v0.20.2...v0.21.0
v0.20.2
Immutable
release. Only release title and notes can be modified.
What's Changed
- chore(deps): update dependency telethon to >=1.43.2 by @bug-ops in #3558
- chore(deps): update debian:bookworm-slim docker digest to f9c6a2f by @bug-ops in #3553
- chore(deps): update ghcr.io/bug-ops/zeph:latest docker digest to 45d5ef5 by @bug-ops in #3554
- chore(deps): update github-actions by @bug-ops in #3555
- chore(deps): update ollama/ollama:latest docker digest to 05ab093 by @bug-ops in #3556
- chore(deps): update rust:1.95-slim docker digest to 8109983 by @bug-ops in #3557
- chore(deps): update rust-minor-patch by @bug-ops in #3559
- chore(deps): update tokio by @bug-ops in #3560
- chore(deps): update tracing by @bug-ops in #3561
- chore(deps): refresh cargo lock file by @bug-ops in #3562
- docs(memory): synthesize MemCoT, OmniMem, OCR-Memory; add APEX-MEM Research Backlog by @bug-ops in #3577
- feat(mcp): MCP server startup auto-retry with exponential backoff by @bug-ops in #3578
- chore(deps): pin dependencies by @bug-ops in #3580
- chore(deps): update ollama/ollama:latest docker digest to 5600a65 by @bug-ops in #3582
- chore(deps): update prom/prometheus docker tag to v3.11.3 by @bug-ops in #3583
- chore(deps): update github-actions by @bug-ops in #3581
- chore(deps): update rust-minor-patch by @bug-ops in #3584
- fix(mcp): map HTTP 4xx auth errors to non-retryable McpError::HttpAuth by @bug-ops in #3587
- chore(deps): refresh cargo lock file by @bug-ops in #3585
- feat(security): TrajectorySentinel and ScopedToolExecutor for capability governance by @bug-ops in #3588
- feat(tools): add per-turn ExecutionContext to ShellExecutor by @bug-ops in #3589
- fix(mcp): map HTTP 4xx auth errors to McpError::HttpAuth in OAuth paths by @bug-ops in #3590
- feat(memory): add MemCoT SemanticStateAccumulator and Zoom-In/Out recall views by @bug-ops in #3592
- feat(core,tools): goal lifecycle and TACO output compression by @bug-ops in #3591
- fix(lsp): handle mcpls object-wrapped diagnostics response by @bug-ops in #3594
- fix(lsp): inject hover notes immediately before LLM call (#3595) by @bug-ops in #3596
- feat(memory): log memory retrieval failures for OmniMem self-improvement loop by @bug-ops in #3597
- feat(cli): add
zeph project purgecommand for full project state cleanup by @bug-ops in #3598 - fix(cli): return user-friendly error when project purge stdin is not a terminal by @bug-ops in #3600
- docs(specs): add gonka.ai integration specs (051-gonka-gateway, 052-gonka-native) by @bug-ops in #3616
- fix(memory.graph): add extract_provider to bypass quality_gate for extraction by @bug-ops in #3615
- feat(orchestration): orchestrator_provider (SLM-as-orchestrator) and AdmissionGate (admission control) by @bug-ops in #3617
- feat(config): add ProviderKind::Gonka, GonkaNode schema, and vault key resolution by @bug-ops in #3618
- feat(zeph-llm): RequestSigner and EndpointPool for Gonka native inference by @bug-ops in #3620
- feat(init): add GonkaGate option to --init wizard by @bug-ops in #3621
- feat(zeph-llm): GonkaProvider chat/chat_stream/embed via signed transport (#3611) by @bug-ops in #3622
- perf(tracing): add llm.turn_call span to main-turn LLM call by @bug-ops in #3623
- feat(zeph-llm): GonkaProvider chat_with_tools and chat_typed (#3612) by @bug-ops in #3624
- fix(zeph-llm): name wildcard match arm in gonka/tests.rs:467 by @bug-ops in #3627
- fix(hooks): add tracing instrumentation and propagate hooks in reload_config by @bug-ops in #3628
- feat(core+wizard): wire GonkaProvider end-to-end with native wizard branch (#3613, #3603) by @bug-ops in #3632
- fix(core): import build_provider_from_entry in mod tests so gonka_tests can resolve it by @bug-ops in #3634
- feat(memory): wire APEX-MEM write path and QualityGate config by @bug-ops in #3637
- feat(context): integrate TypedPage compaction into assembler pipeline by @bug-ops in #3638
- fix(memory): prevent unique index violation in insert_or_supersede by @bug-ops in #3639
- feat(core): wire SpeculationEngine into agent loop via SpeculativeConfig by @bug-ops in #3640
- fix(core): fix SpeculationEngine sweeper abort and requires_confirmation default by @bug-ops in #3647
- fix(build,tools): add testing to full feature; fix DynExecutor::requires_confirmation delegation by @bug-ops in #3649
- fix(tools)+feat(core): DynExecutor confirmation delegation and speculative ToolStartEvent wiring by @bug-ops in #3651
- feat(core): wire SpeculationEngine try_dispatch into SSE streaming and PASTE skill activation by @bug-ops in #3654
- test(core)+fix(core): unit tests and debug_assert! for commit_speculative_tier by @bug-ops in #3655
- feat(cli): add zeph gonka doctor diagnostic subcommand and live testnet test by @bug-ops in #3656
- release: v0.20.2 by @bug-ops in #3657
Full Changelog: v0.20.1...v0.20.2