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:
+8
-1
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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).
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user