chore(release): prepare v0.8.60 — drop 0.8.59 docs, clear clippy gates, credit new models

Remove stale v0.8.59 release docs (release-notes-v0.8.59.md, docs/V0_8_59_RELEASE_TRIAGE.md) now that v0.8.59 is shipped.

Clear three clippy release-gate lints: const-evaluate the DEFAULT_SPAWN_DEPTH ceiling assert, and allow the intentional await_holding_lock on two Z.ai routing tests that must hold the test-env mutex across the await.

Credit new 0.8.60 models and first-party provider routes in the changelog: GLM-5.2 (Z.ai + OpenRouter), first-party Z.ai, StepFun/StepFlash (step-3.7-flash), and MiniMax (MiniMax-M3) routes (#3187/#3191). Regenerate the embedded crates/tui/CHANGELOG.md slice.
This commit is contained in:
Hunter B
2026-06-14 00:06:44 -07:00
parent 652d3925ae
commit 69c19007c9
6 changed files with 16 additions and 475 deletions
-366
View File
@@ -1,366 +0,0 @@
# v0.8.59 Release Triage
Generated on 2026-06-12 for `Hmbown/CodeWhale`.
Current local release branch at handoff time:
- Branch: `codex/v0.8.59-release-ready`
- Head: `ca826bb2 fix(tui): clarify Codex response errors`
- Remote: `origin=https://github.com/Hmbown/CodeWhale.git`
## Mission
Move v0.8.59 toward release by actively landing, harvesting, or closing the
remaining PR and issue queue. Do not only summarize. Use GitHub and local Git
state to decide which items are already landed, which can be directly merged,
which need a credited harvest, and which should be deferred with a clear note.
Start from `codex/v0.8.59-release-ready` unless Hunter gives a newer branch.
## Key Operating Idea: Scratch Integration Branches
Hunter's "dummy branch" idea is feasible and useful. Use it.
The scratch branch is for discovery and acceleration:
- create it from the real release branch;
- merge or cherry-pick many candidate PR heads into it;
- use conflicts, tests, and diff review to learn what composes;
- harvest only the safe result back into the release branch.
The scratch branch is not the thing to ship. It can contain noisy merge commits,
temporary conflict resolutions, and interactions between unrelated PRs.
Suggested local workflow:
```bash
git fetch --prune origin
git switch codex/v0.8.59-release-ready
git pull --ff-only
git switch -c scratch/v0.8.59-pr-train-$(date +%Y%m%d-%H%M)
```
Fetch specific PR heads into temporary refs:
```bash
git fetch origin pull/3152/head:refs/tmp/pr-3152
git fetch origin pull/3148/head:refs/tmp/pr-3148
git fetch origin pull/3150/head:refs/tmp/pr-3150
```
Dry-run conflicts before touching the scratch branch:
```bash
base=$(git merge-base origin/codex/v0.8.59-release-ready refs/tmp/pr-3152)
git merge-tree "$base" origin/codex/v0.8.59-release-ready refs/tmp/pr-3152
```
On the scratch branch, merge one candidate at a time:
```bash
git merge --no-ff refs/tmp/pr-3152
```
If it conflicts, resolve only enough to learn whether the PR should be directly
merged, cherry-picked, harvested, or closed as already landed. After the scratch
experiment, return to the release branch and apply the final result as narrow
commits.
Use direct GitHub merge only when the PR is clean against the actual landing
branch. Many PRs are clean against `main` but conflict against
`codex/v0.8.59-release-ready`.
If a scratch branch needs CI, push it only as a clearly named scratch branch or
draft PR after Hunter authorizes that branch/CI lane. Never tag or publish from
scratch.
## Credit Contract
When harvesting contributor work:
- Preserve the original author when practical.
- Add `Co-authored-by` using `.github/AUTHOR_MAP` or:
```bash
gh api users/<login> --jq '"\(.id)+\(.login)@users.noreply.github.com"'
```
- Include this line in the commit body:
```text
Harvested from PR #N by @handle
```
The repo has `.github/workflows/auto-close-harvested.yml`, which closes PRs
after such commits land on `main`. Until then, leave clear comments linking the
release-branch commit or harvest plan.
## Recently Approved PRs Already Covered
`Hmbown` submitted formal `APPROVED` reviews on these PRs on 2026-06-12. A
follow-up scratch-merge pass against `codex/v0.8.59-release-ready` found that
the release branch already contains equivalent or stronger implementations. Do
not spend another cycle re-harvesting them; close them after the release branch
lands on `main`, or leave/update triage comments if they remain open.
### PR #3152 - SSE `data:` parsing
- URL: https://github.com/Hmbown/CodeWhale/pull/3152
- Author: `wgeeker`
- Title: `fix(SSE): accept SSE data lines without space after colon`
- Hunter approval: 2026-06-12T16:10:34Z
- GitHub merge state against `main`: `BLOCKED`
- Non-success checks shown by `gh`: none
- Head: `fix/sse-data-prefix-no-space`
- Commit: `50445eb3 fix: accept SSE data lines without space after colon`
- Files: `crates/tui/src/client.rs`, `client/anthropic.rs`, `client/chat.rs`,
`client/responses.rs`
- Release-branch result: scratch merge produced a literal zero diff.
- Covered by release commit: `2f717d33 fix(tui): accept compact SSE data
fields`.
- Notes: release branch already has an identical `extract_sse_data_value`
helper and equivalent tests.
- Action: no harvest needed. Keep the triage comment as credit and close after
the release branch lands on `main`.
### PR #3148 - `--model auto` / `DEEPSEEK_MODEL`
- URL: https://github.com/Hmbown/CodeWhale/pull/3148
- Author: `hongchen1993`
- Title: `fix(exec): resolve --model auto via DEEPSEEK_MODEL env and reorder ExecArgs`
- Hunter approval: 2026-06-12T16:10:21Z
- GitHub merge state against `main`: `CLEAN`
- Non-success checks shown by `gh`: none
- Head: `fix/auto-model-agent-plan`
- Commits: `b67f4add`, `55e66a6e`
- File: `crates/tui/src/main.rs`
- Release-branch result: fully covered.
- Covered by release commit: `862cb2e3 fix(exec): preserve auto model handoff`.
- Notes: `ExecArgs` is already reordered so the prompt is last, and the release
branch env fallback is a superset: `CODEWHALE_MODEL`, then `DEEPSEEK_MODEL`.
- Action: no harvest needed. Keep the triage comment as credit and close after
the release branch lands on `main`.
### PR #3150 - prompt source map / context usage
- URL: https://github.com/Hmbown/CodeWhale/pull/3150
- Author: `idling11`
- Title: `feat(context): add prompt source map and context-usage report (#3143)`
- Hunter approval: 2026-06-12T16:10:10Z
- GitHub merge state against `main`: `CLEAN`
- Non-success checks shown by `gh`: none
- Head: `feat/3143-prompt-source-map`
- Commits: `e91d4984`, `97e711c4`, `c463dac4`, `b8efcde0`
- Files include `crates/tui/src/context_report.rs`, command wiring,
`compaction.rs`, `localization.rs`, `main.rs`, and TUI UI/app files.
- Closing issue: #3143
- Release-branch result: independently implemented.
- Covered by release commit: `0986cabb feat(tui): add context source map
report`.
- Notes: release branch already has `/context [report|json|summary]` and
`codewhale doctor --context-json`. Gemini's string-slicing and duplicate
`AGENTS.md` findings apply to the PR implementation, not the release branch:
the release module does no string slicing and no `AGENTS.md` processing. The
PR's remaining tests target its divergent API and do not transplant cleanly.
- Action: no harvest needed. Keep the triage comment as credit and close after
the release branch lands on `main`.
## Current v0.8.59 PR Queue
Open PRs carrying `v0.8.59` at the handoff scan, updated with the
release-branch scratch triage pass.
### Merge cleanly into the release branch (await Hunter approval)
- #3062 - fix(tools): apply strict mode per schema
- #3008 - docs(prompt): clarify Constitution trust framing
- #3006 - fix update release-download timeout/error messaging
- #3003 - bump `clap_complete` (CodeQL neutral)
- #3002 - bump `rustls` (CodeQL neutral)
- #3001 - bump `reqwest` (CodeQL neutral)
- #2971 - expose matched approval rule metadata
- #2943 - normalize macOS Cmd/SUPER to CONTROL
These can be landed directly or via a small scratch train, but they did not have
Hunter approval at the 2026-06-12 re-scan (reviewDecision empty on all). Ask for
approval or review each one before merging. Lowest-risk first: docs PR #3008,
update-network fallback #3006, then the three dependency bumps
#3001/#3002/#3003.
### Already landed on the release branch (verified by scratch merge, zero residual diff)
Triage comments with the covering commits were posted on each on 2026-06-12.
Close after the release branch reaches `main`.
- #2901 - localize ToolFamily labels. Zero unique commits vs release branch.
- #3056 - hotbar number keys. Covered by `3de1d35c` with stronger tests
(extra `needs_redraw` assertions).
- #3052 - verbosity settings. Covered by `42de833d`, which is a superset
(case/whitespace-tolerant `is_concise_verbosity`).
- #3011 - provider source tracking + unsupported-TUI errors. Release branch
already has `ProviderSource::Cli/Env` and `provider_is_supported_by_tui`
with per-source error messages.
- #3009 - cli-compare Harbor harness. Release-branch script is a strict
evolution (adds `_first_present`/`_stable_path` helpers).
- #2895 - `siliconflow_cn` provider config field. Test merge produced zero
residual diff.
### Genuinely missing work; needs review/rebase (commented 2026-06-12)
- #3051 - feat(voice): `/voice` speech-to-text. Release branch has NO voice
command — this is a real 711-line feature. Conflicts in `commands/mod.rs`,
`localization.rs`, `tui/ui.rs`, and it smuggles an unrelated
`switch_provider` change (`app.api_key`/`app.base_url` reassignment) that
collides with the release branch's `reasoning_effort.normalize_for_provider`
line. Asked contributor to split/rebase; Hunter decides 0.8.59 vs next.
- #3005 - refactor(config): provider metadata registry. NOT landed — real
~300-line net simplification delta. One semantic conflict: release branch
registers config key `siliconflow_cn`; PR uses `siliconflow` + aliases.
Recommend deferring the refactor to the cycle after v0.8.59 unless Hunter
wants it in; asked for rebase onto the release branch.
### Blocked against `main` or with failing checks
- #3053 - docs: add Upgrading from deepseek-tui section. Merge state: BLOCKED.
- #3013 - detect legacy deepseek/deepseek-tui binary and print migration
instructions. Merge state: BLOCKED; macOS test failed and Windows test was
cancelled at scan time.
- #2995 - bump actions/stale from 9 to 10. Merge state: BLOCKED; version drift
failed and CodeQL was neutral.
- #2903 - build static linux x64 binaries with musl. Merge state: BLOCKED.
### Dirty / needs rebase, conflict triage, or harvest
- #3010 - exclude Calm personality overlay from default prompt path
- #2940 - localize Cmd command output messages
- #2932 - localize mode-picker messages
- #2929 - localize pending-input preview messages
- #2926 - localize onboard-welcome and app-mode-switch messages
- #2921 - localize sidebar panel labels, status messages, and focus indicators
- #2919 - localize ConfigEdit labels and default values
- #2918 - localize ConfigSection and ConfigScope labels
- #2899 - localize SubAgents surface
- #2894 - localize composer surface
- #2879 - align Hugging Face provider docs, errors, and tests
- #2851 - refactor TUI command groups into focused implementations; draft
- #2808 - runtime-api session save, undo/retry, and snapshot endpoints; dirty,
`needs-human`, lint failing
- #2773 - complete provider fallback chain
- #2239 - i18n Phase 1-4b wiring plus rebase compile fixes
## Full Open-PR Equivalence Audit (2026-06-12, vs release head d7de0a88)
Method: `git merge-tree --write-tree` of every open PR head against the
release branch. "Already landed" means the merge result tree is identical to
the release branch tree. Manual scratch-merge verdicts override raw
merge-tree conflicts where noted.
### Landed on the release branch in this pass
- #2943 - macOS SUPER→CONTROL normalization. Merged as `4d84d66e`, tests green.
- #2971 - matched approval rule metadata. Merged as `d7de0a88`, tests green.
### Already landed (identical tree; close after release reaches main)
#2895, #2901, #3001, #3002, #3003, #3006, #3008, #3062, #3119, #3135
(#3119/#3135 are duplicates of each other), plus manually verified
zero-residual: #3152, #3148, #3150, #3056, #3052, #3011, #3009.
### Clean merge with real delta (candidates; need review, not in v0.8.59 label mostly)
- Security: #3140 command-injection fix in hooks (3 files) — high priority review.
- Infra: #2903 musl static linux build (3 files; was BLOCKED on main, clean here).
- Docs: #2986 harvest-credit close template.
- Dependency bumps (workflow/web/rust): #2991, #2992, #2993, #2994, #2995,
#2996, #2997, #2998, #2999, #3000.
- Generated test PRs: #3113, #3116, #3120, #3122, #3125, #3130, #3131, #3132,
#3134, #3137.
- Generated perf/cleanup PRs: #3105, #3107, #3108, #3109, #3112, #3117,
#3121, #3129.
### Conflict against release branch (need scratch triage, rebase, or defer)
Real feature/fix work: #3103 (#3080), #3104 (#3095), #3106 (#3095), #3013,
#3010, #3053, #2773 (#2574), #2808, #2851, #2865, #2933, #2486, #2879,
#3051 (voice, see above), #3005 (registry refactor, see above).
i18n localize train (likely serial-conflicting with each other): #2239,
#2894, #2899, #2918, #2919, #2921, #2926, #2929, #2932, #2940.
Generated test/cleanup PRs with conflicts: #3110, #3111, #3114, #3115,
#3118, #3123, #3124, #3126, #3127, #3128, #3133, #3136, #3138, #3139, #3141.
## Milestone Issues
At scan time, milestone `v0.8.59` had 76 open issues and 35 open PRs, for 111
open milestone items. Issue priorities:
1. #3063 release tracker and release-blocker coordination.
2. Close/update already-covered approved PRs #3152, #3148, #3150 after the
release branch reaches `main`; do not re-harvest them.
3. User-visible bugs/regressions: #3064, #3067, #3065, #3080, #3088, #3095,
#3094, #3070, #1812, #1679, #1190, #1120, #1060, #861, #759, #1920.
4. Provider/model catalog and cost/context: #3086, #3085, #3084, #3083, #3076,
#3075, #3073, #3072, #3071, #3066, #2574, #1310, #868.
5. Tool and runtime UX: #3146, #3145, #3144, #3143, #3102, #3079, #2886,
#1917, #1847, #1822, #1802, #1794, #1186.
6. TUI and command polish: #3081, #3077, #3074, #3069, #2870, #2791, #1871,
#1722, #963.
7. Docs/localization/migration: #3093, #3092, #3091, #3090, #3087, #3068,
#3061, #3058, #1447, #1118, #683.
For each issue, first ask: "Is this already satisfied on
`codex/v0.8.59-release-ready`?" If yes, prepare a closure/update note with the
commit hash. If no, implement or harvest the smallest safe slice.
## Suggested Next Work Session
Conflict triage of #3056/#3052/#3051/#3011/#3009/#3005 was completed on
2026-06-12 (scratch branch `scratch/v0.8.59-conflict-triage-20260612`,
local only). Remaining:
1. Get Hunter's explicit approval to land the eight release-branch-clean PRs:
#3062, #3008, #3006, #3003, #3002, #3001, #2971, #2943.
2. Land those in small batches, starting with docs/dependencies/low-risk fixes,
and run focused checks after each batch.
3. Hunter decisions needed: include #3051 (voice) in v0.8.59 or defer; defer
#3005 (provider registry refactor) or reconcile the `siliconflow_cn` vs
`siliconflow`+aliases key naming and land.
4. After the release branch reaches `main`, close the verified-covered PRs:
#3152, #3148, #3150, #2901, #3056, #3052, #3011, #3009, #2895.
5. Triage the blocked PRs (#3053, #3013, #2995, #2903) and the dirty/localize
train, then move to milestone issues per the priority list above.
6. Update `CHANGELOG.md` and close/update linked issues only after verification.
## Useful Commands
List PRs with v0.8.59:
```bash
gh pr list -R Hmbown/CodeWhale --state open --limit 200 \
--search 'milestone:v0.8.59' \
--json number,title,url,headRefName,baseRefName,mergeStateStatus,reviewDecision,isDraft,statusCheckRollup
```
Find formal reviews by Hunter on open PRs:
```bash
for n in $(gh pr list -R Hmbown/CodeWhale --state open --limit 200 --json number --jq '.[].number'); do
gh pr view -R Hmbown/CodeWhale "$n" --json number,title,url,reviews,updatedAt \
--jq '. as $pr | [.reviews[]? | select(.author.login == "Hmbown") | {number:$pr.number,title:$pr.title,url:$pr.url,prUpdatedAt:$pr.updatedAt,state:.state,submittedAt:.submittedAt}][] | [.number,.state,.submittedAt,.prUpdatedAt,.title,.url] | @tsv'
done
```
Check whether a PR has patch-equivalent commits already on the release branch:
```bash
git log --cherry-mark --right-only --oneline \
origin/codex/v0.8.59-release-ready...refs/tmp/pr-3152
```
Show conflicts without modifying the worktree:
```bash
base=$(git merge-base origin/codex/v0.8.59-release-ready refs/tmp/pr-3152)
git merge-tree "$base" origin/codex/v0.8.59-release-ready refs/tmp/pr-3152
```