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]
## [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
### 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).
[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.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
Generated
+16 -16
View File
@@ -777,7 +777,7 @@ checksum = "e9b18233253483ce2f65329a24072ec414db782531bdbb7d0bbc4bd2ce6b7e21"
[[package]]
name = "codewhale-agent"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"codewhale-config",
"serde",
@@ -785,7 +785,7 @@ dependencies = [
[[package]]
name = "codewhale-app-server"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"anyhow",
"axum",
@@ -812,7 +812,7 @@ dependencies = [
[[package]]
name = "codewhale-cli"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"anyhow",
"chrono",
@@ -840,7 +840,7 @@ dependencies = [
[[package]]
name = "codewhale-config"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"anyhow",
"codewhale-execpolicy",
@@ -854,7 +854,7 @@ dependencies = [
[[package]]
name = "codewhale-core"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"anyhow",
"chrono",
@@ -873,7 +873,7 @@ dependencies = [
[[package]]
name = "codewhale-execpolicy"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"anyhow",
"codewhale-protocol",
@@ -882,7 +882,7 @@ dependencies = [
[[package]]
name = "codewhale-hooks"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"anyhow",
"async-trait",
@@ -896,7 +896,7 @@ dependencies = [
[[package]]
name = "codewhale-mcp"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"anyhow",
"serde",
@@ -905,7 +905,7 @@ dependencies = [
[[package]]
name = "codewhale-protocol"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"serde",
"serde_json",
@@ -913,7 +913,7 @@ dependencies = [
[[package]]
name = "codewhale-release"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"anyhow",
"reqwest",
@@ -924,7 +924,7 @@ dependencies = [
[[package]]
name = "codewhale-secrets"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"dirs",
"keyring",
@@ -937,7 +937,7 @@ dependencies = [
[[package]]
name = "codewhale-state"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"anyhow",
"chrono",
@@ -949,7 +949,7 @@ dependencies = [
[[package]]
name = "codewhale-tools"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"anyhow",
"async-trait",
@@ -963,7 +963,7 @@ dependencies = [
[[package]]
name = "codewhale-tui"
version = "0.8.59"
version = "0.8.60"
dependencies = [
"anyhow",
"arboard",
@@ -1033,11 +1033,11 @@ dependencies = [
[[package]]
name = "codewhale-tui-core"
version = "0.8.59"
version = "0.8.60"
[[package]]
name = "codewhale-whaleflow"
version = "0.8.59"
version = "0.8.60"
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.59"
version = "0.8.60"
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.59 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-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.60 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.59 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-cli --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
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.59 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-cli --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
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.59 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-cli --locked --force
cargo install --git https://cnb.cool/codewhale.net/codewhale --tag v0.8.60 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.59" }
codewhale-config = { path = "../config", version = "0.8.60" }
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.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" }
codewhale-agent = { path = "../agent", version = "0.8.60" }
codewhale-config = { path = "../config", version = "0.8.60" }
codewhale-core = { path = "../core", version = "0.8.60" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.60" }
codewhale-hooks = { path = "../hooks", version = "0.8.60" }
codewhale-mcp = { path = "../mcp", version = "0.8.60" }
codewhale-protocol = { path = "../protocol", version = "0.8.60" }
codewhale-state = { path = "../state", version = "0.8.60" }
codewhale-tools = { path = "../tools", version = "0.8.60" }
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.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" }
codewhale-agent = { path = "../agent", version = "0.8.60" }
codewhale-app-server = { path = "../app-server", version = "0.8.60" }
codewhale-config = { path = "../config", version = "0.8.60" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.60" }
codewhale-mcp = { path = "../mcp", version = "0.8.60" }
codewhale-release = { path = "../release", version = "0.8.60" }
codewhale-secrets = { path = "../secrets", version = "0.8.60" }
codewhale-state = { path = "../state", version = "0.8.60" }
chrono.workspace = true
dirs.workspace = true
serde.workspace = true
+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.59" }
codewhale-secrets = { path = "../secrets", version = "0.8.59" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.60" }
codewhale-secrets = { path = "../secrets", version = "0.8.60" }
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.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" }
codewhale-agent = { path = "../agent", version = "0.8.60" }
codewhale-config = { path = "../config", version = "0.8.60" }
codewhale-execpolicy = { path = "../execpolicy", version = "0.8.60" }
codewhale-hooks = { path = "../hooks", version = "0.8.60" }
codewhale-mcp = { path = "../mcp", version = "0.8.60" }
codewhale-protocol = { path = "../protocol", version = "0.8.60" }
codewhale-state = { path = "../state", version = "0.8.60" }
codewhale-tools = { path = "../tools", version = "0.8.60" }
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.59" }
codewhale-protocol = { path = "../protocol", version = "0.8.60" }
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.59" }
codewhale-protocol = { path = "../protocol", version = "0.8.60" }
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.59" }
codewhale-protocol = { path = "../protocol", version = "0.8.60" }
serde.workspace = true
serde_json.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]
## [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
### Added
@@ -1302,84 +1333,6 @@ Thanks to contributors credited in the v0.8.47 GitHub Release, including
**@aboimpinto**, **@HUQIANTAO**, **@mvanhorn**, **@LING71671**, and
**@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).
+5 -5
View File
@@ -20,11 +20,11 @@ path = "src/main.rs"
[dependencies]
anyhow = "1.0.100"
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" }
codewhale-config = { path = "../config", version = "0.8.60" }
codewhale-protocol = { path = "../protocol", version = "0.8.60" }
codewhale-release = { path = "../release", version = "0.8.60" }
codewhale-secrets = { path = "../secrets", version = "0.8.60" }
codewhale-tools = { path = "../tools", version = "0.8.60" }
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.59",
"codewhaleBinaryVersion": "0.8.59",
"version": "0.8.60",
"codewhaleBinaryVersion": "0.8.60",
"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-12T13:44:56.093Z",
"version": "0.8.59",
"generatedAt": "2026-06-13T18:53:53.254Z",
"version": "0.8.60",
"crates": [
"agent",
"app-server",