release: bump workspace to 0.9.10 (candidate)
Version surfaces moved together: workspace Cargo.toml, all 21 crate dependency pins, Cargo.lock (workspace crates only — zero external changes), CHANGELOG slice with the 0.9.10 section and compare link, crates/tui CHANGELOG sync, web facts (derive-facts), npm/codewhale, npm/runtime-sdk, extensions/vscode, and the remote-smoke default tag. check-versions.sh: 0 errors. This is the candidate label only — no tag, no package publication, no release creation.
This commit is contained in:
+43
-2
@@ -7,11 +7,51 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.9.10] - Unreleased candidate
|
||||
|
||||
Codewhale v0.9.10 is a retention-and-identity release: the shell and
|
||||
transcript can no longer retain unbounded tool output in memory or on disk,
|
||||
mid-turn history inserts no longer strand in-flight tool rows, every agent
|
||||
that ran this session is visible from `/agents list`, the PTY acceptance
|
||||
lane has a stall watchdog and bounded CI steps, approval outcomes are
|
||||
durable and fail closed (cyq1017, #5360), and three $HOME disk leaks are
|
||||
reclaimed. Test threads get an 8 MiB stack so the lib suite can no longer
|
||||
abort under load.
|
||||
|
||||
### Fixed
|
||||
|
||||
- `fix(tui): rebase active-cell tool bindings on every mid-turn history
|
||||
insert` — `/rename` mid-turn left the running tool row spinning forever
|
||||
(#5478).
|
||||
- `fix(tui): bound what the shell and transcript retain from tool output` —
|
||||
a 1.1 MB Bash call kept over a megabyte resident for up to an hour; raw
|
||||
streams now cap at 16 MiB in flight and release delivered output, and
|
||||
retained tool outputs cap at 64 KiB per record / 8 MiB per transcript
|
||||
(#5472).
|
||||
- `fix(tui): reclaim the three $HOME disk leaks` — orphaned session dirs,
|
||||
the unbounded audit.log, and stranded writer temp files.
|
||||
- `fix(tui): persist approval outcomes before execution` (cyq1017) —
|
||||
approval receipts are committed to a session-owned log before execution
|
||||
proceeds; unpersistable evidence blocks the tool; resume reconstructs
|
||||
closed and interrupted approvals (#5360).
|
||||
- `test(tui): break the LazyLock/env-barrier deadlock in the test harness`.
|
||||
- `ci: give test threads the 8 MiB stack they need` — the lib suite aborted
|
||||
with SIGABRT under load on the default 2 MiB stack.
|
||||
|
||||
### Added
|
||||
|
||||
- The TUI header now identifies the active repository or linked worktree before
|
||||
the branch and dirty marker, so operators can see where the agent is working
|
||||
- `feat(tui): show repository context in git chrome` (wuisabel-gif) — the TUI
|
||||
header now identifies the active repository or linked worktree before the
|
||||
branch and dirty marker, so operators can see where the agent is working
|
||||
without opening the worktree manager (#5437).
|
||||
- `feat(tui): first slice of the agents roster` — every agent that ran this
|
||||
session, receipts-only, via `/agents list` and the sidebar fan-out rows
|
||||
(#5479 spec items 1 and 5).
|
||||
- `ci: bound PTY acceptance and add a stall watchdog to the harness` —
|
||||
QA_PTY_STALL_TIMEOUT_SECS aborts a wedged PTY run with a diagnostic;
|
||||
the isolated PTY step is capped at 15 minutes; Windows NSIS provisioning
|
||||
gets a bounded retry (#5496).
|
||||
- `chore(scripts): dev-cache warns before it fills a disk` (#5465 class).
|
||||
|
||||
## [0.9.9] - 2026-08-18
|
||||
|
||||
@@ -6190,6 +6230,7 @@ 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.9.9...HEAD
|
||||
[0.9.10]: https://github.com/Hmbown/CodeWhale/compare/v0.9.9...v0.9.10
|
||||
[0.9.9]: https://github.com/Hmbown/CodeWhale/compare/v0.9.8...v0.9.9
|
||||
[0.9.8]: https://github.com/Hmbown/CodeWhale/compare/v0.9.7...v0.9.8
|
||||
[0.9.7]: https://github.com/Hmbown/CodeWhale/compare/v0.9.6...v0.9.7
|
||||
|
||||
Generated
+21
-21
@@ -757,7 +757,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-agent"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"codewhale-config",
|
||||
"serde",
|
||||
@@ -765,7 +765,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-app-server"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"axum",
|
||||
@@ -793,11 +793,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-build-support"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-cli"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -837,14 +837,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-command-contract"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"codewhale-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-config"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"codewhale-execpolicy",
|
||||
@@ -864,7 +864,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-core"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
@@ -890,7 +890,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-execpolicy"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"codewhale-protocol",
|
||||
@@ -899,7 +899,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-hooks"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
@@ -914,7 +914,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-lane"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -929,7 +929,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-mcp"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"serde",
|
||||
@@ -939,14 +939,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-paths"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"dirs",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-protocol"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"serde",
|
||||
@@ -956,7 +956,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-release"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"reqwest 0.13.4",
|
||||
@@ -970,7 +970,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-secrets"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"codewhale-paths",
|
||||
@@ -985,7 +985,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-state"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -1000,7 +1000,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-telemetry"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -1020,7 +1020,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-tools"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
@@ -1034,7 +1034,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-tui"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"anyhow",
|
||||
@@ -1130,7 +1130,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-workflow"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
@@ -1142,7 +1142,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "codewhale-workflow-js"
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"jsonschema",
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ default-members = ["crates/cli"]
|
||||
resolver = "2"
|
||||
|
||||
[workspace.package]
|
||||
version = "0.9.9"
|
||||
version = "0.9.10"
|
||||
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
|
||||
|
||||
@@ -8,5 +8,5 @@ repository.workspace = true
|
||||
description = "Model/provider registry and fallback strategy for Codewhale"
|
||||
|
||||
[dependencies]
|
||||
codewhale-config = { path = "../config", version = "0.9.9" }
|
||||
codewhale-config = { path = "../config", version = "0.9.10" }
|
||||
serde.workspace = true
|
||||
|
||||
@@ -12,16 +12,16 @@ autobins = false
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
axum.workspace = true
|
||||
codewhale-agent = { path = "../agent", version = "0.9.9" }
|
||||
codewhale-config = { path = "../config", version = "0.9.9" }
|
||||
codewhale-core = { path = "../core", version = "0.9.9" }
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.9.9" }
|
||||
codewhale-hooks = { path = "../hooks", version = "0.9.9" }
|
||||
codewhale-mcp = { path = "../mcp", version = "0.9.9" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.9" }
|
||||
codewhale-release = { path = "../release", version = "0.9.9" }
|
||||
codewhale-state = { path = "../state", version = "0.9.9" }
|
||||
codewhale-tools = { path = "../tools", version = "0.9.9" }
|
||||
codewhale-agent = { path = "../agent", version = "0.9.10" }
|
||||
codewhale-config = { path = "../config", version = "0.9.10" }
|
||||
codewhale-core = { path = "../core", version = "0.9.10" }
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.9.10" }
|
||||
codewhale-hooks = { path = "../hooks", version = "0.9.10" }
|
||||
codewhale-mcp = { path = "../mcp", version = "0.9.10" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.10" }
|
||||
codewhale-release = { path = "../release", version = "0.9.10" }
|
||||
codewhale-state = { path = "../state", version = "0.9.10" }
|
||||
codewhale-tools = { path = "../tools", version = "0.9.10" }
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
rustls.workspace = true
|
||||
|
||||
+14
-14
@@ -15,19 +15,19 @@ path = "src/main.rs"
|
||||
anyhow.workspace = true
|
||||
clap.workspace = true
|
||||
clap_complete.workspace = true
|
||||
codewhale-tui = { path = "../tui", version = "0.9.9" }
|
||||
codewhale-agent = { path = "../agent", version = "0.9.9" }
|
||||
codewhale-app-server = { path = "../app-server", version = "0.9.9" }
|
||||
codewhale-config = { path = "../config", version = "0.9.9" }
|
||||
codewhale-lane = { path = "../lane", version = "0.9.9" }
|
||||
codewhale-workflow = { path = "../workflow", version = "0.9.9" }
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.9.9" }
|
||||
codewhale-mcp = { path = "../mcp", version = "0.9.9" }
|
||||
codewhale-paths = { path = "../paths", version = "0.9.9" }
|
||||
codewhale-release = { path = "../release", version = "0.9.9" }
|
||||
codewhale-secrets = { path = "../secrets", version = "0.9.9" }
|
||||
codewhale-state = { path = "../state", version = "0.9.9" }
|
||||
codewhale-telemetry = { path = "../telemetry", version = "0.9.9" }
|
||||
codewhale-tui = { path = "../tui", version = "0.9.10" }
|
||||
codewhale-agent = { path = "../agent", version = "0.9.10" }
|
||||
codewhale-app-server = { path = "../app-server", version = "0.9.10" }
|
||||
codewhale-config = { path = "../config", version = "0.9.10" }
|
||||
codewhale-lane = { path = "../lane", version = "0.9.10" }
|
||||
codewhale-workflow = { path = "../workflow", version = "0.9.10" }
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.9.10" }
|
||||
codewhale-mcp = { path = "../mcp", version = "0.9.10" }
|
||||
codewhale-paths = { path = "../paths", version = "0.9.10" }
|
||||
codewhale-release = { path = "../release", version = "0.9.10" }
|
||||
codewhale-secrets = { path = "../secrets", version = "0.9.10" }
|
||||
codewhale-state = { path = "../state", version = "0.9.10" }
|
||||
codewhale-telemetry = { path = "../telemetry", version = "0.9.10" }
|
||||
chrono.workspace = true
|
||||
console = "0.16.3"
|
||||
dirs.workspace = true
|
||||
@@ -45,7 +45,7 @@ webbrowser = "1.0"
|
||||
zeroize = "1.8.2"
|
||||
|
||||
[build-dependencies]
|
||||
codewhale-build-support = { path = "../build-support", version = "0.9.9" }
|
||||
codewhale-build-support = { path = "../build-support", version = "0.9.10" }
|
||||
|
||||
# Parent-death cleanup for delegated server children (#3259): on Linux the
|
||||
# dispatcher sets PR_SET_PDEATHSIG so the child is signalled if the dispatcher
|
||||
|
||||
@@ -8,4 +8,4 @@ repository.workspace = true
|
||||
description = "Prototype command capability and dispatch shapes for the staged TUI command extraction"
|
||||
|
||||
[dependencies]
|
||||
codewhale-core = { path = "../core", version = "0.9.9" }
|
||||
codewhale-core = { path = "../core", version = "0.9.10" }
|
||||
|
||||
@@ -9,9 +9,9 @@ description = "Config schema and precedence model for Codewhale"
|
||||
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.9.9" }
|
||||
codewhale-paths = { path = "../paths", version = "0.9.9" }
|
||||
codewhale-secrets = { path = "../secrets", version = "0.9.9" }
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.9.10" }
|
||||
codewhale-paths = { path = "../paths", version = "0.9.10" }
|
||||
codewhale-secrets = { path = "../secrets", version = "0.9.10" }
|
||||
fd-lock = "4.0.4"
|
||||
libc = "0.2"
|
||||
serde.workspace = true
|
||||
|
||||
@@ -13,14 +13,14 @@ chrono.workspace = true
|
||||
serde.workspace = true
|
||||
thiserror.workspace = true
|
||||
tokio-util.workspace = true
|
||||
codewhale-agent = { path = "../agent", version = "0.9.9" }
|
||||
codewhale-config = { path = "../config", version = "0.9.9" }
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.9.9" }
|
||||
codewhale-hooks = { path = "../hooks", version = "0.9.9" }
|
||||
codewhale-mcp = { path = "../mcp", version = "0.9.9" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.9" }
|
||||
codewhale-state = { path = "../state", version = "0.9.9" }
|
||||
codewhale-tools = { path = "../tools", version = "0.9.9" }
|
||||
codewhale-agent = { path = "../agent", version = "0.9.10" }
|
||||
codewhale-config = { path = "../config", version = "0.9.10" }
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.9.10" }
|
||||
codewhale-hooks = { path = "../hooks", version = "0.9.10" }
|
||||
codewhale-mcp = { path = "../mcp", version = "0.9.10" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.10" }
|
||||
codewhale-state = { path = "../state", version = "0.9.10" }
|
||||
codewhale-tools = { path = "../tools", version = "0.9.10" }
|
||||
regex = "1.11"
|
||||
serde_json = { workspace = true, features = ["preserve_order"] }
|
||||
tokio = { workspace = true, features = ["time"] }
|
||||
|
||||
@@ -9,5 +9,5 @@ description = "Execution policy and approval model for Codewhale"
|
||||
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.9" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.10" }
|
||||
serde.workspace = true
|
||||
|
||||
@@ -11,8 +11,8 @@ description = "Hook dispatch and notifications support for Codewhale"
|
||||
anyhow.workspace = true
|
||||
async-trait.workspace = true
|
||||
chrono.workspace = true
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.9" }
|
||||
codewhale-release = { path = "../release", version = "0.9.9" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.10" }
|
||||
codewhale-release = { path = "../release", version = "0.9.10" }
|
||||
reqwest.workspace = true
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
|
||||
@@ -10,7 +10,7 @@ description = "Lane registry and Runtime backends for Codewhale workflow instanc
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
chrono.workspace = true
|
||||
codewhale-config = { path = "../config", version = "0.9.9" }
|
||||
codewhale-config = { path = "../config", version = "0.9.10" }
|
||||
fd-lock = "4.0.4"
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
|
||||
@@ -8,7 +8,7 @@ repository.workspace = true
|
||||
description = "Secret storage backends for Codewhale, with OS keyring and file fallback"
|
||||
|
||||
[dependencies]
|
||||
codewhale-paths = { path = "../paths", version = "0.9.9" }
|
||||
codewhale-paths = { path = "../paths", version = "0.9.10" }
|
||||
chrono.workspace = true
|
||||
serde = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
|
||||
@@ -10,8 +10,8 @@ description = "Session/thread persistence and recovery model for Codewhale"
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
chrono.workspace = true
|
||||
codewhale-paths = { path = "../paths", version = "0.9.9" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.9" }
|
||||
codewhale-paths = { path = "../paths", version = "0.9.10" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.10" }
|
||||
fd-lock = "4.0.4"
|
||||
rusqlite.workspace = true
|
||||
serde.workspace = true
|
||||
|
||||
@@ -10,9 +10,9 @@ description = "Anonymous, user-disableable product usage counting for Codewhale"
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
chrono.workspace = true
|
||||
codewhale-config = { path = "../config", version = "0.9.9" }
|
||||
codewhale-paths = { path = "../paths", version = "0.9.9" }
|
||||
codewhale-release = { path = "../release", version = "0.9.9" }
|
||||
codewhale-config = { path = "../config", version = "0.9.10" }
|
||||
codewhale-paths = { path = "../paths", version = "0.9.10" }
|
||||
codewhale-release = { path = "../release", version = "0.9.10" }
|
||||
fd-lock = "4.0.4"
|
||||
reqwest = { workspace = true, features = ["blocking"] }
|
||||
serde.workspace = true
|
||||
@@ -22,9 +22,9 @@ tracing.workspace = true
|
||||
uuid.workspace = true
|
||||
|
||||
[build-dependencies]
|
||||
codewhale-build-support = { path = "../build-support", version = "0.9.9" }
|
||||
codewhale-build-support = { path = "../build-support", version = "0.9.10" }
|
||||
|
||||
[dev-dependencies]
|
||||
# Used as an *assertion*, never as a filter: every string leaf of a serialized
|
||||
# batch is run through `redact_for_disclosure` and must come back unredacted.
|
||||
codewhale-workflow = { path = "../workflow", version = "0.9.9" }
|
||||
codewhale-workflow = { path = "../workflow", version = "0.9.10" }
|
||||
|
||||
@@ -10,7 +10,7 @@ description = "Tool invocation lifecycle, schema validation, and scheduler paral
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
async-trait.workspace = true
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.9" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.10" }
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
thiserror.workspace = true
|
||||
|
||||
+42
-66
@@ -7,11 +7,51 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.9.10] - Unreleased candidate
|
||||
|
||||
Codewhale v0.9.10 is a retention-and-identity release: the shell and
|
||||
transcript can no longer retain unbounded tool output in memory or on disk,
|
||||
mid-turn history inserts no longer strand in-flight tool rows, every agent
|
||||
that ran this session is visible from `/agents list`, the PTY acceptance
|
||||
lane has a stall watchdog and bounded CI steps, approval outcomes are
|
||||
durable and fail closed (cyq1017, #5360), and three $HOME disk leaks are
|
||||
reclaimed. Test threads get an 8 MiB stack so the lib suite can no longer
|
||||
abort under load.
|
||||
|
||||
### Fixed
|
||||
|
||||
- `fix(tui): rebase active-cell tool bindings on every mid-turn history
|
||||
insert` — `/rename` mid-turn left the running tool row spinning forever
|
||||
(#5478).
|
||||
- `fix(tui): bound what the shell and transcript retain from tool output` —
|
||||
a 1.1 MB Bash call kept over a megabyte resident for up to an hour; raw
|
||||
streams now cap at 16 MiB in flight and release delivered output, and
|
||||
retained tool outputs cap at 64 KiB per record / 8 MiB per transcript
|
||||
(#5472).
|
||||
- `fix(tui): reclaim the three $HOME disk leaks` — orphaned session dirs,
|
||||
the unbounded audit.log, and stranded writer temp files.
|
||||
- `fix(tui): persist approval outcomes before execution` (cyq1017) —
|
||||
approval receipts are committed to a session-owned log before execution
|
||||
proceeds; unpersistable evidence blocks the tool; resume reconstructs
|
||||
closed and interrupted approvals (#5360).
|
||||
- `test(tui): break the LazyLock/env-barrier deadlock in the test harness`.
|
||||
- `ci: give test threads the 8 MiB stack they need` — the lib suite aborted
|
||||
with SIGABRT under load on the default 2 MiB stack.
|
||||
|
||||
### Added
|
||||
|
||||
- The TUI header now identifies the active repository or linked worktree before
|
||||
the branch and dirty marker, so operators can see where the agent is working
|
||||
- `feat(tui): show repository context in git chrome` (wuisabel-gif) — the TUI
|
||||
header now identifies the active repository or linked worktree before the
|
||||
branch and dirty marker, so operators can see where the agent is working
|
||||
without opening the worktree manager (#5437).
|
||||
- `feat(tui): first slice of the agents roster` — every agent that ran this
|
||||
session, receipts-only, via `/agents list` and the sidebar fan-out rows
|
||||
(#5479 spec items 1 and 5).
|
||||
- `ci: bound PTY acceptance and add a stall watchdog to the harness` —
|
||||
QA_PTY_STALL_TIMEOUT_SECS aborts a wedged PTY run with a diagnostic;
|
||||
the isolated PTY step is capped at 15 minutes; Windows NSIS provisioning
|
||||
gets a bounded retry (#5496).
|
||||
- `chore(scripts): dev-cache warns before it fills a disk` (#5465 class).
|
||||
|
||||
## [0.9.9] - 2026-08-18
|
||||
|
||||
@@ -3827,70 +3867,6 @@ reproductions shaped v0.9.0:
|
||||
remains available through `?connect=true`. `doctor` now warns on relative-path
|
||||
stdio MCP commands without `cwd`.
|
||||
|
||||
## [0.8.64] - 2026-06-22
|
||||
|
||||
### Added
|
||||
|
||||
- **Seamless auto-compaction defaults.** Known large-context routes now keep
|
||||
automatic compaction on by default while carrying summaries forward through
|
||||
the stable prompt path, reducing surprise context loss without changing
|
||||
explicit opt-out behavior.
|
||||
- **Runtime web automation readiness.** Local app automation gains a
|
||||
loopback-only dev-server readiness primitive so agents can wait for TCP and
|
||||
optional HTTP health checks before browser verification. Harvested from
|
||||
#3376 by @cyq1017.
|
||||
- **Model and integration polish.** `/model pro` and `/model flash` shortcuts
|
||||
now resolve to the current DeepSeek V4 routes while preserving existing model
|
||||
IDs. Harvested from #3350 by @KUK4. The WeCom bridge landed with
|
||||
maintainer follow-up hardening for state permissions and chat-facing error
|
||||
reporting, from #3370 by @pkeging.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Security and trust-boundary hardening.** Project-local config can no longer
|
||||
loosen user-owned shell or instruction-file policy, file edits now require a
|
||||
fresh read of the target file, git history inputs reject option-shaped or
|
||||
control-character revisions, interactive execution surfaces require approval,
|
||||
and local tool paths are narrowed through workspace/root validation.
|
||||
- **Runtime and diagnostics redaction.** Generated runtime/app-server tokens,
|
||||
raw session lineage identifiers, provider registry drift values, review
|
||||
receipt internals, and webhook URLs are no longer echoed into human-facing
|
||||
logs or diagnostics.
|
||||
- **Network and alert safety.** Provider TLS verification bypass requests now
|
||||
fail closed, fleet alert webhooks require HTTPS, fetch URL hostnames are
|
||||
resolved before requests, and runtime mobile auth no longer relies on
|
||||
token-bearing URLs.
|
||||
- **Path-state hardening.** Config sibling files, project MCP cwd values,
|
||||
runtime thread store files, sub-agent state, project-local state roots, and
|
||||
app-server sidecar config paths now resolve through checked roots before
|
||||
reads/writes.
|
||||
- **Release CI repair.** Nightly cross-target builds install Rust targets
|
||||
explicitly and retry transient cargo failures; auto-tag runs are serialized
|
||||
and treat an already-created remote tag as a no-op. Safe slices harvested
|
||||
from #3374 by @donglovejava.
|
||||
- **Provider wait and sidebar regressions.** Provider-wait footers suppress
|
||||
noisy countdowns until useful while keeping timeout warnings visible,
|
||||
harvested from #3375 by @idling11. The pinned sidebar can render at a
|
||||
narrower 64-column boundary, harvested from #3371 by @donglovejava.
|
||||
- **Delegated server cleanup.** Delegated `serve` / `app-server` children gain
|
||||
OS-level parent-death cleanup on supported platforms, completing the #3259
|
||||
follow-up from #3378 and #3317 by @wuisabel-gif.
|
||||
- **ACP and sandbox correctness.** ACP sessions preserve multi-turn
|
||||
conversation history across prompt turns, harvested from #3372 by @xulongzhe.
|
||||
Worktree Git metadata writes are allowed through sandbox policy without
|
||||
broad trust-mode escalation, from #3356 by @cyq1017 and the #3355 report by
|
||||
@linletian.
|
||||
|
||||
### Changed
|
||||
|
||||
- **Community and dependency harvests.** The release train carries focused
|
||||
community-credit slices from #3379 by @greyfreedom, #3348 by @nightt5879,
|
||||
#3346 by @hongqitai, #3345/#3333 by @cyq1017, and Dependabot updates for
|
||||
`windows`, `toml`, `tokio`, `lru`, `similar`, and web tooling security locks.
|
||||
- **Public release surface cleanup.** Benchmark-specific materials were kept
|
||||
out of the public release repo; benchmark source fragments belong in the
|
||||
separate `codewhale-bench` lane.
|
||||
|
||||
---
|
||||
|
||||
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).
|
||||
|
||||
+14
-14
@@ -27,19 +27,19 @@ path = "src/main.rs"
|
||||
[dependencies]
|
||||
ahash = "0.8"
|
||||
anyhow.workspace = true
|
||||
codewhale-config = { path = "../config", version = "0.9.9" }
|
||||
codewhale-command-contract = { path = "../command-contract", version = "0.9.9" }
|
||||
codewhale-core = { path = "../core", version = "0.9.9" }
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.9.9" }
|
||||
codewhale-lane = { path = "../lane", version = "0.9.9" }
|
||||
codewhale-paths = { path = "../paths", version = "0.9.9" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.9" }
|
||||
codewhale-release = { path = "../release", version = "0.9.9" }
|
||||
codewhale-secrets = { path = "../secrets", version = "0.9.9" }
|
||||
codewhale-telemetry = { path = "../telemetry", version = "0.9.9" }
|
||||
codewhale-tools = { path = "../tools", version = "0.9.9" }
|
||||
codewhale-workflow = { path = "../workflow", version = "0.9.9" }
|
||||
codewhale-workflow-js = { path = "../workflow-js", version = "0.9.9" }
|
||||
codewhale-config = { path = "../config", version = "0.9.10" }
|
||||
codewhale-command-contract = { path = "../command-contract", version = "0.9.10" }
|
||||
codewhale-core = { path = "../core", version = "0.9.10" }
|
||||
codewhale-execpolicy = { path = "../execpolicy", version = "0.9.10" }
|
||||
codewhale-lane = { path = "../lane", version = "0.9.10" }
|
||||
codewhale-paths = { path = "../paths", version = "0.9.10" }
|
||||
codewhale-protocol = { path = "../protocol", version = "0.9.10" }
|
||||
codewhale-release = { path = "../release", version = "0.9.10" }
|
||||
codewhale-secrets = { path = "../secrets", version = "0.9.10" }
|
||||
codewhale-telemetry = { path = "../telemetry", version = "0.9.10" }
|
||||
codewhale-tools = { path = "../tools", version = "0.9.10" }
|
||||
codewhale-workflow = { path = "../workflow", version = "0.9.10" }
|
||||
codewhale-workflow-js = { path = "../workflow-js", version = "0.9.10" }
|
||||
schemaui = { version = "0.12.0", default-features = false, optional = true }
|
||||
async-stream = "0.3.6"
|
||||
async-trait.workspace = true
|
||||
@@ -108,7 +108,7 @@ shell-words = "1.1.1"
|
||||
mimalloc.workspace = true
|
||||
|
||||
[build-dependencies]
|
||||
codewhale-build-support = { path = "../build-support", version = "0.9.9" }
|
||||
codewhale-build-support = { path = "../build-support", version = "0.9.10" }
|
||||
|
||||
[dev-dependencies]
|
||||
cucumber = "0.23.0"
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "codewhale-vscode",
|
||||
"version": "0.9.9",
|
||||
"version": "0.9.10",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "codewhale-vscode",
|
||||
"version": "0.9.9",
|
||||
"version": "0.9.10",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@types/node": "^20.19.27",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "codewhale-vscode",
|
||||
"displayName": "CodeWhale",
|
||||
"description": "Official CodeWhale VS Code integration scaffold for local runtime attach and terminal launch.",
|
||||
"version": "0.9.9",
|
||||
"version": "0.9.10",
|
||||
"publisher": "codewhale",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "codewhale",
|
||||
"version": "0.9.9",
|
||||
"version": "0.9.10",
|
||||
"codewhaleBinaryVersion": "0.9.9",
|
||||
"description": "Terminal coding agent for supported hosted and local models. One runtime on your machine. Rust, MIT.",
|
||||
"author": "Hmbown",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@codewhale/runtime-sdk",
|
||||
"version": "0.9.9",
|
||||
"version": "0.9.10",
|
||||
"description": "Typed JavaScript helpers for Codewhale Runtime API Fleet endpoints.",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
|
||||
Generated
+2
-2
@@ -1559,7 +1559,7 @@
|
||||
}
|
||||
},
|
||||
"npm/codewhale": {
|
||||
"version": "0.9.9",
|
||||
"version": "0.9.10",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
@@ -1600,7 +1600,7 @@
|
||||
},
|
||||
"npm/runtime-sdk": {
|
||||
"name": "@codewhale/runtime-sdk",
|
||||
"version": "0.9.9",
|
||||
"version": "0.9.10",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
# Uses prebuilt release binaries instead of a Rust build.
|
||||
set -euo pipefail
|
||||
|
||||
RELEASE_TAG="${RELEASE_TAG:-v0.9.9}"
|
||||
RELEASE_TAG="${RELEASE_TAG:-v0.9.10}"
|
||||
REPO_URL="${REPO_URL:-https://github.com/Hmbown/CodeWhale.git}"
|
||||
REPO_BRANCH="${REPO_BRANCH:-main}"
|
||||
SECRETS_FILE="${SECRETS_FILE:-/tmp/cw-secrets.env}"
|
||||
|
||||
@@ -27,10 +27,10 @@ export interface RepoFacts {
|
||||
}
|
||||
|
||||
export const FACTS: RepoFacts = {
|
||||
"generatedAt": "2026-08-18T14:31:14.072Z",
|
||||
"generatedAt": "2026-08-18T23:18:11.237Z",
|
||||
"sourceRevision": null,
|
||||
"sourceCommittedAt": null,
|
||||
"version": "0.9.9",
|
||||
"version": "0.9.10",
|
||||
"crates": [
|
||||
"agent",
|
||||
"app-server",
|
||||
|
||||
Reference in New Issue
Block a user