mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-07 02:51:50 +00:00
fix(tui): restore macOS copy behavior and theme polish (#17131)
This PR groups the TUI fixes that restore macOS Terminal usability and clean up the theme/composer regressions: - copy transcript selections on macOS drag-release so Terminal.app users can copy while mouse tracking is enabled - copy composer selections on macOS drag-release; composer selection is internal to TextInput and does not use the global Ink selection bus - keep IDE Cmd+C forwarding setup macOS-only, and make keybinding conflict checks respect simple when-clause overlap/negation - force truecolor before chalk initializes (unless NO_COLOR / FORCE_COLOR / HERMES_TUI_TRUECOLOR opt-outs apply) so the default banner keeps its gold/amber/bronze gradient in Terminal.app - move TUI surfaces onto semantic theme tokens and preserve skin prompt symbols as bare tokens with renderer-owned spacing - render focused placeholders as dim hint text in TTY mode instead of inverse/selected-looking synthetic cursor text
This commit is contained in:
parent
a9efa46b69
commit
6b09df39be
48 changed files with 828 additions and 337 deletions
|
|
@ -799,6 +799,20 @@ export function hasSelection(s: SelectionState): boolean {
|
|||
return s.anchor !== null && s.focus !== null
|
||||
}
|
||||
|
||||
/**
|
||||
* Stable fingerprint of the user-visible selection state. Used by Ink
|
||||
* to skip incrementing the mutation counter when notifySelectionChange()
|
||||
* fires without an actual change to anchor/focus/isDragging — protects
|
||||
* version-based subscribers (copy-on-select) from re-running for the
|
||||
* same stable selection.
|
||||
*/
|
||||
export function selectionSignature(s: SelectionState): string {
|
||||
const a = s.anchor ? `${s.anchor.row},${s.anchor.col}` : 'null'
|
||||
const f = s.focus ? `${s.focus.row},${s.focus.col}` : 'null'
|
||||
|
||||
return `${a}|${f}|${s.isDragging ? 1 : 0}`
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalized selection bounds: start is always before end in reading order.
|
||||
* Returns null if no active selection.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue