Repository navigation
fix(tui): put the approval footer's separators between its hints - #7034
Conversation
The approval footer starts with a dangling dot and runs its last hint
into the one before it:
· Pg↑/↓ review · ⌥V details · Esc stop s allow now, ...
The controls hint still opens with the " · " that once joined it to
the "Choose: ..." prose, which the per-option key badges have since
replaced, and the save-rule hint after it has no separator of its own.
Move the separator from the front of both controls hints to the front
of the save hint in every pack, so the line starts at the option rows'
column and reads as one list:
Pg↑/↓ review · ⌥V details · Esc stop · s allow now, ...
A child agent's card already joins its go-to-agent hint with " · "
in code, so it reads the same way.
Signed-off-by: Lstarsky0 <[email protected]>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
amazing -- thank you so much!! |
|
🤖 This reply is from Claude Opus 5.5, an AI agent working on behalf of the Codewhale maintainers. It is posted through @Hmbown's account, but Hunter did not write it. Thanks @Lstarsky0. Good catch that the approval footer still opened with the |
Every 0.10.2 line now sits under [0.10.2] > Latest fixes in user voice: the proxy-aware install guard, local-state link hardening, the two command-splitter fixes, read-only network (#7040), MCP status and plugin servers at session start (#7035), plugin vocabulary and the marketplace pin 2e3a6fb (#7036), the declared output limit and published reasoning levels (#6396), #6955, #6978, #7007, #6478, the thread read marker (#6164), the stale Runtime owner record, HarmonyOS docs and npm (#1072), the three web-tool fixes (#7038, #7039, #6969), and the Lstarsky0 fixes #7030, #7033 and #7034. Internal tracker ids are removed from the public section, the citation line references #7039, Maintenance records the mirrors and the CI lane, and Contributors adds the six report helpers. crates/tui/CHANGELOG.md is regenerated with sync-changelog.sh; docs/CONTRIBUTORS.md and web/lib/release-credits.ts carry the same credits; web/data/agent-docs.generated.json and features.generated.json are regenerated from the landed docs and registry. Batch evidence (one combined tree, input hash a47518092a4c49de37d93381d392aec4fc4c28fd612f6e6192d327acf4736d95; the intermediate commits of this batch were not compiled on their own, only the combined tree): cargo fmt --check clean; tui lib nextest over the lane filters 4096 passed, 0 failed, plus 1268 passed after the changelog edit; fp55 shared-process cargo test 161 passed, 0 failed, 1 ignored; tui integration install::/skill_cli:: 42 passed, 0 failed; conformance goldens regenerated, 33 passed; execpolicy 89 command_safety and 256 crate tests passed; lane 74; runtime continual_harness 8; config private_directory 12, route/models_dev 121, configured_models 9; app-server daemon_client 1, daemon_socket 15; localization 54; clippy -D warnings on tui, execpolicy, lane, runtime, app-server and config clean with CI's exact flags (the plan's stricter run flagged 26 pre-existing sites outside the batch: 25 are lints CI allows, one collapsible_if is fixed in this batch); cargo check tui --all-targets clean (a first run failed on a half-applied call-site change of the citation fix; the rerun after the fix passed); aarch64-unknown-linux-gnu check of tui, app-server and config not run: the ring and libdbus-sys build scripts fail for the cross target on this Mac, so the Linux-only bubblewrap and boot-id paths were not type-checked here and need a Linux host; blocking-call budget 540 sites within budget; dead-code budget 214 at budget; sync-changelog --check, check-versions, check-bundled-plugin-claims, sync-marketplace --check and web check-facts all passed; npm wrapper node --test 101 passed, 0 failed. No hosted CI ran; final validation owns that. Co-Authored-By: Claude Opus 5.5 <[email protected]>
What and why
The approval card's footer starts with a dangling dot and runs its last hint into the one before it. A
bashapproval at 100×30, before:After:
ApprovalControlsHintstill opens with the·that once joined it to the "Choose: ..." prose; the per-option key badges replaced that prose, and the footer now starts its own line.ApprovalSaveAskRuleHint, appended right after it, has only two spaces, so "Esc stop s allow now" reads as one item. This moves the separator from the front ofApprovalControlsHintandApprovalControlsHintChildto the front ofApprovalSaveAskRuleHint, in all 15 packs, so the line starts at the option rows' column. Nothing else in the strings changes. A child agent's card already joins itsg go to agenthint with·inchild_footer_controls.What it doesn't do: when the footer wraps (80 columns and narrower), the second row still starts at column 0. That wrapping is in the vendored
DecisionBand, which I left alone.Issue
No-Issue: the approval footer's separators are misplaced; I searched and found no issue for it
How I tested it
bashcommand, with this change and with a build from before it. The screens above are 100×30. At 80×24 and 60×20 the footer reads the same way before it wraps, and underLC_ALL=zh_TW.UTF-8it readsPg↑/↓ 回看 · ⌥V 詳情 · Esc 停止 · s 本次允許,以後每次先詢問. In each case the footer row is the only line that changed.cargo nextest run -p codewhale-localization: 54 passed, none failed.cargo fmt --all -- --check,cargo clippy -p codewhale-tui --all-targets --all-featureswith CI's flags, andcargo check -p codewhale-tui --all-targets: clean. Clippy also on 1.99, pluscargo +1.89.0 check -p codewhale-tui.cargo nextest run -p codewhale-tui --lib: 15347 passed, none failed, including the approval tests that look for the footer hints.Checklist
maincargo fmt --allpasses, and tests cover new or changed behaviordocs/features.toml(cargo test -p codewhale-tui --test feature_registrychecks it) — n/a