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:
@@ -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
|
||||
```
|
||||
Reference in New Issue
Block a user