New request
#1804: feat(ux): surface session-control slash commands as visible WebUI actions
We'll provision a sandbox, run an agent against the issue, and open a draft PR. You can pull the branch and iterate from there.
Summary
Please make common Hermes WebUI slash commands discoverable as first-class UI actions, not only hidden text commands.
Immediate user workflow:
“How do I start a fresh
/newsession inside a chat?”
That led to a broader question: users should not need to memorize /new, /clear, /steer, /interrupt, /queue, /stop, etc. for core chat/session control. These commands are valuable, but many of them are currently only discoverable if the user already knows to type / or reads docs.
Current behavior
From the current WebUI behavior/code, several core actions already exist as slash commands:
Session/view controls
/new— starts a new chat session./clear— clears the current conversation state/view.- Hermes CLI documents
/newand/resetas aliases for a fresh session, but WebUI appears to register/newrather than/reset.
Active-run / busy-state controls
/stop— cancels/stops the active stream./queue <message>— queues a message for the next turn./interrupt <message>— cancels the current turn and sends/queues a replacement message./steer <message>— injects a steering hint mid-task without interrupting where supported, with fallback behavior.
The WebUI also has a busy-input mode setting, but the per-message overrides are still slash-command oriented.
Other command-style controls that may deserve the same pattern
/retry/undo/title/compress//compact/background/btw/status/usage/model/reasoning/yolo
The request is not that all of these need large buttons. The ask is for a coherent discoverability and action-surface design so common actions are available without remembering slash syntax.
Requested UX
Add visible UI affordances for common commands, ideally backed by the same internal command handlers so slash commands and UI actions cannot drift.
Suggested design options:
-
Composer action menu / command palette
- A
+, lightning bolt, keyboard icon, or command-palette button near the composer. - Shows grouped actions with descriptions and slash equivalents.
- Example groups:
- Session: New chat, Clear conversation, Retry, Undo, Rename/title.
- Active run: Stop, Queue message, Interrupt with message, Steer with message.
- Context: Compress/compact.
- Model/session: Model, Reasoning, YOLO.
- A
-
Visible busy-state controls
- When an agent is running, surface quick actions for:
- Stop (
/stop) - Queue next message (
/queue) - Interrupt and replace (
/interrupt) - Steer current run (
/steer)
- Stop (
- These should explain the difference clearly:
- Queue = “run this after the current response finishes”
- Interrupt = “stop current response and use this new instruction instead”
- Steer = “nudge the current run without stopping it”
- Stop = “cancel current run”
- When an agent is running, surface quick actions for:
-
Visible session actions
- New chat / fresh session action equivalent to
/new. - Consider supporting
/resetas a WebUI alias for CLI parity. - Clear current conversation action equivalent to
/clear. - Make the distinction from “New chat” explicit:
- New chat creates a separate fresh session.
- Clear affects the current conversation/view/session state.
- New chat / fresh session action equivalent to
-
Tooltips and help
- Tooltips should include slash equivalents, e.g.
Steer current run (/steer). /helpor a visible?menu should list both the slash command and the matching UI action where one exists.
- Tooltips should include slash equivalents, e.g.
-
Busy-state safety
- If a command/action is invalid while busy or idle, disable it with a clear tooltip or explain what will happen.
- Avoid silently queueing session-control commands like
/newas text when the user intended a UI/session action.
Why this matters
Slash commands are powerful, but for WebUI users they are easy to miss. A user looking for a fresh chat or mid-run correction naturally scans the UI before guessing text commands.
This is especially important for:
- new users coming from graphical chat apps,
- users switching between CLI and WebUI,
- long-running agent tasks where
/steer,/interrupt, and/queueare crucial but subtle, - busy sessions where typed slash commands may not be intercepted the way users expect,
- mobile/responsive layouts where command discovery is harder.
Related issues / not duplicates
Related command and CLI-parity work exists, but this request is specifically about making commands visible/discoverable as WebUI UX/UI actions, not just adding slash-command support:
- #460 — surface skill slash commands in autocomplete
- #462 —
/background,/btw,/undosession commands - #720 / #784 — queue/steer/interrupt/background slash-command parity
- #843 — reasoning-level UI/discoverability
- #1792 — new-chat sidebar/update behavior while streams are active
Acceptance criteria
- A user can start a fresh chat session from the WebUI without knowing
/new. - A user can clearly distinguish “New chat/session” from “Clear current conversation.”
- A user can discover and invoke
/steer,/interrupt,/queue, and/stopstyle active-run controls without memorizing the slash syntax. - UI actions use the same command/session code paths as the slash commands where practical.
- Tooltips/help expose the slash equivalents.
- Busy/running-agent states are handled intentionally rather than accidentally queueing session-control commands as text.
- Responsive/mobile layout remains usable.
Suggested labels
enhancement, ux, commands, cli-parity
Converting hidden slash commands into visible UI actions requires coordinated changes across frontend command handling, new toolbar components, and existing backend command dispatch.
- static/command-handling.js
- static/composer.js
- static/session-toolbar.js
- api/commands.py
- tests/command_regression.py