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