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 embedding helpers by @bug-ops in #4858
- test(memory): add tests for deep_reasoning_query_conditioned + fix judge_model doc by @bug-ops in #4862
- refactor(skills): extract shared MERGE_SYSTEM_PROMPT and build_merge_messages by @bug-ops in #4861
- refactor(mcp,channels): fix tracing span naming and add telegram instrumentation by @bug-ops in #4864
- refactor(agent-tools,db): replace send_stop_hint with StopHint enum; fix sql! import guards by @bug-ops in #4863
- release: v0.21.4 by @bug-ops in #4871
Full Changelog: v0.21.3...v0.21.4