hermes-agent/tui_gateway
Brooklyn Nicholson 530e7c0d4e fix(tui): offer skill completions for a slash typed mid-message
A slash only opened completions at position 0, so `please run /cle`
suggested nothing. That is correct for execution — commands only run from
the start of a message — but it also removed the ability to reference a
skill inside prose.

Position 0 and mid-message are now detected separately. A leading slash
stays a command invocation with arg completion and the full command set; a
slash after whitespace is an inline skill reference. Only skills are
offered there, since a built-in like /model or /new acts on the app and
reads as nothing useful inside a sentence.

The gateway tags each completion with its kind, derived from the same
skill-command and skill-bundle providers the completer already consumes,
so the TUI filters on data rather than sniffing the display meta glyphs.

applyCompletion keyed its leading-slash check off the start of the input,
which is only the replace point for a position-0 command. It now keys off
the character before compReplace, so an inline pick lands as
`please run /clean` instead of `please run //clean`. The Tab handler
carried its own divergent copy of that logic and now calls the shared
helper.
2026-07-25 21:19:23 -05:00
..
__init__.py
…
_stdin_recovery.py
…
compute_host.py fix(windows): widen utf-8 subprocess decode guard to sibling desktop-backend sites 2026-07-24 09:48:28 -07:00
entry.py
…
event_publisher.py
…
git_probe.py
…
host_supervisor.py fix(windows): widen utf-8 subprocess decode guard to sibling desktop-backend sites 2026-07-24 09:48:28 -07:00
loop_noise.py
…
project_tree.py fix(project-tree): absorb deleted-worktree sessions into the parent home checkout 2026-07-25 20:31:17 -05:00
render.py
…
server.py fix(tui): offer skill completions for a slash typed mid-message 2026-07-25 21:19:23 -05:00
slash_worker.py
…
synthetic_turn.py
…
transport.py
…
turn_marker.py feat(desktop): crash-survivable in-flight turn journal 2026-07-24 23:31:55 -05:00
ws.py
…