mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-30 06:41:51 +00:00
fix(webui): allow native text selection in chat via xterm.js bypass (#25720)
The chat panel renders via xterm.js, and when the inner Hermes TUI enables mouse-events mode (CSI ?1000h family — used for nav inside Ink overlays/pickers) every drag/double-click/triple-click in the canvas is consumed by the terminal instead of producing a native text selection. The reporter (macOS, Brave) confirmed: - click-and-drag selects nothing - Cmd+C with no selection copies the entire visible buffer - existing CSS overrides and event handlers at the document layer have no effect — the issue is at xterm.js's mouse layer, not the DOM Fix: two xterm.js options the user can opt into without disabling mouse-events mode for the inner TUI: - `macOptionClickForcesSelection: true` — holding Option (macOS) or Alt (Linux/Windows) during a click-and-drag bypasses mouse-events mode and produces a native xterm selection. This is the documented xterm.js path for this exact scenario. Selected text is copyable via Cmd+C / Ctrl+C through the existing OSC 52 + manual handlers. - `rightClickSelectsWord: true` — right-click highlights the word under the pointer. Single-action path on top of the modifier-based bypass. The two options coexist with the existing `macOptionIsMeta: true` (which only affects keyboard, not mouse). No other code change needed. Fixes #25720.
This commit is contained in:
parent
6622277f11
commit
8e3cfdfb61
1 changed files with 11 additions and 0 deletions
|
|
@ -286,6 +286,17 @@ export default function ChatPage({ isActive = true }: { isActive?: boolean }) {
|
|||
fontWeight: "400",
|
||||
fontWeightBold: "700",
|
||||
macOptionIsMeta: true,
|
||||
// Hold Option (Alt on Linux/Windows) to force native text selection
|
||||
// even when the inner Hermes TUI has enabled xterm mouse-events
|
||||
// mode (CSI ?1000h family). Without this, click-and-drag in the
|
||||
// chat canvas selects nothing and Cmd+C falls back to copying the
|
||||
// entire visible buffer, which is rarely what the user wants.
|
||||
// See #25720.
|
||||
macOptionClickForcesSelection: true,
|
||||
// Right-click selects the word under the pointer. xterm.js default
|
||||
// is false; enabling it gives users a single-action selection
|
||||
// path on top of the modifier-based bypass above.
|
||||
rightClickSelectsWord: true,
|
||||
// Single-scroll-system experiment:
|
||||
// let the inner Hermes TUI own transcript history/scroll behavior.
|
||||
// The outer browser xterm should act as a display/input bridge only.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue