Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
7ed6419
feat(tui): preserve thinking/tool blocks when seeding thread from ses…
gaord Jun 18, 2026
a326074
feat(tui): save ask rules from approvals
greyfreedom Jun 18, 2026
e32c245
fix(ci): stabilize verifier and provider checks
greyfreedom Jun 18, 2026
675f63b
fix(tests): isolate settings homes in ui tests
greyfreedom Jun 18, 2026
11df4e5
fix(cli): tear down delegated serve/app-server child on dispatcher ex…
wuisabel-gif Jun 18, 2026
9386374
Merge PR #3301: save ask permission rules from approvals
Hmbown Jun 19, 2026
827d3c3
fix(tui): keep onboarding marker in codewhale home
nightt5879 Jun 19, 2026
a31ef88
fix(tui): include huggingface api key env in auth probe
nightt5879 Jun 19, 2026
b615df4
Merge PR #3317: tear down delegated server child
Hmbown Jun 19, 2026
8df2d56
Merge PR #3300: preserve session thread blocks
Hmbown Jun 19, 2026
1fdf635
fix(tui): batch restored tool result messages
Hmbown Jun 19, 2026
f22b49a
fix(tui): gate user-turn authority by provenance
Hmbown Jun 19, 2026
ec56224
feat(tui): expose subagent config controls
Hmbown Jun 19, 2026
6532eb8
feat(tui): govern subagent token budgets
Hmbown Jun 19, 2026
28f4129
feat(tui): admit queued subagent fanout
Hmbown Jun 19, 2026
a915246
fix(app-server): require explicit auth off loopback
Hmbown Jun 19, 2026
634d27c
docs: sync tui changelog slice
Hmbown Jun 19, 2026
1b3e09b
feat(commands): replay FEAT-005 command extraction
Jun 19, 2026
432164c
fix(commands): use profile description metadata
Jun 19, 2026
338eb2f
fix(tui): enable js_execution proxy env
Hmbown Jun 19, 2026
9730e3d
fix(tui): retry Codex responses requests
Hmbown Jun 19, 2026
ea3f879
Merge PR #3330: replay FEAT-005 command extraction
Hmbown Jun 20, 2026
557db2a
fix(scripts): bound smoke-test curl health checks with --max-time
Hmbown Jun 20, 2026
9dc235d
fix(npm,docs): correct stale glibc messaging for static musl x64 asset
Hmbown Jun 20, 2026
3e2d34a
feat(whaleflow): add BudgetSpec.max_tokens + mock executor token budgets
Hmbown Jun 20, 2026
1319742
chore(deps): bump tokio 1.49 -> 1.50
Hmbown Jun 20, 2026
983f09e
style(whaleflow): rustfmt token-budget test assertions
Hmbown Jun 20, 2026
4a1eed0
fix(whaleflow): drop unused mut on token-budget leaf outcome
Hmbown Jun 20, 2026
cf4d1f7
chore(ci): bump GitHub Actions to latest majors (dependabot #3334-#3338)
Hmbown Jun 20, 2026
f447e58
fix(ci): generate web facts.generated before tsc --noEmit
Hmbown Jun 20, 2026
ba44845
feat(subagent): per-worker token-budget enforcement (#3321)
Hmbown Jun 20, 2026
44eedb0
fix(config): migrate legacy .deepseek state write-path (#3240)
Hmbown Jun 20, 2026
b1c5f51
fix(ci): unblock v0.8.63 release train checks
Hmbown Jun 20, 2026
9743d88
fix(tests): avoid logging session ids in acceptance panic
Hmbown Jun 20, 2026
1e5a699
fix(tui): keep wheel scroll in alt screen
Hmbown Jun 20, 2026
cef947d
fix(client): omit DeepSeek tool choice while thinking
Hmbown Jun 21, 2026
6e1ec70
fix(subagent): harden orchestration recovery
Hmbown Jun 21, 2026
66d5a6f
WIP: tune sub-agent provider limits
Hmbown Jun 21, 2026
a908835
WIP: steady sidebar and job shortcuts
Hmbown Jun 21, 2026
5cd6516
docs: refresh active agent guidance
Hmbown Jun 21, 2026
3f9afe6
fix(subagent): attribute child shell jobs
Hmbown Jun 21, 2026
e9ba0c8
fix(runtime): recover from benchmark tool detours
Hmbown Jun 21, 2026
765f7b1
fix(runtime): tighten noisy tool context budget
Hmbown Jun 21, 2026
555d1ea
fix(tui): scope Ctrl-X to task cancellation
Hmbown Jun 21, 2026
530622a
fix(tui): keep registry helper out of release lint gate
Hmbown Jun 21, 2026
5f0da25
docs: refresh release agent guidance
Hmbown Jun 21, 2026
9d68c60
test(tui): align subagent runtime contracts
Hmbown Jun 21, 2026
cfb95a3
chore(cli): allow format-args lint at crate boundary
Hmbown Jun 21, 2026
7764fc6
docs(web): clarify goal command behavior
Hmbown Jun 21, 2026
cfb779d
WIP: sync 0.8.63 release surfaces
Hmbown Jun 21, 2026
cbe2105
docs: complete v0.8.63 release notes
Hmbown Jun 21, 2026
c8ba956
WIP: add terminal-bench comparison runners
Hmbown Jun 21, 2026
07b6250
docs: sync subagent retry contract
Hmbown Jun 21, 2026
6a7a4a4
docs: clarify agent retry cutover state
Hmbown Jun 21, 2026
fda39dd
docs: sync install guide for v0.8.63
Hmbown Jun 21, 2026
f8c4d53
benchmarks: classify harness failures
Hmbown Jun 21, 2026
f98bae9
docs: credit v0.8.62 + v0.8.63 contributors
Hmbown Jun 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/approve-contributor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Open allowlist update PR
uses: actions/github-script@v7
uses: actions/github-script@v9
with:
script: |
const comment = context.payload.comment;
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/auto-close-harvested.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
close:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
# We need at least the commits that this push introduced.
# fetch-depth: 0 is the simplest correct option; the
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/auto-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
tag:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 0
# Prefer PAT so the resulting tag push triggers release.yml.
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ jobs:
name: Version drift
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- uses: actions/setup-node@v4
- uses: actions/setup-node@v6
with:
node-version: 20
- name: Check version drift
Expand All @@ -34,7 +34,7 @@ jobs:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: dtolnay/rust-toolchain@master
Expand Down Expand Up @@ -89,7 +89,7 @@ jobs:
# coverage CNB cannot provide.
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
if: runner.os != 'Linux'
- uses: dtolnay/rust-toolchain@stable
if: runner.os != 'Linux'
Expand Down Expand Up @@ -118,11 +118,11 @@ jobs:
matrix:
os: ${{ fromJSON(github.event_name == 'pull_request' && '["ubuntu-latest"]' || '["ubuntu-latest","macos-latest","windows-latest"]') }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
if: runner.os != 'Linux'
- uses: dtolnay/rust-toolchain@stable
if: runner.os != 'Linux'
- uses: actions/setup-node@v4
- uses: actions/setup-node@v6
if: runner.os != 'Linux'
with:
node-version: 20
Expand All @@ -145,7 +145,7 @@ jobs:
if: github.event_name != 'schedule'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- name: Install Linux system dependencies
run: |
Expand All @@ -167,7 +167,7 @@ jobs:
if: github.event_name == 'schedule'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- name: Install Linux system dependencies
if: runner.os == 'Linux'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/issue-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Welcome new external issue reporters
uses: actions/github-script@v7
uses: actions/github-script@v9
with:
script: |
const issue = context.payload.issue;
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ jobs:
artifact_name: codewhale-tui-windows-x64.exe
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
Expand Down Expand Up @@ -141,7 +141,7 @@ jobs:
artifact=${{ matrix.artifact_name }}
INFO
echo "name=${{ matrix.artifact_name }}-${short_sha}" >> "${GITHUB_OUTPUT}"
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v7
with:
name: ${{ steps.stage.outputs.name }}
path: nightly/*
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Gate unapproved external pull requests
uses: actions/github-script@v7
uses: actions/github-script@v9
with:
script: |
const pr = context.payload.pull_request;
Expand Down
26 changes: 13 additions & 13 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master
with:
toolchain: '1.88'
Expand Down Expand Up @@ -69,7 +69,7 @@ jobs:
source_ref: ${{ steps.release.outputs.source_ref }}
sha: ${{ steps.release.outputs.sha }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Resolve release source
Expand Down Expand Up @@ -166,7 +166,7 @@ jobs:
artifact_name: codewhale-tui-windows-x64.exe
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
ref: ${{ needs.resolve.outputs.source_ref }}
- uses: dtolnay/rust-toolchain@master
Expand Down Expand Up @@ -251,7 +251,7 @@ jobs:
exit 1
fi
cp "${BIN_PATH}" "${{ matrix.artifact_name }}"
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v7
with:
name: ${{ matrix.artifact_name }}
path: ${{ matrix.artifact_name }}
Expand All @@ -261,7 +261,7 @@ jobs:
if: ${{ !cancelled() && needs.build.result == 'success' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
ref: ${{ needs.resolve.outputs.source_ref }}
- uses: actions/download-artifact@v8
Expand Down Expand Up @@ -351,7 +351,7 @@ jobs:
cat "$MANIFEST"

- name: Upload bundle artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: codewhale-bundles
path: bundles/*
Expand All @@ -362,7 +362,7 @@ jobs:
if: ${{ !cancelled() && needs.build.result == 'success' }}
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
ref: ${{ needs.resolve.outputs.source_ref }}
- uses: actions/download-artifact@v8
Expand Down Expand Up @@ -393,7 +393,7 @@ jobs:
throw "CodeWhaleSetup.exe was not produced"
}
- name: Upload installer artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: CodeWhaleSetup.exe
path: scripts/installer/CodeWhaleSetup.exe
Expand All @@ -408,12 +408,12 @@ jobs:
packages: write
steps:
- name: Checkout release source
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
ref: ${{ needs.resolve.outputs.source_ref }}
path: source
- name: Checkout release infrastructure
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
path: infra
- name: Set up QEMU
Expand All @@ -432,7 +432,7 @@ jobs:
run: echo "name=ghcr.io/${GITHUB_REPOSITORY,,}" >> "$GITHUB_OUTPUT"
- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@v6
with:
images: |
${{ steps.image.outputs.name }}
Expand Down Expand Up @@ -476,7 +476,7 @@ jobs:
steps:
# Checked out into a subdirectory so it cannot clobber the downloaded
# artifacts; used for the release-body generator and the CHANGELOG.
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
ref: ${{ needs.resolve.outputs.tag }}
path: repo
Expand Down Expand Up @@ -547,7 +547,7 @@ jobs:
fi
# Checkout main (not the tag) so the release-infra script is always
# available, even for tags created before this workflow was added.
- uses: actions/checkout@v4
- uses: actions/checkout@v7
if: steps.homebrew-token.outputs.available == 'true'
with:
ref: main
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/spam-lockdown.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Auto-close spam patterns from new accounts
uses: actions/github-script@v7
uses: actions/github-script@v9
with:
script: |
const issue = context.payload.issue;
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sync-cnb.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 0

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/triage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Auto-label by title and body
uses: actions/github-script@v7
uses: actions/github-script@v9
with:
script: |
const issue = context.payload.issue;
Expand Down
13 changes: 9 additions & 4 deletions .github/workflows/web.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,19 @@ jobs:
run:
working-directory: web
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: actions/checkout@v7
- uses: actions/setup-node@v6
with:
node-version: 22
cache: 'npm'
cache-dependency-path: web/package-lock.json
- name: Install dependencies
run: npm ci
- name: Generate derived facts
# facts.generated.ts is gitignored and produced by derive-facts.mjs;
# tsc --noEmit fails without it (TS2307) and downstream inferences
# cascade into spurious TS7006 errors, so regenerate before type check.
run: npm run prebuild
- name: Run ESLint
run: npm run lint
- name: TypeScript type check
Expand All @@ -49,8 +54,8 @@ jobs:
CLOUDFLARE_ACCOUNT_ID: ${{ vars.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: actions/checkout@v7
- uses: actions/setup-node@v6
with:
node-version: 22
cache: 'npm'
Expand Down
31 changes: 16 additions & 15 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,21 @@
**not** hard-code a device-specific checkout path here — work in whichever
local checkout you have and always **confirm with
`git branch --show-current` before editing.**
- **Active branch:** `hunter/0.8.62-glm-subagents` (also at
`origin/hunter/0.8.62-glm-subagents`). 0.8.61 has shipped; all new work lands
here.
- **Workspace version is intentionally still `0.8.61`** in `Cargo.toml` — the
bump to `0.8.62` is deferred until the GLM-5.2 routing is smoke-tested end to
end against live Z.ai + OpenRouter (see CHANGELOG `## [Unreleased]`). Do not
bump it opportunistically.
- **Milestone guidepost:** GitHub milestone `v0.8.62` (id 47). Check live state
with `gh issue list --repo Hmbown/CodeWhale --milestone "v0.8.62" --state open`.
- **Default branch is `main`.** Never commit directly to `main`; always work on
`hunter/0.8.62-glm-subagents` (or a fresh branch off it for an isolated
change). Open a PR into `main` only when a unit of work is reviewable.
- **Active branch:** `codex/v0.8.63-integration` (also at
`origin/codex/v0.8.63-integration`) for the current fix/integration lane.
If a newer handoff or objective file names a different branch, verify with
`git branch --show-current` and follow the live branch.
- **Workspace version is `0.8.63`** in `Cargo.toml`. Do not bump versions
opportunistically; version bumps, tags, release artifacts, publishing, and
GitHub Releases require Hunter's explicit approval.
- **Milestone guidepost:** GitHub milestone `v0.8.63`. Check live state with
`gh issue list --repo Hmbown/CodeWhale --milestone "v0.8.63" --state open`.
- **Default branch is `main`.** Never commit directly to `main`; work on the
active integration branch or a fresh `codex/...` branch/worktree off it for
an isolated change. Open a PR into `main` only when a unit of work is
reviewable.
- **Always run before pushing a change:** `cargo fmt`, then the targeted tests
for the area (`cargo test -p codewhale-tui --bins <filter>`,
for the area (`cargo test -p codewhale-tui --bin codewhale-tui --locked <filter>`,
`cargo test -p codewhale-config`, `cargo test -p codewhale-protocol`, …). Full
gate: `cargo test --workspace`. Release build:
`cargo build --release -p codewhale-cli -p codewhale-tui`.
Expand Down Expand Up @@ -96,7 +97,7 @@
- Close or update issues and PRs only after verifying the landed commit on the
relevant branch. If the release branch already contains equivalent behavior,
leave a clear note linking the commit and describing any remaining delta.
- For the active release queue, start from the GitHub `v0.8.62` milestone
(`gh issue list --repo Hmbown/CodeWhale --milestone "v0.8.62"`) and refresh
- For the active release queue, start from the GitHub `v0.8.63` milestone
(`gh issue list --repo Hmbown/CodeWhale --milestone "v0.8.63"`) and refresh
state before acting. Older per-version triage docs under `docs/` are
historical reference only.
Loading