Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
172 commits
Select commit Hold shift + click to select a range
24a174b
refactor(tui): extract tool call stages
bistack Aug 20, 2026
422701d
feat(FEAT-018): add presentation/media capabilities and digest to com…
Aug 20, 2026
091aa86
test(FEAT-018): lock no-raw-key contract in translation failure test …
Aug 20, 2026
85648c4
feat(FEAT-018): implement TUI host presentation/media/digest adapters
Aug 20, 2026
4769997
fix(FEAT-018): scope Locale import to test module only (zero warnings)
Aug 20, 2026
8cf8a69
feat(tui): add multi-file read_lints operation
wuisabel-gif Aug 20, 2026
3da1370
feat(FEAT-018): convert all seven utility handlers to portable contra…
Aug 20, 2026
5bf5107
feat(FEAT-018): shrink migration frontier and integrate portable util…
Aug 20, 2026
ccdb779
test(FEAT-018): close acceptance-matrix gaps for attach video and net…
Aug 20, 2026
b8c3bbf
test(FEAT-018): fix pre-existing eval-harness timing flake (nanosecon…
Aug 20, 2026
fe4cf11
ci(nightly): give rustc's codegen threads enough stack on every target
Hmbown Aug 20, 2026
2e417dd
fix(tui): stop granting shell network access just for writing the wor…
Hmbown Aug 20, 2026
a00ef3a
fix(prompts): bound project instructions and stop importing other age…
Hmbown Aug 20, 2026
9db5a38
chore(web): refresh generated tool facts
wuisabel-gif Aug 20, 2026
c2946e6
fix(tui): wrap onboarding text in scripts that have no spaces
Hmbown Aug 20, 2026
25a22f5
refactor(core)!: delete the placeholder engine tree so one turn loop …
Hmbown Aug 20, 2026
294ae5a
fix(app-server)!: run real turns for /prompt instead of echoing the r…
Hmbown Aug 20, 2026
96478e1
fix(app-server)!: refuse SubmitUserInput instead of discarding the an…
Hmbown Aug 20, 2026
97ff6ac
chore(changelog): sync the tui slice for the v0.9.11 entries
Hmbown Aug 20, 2026
b8b73e1
ci(nightly): keep the legacy binary name out of nightly.yml
Hmbown Aug 20, 2026
2e5464f
feat(tui)!: make agent the only model-visible sub-agent tool
Hmbown Aug 20, 2026
a08919e
refactor(core): close the message role set into a typed Role enum
Hmbown Aug 20, 2026
5fd5c6c
fix(tui): keep read_lints inside lsp catalog
wuisabel-gif Aug 20, 2026
11c75f2
refactor(tui): move the coordination ledger into its own module
Hmbown Aug 20, 2026
05123a1
refactor(tui): decide role placement once, and reject bad pairs at th…
Hmbown Aug 20, 2026
4e28b70
refactor(tui): list cloud-code's rejected placements instead of catch…
Hmbown Aug 20, 2026
41b78fa
Merge branch 'codex/v0911-prompt-route-20260820' into tmp/v0911-dryrun
Aug 20, 2026
2ba6165
Merge branch 'codex/v0911-agent-surface-20260820' into tmp/v0911-dryrun
Hmbown Aug 20, 2026
e6800db
Merge branch 'codex/v0911-typed-roles-20260820' into tmp/v0911-dryrun
Hmbown Aug 20, 2026
4c3a60e
fix(tui): stop stretching an absolute path across the idle screen
Hmbown Aug 20, 2026
65e1d7d
fix(tui): give the idle caption a margin that survives a wide terminal
Hmbown Aug 20, 2026
afcad80
fix(tui): give the ambient aquarium a habitat that defers to the comp…
Hmbown Aug 20, 2026
7a271e2
fix(tui): stop the header from saying everything at one weight
Hmbown Aug 20, 2026
36e8767
fix(tui): make the jellyfish read as a bell instead of loose punctuation
Hmbown Aug 20, 2026
d74f159
fix(tui): give the status rail a grammar instead of a run-on sentence
Hmbown Aug 20, 2026
0f169b4
fix(tui): let severity, not mere presence, decide what the rail gives up
Hmbown Aug 20, 2026
fcbe889
fix(tui): never print "Full Access" without saying what it can reach
Hmbown Aug 20, 2026
fee18ec
Merge branch 'codex/v0911-ui-rail-20260820' into codex/v0911-integrat…
Aug 20, 2026
ad92188
Merge branch 'codex/v0911-ui-chrome-20260820' into codex/v0911-integr…
Aug 20, 2026
777cbd5
fix(tui): stop the trust screen from cutting its own question in half
Hmbown Aug 20, 2026
e3256ba
fix(cli): render shell completions from the CLI's own command tree
Hmbown Aug 20, 2026
b7158ed
docs(install): document how to generate and install shell completions
Hmbown Aug 20, 2026
910c172
test(tui): rebuild the history-cell suite around properties, not glyphs
Hmbown Aug 20, 2026
3efe17a
fix(tui): wrap onboarding headings, which are sentences in most locales
Hmbown Aug 20, 2026
da7ff65
fix(tui): stop /status reporting the half of itself that says nothing
Hmbown Aug 20, 2026
23b99fc
fix(tui): make /help shed fields instead of advertising what it cut
Hmbown Aug 20, 2026
02f6e09
refactor(lint): expect dead_code on the AGENTS.md guardrail modules
Hmbown Aug 20, 2026
7bc5ccf
feat(tui): port pi-mono's credential store contract
Hmbown Aug 20, 2026
b616073
feat(tui): resolve provider credentials through one sourced resolver
Hmbown Aug 20, 2026
ba19a15
feat(tui): make the provider picker say where it looked for a key
Hmbown Aug 20, 2026
cdc5409
refactor(lint): expect dead_code in tokens, hotbar actions, and events
Hmbown Aug 20, 2026
913fcaf
chore(lint): record CI -Dwarnings in [workspace.lints]
Hmbown Aug 20, 2026
2bd4813
docs(changelog): note the dead_code expect conversion and workspace l…
Hmbown Aug 20, 2026
e150c0e
fix(cli): register the codew shorthand in Elvish completions
Hmbown Aug 20, 2026
494bbf7
docs(changelog): name every CLI command the forwarded TUI tree omitted
Hmbown Aug 20, 2026
ccc0fc7
docs: stop calling codewhale-tui a separately published release artifact
Hmbown Aug 20, 2026
5c0a1b0
chore(changelog): sync the tui slice for the completion honesty edits
Hmbown Aug 20, 2026
b93ec8a
test(tui): close three measured history-suite coverage holes
Hmbown Aug 20, 2026
2b19dee
feat(config): add one shared RFC 8628 device-code polling primitive
Hmbown Aug 20, 2026
3e6647c
fix(client): keep in-history system turns on the Responses wire
Hmbown Aug 20, 2026
df07478
fix(web): mark one nav link, not two, as the current page
Hmbown Aug 20, 2026
03902c1
fix(client): stop emitting role "system" on the Anthropic Messages wire
Hmbown Aug 20, 2026
cd836a1
fix(web): honour Accept-Language q weights in locale detection
Hmbown Aug 20, 2026
d1fac6e
fix(web): stop cutting GitHub titles through the middle of a character
Hmbown Aug 20, 2026
341bfbe
fix(tools): bound the preserved-summary block by bytes, not line count
Hmbown Aug 20, 2026
1b2ae5c
fix(client): keep the rate-limiter deficit so queued waiters do not s…
Hmbown Aug 20, 2026
1f4e043
fix(web): highlight search matches using the source string's own indices
Hmbown Aug 20, 2026
c928377
refactor(tui): make xAI device login a thin caller of the shared poller
Hmbown Aug 20, 2026
c141807
fix(config): redact spaced secret assignments that follow prose on a …
Hmbown Aug 20, 2026
e89ecae
fix(tools): wrap web page text by display width, not byte length
Hmbown Aug 20, 2026
0f34234
refactor(cli): fold the account device poller into the shared primitive
Hmbown Aug 20, 2026
501cccf
fix(config): stop deleting a non-table `extras` key on every config w…
Hmbown Aug 20, 2026
8e10584
fix(config): score prompt length in characters, not UTF-8 bytes
Hmbown Aug 20, 2026
b923884
fix(tools): stop the bash tool advertising a default timeout it does …
Hmbown Aug 20, 2026
3b87d42
fix(mcp): hash MCP config by content, not HashMap iteration order
Hmbown Aug 20, 2026
3881254
fix(config): strip userinfo from a scheme-less base URL before finger…
Hmbown Aug 20, 2026
8d5ec88
docs(changelog): record the three tool-lane truncation and contract f…
Hmbown Aug 20, 2026
82671db
fix(mcp): stop the required-server marker from burying the real failure
Hmbown Aug 20, 2026
976a8e4
fix(client): drain buffered SSE lines instead of stranding them at th…
Hmbown Aug 20, 2026
2bb294e
docs(changelog): note the shared device-code primitive and the URI check
Hmbown Aug 20, 2026
22d70db
refactor(tui): build the xAI OAuth HTTP client in one place
Hmbown Aug 20, 2026
7957508
fix(tui): stop xAI OAuth types from printing bearer material via Debug
Hmbown Aug 20, 2026
ddd4e17
fix(mcp): disconnect a connection whose transport write side died
Hmbown Aug 20, 2026
749d915
fix(mcp): a response with neither result nor error is not a success
Hmbown Aug 20, 2026
f8e6870
docs(changelog): record the four MCP lifecycle and reporting fixes
Hmbown Aug 20, 2026
283effa
fix(runtime): treat a whole-workspace Fleet write claim as overlapping
Hmbown Aug 20, 2026
be16dd0
fix(runtime): search every thread, not only the newest `limit`, in th…
Hmbown Aug 20, 2026
194f0bd
fix(runtime): give seeded session records a total order
Hmbown Aug 20, 2026
7341acd
docs(changelog): record the two OAuth security fixes and their behavi…
Hmbown Aug 20, 2026
c81d43e
Merge branch 'codex/v0911-sw-client-20260820' into codex/v0911-integr…
Aug 20, 2026
dd4508c
Merge branch 'codex/v0911-sw-tools-20260820' into codex/v0911-integra…
Hmbown Aug 20, 2026
1cfc108
Merge branch 'codex/v0911-sw-mcp-20260820' into codex/v0911-integrati…
Hmbown Aug 20, 2026
82e3ac5
Merge branch 'codex/v0911-sw-web-20260820' into codex/v0911-integrati…
Aug 20, 2026
ff07eff
Merge branch 'codex/v0911-w3-testdebt-20260820' into codex/v0911-inte…
Aug 21, 2026
cc2db74
Merge branch 'codex/v0911-w3-completions-20260820' into codex/v0911-i…
Hmbown Aug 21, 2026
7608e51
fix(config): stop redacting token counts as if they were credentials
Hmbown Aug 21, 2026
b93124c
fix(tui): keep /help descriptions in scripts that have no spaces
Hmbown Aug 21, 2026
00a8daf
fix(tui): stop claiming xAI OAuth refresh holds no lock
Hmbown Aug 21, 2026
5e89a83
docs(changelog): declare base_url_fingerprint as a persisted-key change
Hmbown Aug 21, 2026
639b877
fix(runtime): stop summary search from loading every thread's transcript
Hmbown Aug 21, 2026
f0197fe
fix(tui): stop /help word-shed from dropping the head noun
Hmbown Aug 21, 2026
e60fa93
fix(tui): hold the credential write lock across logout too
Hmbown Aug 21, 2026
42df3ab
docs: correct the /status and /help density measurements
Hmbown Aug 21, 2026
d752600
docs(tui): drop the duplicated context_window_source comment
Hmbown Aug 21, 2026
95c8996
fix(tui): skip an unreadable credential slot instead of hiding the rest
Hmbown Aug 21, 2026
912d1aa
Merge branch 'codex/v0911-sw-config-20260820' into codex/v0911-integr…
Hmbown Aug 21, 2026
036e92d
Merge branch 'codex/v0911-sw-runtime-20260820' into codex/v0911-integ…
Hmbown Aug 21, 2026
d05b0f1
Merge branch 'codex/v0911-auth-port-20260820' into codex/v0911-integr…
Hmbown Aug 21, 2026
203034e
Merge branch 'codex/v0911-w3-density-20260820' into codex/v0911-integ…
Hmbown Aug 21, 2026
5a383df
fix(tui): say plainly that CredentialStore::delete is not on the logo…
Hmbown Aug 21, 2026
86f0d27
WIP feat(release): remember which version last launched
Hmbown Aug 21, 2026
339e2be
fix(tui): stop sending the output cap the Codex Responses backend rej…
Hmbown Aug 21, 2026
c7aacf9
fix(tui): classify unsupported-parameter 400s as invalid requests
Hmbown Aug 21, 2026
146cb0c
Merge branch 'pr-5525' into codex/v0911-integration-20260820
Hmbown Aug 21, 2026
c9a7b19
Merge branch 'pr-5524' into codex/v0911-integration-20260820
Hmbown Aug 21, 2026
eab0986
Merge branch 'pr-5523' into codex/v0911-integration-20260820
Hmbown Aug 21, 2026
e6cb1f0
test: assemble JWT fixtures at runtime so secret scanners stay quiet
Hmbown Aug 21, 2026
ce6623e
chore(config): drop redundant closures in device-code poll tests
Hmbown Aug 21, 2026
c93d213
fix(tui): auto-model readiness follows the route, not the literal 'au…
Hmbown Aug 21, 2026
160165c
fix(tui): focused sub-agent transcript scrolls like the main transcript
Hmbown Aug 21, 2026
81ac5eb
feat(tui): /rc becomes a shared-session mirror, not a terminal takeover
Hmbown Aug 21, 2026
b2b53d9
Merge branch 'codex/v0911-subagent-scroll-20260820' into codex/v0911-…
Aug 21, 2026
eadd3c0
docs(changelog): mirror mode, auto readiness, focused-transcript scro…
Hmbown Aug 21, 2026
049986b
fix(tui): explicit /rc failure states and identity-aware approval dis…
Hmbown Aug 21, 2026
de14f19
refactor(tui): begin ui composition-root split
Aug 21, 2026
6dcfd5c
feat(cli): make `login` mean Codewhale account sign-in
Hmbown Aug 21, 2026
10c480a
feat(secrets): account sessions fall back to the 0600 file store
Hmbown Aug 21, 2026
f1308bf
chore(tui): clear the clippy -Dwarnings debt on the integration line
Hmbown Aug 21, 2026
42e015b
Merge branch 'codex/v0911-tui-ui-split-20260820' into codex/v0911-int…
Aug 21, 2026
5861818
wip(update-chord): rescue orphaned Ctrl+Shift+U work from dead builders
Hmbown Aug 21, 2026
6c4b284
feat(models): add deepseek-v4-flash-vision-exp
Hmbown Aug 21, 2026
21ace73
test(fleet): isolate the broken-workspace-degrade roster test from th…
Hmbown Aug 21, 2026
aa53083
feat(cli): portable config bundles — import/export core
Hmbown Aug 21, 2026
16f9758
docs(config-bundles): CONFIGURATION.md section + changelog entry; fix…
Hmbown Aug 21, 2026
c0bcf11
docs(changelog): sync generated tui changelog
Hmbown Aug 21, 2026
265f626
Merge branch 'codex/v0911-config-bundles-20260820' into codex/v0911-i…
Aug 21, 2026
a32fd28
feat(tui): startup version-change hint completes the /update affordances
Hmbown Aug 21, 2026
8226a35
Merge branch 'codex/v0911-update-chord2-20260820' into codex/v0911-in…
Aug 21, 2026
8b9e311
feat(fleet): product-model copy pass — Fleet/Member/Role/Model/Access…
Hmbown Aug 21, 2026
9d0d327
feat(fleet): product-model copy pass phase 2 — picker, detail editor,…
Hmbown Aug 21, 2026
b88402e
i18n(fleet): real translations for the product-model copy pass in all…
Hmbown Aug 21, 2026
3b9915b
refactor(tui): extract the remote-control bridge from the composition…
Hmbown Aug 21, 2026
21a7caf
refactor(tui): extract observer hooks from the composition root
Hmbown Aug 21, 2026
8acd15f
refactor(tui): extract task and shell projection from the composition…
Hmbown Aug 21, 2026
2489423
refactor(tui): extract dispatch preparation from the composition root
Hmbown Aug 21, 2026
44cd64b
refactor(tui): extract compaction flow from the composition root
Hmbown Aug 21, 2026
0b053bb
refactor(tui): extract provider configuration from the composition root
Hmbown Aug 21, 2026
be125d5
refactor(tui): move context-pressure warnings into the compaction flo…
Hmbown Aug 21, 2026
8534e80
docs(tui): mark modularization slices 3-9 extracted
Hmbown Aug 21, 2026
372df90
fix(subagents): make turn caps explicit
Hmbown Aug 21, 2026
8a9234b
fix(agent): remove remaining hidden turn ceilings
Aug 21, 2026
f3ea03d
fix(workflow): surface rejected dispatches safely
Aug 21, 2026
6462327
docs: credit v0.9.11 community work
Aug 21, 2026
277cf21
release: assemble v0.9.11 non-benchmark candidate
Aug 22, 2026
87f8d9c
merge: integrate v0.9.11 dry-run candidate
Hmbown Aug 22, 2026
8f0a65c
fix(tui): fail closed on empty provider continuations
Hmbown Aug 22, 2026
f2f718f
fix(fleet): make selected teams authoritative
Aug 22, 2026
5ac490b
docs(release): record v0.9.11 Fleet receipts
Aug 22, 2026
6499943
fix(tui): restore all-features lint gate
Aug 22, 2026
9f7eea2
test(fleet): accept human role selectors
Aug 22, 2026
d909ae6
fix(mcp): order add-self workspace globally
Aug 22, 2026
d3cb1c7
fix(release): synchronize v0.9.11 credits
Aug 22, 2026
9a681a6
test(config): avoid scanner-shaped redaction fixtures
Aug 22, 2026
add169e
merge: reconstruct final v0.9.11 candidate without benchmark ancestry
Aug 22, 2026
d5bdf86
fix(web): keep new-thread focus contained
Aug 22, 2026
d7ceacc
fix(ci): satisfy Rust 1.98 lints
Aug 22, 2026
a7d5f01
fix(release): close final v0.9.11 gate defects
Aug 22, 2026
23fca25
fix(release): harden Windows release gates
Aug 22, 2026
959dbe4
fix(release): promote tested v0.9.11 nonbenchmark candidate
Aug 22, 2026
accfa93
fix(tui): keep runtime contract within budget
Aug 22, 2026
491a712
fix(release): address v0.9.11 review blockers
Aug 22, 2026
b38ecbf
fix(release): close v0.9.11 review threads
Aug 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .cnb.yml
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ $:
echo "ERROR: CNB_COMMIT ${commit_sha} does not match checkout ${checkout_sha}" >&2
exit 1
fi
export DEEPSEEK_BUILD_SHA="$commit_sha"
export CODEWHALE_BUILD_SHA="$commit_sha"
cargo build --jobs 2 --release --locked \
--target x86_64-unknown-linux-musl \
-p codewhale-cli # single binary
Expand Down
2 changes: 2 additions & 0 deletions .github/AUTHOR_MAP
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ angziii = angziii <177907677+angziii@users.noreply.github.com>
aboimpinto = aboimpinto <1231687+aboimpinto@users.noreply.github.com>
Paulo Aboim Pinto = aboimpinto <1231687+aboimpinto@users.noreply.github.com>
aboimpinto@gmail.com = aboimpinto <1231687+aboimpinto@users.noreply.github.com>
paulo.aboim.pinto@gmail.com = aboimpinto <1231687+aboimpinto@users.noreply.github.com>
encyc = encyc <62669951+encyc@users.noreply.github.com>
Duducoco = Duducoco <69681789+Duducoco@users.noreply.github.com>
cyq1017 = cyq1017 <61975706+cyq1017@users.noreply.github.com>
Expand All @@ -66,6 +67,7 @@ THINKER-ONLY = THINKER-ONLY <181556007+THINKER-ONLY@users.noreply.github.com>
nightt5879 = nightt5879 <87569709+nightt5879@users.noreply.github.com>
LmeSzinc = LmeSzinc <37934724+LmeSzinc@users.noreply.github.com>
Lstarsky0 = Lstarsky0 <59827030+Lstarsky0@users.noreply.github.com>
RepentStar = RepentStar <87593085+RepentStar@users.noreply.github.com>
CCChisato = Fushimi Rio <158128433+CCChisato@users.noreply.github.com>
aznikline = aznikline <27564626+aznikline@users.noreply.github.com>
Aznable = aznikline <27564626+aznikline@users.noreply.github.com>
Expand Down
6 changes: 3 additions & 3 deletions .github/scripts/release-workflows.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ assert.match(releaseStaticSmoke, /"\$\{bin_path\}" --version/);
const builtAssetNames = [
...valuesForKey(artifacts, "cli_artifact"),
...valuesForKey(artifacts, "shim_artifact"),
...valuesForKey(artifacts, "tui_artifact"),
...valuesForKey(artifacts, "compat_tui_artifact"),
];
assert.equal(builtAssetNames.length, 21);
assert.deepEqual(
Expand All @@ -242,7 +242,7 @@ assert.deepEqual(
);
assert.match(
artifacts,
/stage_binary "\$\{\{ matrix\.cli_binary \}\}" "\$\{\{ matrix\.tui_artifact \}\}"/,
/stage_binary "\$\{\{ matrix\.cli_binary \}\}" "\$\{\{ matrix\.compat_tui_artifact \}\}"/,
"legacy TUI bridge assets must be staged from the one compiled codewhale binary",
);
const bundleInvocations = [...bundles.matchAll(
Expand Down Expand Up @@ -463,7 +463,7 @@ assert.ok(cnbSmoke > cnbAlias, "CNB release preflight must materialize codew bef
const cnbTagRelease = cnb.match(/\$:\n tag_push:\n([\s\S]*)$/);
assert.ok(cnbTagRelease, "CNB must retain a tag release pipeline");
const cnbTagStamp = cnbTagRelease[1].indexOf(
'export DEEPSEEK_BUILD_SHA="$commit_sha"',
'export CODEWHALE_BUILD_SHA="$commit_sha"',
);
const cnbTagBuild = cnbTagRelease[1].indexOf(
"cargo build --jobs 2 --release --locked \\",
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ jobs:
workflow=true
;;
esac
# Mobile runtime surface: the `codewhale-tui serve --mobile`
# Mobile runtime surface: the `codewhale serve --mobile`
# HTTP/SSE stack that scripts/mobile-smoke.sh exercises. Pull
# requests run the smoke only when one of these changes; every
# push to main still runs it unconditionally as the pre-release
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
RUSTFLAGS: -Dwarnings
DEEPSEEK_BUILD_SHA: ${{ github.sha }}
CODEWHALE_BUILD_SHA: ${{ github.sha }}

jobs:
build:
Expand Down
26 changes: 13 additions & 13 deletions .github/workflows/release-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ env:
RUSTFLAGS: -Dwarnings
# Build identity is the trusted workflow SHA. Callers pass source_sha only
# so `pin` can refuse a mismatch; it must not retarget checkout or caches.
DEEPSEEK_BUILD_SHA: ${{ github.sha }}
CODEWHALE_BUILD_SHA: ${{ github.sha }}

jobs:
pin:
Expand Down Expand Up @@ -67,55 +67,55 @@ jobs:
shim_binary: codew
cli_artifact: codewhale-linux-x64
shim_artifact: codew-linux-x64
tui_artifact: codewhale-tui-linux-x64
compat_tui_artifact: codewhale-tui-linux-x64
- os: ubuntu-24.04-arm
target: aarch64-unknown-linux-musl
platform: linux-arm64
cli_binary: codewhale
shim_binary: codew
cli_artifact: codewhale-linux-arm64
shim_artifact: codew-linux-arm64
tui_artifact: codewhale-tui-linux-arm64
compat_tui_artifact: codewhale-tui-linux-arm64
- os: ubuntu-latest
target: aarch64-linux-android
platform: android-arm64
cli_binary: codewhale
shim_binary: codew
cli_artifact: codewhale-android-arm64
shim_artifact: codew-android-arm64
tui_artifact: codewhale-tui-android-arm64
compat_tui_artifact: codewhale-tui-android-arm64
- os: macos-latest
target: x86_64-apple-darwin
platform: macos-x64
cli_binary: codewhale
shim_binary: codew
cli_artifact: codewhale-macos-x64
shim_artifact: codew-macos-x64
tui_artifact: codewhale-tui-macos-x64
compat_tui_artifact: codewhale-tui-macos-x64
- os: macos-latest
target: aarch64-apple-darwin
platform: macos-arm64
cli_binary: codewhale
shim_binary: codew
cli_artifact: codewhale-macos-arm64
shim_artifact: codew-macos-arm64
tui_artifact: codewhale-tui-macos-arm64
compat_tui_artifact: codewhale-tui-macos-arm64
- os: windows-latest
target: x86_64-pc-windows-msvc
platform: windows-x64
cli_binary: codewhale.exe
shim_binary: codew.exe
cli_artifact: codewhale-windows-x64.exe
shim_artifact: codew-windows-x64.exe
tui_artifact: codewhale-tui-windows-x64.exe
compat_tui_artifact: codewhale-tui-windows-x64.exe
- os: windows-11-arm
target: aarch64-pc-windows-msvc
platform: windows-arm64
cli_binary: codewhale.exe
shim_binary: codew.exe
cli_artifact: codewhale-windows-arm64.exe
shim_artifact: codew-windows-arm64.exe
tui_artifact: codewhale-tui-windows-arm64.exe
compat_tui_artifact: codewhale-tui-windows-arm64.exe
runs-on: ${{ matrix.os }}
needs: pin
steps:
Expand Down Expand Up @@ -253,10 +253,10 @@ jobs:

stage_binary "${{ matrix.cli_binary }}" "${{ matrix.cli_artifact }}"
stage_binary "${{ matrix.shim_binary }}" "${{ matrix.shim_artifact }}"
# One-release compatibility bridge for v0.9.4's hard-coded release
# Compatibility bridge for v0.9.4's hard-coded release
# completeness/updater contract. This is the same runtime, not a
# separately compiled TUI binary.
stage_binary "${{ matrix.cli_binary }}" "${{ matrix.tui_artifact }}"
# separately compiled or installed TUI command.
stage_binary "${{ matrix.cli_binary }}" "${{ matrix.compat_tui_artifact }}"
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: ${{ matrix.cli_artifact }}
Expand All @@ -273,8 +273,8 @@ jobs:
overwrite: true
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: ${{ matrix.tui_artifact }}
path: ${{ matrix.tui_artifact }}
name: ${{ matrix.compat_tui_artifact }}
path: ${{ matrix.compat_tui_artifact }}
if-no-files-found: error
retention-days: ${{ inputs.retention_days }}
overwrite: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-republish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ jobs:
platforms: linux/amd64,linux/arm64
push: true
build-args: |
DEEPSEEK_BUILD_SHA=${{ needs.resolve.outputs.sha }}
CODEWHALE_BUILD_SHA=${{ needs.resolve.outputs.sha }}
tags: |
${{ steps.image.outputs.name }}:${{ needs.resolve.outputs.tag }}
${{ steps.image.outputs.name }}:${{ needs.resolve.outputs.version }}
Expand Down
25 changes: 20 additions & 5 deletions .winget/Hmbown.CodeWhale.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Hmbown.CodeWhale — winget singleton manifest for CodeWhale (single binary)
# This is a mirror of packaging/winget/Hmbown.CodeWhale.yaml for tooling that expects .winget/.
# Keep both in sync; the canonical source is packaging/winget/Hmbown.CodeWhale.yaml.
# See packaging/winget/README.md for update instructions.
# PackageIdentifier follows the publisher convention used by the Homebrew formula (codewhale).
# Canonical maintenance instructions live in packaging/winget/README.md; the generator mirrors these exact bytes to .winget/.
# Winget installs only `codewhale` + `codew`; compatibility release filenames are not installed commands.

PackageIdentifier: Hmbown.CodeWhale
PackageVersion: 0.9.6
Expand All @@ -19,10 +19,10 @@ LicenseUrl: https://github.com/Hmbown/CodeWhale/blob/main/LICENSE
Copyright: Copyright (c) Hmbown
ShortDescription: Terminal coding agent for supported hosted and local models
Description: |
CodeWhale is a terminal coding agent that runs on your machine. The v0.9.5 single-binary
CodeWhale is a terminal coding agent that runs on your machine. The v0.9.5+ single-binary
release ships one `codewhale` binary per target (plus the `codew` shim) across Linux x64 (musl),
Linux arm64, Android arm64, macOS x64/arm64, and Windows x64/arm64. See https://github.com/Hmbown/CodeWhale
for provider setup, Fleet workflows, and the full install guide.
for provider setup, Fleet workflows, and the full install guide (docs/INSTALL.md).
Author: Hmbown
Moniker: codewhale
Tags:
Expand All @@ -37,16 +37,31 @@ Tags:
MinimumOSVersion: 10.0.0.0
ReleaseNotes: https://github.com/Hmbown/CodeWhale/releases/tag/v0.9.6
ReleaseNotesUrl: https://github.com/Hmbown/CodeWhale/releases/tag/v0.9.6
InstallationNotes: |
The winget package installs the Windows binaries. For the NSIS installer (CodeWhaleSetup.exe)
the installer adds %LOCALAPPDATA%\Programs\CodeWhale\bin to the user PATH. For the portable
ZIP, winget extracts codewhale.exe and codew.exe side-by-side and adds the install location to PATH.
Verify checksums with codewhale-artifacts-sha256.txt from the same GitHub Release.
Documentations:
- DocumentLabel: Install guide
DocumentUrl: https://github.com/Hmbown/CodeWhale/blob/main/docs/INSTALL.md
- DocumentLabel: Releases
DocumentUrl: https://github.com/Hmbown/CodeWhale/releases

Installers:
# Preferred: NSIS installer for Windows x64 (per-user, no elevation, adds user PATH).
- Architecture: x64
InstallerType: nullsoft
Scope: user
InstallerUrl: https://github.com/Hmbown/CodeWhale/releases/download/v0.9.6/CodeWhaleSetup.exe
InstallerSha256: 040afa01a70ddae4ea7783e563bacd962a512b4d288ee5c5c5111ef2760755a7
ProductCode: CodeWhale
UpgradeBehavior: install
FileExtensions:
- toml
ReleaseDate: 2026-08-12
# Portable ZIP fallback — same single binary (codewhale.exe + codew.exe). Used when NSIS is blocked
# by policy or for winget's portable install flow. NestedInstallerType is portable (no installer).
- Architecture: x64
InstallerType: zip
Scope: user
Expand Down
6 changes: 6 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ instructions or memory. The nearest scoped `AGENTS.md` adds path-specific rules.
`agent_open`/`agent_eval`/`agent_close`/`delegate_to_agent` surfaces or parallel
lifecycle/tag systems.
- `BASE_PROMPT` in `crates/tui/src/prompts/text.rs` is the sole base prompt.
- There is exactly one turn loop: `Engine::run_turn` in
`crates/tui/src/core/engine/turn_loop.rs`. Note that `crates/tui/src/core/`
is a module inside the TUI crate — it is not `crates/core`, which owns
request construction, bounded fragments, and thread/session types and
runs no turns. Do not add a second loop beside the one that exists; a
guard test (`crates/core/tests/single_turn_loop.rs`) fails if you do.
- The system prompt + tool catalog are a session-pinned KV-cache prefix
(`docs/CACHE.md`). Any new session-context contributor must state its
KV-cache effect: frozen prefix vs. append-only history. Never splice a
Expand Down
Loading
Loading