chore(release): bump v0.8.60

Prepare the local v0.8.60 build by updating the workspace version, internal path dependency pins, npm wrapper version, changelog, README tag examples, Cargo.lock, TUI changelog slice, and generated web facts.

Verification: cargo fmt --all --check; git diff --check; ./scripts/release/check-versions.sh; cargo build -p codewhale-cli -p codewhale-tui --locked; target/debug/codewhale --version; target/debug/codewhale-tui --version.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hunter B
2026-06-13 11:59:34 -07:00
parent f8b3c1e481
commit 1574dd488a
19 changed files with 129 additions and 144 deletions
+33 -1
View File
@@ -7,6 +7,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
## [0.8.60] - 2026-06-13
### Added
- **Agent Fleet real-run cutover (#3154/#3096).** `codewhale fleet run` now
launches durable workers through the headless `codewhale exec --output-format
stream-json` path instead of the local simulation interpreter, with terminal
worker events freeing leases so queued fleet tasks continue running.
- **Read-only shell parallelism (#2983).** The engine can now run conservative
read-only shell calls in parallel, including strict `bash`/`sh`/`zsh -c`
wrappers for whitelisted commands, while writes, stdin, background TTY work,
redirects, pipes, command substitution, and follow-mode tails stay serial.
- **Declarative JS/TS WhaleFlow authoring (#3097).** WhaleFlow now accepts a
compile-only `workflow({...})` JavaScript/TypeScript authoring form that
lowers into the existing `WorkflowSpec` validator without executing user
JavaScript.
- **Slash-menu Ctrl+P/Ctrl+N navigation (#3196).** The slash command menu now
supports Ctrl+P/Ctrl+N movement without letting the global file picker steal
focus while the menu is open. Thanks @1Git2Clone for the PR.
### Fixed
- **Z.ai GLM thinking traces.** Direct Z.ai requests now use the documented
`thinking` shape, preserve and replay `reasoning_content`, classify GLM
reasoning streams as thinking output, and accept `ultracode` as a max-effort
alias.
- **Claude skill archive compatibility (#2743).** `/skill install` keeps
portable Claude-style skill folders supported while rejecting multi-skill
Claude plugin archives clearly instead of silently installing only one skill
and dropping plugin semantics. Thanks @AiurArtanis for the ecosystem request.
## [0.8.59] - 2026-06-12 ## [0.8.59] - 2026-06-12
### Added ### Added
@@ -1908,7 +1939,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). 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.59...HEAD [Unreleased]: https://github.com/Hmbown/CodeWhale/compare/v0.8.60...HEAD
[0.8.60]: https://github.com/Hmbown/CodeWhale/compare/v0.8.59...v0.8.60
[0.8.59]: https://github.com/Hmbown/CodeWhale/compare/v0.8.58...v0.8.59 [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.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.57]: https://github.com/Hmbown/CodeWhale/compare/v0.8.56...v0.8.57
Generated
+16 -16
View File
@@ -777,7 +777,7 @@ checksum = "e9b18233253483ce2f65329a24072ec414db782531bdbb7d0bbc4bd2ce6b7e21"
[[package]] [[package]]
name = "codewhale-agent" name = "codewhale-agent"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"codewhale-config", "codewhale-config",
"serde", "serde",
@@ -785,7 +785,7 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-app-server" name = "codewhale-app-server"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"axum", "axum",
@@ -812,7 +812,7 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-cli" name = "codewhale-cli"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"chrono", "chrono",
@@ -840,7 +840,7 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-config" name = "codewhale-config"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"codewhale-execpolicy", "codewhale-execpolicy",
@@ -854,7 +854,7 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-core" name = "codewhale-core"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"chrono", "chrono",
@@ -873,7 +873,7 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-execpolicy" name = "codewhale-execpolicy"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"codewhale-protocol", "codewhale-protocol",
@@ -882,7 +882,7 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-hooks" name = "codewhale-hooks"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-trait", "async-trait",
@@ -896,7 +896,7 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-mcp" name = "codewhale-mcp"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"serde", "serde",
@@ -905,7 +905,7 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-protocol" name = "codewhale-protocol"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"serde", "serde",
"serde_json", "serde_json",
@@ -913,7 +913,7 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-release" name = "codewhale-release"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"reqwest", "reqwest",
@@ -924,7 +924,7 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-secrets" name = "codewhale-secrets"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"dirs", "dirs",
"keyring", "keyring",
@@ -937,7 +937,7 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-state" name = "codewhale-state"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"chrono", "chrono",
@@ -949,7 +949,7 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-tools" name = "codewhale-tools"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-trait", "async-trait",
@@ -963,7 +963,7 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-tui" name = "codewhale-tui"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"arboard", "arboard",
@@ -1033,11 +1033,11 @@ dependencies = [
[[package]] [[package]]
name = "codewhale-tui-core" name = "codewhale-tui-core"
version = "0.8.59" version = "0.8.60"
[[package]] [[package]]
name = "codewhale-whaleflow" name = "codewhale-whaleflow"
version = "0.8.59" version = "0.8.60"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"serde", "serde",
+1 -1
View File
@@ -21,7 +21,7 @@ default-members = ["crates/cli", "crates/app-server", "crates/tui"]
resolver = "2" resolver = "2"
[workspace.package] [workspace.package]
version = "0.8.59" version = "0.8.60"
edition = "2024" edition = "2024"
# Rust 1.88 stabilized `let_chains` in `if`/`while` conditions, which the # Rust 1.88 stabilized `let_chains` in `if`/`while` conditions, which the
# codebase relies on extensively. Cargo enforces this so users on older # 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 # https://github.com/Hmbown/CodeWhale/releases
# GitHub に安定して到達できない場合は CNB mirror を使えます: # GitHub に安定して到達できない場合は CNB mirror を使えます:
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.60 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.59 codewhale-tui --locked --force cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.60 codewhale-tui --locked --force
# 旧 Homebrew 互換。formula はまだ deepseek-tui 名を使います。 # 旧 Homebrew 互換。formula はまだ deepseek-tui 名を使います。
brew tap Hmbown/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 # https://github.com/Hmbown/CodeWhale/releases
# CNB mirror path for users who cannot reliably reach GitHub: # CNB mirror path for users who cannot reliably reach GitHub:
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.60 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.59 codewhale-tui --locked --force cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.60 codewhale-tui --locked --force
# Legacy Homebrew compatibility while the formula is renamed # Legacy Homebrew compatibility while the formula is renamed
brew tap Hmbown/deepseek-tui brew tap Hmbown/deepseek-tui
+2 -2
View File
@@ -43,8 +43,8 @@ Các đường khác:
# https://github.com/Hmbown/CodeWhale/releases # https://github.com/Hmbown/CodeWhale/releases
# Nếu GitHub không ổn định, dùng CNB mirror: # Nếu GitHub không ổn định, dùng CNB mirror:
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.60 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.59 codewhale-tui --locked --force cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.60 codewhale-tui --locked --force
# Homebrew legacy trong lúc formula vẫn dùng tên deepseek-tui # Homebrew legacy trong lúc formula vẫn dùng tên deepseek-tui
brew tap Hmbown/deepseek-tui brew tap Hmbown/deepseek-tui
+2 -2
View File
@@ -43,8 +43,8 @@ codewhale --model auto
# https://github.com/Hmbown/CodeWhale/releases # https://github.com/Hmbown/CodeWhale/releases
# 如果 GitHub 访问不稳定,可以使用 CNB 镜像: # 如果 GitHub 访问不稳定,可以使用 CNB 镜像:
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.60 codewhale-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.59 codewhale-tui --locked --force cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.60 codewhale-tui --locked --force
# 旧 Homebrew 兼容路径,formula 仍使用 deepseek-tui 名称 # 旧 Homebrew 兼容路径,formula 仍使用 deepseek-tui 名称
brew tap Hmbown/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" description = "Model/provider registry and fallback strategy for DeepSeek workspace architecture"
[dependencies] [dependencies]
codewhale-config = { path = "../config", version = "0.8.59" } codewhale-config = { path = "../config", version = "0.8.60" }
serde.workspace = true serde.workspace = true
+9 -9
View File
@@ -10,15 +10,15 @@ description = "Codex-style app-server transport for DeepSeek workspace architect
anyhow.workspace = true anyhow.workspace = true
axum.workspace = true axum.workspace = true
clap.workspace = true clap.workspace = true
codewhale-agent = { path = "../agent", version = "0.8.59" } codewhale-agent = { path = "../agent", version = "0.8.60" }
codewhale-config = { path = "../config", version = "0.8.59" } codewhale-config = { path = "../config", version = "0.8.60" }
codewhale-core = { path = "../core", version = "0.8.59" } codewhale-core = { path = "../core", version = "0.8.60" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.59" } codewhale-execpolicy = { path = "../execpolicy", version = "0.8.60" }
codewhale-hooks = { path = "../hooks", version = "0.8.59" } codewhale-hooks = { path = "../hooks", version = "0.8.60" }
codewhale-mcp = { path = "../mcp", version = "0.8.59" } codewhale-mcp = { path = "../mcp", version = "0.8.60" }
codewhale-protocol = { path = "../protocol", version = "0.8.59" } codewhale-protocol = { path = "../protocol", version = "0.8.60" }
codewhale-state = { path = "../state", version = "0.8.59" } codewhale-state = { path = "../state", version = "0.8.60" }
codewhale-tools = { path = "../tools", version = "0.8.59" } codewhale-tools = { path = "../tools", version = "0.8.60" }
serde.workspace = true serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
rustls.workspace = true rustls.workspace = true
+8 -8
View File
@@ -19,14 +19,14 @@ path = "src/bin/codew_legacy_shim.rs"
anyhow.workspace = true anyhow.workspace = true
clap.workspace = true clap.workspace = true
clap_complete.workspace = true clap_complete.workspace = true
codewhale-agent = { path = "../agent", version = "0.8.59" } codewhale-agent = { path = "../agent", version = "0.8.60" }
codewhale-app-server = { path = "../app-server", version = "0.8.59" } codewhale-app-server = { path = "../app-server", version = "0.8.60" }
codewhale-config = { path = "../config", version = "0.8.59" } codewhale-config = { path = "../config", version = "0.8.60" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.59" } codewhale-execpolicy = { path = "../execpolicy", version = "0.8.60" }
codewhale-mcp = { path = "../mcp", version = "0.8.59" } codewhale-mcp = { path = "../mcp", version = "0.8.60" }
codewhale-release = { path = "../release", version = "0.8.59" } codewhale-release = { path = "../release", version = "0.8.60" }
codewhale-secrets = { path = "../secrets", version = "0.8.59" } codewhale-secrets = { path = "../secrets", version = "0.8.60" }
codewhale-state = { path = "../state", version = "0.8.59" } codewhale-state = { path = "../state", version = "0.8.60" }
chrono.workspace = true chrono.workspace = true
dirs.workspace = true dirs.workspace = true
serde.workspace = true serde.workspace = true
+2 -2
View File
@@ -8,8 +8,8 @@ description = "Config schema and precedence model for DeepSeek workspace archite
[dependencies] [dependencies]
anyhow.workspace = true anyhow.workspace = true
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.59" } codewhale-execpolicy = { path = "../execpolicy", version = "0.8.60" }
codewhale-secrets = { path = "../secrets", version = "0.8.59" } codewhale-secrets = { path = "../secrets", version = "0.8.60" }
dirs.workspace = true dirs.workspace = true
serde.workspace = true serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
+8 -8
View File
@@ -9,14 +9,14 @@ description = "Core runtime boundaries for DeepSeek workspace architecture"
[dependencies] [dependencies]
anyhow.workspace = true anyhow.workspace = true
chrono.workspace = true chrono.workspace = true
codewhale-agent = { path = "../agent", version = "0.8.59" } codewhale-agent = { path = "../agent", version = "0.8.60" }
codewhale-config = { path = "../config", version = "0.8.59" } codewhale-config = { path = "../config", version = "0.8.60" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.59" } codewhale-execpolicy = { path = "../execpolicy", version = "0.8.60" }
codewhale-hooks = { path = "../hooks", version = "0.8.59" } codewhale-hooks = { path = "../hooks", version = "0.8.60" }
codewhale-mcp = { path = "../mcp", version = "0.8.59" } codewhale-mcp = { path = "../mcp", version = "0.8.60" }
codewhale-protocol = { path = "../protocol", version = "0.8.59" } codewhale-protocol = { path = "../protocol", version = "0.8.60" }
codewhale-state = { path = "../state", version = "0.8.59" } codewhale-state = { path = "../state", version = "0.8.60" }
codewhale-tools = { path = "../tools", version = "0.8.59" } codewhale-tools = { path = "../tools", version = "0.8.60" }
serde_json.workspace = true serde_json.workspace = true
tracing.workspace = true tracing.workspace = true
uuid.workspace = true uuid.workspace = true
+1 -1
View File
@@ -8,5 +8,5 @@ description = "Execution policy and approval model parity for DeepSeek workspace
[dependencies] [dependencies]
anyhow.workspace = true anyhow.workspace = true
codewhale-protocol = { path = "../protocol", version = "0.8.59" } codewhale-protocol = { path = "../protocol", version = "0.8.60" }
serde.workspace = true serde.workspace = true
+1 -1
View File
@@ -10,7 +10,7 @@ description = "Hook dispatch and notifications parity for DeepSeek workspace arc
anyhow.workspace = true anyhow.workspace = true
async-trait.workspace = true async-trait.workspace = true
chrono.workspace = true chrono.workspace = true
codewhale-protocol = { path = "../protocol", version = "0.8.59" } codewhale-protocol = { path = "../protocol", version = "0.8.60" }
reqwest.workspace = true reqwest.workspace = true
serde.workspace = true serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
+1 -1
View File
@@ -9,7 +9,7 @@ description = "Tool invocation lifecycle, schema validation, and scheduler paral
[dependencies] [dependencies]
anyhow.workspace = true anyhow.workspace = true
async-trait.workspace = true async-trait.workspace = true
codewhale-protocol = { path = "../protocol", version = "0.8.59" } codewhale-protocol = { path = "../protocol", version = "0.8.60" }
serde.workspace = true serde.workspace = true
serde_json.workspace = true serde_json.workspace = true
thiserror.workspace = true thiserror.workspace = true
+31 -78
View File
@@ -7,6 +7,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
## [0.8.60] - 2026-06-13
### Added
- **Agent Fleet real-run cutover (#3154/#3096).** `codewhale fleet run` now
launches durable workers through the headless `codewhale exec --output-format
stream-json` path instead of the local simulation interpreter, with terminal
worker events freeing leases so queued fleet tasks continue running.
- **Read-only shell parallelism (#2983).** The engine can now run conservative
read-only shell calls in parallel, including strict `bash`/`sh`/`zsh -c`
wrappers for whitelisted commands, while writes, stdin, background TTY work,
redirects, pipes, command substitution, and follow-mode tails stay serial.
- **Declarative JS/TS WhaleFlow authoring (#3097).** WhaleFlow now accepts a
compile-only `workflow({...})` JavaScript/TypeScript authoring form that
lowers into the existing `WorkflowSpec` validator without executing user
JavaScript.
- **Slash-menu Ctrl+P/Ctrl+N navigation (#3196).** The slash command menu now
supports Ctrl+P/Ctrl+N movement without letting the global file picker steal
focus while the menu is open. Thanks @1Git2Clone for the PR.
### Fixed
- **Z.ai GLM thinking traces.** Direct Z.ai requests now use the documented
`thinking` shape, preserve and replay `reasoning_content`, classify GLM
reasoning streams as thinking output, and accept `ultracode` as a max-effort
alias.
- **Claude skill archive compatibility (#2743).** `/skill install` keeps
portable Claude-style skill folders supported while rejecting multi-skill
Claude plugin archives clearly instead of silently installing only one skill
and dropping plugin semantics. Thanks @AiurArtanis for the ecosystem request.
## [0.8.59] - 2026-06-12 ## [0.8.59] - 2026-06-12
### Added ### Added
@@ -1302,84 +1333,6 @@ Thanks to contributors credited in the v0.8.47 GitHub Release, including
**@aboimpinto**, **@HUQIANTAO**, **@mvanhorn**, **@LING71671**, and **@aboimpinto**, **@HUQIANTAO**, **@mvanhorn**, **@LING71671**, and
**@reidliu41**. **@reidliu41**.
## [0.8.46] - 2026-05-26
### Added
- **`CODEWHALE_*` env aliases.** `CODEWHALE_PROVIDER`, `CODEWHALE_MODEL`,
and `CODEWHALE_BASE_URL` are public product-scoped aliases that take
precedence over the legacy `DEEPSEEK_*` forms. The `DEEPSEEK_*` names
remain accepted for back-compat.
- **Platform archive bundles.** Release artifacts now ship as per-platform
archives (`tar.gz` for Linux/macOS, `.zip` for Windows) containing both
`codewhale` and `codewhale-tui` binaries plus an install script. No more
downloading two loose files and guessing which ones to pick (#2193).
- **Windows portable archive.** `codewhale-windows-x64-portable.zip` ships
the two binaries without an install script for USB-stick distribution
(#2193).
- **Web install download tile.** The website install page now shows a
platform-aware download tile with arch detection, SHA256 checksum
display, and China mirror links, instead of burying the download behind
the Cargo instructions (#2192).
- **Whale dark palette refresh.** Better contrast and layer separation
across the TUI color scheme (#2197).
- **Auto-collapse finished sub-agents.** Completed sub-agent sessions now
collapse automatically in the sidebar, reducing noise during long
sessions (#2195).
- **Shell-running status chip.** A `⏳ shell running` chip appears in the
TUI footer while background shell tasks are active (#2194).
- **Sandbox process hardening (Linux).** `PR_SET_DUMPABLE=0`,
`NO_NEW_PRIVS`, and `RLIMIT_CORE=0` are applied at shell startup to
harden child processes against inspection and privilege escalation
(#2183).
- **CONTRIBUTING.md cross-links.** Issue and PR templates are now
cross-linked from CONTRIBUTING.md to improve contributor onboarding
(#2203).
### Changed
- **DeepSeek-first focus.** v0.8.46 refocuses on delivering the
highest-quality experience on DeepSeek first. Additional first-class
provider paths are planned for v0.9.0 after the core DeepSeek workflow
is solid.
### Fixed
- **Model name casing preserved.** `normalize_model_name_for_provider` no
longer lowercases user-set model names such as `DeepSeek-V4-Flash`,
preventing API lookup failures on case-sensitive backends (#2109).
- **Esc in model picker applies selection.** Dismissing the model picker
with Esc now applies the last-highlighted choice instead of reverting
(#2196).
- **Web install downloads both binaries.** The `install-binary.tsx`
snippet now fetches both `codewhale` and `codewhale-tui`, fixing the
`MISSING_COMPANION_BINARY` trap on fresh npm installs (#2191).
- **`grep_files` skips large directories.** The pure-Rust search tool
now skips known-large directories (`.git`, `node_modules`, `target`)
before walking, preventing hangs on deep or slow filesystems.
- **Version-update hint uses semver.** The update notification in the
footer now compares versions semantically instead of lexicographically,
so `0.8.10 > 0.8.9` is recognized correctly.
- **CVE-2026-8723 in feishu-bridge.** Bumped `qs` to `>=6.15.2` in the
Feishu bridge integration (#2198).
### Community
Thanks to new contributors whose PRs landed in this release:
**@donglovejava** (#2154, #2163, #2166, #2167, #2168),
**@encyc** (#2152),
**@saieswar237** (#2178),
**@sximelon** (#2174),
**@nanookclaw** (#2135),
**@Sskift** (#2119),
**@xin1104** (#2105),
**@mrluanma** (#2059),
**@Lellansin** (#2055),
**@zhuangbiaowei** (#2145),
**@aboimpinto** (#1872),
and continuing contributors **@reidliu41**, **@cyq1017**, **@idling11**,
**@h3c-hexin**, **@wdw8276**, **@zlh124**, and **@jeoor**.
--- ---
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). 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] [dependencies]
anyhow = "1.0.100" anyhow = "1.0.100"
codewhale-config = { path = "../config", version = "0.8.59" } codewhale-config = { path = "../config", version = "0.8.60" }
codewhale-protocol = { path = "../protocol", version = "0.8.59" } codewhale-protocol = { path = "../protocol", version = "0.8.60" }
codewhale-release = { path = "../release", version = "0.8.59" } codewhale-release = { path = "../release", version = "0.8.60" }
codewhale-secrets = { path = "../secrets", version = "0.8.59" } codewhale-secrets = { path = "../secrets", version = "0.8.60" }
codewhale-tools = { path = "../tools", version = "0.8.59" } codewhale-tools = { path = "../tools", version = "0.8.60" }
schemaui = { version = "0.12.0", default-features = false, optional = true } schemaui = { version = "0.12.0", default-features = false, optional = true }
async-stream = "0.3.6" async-stream = "0.3.6"
async-trait = "0.1" async-trait = "0.1"
+2 -2
View File
@@ -1,7 +1,7 @@
{ {
"name": "codewhale", "name": "codewhale",
"version": "0.8.59", "version": "0.8.60",
"codewhaleBinaryVersion": "0.8.59", "codewhaleBinaryVersion": "0.8.60",
"description": "Install and run CodeWhale, the agentic terminal for open-source and open-weight coding models, from GitHub release artifacts.", "description": "Install and run CodeWhale, the agentic terminal for open-source and open-weight coding models, from GitHub release artifacts.",
"author": "Hmbown", "author": "Hmbown",
"license": "MIT", "license": "MIT",
+2 -2
View File
@@ -18,8 +18,8 @@ export interface RepoFacts {
} }
export const FACTS: RepoFacts = { export const FACTS: RepoFacts = {
"generatedAt": "2026-06-12T13:44:56.093Z", "generatedAt": "2026-06-13T18:53:53.254Z",
"version": "0.8.59", "version": "0.8.60",
"crates": [ "crates": [
"agent", "agent",
"app-server", "app-server",