From 521b124f059cbba1ebdce89861ede62d567bc9cc Mon Sep 17 00:00:00 2001 From: Bossiara13 <236771060+DmitryBykov-ISPO@users.noreply.github.com> Date: Thu, 23 Apr 2026 02:13:43 +0300 Subject: [PATCH] feat(ui): keyboard nav (Enter advances step) + yaml-health warning on launch --- tools/command_builder/app.py | 14 ++++++++++++++ tools/command_builder/web/app.js | 11 +++++++++++ 2 files changed, 25 insertions(+) diff --git a/tools/command_builder/app.py b/tools/command_builder/app.py index 2bef30a..a4a53db 100644 --- a/tools/command_builder/app.py +++ b/tools/command_builder/app.py @@ -123,7 +123,21 @@ class Bridge: return {"ok": False, "error": f"LLM недоступен: {ex}"} +def _check_yaml_health(): + if not COMMANDS_YAML.exists(): + return + try: + yaml_writer.load_yaml(COMMANDS_YAML) + except Exception as ex: + bak = COMMANDS_YAML.with_suffix(COMMANDS_YAML.suffix + ".bak") + msg = f"[command_builder] Не удалось разобрать {COMMANDS_YAML.name}: {ex}" + if bak.exists(): + msg += f"\n[command_builder] Резервная копия доступна: {bak} — можно восстановить вручную." + print(msg, file=sys.stderr) + + def main(): + _check_yaml_health() bridge = Bridge() index_path = WEB_DIR / "index.html" if not index_path.exists(): diff --git a/tools/command_builder/web/app.js b/tools/command_builder/web/app.js index b25bbd7..ce35e8e 100644 --- a/tools/command_builder/web/app.js +++ b/tools/command_builder/web/app.js @@ -729,6 +729,17 @@ document.addEventListener("keydown", (ev) => { if (ev.key === "Escape") { if (state.step > 1) setStep(state.step - 1); + return; + } + if (ev.key === "Enter" && !ev.shiftKey && !ev.ctrlKey && !ev.altKey) { + const tag = (ev.target && ev.target.tagName) || ""; + if (tag === "TEXTAREA") return; + if (tag === "BUTTON") return; + if (state.step < 4) { + if (state.step === 2 && state.actionType) renderActionForm(); + setStep(state.step + 1); + ev.preventDefault(); + } } }); }