fix(tui): address copilot review on #14103

- normalizeStatusBar: trim/lowercase + 'on' → 'top' alias so user-edited
  YAML variants (Top, " bottom ", on) coerce correctly
- shift-tab yolo: no-op with sys note when no live session; success-gated
  echo and catch fallback so RPC failures don't report as 'yolo off'
- tui_gateway config.set/get statusbar: isinstance(display, dict) guards
  mirroring the compact branch so a malformed display scalar in config.yaml
  can't raise

Tests: +1 vitest for trim/case/on, +2 pytest for non-dict display survival.
This commit is contained in:
Brooklyn Nicholson 2026-04-22 15:19:50 -05:00
parent 48f2ac3352
commit 6fb98f343a
5 changed files with 399 additions and 112 deletions

View file

@ -380,9 +380,14 @@ export function useInputHandlers(ctx: InputHandlerContext): InputHandlerResult {
// shift-tab flips yolo without spending a turn (claude-code parity)
if (key.shift && key.tab && !cState.completions.length) {
if (!live.sid) {
return void actions.sys('yolo needs an active session')
}
return void gateway
.rpc<ConfigSetResponse>('config.set', { key: 'yolo', session_id: live.sid })
.then(r => actions.sys(`yolo ${r?.value === '1' ? 'on' : 'off'}`))
.then(r => actions.sys(r ? `yolo ${r.value === '1' ? 'on' : 'off'}` : 'failed to toggle yolo'))
.catch(() => actions.sys('failed to toggle yolo'))
}
if (key.tab && cState.completions.length) {