From a13449a40acad95fc733c1d198896791944e99a3 Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Mon, 27 Apr 2026 12:30:30 -0500 Subject: [PATCH] fix(tui): address Copilot review feedback on mutating command parity Harden busy mode config reads against invalid display config shapes and align /fast help+usage text with accepted aliases, with regression coverage for non-dict display values. --- tests/test_tui_gateway_server.py | 10 ++++++++++ tui_gateway/server.py | 9 ++++----- ui-tui/src/app/slash/commands/session.ts | 4 ++-- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/tests/test_tui_gateway_server.py b/tests/test_tui_gateway_server.py index f7ba1c74be..44a66ae0f2 100644 --- a/tests/test_tui_gateway_server.py +++ b/tests/test_tui_gateway_server.py @@ -729,6 +729,16 @@ def test_config_get_statusbar_survives_non_dict_display(monkeypatch): assert resp["result"]["value"] == "top" +def test_config_get_busy_survives_non_dict_display(monkeypatch): + monkeypatch.setattr(server, "_load_cfg", lambda: {"display": "broken"}) + + resp = server.handle_request( + {"id": "1", "method": "config.get", "params": {"key": "busy"}} + ) + + assert resp["result"]["value"] == "interrupt" + + def test_config_set_statusbar_survives_non_dict_display(tmp_path, monkeypatch): import yaml diff --git a/tui_gateway/server.py b/tui_gateway/server.py index afffdac8f4..68d1cfcaec 100644 --- a/tui_gateway/server.py +++ b/tui_gateway/server.py @@ -252,11 +252,10 @@ class _SlashWorker: def _load_busy_input_mode() -> str: - raw = ( - str((_load_cfg().get("display") or {}).get("busy_input_mode", "") or "") - .strip() - .lower() - ) + display = _load_cfg().get("display") + if not isinstance(display, dict): + display = {} + raw = str(display.get("busy_input_mode", "") or "").strip().lower() return raw if raw in {"queue", "steer", "interrupt"} else "interrupt" diff --git a/ui-tui/src/app/slash/commands/session.ts b/ui-tui/src/app/slash/commands/session.ts index ef0bf2daad..0f201d480e 100644 --- a/ui-tui/src/app/slash/commands/session.ts +++ b/ui-tui/src/app/slash/commands/session.ts @@ -307,14 +307,14 @@ export const sessionCommands: SlashCommand[] = [ }, { - help: 'toggle fast mode [normal|fast|status]', + help: 'toggle fast mode [normal|fast|status|on|off|toggle]', name: 'fast', run: (arg, ctx) => { const mode = arg.trim().toLowerCase() const valid = new Set(['', 'status', 'normal', 'fast', 'on', 'off', 'toggle']) if (!valid.has(mode)) { - return ctx.transcript.sys('usage: /fast [normal|fast|status]') + return ctx.transcript.sys('usage: /fast [normal|fast|status|on|off|toggle]') } if (!mode || mode === 'status') {