chore(release): prepare v0.8.59

Cut the 0.8.59 changelog section, bump workspace/npm/README versions, refresh Cargo.lock and generated web facts, and sync the embedded TUI changelog slice.

Also fixes the short codew shim to prefer its sibling codewhale dispatcher before PATH so fresh installs do not delegate to an older global binary.
This commit is contained in:
Hunter B
2026-06-12 07:05:05 -07:00
parent 42de833d80
commit ccc0315831
20 changed files with 114 additions and 165 deletions
+8 -1
View File
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.8.59] - 2026-06-12
### Added
- **Moonshot Kimi K2.7 Code model.** The Moonshot/Kimi provider now defaults to
@@ -107,6 +109,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
rebrand docs now cover the same upgrade path. Thanks @jazzi and
@tiangangQiu for the reports, @cyq1017 for the update-path PR, and
@angus-guo for the README PR.
- **Short `codew` shim delegation.** The `codew` convenience binary now
prefers the sibling `codewhale` dispatcher installed next to it before
falling back to `PATH`, preventing fresh local builds or installs from
accidentally invoking an older global dispatcher.
- **Constitution trust wording (#2950/#3008).** The base prompt now explains
that "begins with an A" means a baseline of trust, not a literal output
formatting rule. Thanks @cyq1017 for the PR.
@@ -1874,7 +1880,8 @@ overflow report and `/theme` picker edge-wrapping patch in #1814.
Older releases (v0.8.39 and earlier) are archived in [docs/CHANGELOG_ARCHIVE.md](docs/CHANGELOG_ARCHIVE.md).
[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.58...HEAD
[Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.59...HEAD
[0.8.59]: https://github.com/Hmbown/CodeWhale/compare/v0.8.58...v0.8.59
[0.8.58]: https://github.com/Hmbown/CodeWhale/compare/v0.8.57...v0.8.58
[0.8.57]: https://github.com/Hmbown/CodeWhale/compare/v0.8.56...v0.8.57
[0.8.56]: https://github.com/Hmbown/CodeWhale/compare/v0.8.55...v0.8.56
Generated
+16 -16
View File
@@ -771,7 +771,7 @@ checksum = "e9b18233253483ce2f65329a24072ec414db782531bdbb7d0bbc4bd2ce6b7e21"
[[package]]
name = "codewhale-agent"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"codewhale-config",
"serde",
@@ -779,7 +779,7 @@ dependencies = [
[[package]]
name = "codewhale-app-server"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"anyhow",
"axum",
@@ -806,7 +806,7 @@ dependencies = [
[[package]]
name = "codewhale-cli"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"anyhow",
"chrono",
@@ -834,7 +834,7 @@ dependencies = [
[[package]]
name = "codewhale-config"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"anyhow",
"codewhale-execpolicy",
@@ -848,7 +848,7 @@ dependencies = [
[[package]]
name = "codewhale-core"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"anyhow",
"chrono",
@@ -867,7 +867,7 @@ dependencies = [
[[package]]
name = "codewhale-execpolicy"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"anyhow",
"codewhale-protocol",
@@ -876,7 +876,7 @@ dependencies = [
[[package]]
name = "codewhale-hooks"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"anyhow",
"async-trait",
@@ -890,7 +890,7 @@ dependencies = [
[[package]]
name = "codewhale-mcp"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"anyhow",
"serde",
@@ -899,7 +899,7 @@ dependencies = [
[[package]]
name = "codewhale-protocol"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"serde",
"serde_json",
@@ -907,7 +907,7 @@ dependencies = [
[[package]]
name = "codewhale-release"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"anyhow",
"reqwest",
@@ -918,7 +918,7 @@ dependencies = [
[[package]]
name = "codewhale-secrets"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"dirs",
"keyring",
@@ -931,7 +931,7 @@ dependencies = [
[[package]]
name = "codewhale-state"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"anyhow",
"chrono",
@@ -943,7 +943,7 @@ dependencies = [
[[package]]
name = "codewhale-tools"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"anyhow",
"async-trait",
@@ -957,7 +957,7 @@ dependencies = [
[[package]]
name = "codewhale-tui"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"anyhow",
"arboard",
@@ -1027,11 +1027,11 @@ dependencies = [
[[package]]
name = "codewhale-tui-core"
version = "0.8.58"
version = "0.8.59"
[[package]]
name = "codewhale-whaleflow"
version = "0.8.58"
version = "0.8.59"
dependencies = [
"anyhow",
"serde",
+1 -1
View File
@@ -21,7 +21,7 @@ default-members = ["crates/cli", "crates/app-server", "crates/tui"]
resolver = "2"
[workspace.package]
version = "0.8.58"
version = "0.8.59"
edition = "2024"
# Rust 1.88 stabilized `let_chains` in `if`/`while` conditions, which the
# codebase relies on extensively. Cargo enforces this so users on older
+2 -2
View File
@@ -43,8 +43,8 @@ codewhale --model auto
# https://github.com/Hmbown/CodeWhale/releases
# GitHub に安定して到達できない場合は CNB mirror を使えます:
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-tui --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.59 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.59 codewhale-tui --locked --force
# 旧 Homebrew 互換。formula はまだ deepseek-tui 名を使います。
brew tap Hmbown/deepseek-tui
+2 -2
View File
@@ -77,8 +77,8 @@ Other install paths are supported:
# https://github.com/Hmbown/CodeWhale/releases
# CNB mirror path for users who cannot reliably reach GitHub:
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-tui --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.59 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.59 codewhale-tui --locked --force
# Legacy Homebrew compatibility while the formula is renamed
brew tap Hmbown/deepseek-tui
+2 -2
View File
@@ -43,8 +43,8 @@ Các đường khác:
# https://github.com/Hmbown/CodeWhale/releases
# Nếu GitHub không ổn định, dùng CNB mirror:
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-tui --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.59 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.59 codewhale-tui --locked --force
# Homebrew legacy trong lúc formula vẫn dùng tên deepseek-tui
brew tap Hmbown/deepseek-tui
+2 -2
View File
@@ -43,8 +43,8 @@ codewhale --model auto
# https://github.com/Hmbown/CodeWhale/releases
# 如果 GitHub 访问不稳定,可以使用 CNB 镜像:
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.58 codewhale-tui --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.59 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.59 codewhale-tui --locked --force
# 旧 Homebrew 兼容路径,formula 仍使用 deepseek-tui 名称
brew tap Hmbown/deepseek-tui
+1 -1
View File
@@ -7,5 +7,5 @@ repository.workspace = true
description = "Model/provider registry and fallback strategy for DeepSeek workspace architecture"
[dependencies]
codewhale-config = { path = "../config", version = "0.8.58" }
codewhale-config = { path = "../config", version = "0.8.59" }
serde.workspace = true
+9 -9
View File
@@ -10,15 +10,15 @@ description = "Codex-style app-server transport for DeepSeek workspace architect
anyhow.workspace = true
axum.workspace = true
clap.workspace = true
codewhale-agent = { path = "../agent", version = "0.8.58" }
codewhale-config = { path = "../config", version = "0.8.58" }
codewhale-core = { path = "../core", version = "0.8.58" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.58" }
codewhale-hooks = { path = "../hooks", version = "0.8.58" }
codewhale-mcp = { path = "../mcp", version = "0.8.58" }
codewhale-protocol = { path = "../protocol", version = "0.8.58" }
codewhale-state = { path = "../state", version = "0.8.58" }
codewhale-tools = { path = "../tools", version = "0.8.58" }
codewhale-agent = { path = "../agent", version = "0.8.59" }
codewhale-config = { path = "../config", version = "0.8.59" }
codewhale-core = { path = "../core", version = "0.8.59" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.59" }
codewhale-hooks = { path = "../hooks", version = "0.8.59" }
codewhale-mcp = { path = "../mcp", version = "0.8.59" }
codewhale-protocol = { path = "../protocol", version = "0.8.59" }
codewhale-state = { path = "../state", version = "0.8.59" }
codewhale-tools = { path = "../tools", version = "0.8.59" }
serde.workspace = true
serde_json.workspace = true
rustls.workspace = true
+8 -8
View File
@@ -19,14 +19,14 @@ path = "src/bin/codew_legacy_shim.rs"
anyhow.workspace = true
clap.workspace = true
clap_complete.workspace = true
codewhale-agent = { path = "../agent", version = "0.8.58" }
codewhale-app-server = { path = "../app-server", version = "0.8.58" }
codewhale-config = { path = "../config", version = "0.8.58" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.58" }
codewhale-mcp = { path = "../mcp", version = "0.8.58" }
codewhale-release = { path = "../release", version = "0.8.58" }
codewhale-secrets = { path = "../secrets", version = "0.8.58" }
codewhale-state = { path = "../state", version = "0.8.58" }
codewhale-agent = { path = "../agent", version = "0.8.59" }
codewhale-app-server = { path = "../app-server", version = "0.8.59" }
codewhale-config = { path = "../config", version = "0.8.59" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.59" }
codewhale-mcp = { path = "../mcp", version = "0.8.59" }
codewhale-release = { path = "../release", version = "0.8.59" }
codewhale-secrets = { path = "../secrets", version = "0.8.59" }
codewhale-state = { path = "../state", version = "0.8.59" }
chrono.workspace = true
dirs.workspace = true
serde.workspace = true
+35 -15
View File
@@ -4,6 +4,7 @@
//! permanent short-form alias — six fewer keystrokes, same binary.
use std::env;
use std::path::{Path, PathBuf};
use std::process::Command;
fn main() {
@@ -26,29 +27,48 @@ fn main() {
}
fn spawn_codewhale(args: &[String]) -> std::io::Result<std::process::ExitStatus> {
// Try PATH first.
// Prefer the dispatcher installed next to this shim. Falling back to PATH
// first can silently run an older global `codewhale` after a fresh install.
if let Ok(exe_path) = env::current_exe()
&& let Some(sibling) = sibling_codewhale_path(&exe_path)
&& sibling.is_file()
{
return Command::new(sibling).args(args).status();
}
// Fall back to PATH for unusual installs that ship only the shim.
match Command::new("codewhale").args(args).status() {
Ok(s) => return Ok(s),
Err(e) if e.kind() == std::io::ErrorKind::NotFound => {}
Err(e) => return Err(e),
}
// On Windows, after an update the sibling `codewhale.exe` may be in the
// same directory as this shim but not on PATH (#2006).
#[cfg(windows)]
{
if let Ok(exe_path) = env::current_exe()
&& let Some(dir) = exe_path.parent()
{
let sibling = dir.join("codewhale.exe");
if sibling.is_file() {
return Command::new(sibling).args(args).status();
}
}
}
Err(std::io::Error::new(
std::io::ErrorKind::NotFound,
"codewhale not found on PATH or in sibling directory",
))
}
fn sibling_codewhale_path(exe_path: &Path) -> Option<PathBuf> {
exe_path
.parent()
.map(|dir| dir.join(format!("codewhale{}", std::env::consts::EXE_SUFFIX)))
}
#[cfg(test)]
mod tests {
use super::sibling_codewhale_path;
use std::path::Path;
#[test]
fn sibling_dispatcher_uses_platform_executable_suffix() {
let path = Path::new("/tmp/codewhale-bin/codew");
let sibling = sibling_codewhale_path(path).expect("sibling");
assert_eq!(
sibling,
Path::new("/tmp/codewhale-bin")
.join(format!("codewhale{}", std::env::consts::EXE_SUFFIX))
);
}
}
+2 -2
View File
@@ -8,8 +8,8 @@ description = "Config schema and precedence model for DeepSeek workspace archite
[dependencies]
anyhow.workspace = true
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.58" }
codewhale-secrets = { path = "../secrets", version = "0.8.58" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.59" }
codewhale-secrets = { path = "../secrets", version = "0.8.59" }
dirs.workspace = true
serde.workspace = true
serde_json.workspace = true
+8 -8
View File
@@ -9,14 +9,14 @@ description = "Core runtime boundaries for DeepSeek workspace architecture"
[dependencies]
anyhow.workspace = true
chrono.workspace = true
codewhale-agent = { path = "../agent", version = "0.8.58" }
codewhale-config = { path = "../config", version = "0.8.58" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.58" }
codewhale-hooks = { path = "../hooks", version = "0.8.58" }
codewhale-mcp = { path = "../mcp", version = "0.8.58" }
codewhale-protocol = { path = "../protocol", version = "0.8.58" }
codewhale-state = { path = "../state", version = "0.8.58" }
codewhale-tools = { path = "../tools", version = "0.8.58" }
codewhale-agent = { path = "../agent", version = "0.8.59" }
codewhale-config = { path = "../config", version = "0.8.59" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.59" }
codewhale-hooks = { path = "../hooks", version = "0.8.59" }
codewhale-mcp = { path = "../mcp", version = "0.8.59" }
codewhale-protocol = { path = "../protocol", version = "0.8.59" }
codewhale-state = { path = "../state", version = "0.8.59" }
codewhale-tools = { path = "../tools", version = "0.8.59" }
serde_json.workspace = true
tracing.workspace = true
uuid.workspace = true
+1 -1
View File
@@ -8,5 +8,5 @@ description = "Execution policy and approval model parity for DeepSeek workspace
[dependencies]
anyhow.workspace = true
codewhale-protocol = { path = "../protocol", version = "0.8.58" }
codewhale-protocol = { path = "../protocol", version = "0.8.59" }
serde.workspace = true
+1 -1
View File
@@ -10,7 +10,7 @@ description = "Hook dispatch and notifications parity for DeepSeek workspace arc
anyhow.workspace = true
async-trait.workspace = true
chrono.workspace = true
codewhale-protocol = { path = "../protocol", version = "0.8.58" }
codewhale-protocol = { path = "../protocol", version = "0.8.59" }
reqwest.workspace = true
serde.workspace = true
serde_json.workspace = true
+1 -1
View File
@@ -9,7 +9,7 @@ description = "Tool invocation lifecycle, schema validation, and scheduler paral
[dependencies]
anyhow.workspace = true
async-trait.workspace = true
codewhale-protocol = { path = "../protocol", version = "0.8.58" }
codewhale-protocol = { path = "../protocol", version = "0.8.59" }
serde.workspace = true
serde_json.workspace = true
thiserror.workspace = true
+6 -84
View File
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.8.59] - 2026-06-12
### Added
- **Moonshot Kimi K2.7 Code model.** The Moonshot/Kimi provider now defaults to
@@ -107,6 +109,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
rebrand docs now cover the same upgrade path. Thanks @jazzi and
@tiangangQiu for the reports, @cyq1017 for the update-path PR, and
@angus-guo for the README PR.
- **Short `codew` shim delegation.** The `codew` convenience binary now
prefers the sibling `codewhale` dispatcher installed next to it before
falling back to `PATH`, preventing fresh local builds or installs from
accidentally invoking an older global dispatcher.
- **Constitution trust wording (#2950/#3008).** The base prompt now explains
that "begins with an A" means a baseline of trust, not a literal output
formatting rule. Thanks @cyq1017 for the PR.
@@ -1346,90 +1352,6 @@ Thanks to new contributors whose PRs landed in this release:
and continuing contributors **@reidliu41**, **@cyq1017**, **@idling11**,
**@h3c-hexin**, **@wdw8276**, **@zlh124**, and **@jeoor**.
## [0.8.45] - 2026-05-25
### Added
- **RLM session objects.** `rlm_open` can now load `session://` refs,
exposing the active prompt, history, and session data as symbolic objects
inside RLM REPLs (#2047).
- **Command palette voice input.** The command palette can launch a configured
speech-to-text helper and show footer status while transcription runs
(#2047).
- **Moonshot/Kimi provider.** Moonshot/Kimi is now a first-class provider,
including API-key auth, model completion, CLI auth, secret-store
integration, and optional Kimi CLI credential reuse.
- **Deterministic whale-species sub-agent names.** Sub-agents now get stable,
human-readable whale-species nicknames (e.g. "Beluga", "Orca") while
preserving the raw agent ID in the popup (#2035, #2016).
- **`/balance` command scaffold.** Registered the `/balance` slash command
as a placeholder for future provider billing queries (#2035, #2019).
- **Readable `/restore` snapshot labels.** Snapshot labels now include the
originating user prompt so restore listings are easier to identify. Thanks
@idling11 (#2111).
- **Sidebar hover tooltips.** Truncated Work and Tasks sidebar lines now expose
their full text on hover. Thanks @idling11 (#2110).
### Changed
- **AGENTS.md is now maintainer-local.** The project instructions file no
longer ships as a tracked repo file; it lives in maintainer-local ignored
state (#2047).
### Fixed
- **Sub-agent completion handoff compatibility.** Completion handoffs now use a
chat-template-safe role and emit before terminal updates, fixing strict
OpenAI-compatible/self-hosted backends and preserving transcript ordering.
Thanks @h3c-hexin and @cyq1017 (#2057, #2120).
- **Self-hosted context budgeting.** Sub-500K self-hosted model windows now keep
a usable input budget instead of disabling preflight compaction after output
reservation underflow. Thanks @h3c-hexin (#2060).
- **Goal prompts start actionable.** Goal-start prompts now open in an
actionable state instead of requiring an extra nudge. Thanks @cyq1017
(#2097).
- **Composer session title display.** The composer chrome shows the current
session title again and avoids grayscale luma overflow in debug builds.
Thanks @wdw8276 (#2108).
- **Approval prompts use a one-step confirmation flow.** Enter now commits the
selected approval option directly, destructive warnings remain visible, and
abort cancels the active turn instead of only denying the current tool call.
Thanks @reidliu41 (#2143).
- **Model picker selection survives Esc.** Dismissing the model picker with Esc
no longer loses the highlighted selection. Thanks @reidliu41 (#2056).
- **Moonshot/Kimi sessions launch from the dispatcher.** The `codewhale`
wrapper now includes Moonshot/Kimi in the TUI provider allowlist, so
`codewhale --provider moonshot --model kimi-k2.6` reaches the TUI instead of
stopping after config resolution.
- **Slash recovery no longer restores command tails in the composer.**
Resuming a session or recovering from a crash no longer leaves stale
slash-command text (e.g. `/sessions`) in the composer input (#2047, #2032).
- **Remembered tool approvals now update the live active turn.**
When the "remember" checkbox is set on an approval dialog, the active
turn's auto-approve flag flips immediately instead of waiting for the
next turn. Thanks @gaord (#2047, #2041).
- **YAML block scalars in SKILL.md frontmatter.** Multi-line descriptions
using `>` or `|` indicators are now parsed correctly — folded block
scalars join non-empty lines with spaces, literal scalars preserve
newlines, and all three chomping modes (strip/clip/keep) are supported.
Thanks @zlh124 (#1908, #1907).
- **User messages highlighted in the transcript.** User-authored messages
now render with a full-row background in the live TUI transcript, making
it easier to scan prior turns. Assistant and system messages are
unaffected. Thanks @reidliu41 (#1995, #1672).
- **Cancellable `list_dir` and `file_search`.** Long directory walks and
file searches now respond to user cancel/stop requests with a 30-second
fallback timeout, preventing the TUI from hanging on deep or slow
filesystems (#2035).
### Community
- **README contributor acknowledgements resynced.** The Thanks list now
includes the latest contributor rows for @donglovejava, @encyc,
@saieswar237, @sximelon, @nanookclaw, @Sskift, @xin1104, @mrluanma,
@Lellansin, and @zhuangbiaowei, while preserving the existing @jeoor
acknowledgement in the consolidated list.
---
Older releases: [CHANGELOG.md](https://github.com/Hmbown/CodeWhale/blob/main/CHANGELOG.md) and [docs/CHANGELOG_ARCHIVE.md](https://github.com/Hmbown/CodeWhale/blob/main/docs/CHANGELOG_ARCHIVE.md).
+5 -5
View File
@@ -20,11 +20,11 @@ path = "src/main.rs"
[dependencies]
anyhow = "1.0.100"
codewhale-config = { path = "../config", version = "0.8.58" }
codewhale-protocol = { path = "../protocol", version = "0.8.58" }
codewhale-release = { path = "../release", version = "0.8.58" }
codewhale-secrets = { path = "../secrets", version = "0.8.58" }
codewhale-tools = { path = "../tools", version = "0.8.58" }
codewhale-config = { path = "../config", version = "0.8.59" }
codewhale-protocol = { path = "../protocol", version = "0.8.59" }
codewhale-release = { path = "../release", version = "0.8.59" }
codewhale-secrets = { path = "../secrets", version = "0.8.59" }
codewhale-tools = { path = "../tools", version = "0.8.59" }
schemaui = { version = "0.12.0", default-features = false, optional = true }
async-stream = "0.3.6"
async-trait = "0.1"
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "codewhale",
"version": "0.8.58",
"codewhaleBinaryVersion": "0.8.58",
"version": "0.8.59",
"codewhaleBinaryVersion": "0.8.59",
"description": "Install and run CodeWhale, the agentic terminal for open-source and open-weight coding models, from GitHub release artifacts.",
"author": "Hmbown",
"license": "MIT",
+2 -2
View File
@@ -18,8 +18,8 @@ export interface RepoFacts {
}
export const FACTS: RepoFacts = {
"generatedAt": "2026-06-11T05:54:56.679Z",
"version": "0.8.58",
"generatedAt": "2026-06-12T13:44:56.093Z",
"version": "0.8.59",
"crates": [
"agent",
"app-server",