From 707172805deaad43eb9468067a865d560e10db42 Mon Sep 17 00:00:00 2001 From: "Andrei G." Date: Sun, 22 Feb 2026 13:49:55 +0100 Subject: [PATCH] release: prepare v0.11.5 --- CHANGELOG.md | 5 +- Cargo.lock | 70 +++++++++---------- Cargo.toml | 30 ++++---- crates/zeph-scheduler/README.md | 2 +- crates/zeph-tui/Cargo.toml | 2 +- ...idgets__splash__tests__splash_default.snap | 2 +- docs/src/advanced/tui.md | 2 +- docs/src/changelog.md | 28 +++++++- docs/src/getting-started/installation.md | 2 +- 9 files changed, 86 insertions(+), 57 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76f6addd..4b115a69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] +## [0.11.5] - 2026-02-22 + ### Added - Declarative TOML-based output filter engine with 9 strategy types: `strip_noise`, `truncate`, `keep_matching`, `strip_annotated`, `test_summary`, `group_by_rule`, `git_status`, `git_diff`, `dedup` - Embedded `default-filters.toml` with 25 pre-configured rules for CLI tools (cargo, git, docker, npm, pip, make, pytest, go, terraform, kubectl, brew, ls, journalctl, find, grep/rg, curl/wget, du/df/ps, jest/mocha/vitest, eslint/ruff/mypy/pylint) @@ -1113,7 +1115,8 @@ let agent = Agent::new(provider, channel, &skills_prompt, executor); - Agent calls channel.send_typing() before each LLM request - Agent::run() uses tokio::select! to race channel messages against shutdown signal -[Unreleased]: https://github.com/bug-ops/zeph/compare/v0.11.4...HEAD +[Unreleased]: https://github.com/bug-ops/zeph/compare/v0.11.5...HEAD +[0.11.5]: https://github.com/bug-ops/zeph/compare/v0.11.4...v0.11.5 [0.11.4]: https://github.com/bug-ops/zeph/compare/v0.11.3...v0.11.4 [0.11.3]: https://github.com/bug-ops/zeph/compare/v0.11.2...v0.11.3 [0.11.2]: https://github.com/bug-ops/zeph/compare/v0.11.1...v0.11.2 diff --git a/Cargo.lock b/Cargo.lock index 90d199e3..c51ac7d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1620,9 +1620,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc3dc5ad92c2e2d1c193bbbbdf2ea477cb81331de4f3103f267ca18368b988c4" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", "serde_core", @@ -3439,9 +3439,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.87" +version = "0.3.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f0862381daaec758576dcc22eb7bbf4d7efd67328553f3b45a412a51a3fb21" +checksum = "c7e709f3e3d22866f9c25b3aff01af289b18422cc8b4262fb19103ee80fe513d" dependencies = [ "once_cell", "wasm-bindgen", @@ -6090,9 +6090,9 @@ dependencies = [ [[package]] name = "serial_test" -version = "3.3.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d0b343e184fc3b7bb44dff0705fffcf4b3756ba6aff420dddd8b24ca145e555" +checksum = "911bd979bf1070a3f3aa7b691a3b3e9968f339ceeec89e08c280a8a22207a32f" dependencies = [ "futures-executor", "futures-util", @@ -6105,9 +6105,9 @@ dependencies = [ [[package]] name = "serial_test_derive" -version = "3.3.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f50427f258fb77356e4cd4aa0e87e2bd2c66dbcee41dc405282cae2bfc26c83" +checksum = "0a7d91949b85b0d2fb687445e448b40d322b6b3e4af6b44a29b21d9a5f33e6d9" dependencies = [ "proc-macro2", "quote", @@ -7073,9 +7073,9 @@ dependencies = [ [[package]] name = "throbber-widgets-tui" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb8f83731b18ea611a38a243b458adfa78239d61ca6acc545aa3b1c450ac6e7" +checksum = "f1e6941f74491a80911cb8821cb1f55f7e13bca867b28a2b14e5a1daaf691eb3" dependencies = [ "ratatui", ] @@ -8102,9 +8102,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.110" +version = "0.2.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de241cdc66a9d91bd84f097039eb140cdc6eec47e0cdbaf9d932a1dd6c35866" +checksum = "ec1adf1535672f5b7824f817792b1afd731d7e843d2d04ec8f27e8cb51edd8ac" dependencies = [ "cfg-if", "once_cell", @@ -8115,9 +8115,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.60" +version = "0.4.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a42e96ea38f49b191e08a1bab66c7ffdba24b06f9995b39a9dd60222e5b6f1da" +checksum = "fe88540d1c934c4ec8e6db0afa536876c5441289d7f9f9123d4f065ac1250a6b" dependencies = [ "cfg-if", "futures-util", @@ -8129,9 +8129,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.110" +version = "0.2.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12fdf6649048f2e3de6d7d5ff3ced779cdedee0e0baffd7dff5cdfa3abc8a52" +checksum = "19e638317c08b21663aed4d2b9a2091450548954695ff4efa75bff5fa546b3b1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8139,9 +8139,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.110" +version = "0.2.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e63d1795c565ac3462334c1e396fd46dbf481c40f51f5072c310717bc4fb309" +checksum = "2c64760850114d03d5f65457e96fc988f11f01d38fbaa51b254e4ab5809102af" dependencies = [ "bumpalo", "proc-macro2", @@ -8152,9 +8152,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.110" +version = "0.2.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f9cdac23a5ce71f6bf9f8824898a501e511892791ea2a0c6b8568c68b9cb53" +checksum = "60eecd4fe26177cfa3339eb00b4a36445889ba3ad37080c2429879718e20ca41" dependencies = [ "unicode-ident", ] @@ -8221,9 +8221,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.87" +version = "0.3.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c7c5718134e770ee62af3b6b4a84518ec10101aad610c024b64d6ff29bb1ff" +checksum = "9d6bb20ed2d9572df8584f6dc81d68a41a625cadc6f15999d649a70ce7e3597a" dependencies = [ "js-sys", "wasm-bindgen", @@ -9049,7 +9049,7 @@ dependencies = [ [[package]] name = "zeph" -version = "0.11.4" +version = "0.11.5" dependencies = [ "anyhow", "clap", @@ -9084,7 +9084,7 @@ dependencies = [ [[package]] name = "zeph-a2a" -version = "0.11.4" +version = "0.11.5" dependencies = [ "axum 0.8.8", "eventsource-stream", @@ -9107,7 +9107,7 @@ dependencies = [ [[package]] name = "zeph-channels" -version = "0.11.4" +version = "0.11.5" dependencies = [ "axum 0.8.8", "criterion", @@ -9132,7 +9132,7 @@ dependencies = [ [[package]] name = "zeph-core" -version = "0.11.4" +version = "0.11.5" dependencies = [ "age", "anyhow", @@ -9167,7 +9167,7 @@ dependencies = [ [[package]] name = "zeph-gateway" -version = "0.11.4" +version = "0.11.5" dependencies = [ "axum 0.8.8", "blake3", @@ -9184,7 +9184,7 @@ dependencies = [ [[package]] name = "zeph-index" -version = "0.11.4" +version = "0.11.5" dependencies = [ "blake3", "ignore", @@ -9215,7 +9215,7 @@ dependencies = [ [[package]] name = "zeph-llm" -version = "0.11.4" +version = "0.11.5" dependencies = [ "base64 0.22.1", "candle-core", @@ -9241,7 +9241,7 @@ dependencies = [ [[package]] name = "zeph-mcp" -version = "0.11.4" +version = "0.11.5" dependencies = [ "blake3", "qdrant-client", @@ -9260,7 +9260,7 @@ dependencies = [ [[package]] name = "zeph-memory" -version = "0.11.4" +version = "0.11.5" dependencies = [ "blake3", "criterion", @@ -9282,7 +9282,7 @@ dependencies = [ [[package]] name = "zeph-scheduler" -version = "0.11.4" +version = "0.11.5" dependencies = [ "chrono", "cron", @@ -9300,7 +9300,7 @@ dependencies = [ [[package]] name = "zeph-skills" -version = "0.11.4" +version = "0.11.5" dependencies = [ "blake3", "criterion", @@ -9323,7 +9323,7 @@ dependencies = [ [[package]] name = "zeph-tools" -version = "0.11.4" +version = "0.11.5" dependencies = [ "dirs", "filetime", @@ -9349,7 +9349,7 @@ dependencies = [ [[package]] name = "zeph-tui" -version = "0.11.4" +version = "0.11.5" dependencies = [ "chrono", "crossterm", diff --git a/Cargo.toml b/Cargo.toml index 30fb34ee..582e054c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ resolver = "3" [workspace.package] edition = "2024" rust-version = "1.88" -version = "0.11.4" +version = "0.11.5" authors = ["bug-ops"] license = "MIT" repository = "https://github.com/bug-ops/zeph" @@ -54,11 +54,11 @@ reqwest = { version = "0.13", default-features = false } rmcp = "0.16" rubato = "1.0" schemars = "1.2" -scrape-core = "0.2.2" +scrape-core = "0.2" semver = "1.0.27" serde = "1.0" serde_json = "1.0" -serial_test = "3.3" +serial_test = "3.4" similar = "2.7" sqlx = { version = "0.8", default-features = false, features = ["macros"] } subtle = "2.6" @@ -93,18 +93,18 @@ unicode-width = "0.2" url = "2.5" uuid = "1.21" wiremock = "0.6.5" -zeph-a2a = { path = "crates/zeph-a2a", version = "0.11.4" } -zeph-channels = { path = "crates/zeph-channels", version = "0.11.4" } -zeph-core = { path = "crates/zeph-core", version = "0.11.4" } -zeph-gateway = { path = "crates/zeph-gateway", version = "0.11.4" } -zeph-index = { path = "crates/zeph-index", version = "0.11.4" } -zeph-llm = { path = "crates/zeph-llm", version = "0.11.4" } -zeph-mcp = { path = "crates/zeph-mcp", version = "0.11.4" } -zeph-memory = { path = "crates/zeph-memory", version = "0.11.4" } -zeph-scheduler = { path = "crates/zeph-scheduler", version = "0.11.4" } -zeph-skills = { path = "crates/zeph-skills", version = "0.11.4" } -zeph-tools = { path = "crates/zeph-tools", version = "0.11.4" } -zeph-tui = { path = "crates/zeph-tui", version = "0.11.4" } +zeph-a2a = { path = "crates/zeph-a2a", version = "0.11.5" } +zeph-channels = { path = "crates/zeph-channels", version = "0.11.5" } +zeph-core = { path = "crates/zeph-core", version = "0.11.5" } +zeph-gateway = { path = "crates/zeph-gateway", version = "0.11.5" } +zeph-index = { path = "crates/zeph-index", version = "0.11.5" } +zeph-llm = { path = "crates/zeph-llm", version = "0.11.5" } +zeph-mcp = { path = "crates/zeph-mcp", version = "0.11.5" } +zeph-memory = { path = "crates/zeph-memory", version = "0.11.5" } +zeph-scheduler = { path = "crates/zeph-scheduler", version = "0.11.5" } +zeph-skills = { path = "crates/zeph-skills", version = "0.11.5" } +zeph-tools = { path = "crates/zeph-tools", version = "0.11.5" } +zeph-tui = { path = "crates/zeph-tui", version = "0.11.5" } [workspace.lints.clippy] all = "warn" diff --git a/crates/zeph-scheduler/README.md b/crates/zeph-scheduler/README.md index cde4414d..61cb8061 100644 --- a/crates/zeph-scheduler/README.md +++ b/crates/zeph-scheduler/README.md @@ -52,7 +52,7 @@ scheduler.register_handler(&TaskKind::UpdateCheck, Box::new(handler)); Notification format sent via the channel: ``` -New version available: v0.12.0 (current: v0.11.4). +New version available: v0.12.0 (current: v0.11.5). Update: https://github.com/bug-ops/zeph/releases/tag/v0.12.0 ``` diff --git a/crates/zeph-tui/Cargo.toml b/crates/zeph-tui/Cargo.toml index 9a6273b8..faf8c8ff 100644 --- a/crates/zeph-tui/Cargo.toml +++ b/crates/zeph-tui/Cargo.toml @@ -22,7 +22,7 @@ ratatui.workspace = true regex.workspace = true thiserror.workspace = true similar.workspace = true -throbber-widgets-tui = "0.10" +throbber-widgets-tui = "0.11" tokio = { workspace = true, features = ["sync", "rt", "time"] } unicode-width.workspace = true tree-sitter.workspace = true diff --git a/crates/zeph-tui/src/widgets/snapshots/zeph_tui__widgets__splash__tests__splash_default.snap b/crates/zeph-tui/src/widgets/snapshots/zeph_tui__widgets__splash__tests__splash_default.snap index c76ce3bb..80aa573d 100644 --- a/crates/zeph-tui/src/widgets/snapshots/zeph_tui__widgets__splash__tests__splash_default.snap +++ b/crates/zeph-tui/src/widgets/snapshots/zeph_tui__widgets__splash__tests__splash_default.snap @@ -14,7 +14,7 @@ expression: output │ ███████╗███████╗██║ ██║ ██║ │ │ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═╝ │ │ │ -│ v0.11.4 │ +│ v0.11.5 │ │ │ │ Type a message to start. │ │ │ diff --git a/docs/src/advanced/tui.md b/docs/src/advanced/tui.md index 55a1dfd6..591e066a 100644 --- a/docs/src/advanced/tui.md +++ b/docs/src/advanced/tui.md @@ -29,7 +29,7 @@ When using `--connect`, the TUI renders token-by-token streaming from the remote ```text +-------------------------------------------------------------+ -| Zeph v0.11.4 | Provider: orchestrator | Model: claude-son...| +| Zeph v0.11.5 | Provider: orchestrator | Model: claude-son...| +----------------------------------------+--------------------+ | | Skills (3/15) | | | - setup-guide | diff --git a/docs/src/changelog.md b/docs/src/changelog.md index d4cc6c33..e435ef92 100644 --- a/docs/src/changelog.md +++ b/docs/src/changelog.md @@ -6,6 +6,31 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] +## [0.11.5] - 2026-02-22 + +### Added +- Declarative TOML-based output filter engine with 9 strategy types: `strip_noise`, `truncate`, `keep_matching`, `strip_annotated`, `test_summary`, `group_by_rule`, `git_status`, `git_diff`, `dedup` +- Embedded `default-filters.toml` with 25 pre-configured rules for CLI tools (cargo, git, docker, npm, pip, make, pytest, go, terraform, kubectl, brew, ls, journalctl, find, grep/rg, curl/wget, du/df/ps, jest/mocha/vitest, eslint/ruff/mypy/pylint) +- `filters_path` option in `FilterConfig` for user-provided filter rules override +- ReDoS protection: RegexBuilder with size_limit, 512-char pattern cap, 1 MiB file size limit +- Dedup strategy with configurable normalization patterns and HashMap pre-allocation +- Sub-agent orchestration system with A2A protocol integration +- Sub-agent definition format with TOML frontmatter parser +- `SubAgentManager` with spawn/cancel/collect lifecycle and background tokio task execution +- Tool filtering (AllowList/DenyList/InheritAll) and skill filtering with glob patterns +- Zero-trust permission model with TTL-based grants and automatic revocation +- `SubAgentMetrics` in `MetricsSnapshot` with state, turns, elapsed time +- TUI sub-agents panel with color-coded states +- `/agent` CLI commands: `list`, `spawn`, `bg`, `status`, `cancel`, `approve`, `deny` +- Typed `AgentCommand` enum with `parse()` for type-safe command dispatch +- `@agent_name` mention syntax for quick sub-agent invocation + +### Changed +- Migrated all 6 hardcoded filters into the declarative TOML engine + +### Removed +- `FilterConfig` per-filter config structs — filter params now in TOML strategy fields + ## [0.11.4] - 2026-02-21 ### Added @@ -1069,7 +1094,8 @@ let agent = Agent::new(provider, channel, &skills_prompt, executor); - Agent calls channel.send_typing() before each LLM request - Agent::run() uses tokio::select! to race channel messages against shutdown signal -[Unreleased]: https://github.com/bug-ops/zeph/compare/v0.11.4...HEAD +[Unreleased]: https://github.com/bug-ops/zeph/compare/v0.11.5...HEAD +[0.11.5]: https://github.com/bug-ops/zeph/compare/v0.11.4...v0.11.5 [0.11.4]: https://github.com/bug-ops/zeph/compare/v0.11.3...v0.11.4 [0.11.3]: https://github.com/bug-ops/zeph/compare/v0.11.2...v0.11.3 [0.11.2]: https://github.com/bug-ops/zeph/compare/v0.11.1...v0.11.2 diff --git a/docs/src/getting-started/installation.md b/docs/src/getting-started/installation.md index 36fd745a..9bdec224 100644 --- a/docs/src/getting-started/installation.md +++ b/docs/src/getting-started/installation.md @@ -19,7 +19,7 @@ ZEPH_INSTALL_DIR=/usr/local/bin curl -fsSL https://github.com/bug-ops/zeph/relea Install a specific version: ```bash -curl -fsSL https://github.com/bug-ops/zeph/releases/latest/download/install.sh | sh -s -- --version v0.11.4 +curl -fsSL https://github.com/bug-ops/zeph/releases/latest/download/install.sh | sh -s -- --version v0.11.5 ``` After installation, run the configuration wizard: