From 990a83d34b9bf14b7cf27d7b3730dac761f68e72 Mon Sep 17 00:00:00 2001 From: jenkins Date: Mon, 14 Sep 2026 00:09:43 -0500 Subject: [PATCH] fix(hermes): scroll dashboard conversation history in the TUI --- services/hermes/agent-deployment.yaml | 4 ++++ testing/tests/test_hermes_chat_quality.py | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/services/hermes/agent-deployment.yaml b/services/hermes/agent-deployment.yaml index fdc64a5d..05703739 100644 --- a/services/hermes/agent-deployment.yaml +++ b/services/hermes/agent-deployment.yaml @@ -834,6 +834,10 @@ spec: - {name: AGENT_BROWSER_EXECUTABLE_PATH, value: /opt/hermes/.playwright/chromium_headless_shell-1228/chrome-linux/headless_shell} - {name: AGENT_BROWSER_ARGS, value: "--no-sandbox,--disable-dev-shm-usage"} - {name: HERMES_DASHBOARD, value: "1"} + # Keep dashboard PTYs in the alternate screen so Hermes owns visible + # history and stale primary-buffer scrollback cannot surface. + - {name: HERMES_TUI_INLINE, value: "0"} + - {name: HERMES_TUI_DISABLE_MOUSE, value: "0"} - {name: HERMES_DASHBOARD_HOST, value: 127.0.0.1} - {name: HERMES_DASHBOARD_PORT, value: "9119"} - {name: HERMES_DASHBOARD_FILES_ROOT, value: /opt/data/workspace} diff --git a/testing/tests/test_hermes_chat_quality.py b/testing/tests/test_hermes_chat_quality.py index dfea1604..994bb578 100644 --- a/testing/tests/test_hermes_chat_quality.py +++ b/testing/tests/test_hermes_chat_quality.py @@ -165,6 +165,20 @@ def test_sandbox_shares_only_the_tenant_workspace_without_credentials(): ) +def test_dashboard_pty_uses_alternate_screen_and_mouse_tracking(): + agent = _documents(HERMES / "agent-deployment.yaml")[0] + main = next( + container + for container in agent["spec"]["template"]["spec"]["containers"] + if container["name"] == "hermes" + ) + env = {item["name"]: str(item.get("value", "")) for item in main["env"]} + + assert env["HERMES_DASHBOARD"] == "1" + assert env["HERMES_TUI_INLINE"] == "0" + assert env["HERMES_TUI_DISABLE_MOUSE"] == "0" + + def test_gateway_image_honors_ui_model_and_caps_reasoning(): dockerfile = (ROOT / "dockerfiles" / "Dockerfile.hermes-agent").read_text() base_arg = next(