Skip to content

Commit faa860c

Browse files
CodeWhale Botclaude
andcommitted
chore(changelog): rebase onto main, fold the duplicate section, regenerate derived changelogs
Rebased the batch onto main after #5957/#5958/#5960/#5962/#5967 landed. The merged [Unreleased] section had grown a second '### Changed' header from the two-sided conflict resolution; folded into one. Regenerated crates/tui/CHANGELOG.md (sync-changelog.sh) and web/lib/changelog.generated.ts (derive-changelog.mjs) so Version drift and the web changelog test pass. cargo check -p codewhale-tui --lib --tests: clean. check-feature-release-notes.sh v0.9.12 HEAD: OK. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJrzNAmppg4vt3LNJbaeri Signed-off-by: CodeWhale Bot <bot@codewhale.net>
1 parent 543b6e8 commit faa860c

3 files changed

Lines changed: 85 additions & 22 deletions

File tree

CHANGELOG.md

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3030
answerable work and no longer inflates the `blocked` chip; the receipts
3131
roster and the wire `state` gain `parked` (#5906, #5921).
3232

33+
34+
- `codewhale account keys set|remove|list` no longer carry a hardcoded
35+
eight-provider list. Provider ids come from the control plane's public
36+
catalog (`GET /api/model-providers`), are validated locally against
37+
`^[a-z0-9][a-z0-9-]{0,63}$` before they reach a URL path, and `list` shows
38+
every catalog provider with its label and stored-key state. `--from-local`
39+
maps a catalog row onto the local runtime provider through the catalog's own
40+
`runtimeProvider` field, so a newly supported provider needs no CLI release.
41+
3342
### Fixed
3443

3544
- The posture bar states how long the session has been working and how long
@@ -109,16 +118,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
109118
only changes and deletions — so remote builds and tests run on the files
110119
just edited locally and their outputs persist across commands.
111120

112-
### Changed
113-
114-
- `codewhale account keys set|remove|list` no longer carry a hardcoded
115-
eight-provider list. Provider ids come from the control plane's public
116-
catalog (`GET /api/model-providers`), are validated locally against
117-
`^[a-z0-9][a-z0-9-]{0,63}$` before they reach a URL path, and `list` shows
118-
every catalog provider with its label and stored-key state. `--from-local`
119-
maps a catalog row onto the local runtime provider through the catalog's own
120-
`runtimeProvider` field, so a newly supported provider needs no CLI release.
121-
122121
## [0.9.12] - 2026-09-03
123122

124123
Codewhale v0.9.12 puts computer use in the binary, opens two new routes —

crates/tui/CHANGELOG.md

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3030
answerable work and no longer inflates the `blocked` chip; the receipts
3131
roster and the wire `state` gain `parked` (#5906, #5921).
3232

33+
34+
- `codewhale account keys set|remove|list` no longer carry a hardcoded
35+
eight-provider list. Provider ids come from the control plane's public
36+
catalog (`GET /api/model-providers`), are validated locally against
37+
`^[a-z0-9][a-z0-9-]{0,63}$` before they reach a URL path, and `list` shows
38+
every catalog provider with its label and stored-key state. `--from-local`
39+
maps a catalog row onto the local runtime provider through the catalog's own
40+
`runtimeProvider` field, so a newly supported provider needs no CLI release.
41+
3342
### Fixed
3443

3544
- The posture bar states how long the session has been working and how long
@@ -67,8 +76,49 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6776
`workers`, `help`); every other verb stays dispatchable and is documented
6877
under explicit groups in `/fleet help`. The roster no longer shows the
6978
untouched built-in `general` alias next to `worker` (#5888).
70-
71-
## [0.9.12] - 2026-09-04
79+
- `codewhale` provider: account-backed model access over the provider keys a
80+
customer connected to their Codewhale account. One base URL
81+
(`https://api.codewhale.net/v1`, overridable with `CODEWHALE_API_BASE`;
82+
HTTPS required except on loopback), one `cwc_key_…` account API key with the
83+
`models:infer` scope (`CODEWHALE_API_KEY`), and a per-model wire chosen from
84+
the account's authenticated `GET /v1/models`: ids are `provider/model` and
85+
each row states `chat-completions` (`/v1/chat/completions`) or
86+
`anthropic-messages` (`/v1/messages`). Both protocols authenticate with
87+
`Authorization: Bearer`, never `x-api-key`. The key is read from
88+
`CODEWHALE_API_KEY`, the `codewhale` secret-store slot, or
89+
`[providers.codewhale] api_key` / `api_key_env`, and a missing key fails
90+
before any request instead of dispatching unauthenticated. If the catalog
91+
cannot be fetched the route falls back to three bootstrap ids and says so.
92+
- `codewhale account api-keys create --scope` now accepts `models:infer`
93+
alongside `account:read` and `agent:run`, and an omitted `--scope` sends all
94+
three explicitly. `--use` saves the new secret as this machine's local
95+
`codewhale` provider credential in the same secret store `codewhale auth`
96+
uses; nothing is uploaded.
97+
- `sandbox_backend = "shannon"`: shell commands run as signed ShannonNet
98+
capability invocations (`cap://sandbox/exec`) on a worker that may live on
99+
another tailnet node. Codewhale opens a Task World per session for its
100+
durable `codewhale` Agent and every command leaves a receipt in
101+
`shannon trace`. New keys `sandbox_shannon_home` and
102+
`sandbox_shannon_capability`; tool metadata now reports the actual
103+
external backend kind instead of always `opensandbox`.
104+
- `/shannon [world|trace|children]` inspects the session's ShannonNet
105+
World: agent, projected capabilities, children, and receipts.
106+
- ShannonNet sub-agents get compiled context: the session's native-memory
107+
hits are imported with provenance and the child's projected World decides
108+
what it sees (confidential notes never cross); the session World is
109+
checkpointed and closed when the backend drops.
110+
- Sub-agents under delegated authority: with the ShannonNet backend the
111+
`agent` tool spawns a child identity with a World projected from the
112+
session World, the child's shell commands are signed as that child, and a
113+
join receipt is recorded when it finishes. `SandboxBackend::for_child` /
114+
`child_joined` default to sharing the parent backend for other backends.
115+
- Workspace sync for the ShannonNet backend (`sandbox_shannon_sync`, default
116+
on): the session's non-ignored files are shipped into the worker's
117+
per-World session container before each command — full tree first, then
118+
only changes and deletions — so remote builds and tests run on the files
119+
just edited locally and their outputs persist across commands.
120+
121+
## [0.9.12] - 2026-09-03
72122

73123
Codewhale v0.9.12 puts computer use in the binary, opens two new routes —
74124
Alibaba Model Studio through the data-driven provider table and Concentrate

web/lib/changelog.generated.ts

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,26 +27,40 @@ export const CHANGELOG: ChangelogRelease[] = [
2727
"unreleased": true,
2828
"compareUrl": "https://github.com/Hmbown/CodeWhale/compare/v0.9.12...HEAD",
2929
"sections": [
30+
{
31+
"heading": "Changed",
32+
"items": [
33+
"/statusline drives the bottom chrome again. Since the 0.9.12 shell redesign the posture bar and the metrics line were built independently of tui.status_items, so every toggle in the picker except the balance fetch was decoration. Each remaining item now shows or hides exactly one thing: model, context_percent, cost, balance, cache, tokens and session_metrics are metrics-line segments, and mode is the posture bar's plan/act/operate chip. The status, agents, reasoning_replay,…",
34+
"The context reading is back on screen at every fullness. 0.9.12 painted ctx NN% only from 50% up, which left most of a session with no context signal at all; it now paints from 0% and keeps its warning colour from 80% up (#5950).",
35+
"A child agent parked because its parent's turn ended is shown as parked in the Agents panel, the sidebar and Agent Details, with resume_from / cancel as the recovery, instead of wearing the same \"waiting for input\" label as a child that asked a question. Parked work sorts below live and answerable work and no longer inflates the blocked chip; the receipts roster and the wire state gain parked (#5906, #5921).",
36+
"codewhale account keys set|remove|list no longer carry a hardcoded eight-provider list. Provider ids come from the control plane's public catalog (GET /api/model-providers), are validated locally against ^[a-z0-9][a-z0-9-]{0,63}$ before they reach a URL path, and list shows every catalog provider with its label and stored-key state. --from-local maps a catalog row onto the local runtime provider through the catalog's own runtimeProvider field, so a newly supported provider…"
37+
],
38+
"itemCount": 4
39+
},
40+
{
41+
"heading": "Fixed",
42+
"items": [
43+
"The posture bar states how long the session has been working and how long the current turn has run, distinguishing actively working from waiting on a tool, a sub-agent or the operator; the 0.9.12 shell had dropped the overall working-time indicator from the place a glancing user checks (#5914)."
44+
],
45+
"itemCount": 1
46+
},
3047
{
3148
"heading": "Added",
3249
"items": [
3350
"The /theme picker now discovers valid user-authored custom:<name> overlays, previews their colors, highlights the active overlay, and preserves it when the picker is opened and committed without navigation (#5901).",
51+
"Compaction has two standing knobs next to [context] in config.toml: [compaction] summary_instructions (appended to the summarizer prompt on every manual and automatic pass; /compact <focus> still composes after it) and [compaction] retained_user_message_tokens (default 20 000, clamped 2 000..=200 000) for the verbatim user-message budget. Both are absent by default and absent means the pre-existing behavior. The /compact receipt names the effective budget and whether…",
52+
"[tools] user_input_max_questions (default 6, 1..=10) and [tools] user_input_max_options (default 4, 2..=10) replace the hard-coded request_user_input limits; the validator, the tool schema and its description read one value, spawned children inherit the parent's ceilings, and a rejected payload names the ceiling it hit and the key to raise (#5949).",
53+
"The slash menu shows a command's usage line and its subcommands as soon as a space is typed after the verb, filtered by what follows, so Tab completes /workspace wor to /workspace worktrees; /help states the focused command's usage in its detail slot (#5952).",
54+
"The three /fleet views (roster, live workers, saved teams) are one back-navigable stack: Esc in workers or saved teams returns to the roster with its cursor intact and still closes the window at the root or on direct entry; the Esc footer hint says back or close accordingly (#5954).",
55+
"/fleet presents its prioritized core (members, setup, teams, workers, help); every other verb stays dispatchable and is documented under explicit groups in /fleet help. The roster no longer shows the untouched built-in general alias next to worker (#5888).",
3456
"codewhale provider: account-backed model access over the provider keys a customer connected to their Codewhale account. One base URL (https://api.codewhale.net/v1, overridable with CODEWHALE_API_BASE; HTTPS required except on loopback), one cwc_key_… account API key with the models:infer scope (CODEWHALE_API_KEY), and a per-model wire chosen from the account's authenticated GET /v1/models: ids are provider/model and each row states chat-completions (/v1/chat/completions) or…",
3557
"codewhale account api-keys create --scope now accepts models:infer alongside account:read and agent:run, and an omitted --scope sends all three explicitly. --use saves the new secret as this machine's local codewhale provider credential in the same secret store codewhale auth uses; nothing is uploaded.",
3658
"sandbox_backend = \"shannon\": shell commands run as signed ShannonNet capability invocations (cap://sandbox/exec) on a worker that may live on another tailnet node. Codewhale opens a Task World per session for its durable codewhale Agent and every command leaves a receipt in shannon trace. New keys sandbox_shannon_home and sandbox_shannon_capability; tool metadata now reports the actual external backend kind instead of always opensandbox.",
3759
"/shannon [world|trace|children] inspects the session's ShannonNet World: agent, projected capabilities, children, and receipts.",
3860
"ShannonNet sub-agents get compiled context: the session's native-memory hits are imported with provenance and the child's projected World decides what it sees (confidential notes never cross); the session World is checkpointed and closed when the backend drops.",
39-
"Sub-agents under delegated authority: with the ShannonNet backend the agent tool spawns a child identity with a World projected from the session World, the child's shell commands are signed as that child, and a join receipt is recorded when it finishes. SandboxBackend::for_child / child_joined default to sharing the parent backend for other backends.",
40-
"Workspace sync for the ShannonNet backend (sandbox_shannon_sync, default on): the session's non-ignored files are shipped into the worker's per-World session container before each command — full tree first, then only changes and deletions — so remote builds and tests run on the files just edited locally and their outputs persist across commands."
61+
"Sub-agents under delegated authority: with the ShannonNet backend the agent tool spawns a child identity with a World projected from the session World, the child's shell commands are signed as that child, and a join receipt is recorded when it finishes. SandboxBackend::for_child / child_joined default to sharing the parent backend for other backends."
4162
],
42-
"itemCount": 8
43-
},
44-
{
45-
"heading": "Changed",
46-
"items": [
47-
"codewhale account keys set|remove|list no longer carry a hardcoded eight-provider list. Provider ids come from the control plane's public catalog (GET /api/model-providers), are validated locally against ^[a-z0-9][a-z0-9-]{0,63}$ before they reach a URL path, and list shows every catalog provider with its label and stored-key state. --from-local maps a catalog row onto the local runtime provider through the catalog's own runtimeProvider field, so a newly supported provider…"
48-
],
49-
"itemCount": 1
63+
"itemCount": 13
5064
}
5165
]
5266
},

0 commit comments

Comments
 (0)