feat(dashboard): always enable embedded chat; remove dashboard --tui flag - #38604
Closed
teknium1 wants to merge 1 commit into
Closed
feat(dashboard): always enable embedded chat; remove dashboard --tui flag#38604teknium1 wants to merge 1 commit into
teknium1 wants to merge 1 commit into
Conversation
…flag The dashboard's embedded Chat surface (/chat, /api/ws, /api/pty) was gated behind `hermes dashboard --tui` / HERMES_DASHBOARD_TUI=1. The desktop app and the dashboard's own Chat tab both drive the agent over the /api/ws + /api/pty WebSockets, so a dashboard started without the flag would pass the /api/status health check but slam the chat WebSocket shut with WS code 4403 — the app connects, reports "ready", and chat stays dead. This was the root cause behind multiple user reports of the desktop app failing to connect to a self-hosted gateway/dashboard, and it bit Docker and host installs alike. Make the embedded chat unconditional: - web_server.py: _DASHBOARD_EMBEDDED_CHAT_ENABLED defaults to True; drop the embedded_chat parameter and the runtime reassignment from start_server(). The WS gates still read the constant (now always true) so the seam — and its "rejects when disabled" contract test — stays meaningful. - main.py: remove the `--tui` argument from the dashboard subparser and the `embedded_chat = args.tui or HERMES_DASHBOARD_TUI==1` derivation. - web/: isDashboardEmbeddedChatEnabled() returns true unconditionally; drop the deprecated __HERMES_DASHBOARD_TUI__ alias and the dead LEGACY_TUI_RE scrape in the vite dev-token plugin. - apps/desktop/electron/main.cjs: drop `--tui` from the spawned dashboardArgs (it would now error with "unrecognized arguments: --tui") and the redundant HERMES_DASHBOARD_TUI env injection. - Docker: no s6 run-script change needed — the script never passed --tui; the HERMES_DASHBOARD_TUI env var is now simply a no-op, so the image works out of the box with no extra var. - Docs: remove every dashboard --tui / HERMES_DASHBOARD_TUI reference across the CLI reference, env-var reference, docker/desktop/web-dashboard guides, in-app tips, and the zh-Hans translations. The terminal `hermes --tui` / HERMES_TUI references are intentionally left untouched. Tests: 270 passing across web_server, dashboard lifecycle, host-header, auth-gate, and docker-override-scripts suites.
Contributor
🔎 Lint report:
|
Collaborator
|
Looks like a duplicate of #38591 (same title, same change — make dashboard embedded chat unconditional and drop the |
Contributor
Author
|
Closing as redundant — embedded chat is already always-on on |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The dashboard's embedded Chat surface (
/chat,/api/ws,/api/pty) is now always available — a plainhermes dashboardno longer slams the chat WebSocket shut with WS close 4403.Previously the embedded chat was gated behind
hermes dashboard --tui/HERMES_DASHBOARD_TUI=1. A dashboard started without the flag passed the/api/statushealth check but rejected the chat WebSocket, so the desktop app (and the in-browser Chat tab) connected, reported "ready", and chat silently stayed dead — the root cause behind multiple "desktop app won't connect to a self-hosted dashboard" reports, on Docker and host installs alike.Per discussion with @teknium1, this makes the embedded chat unconditional and removes the
--tuidashboard flag entirely.Changes
hermes_cli/web_server.py:_DASHBOARD_EMBEDDED_CHAT_ENABLEDdefaults toTrue; dropped theembedded_chatparam + runtime reassignment fromstart_server(). The WS gates still read the constant, keeping the seam and its "rejects when disabled" contract test meaningful.hermes_cli/main.py: removed the--tuidashboard argument and theembedded_chatderivation.web/src/lib/dashboard-flags.ts:isDashboardEmbeddedChatEnabled()returnstrue; dropped the deprecated__HERMES_DASHBOARD_TUI__alias.web/vite.config.ts: removed the deadLEGACY_TUI_REscrape.apps/desktop/electron/main.cjs: dropped--tui+ the redundantHERMES_DASHBOARD_TUIenv injection from the spawned dashboard.--tui/HERMES_DASHBOARD_TUIreference (CLI ref, env-var ref, docker/desktop/web-dashboard guides, in-app tips, zh-Hans). Terminalhermes --tui/HERMES_TUIleft untouched (unrelated flag).Validation
hermes dashboardchat WSweb/tsc --noEmitSalvage of #38591 by @benbarclay, cherry-picked onto current main with authorship preserved. Closes #38591.
Infographic