hermes-agent/ui-tui-opentui-v2
alt-glitch c3d2d87a74 opentui(v2): clipboard copy/paste, image paste, glyph-free selection (items 1, 4)
Item 1 — copy/paste:
- boundary/clipboard.ts (ported/trimmed from opencode): writeClipboard = OSC 52
  (SSH/tmux-safe) + a native command (pbcopy/wl-copy/xclip/xsel/clip);
  readClipboardImage = clipboard PNG via wl-paste/xclip/pngpaste/powershell.
- Ctrl+C copies a live MOUSE SELECTION (renderer.getSelection) before the
  interrupt/quit machine runs (opencode's selection-key precedence), with a
  "Copied to clipboard" hint; falls through to interrupt/quit when there's no
  selection.
- text paste inserts natively (textarea handlePaste); the composer's onPaste only
  intercepts an EMPTY bracketed paste (image-only clipboard) → readClipboardImage
  → image.attach_bytes (the next prompt.submit picks it up).

Item 4 — mouse selection now ignores decorative glyphs: selectable={false} on the
message/tool gutter glyphs and all chrome (header, status bar, status line,
composer prompt glyph), so a drag copies the message text, not ❯/⚕/▶/.

Live-smoked (this env has no clipboard tools/DISPLAY, so native copy + image read
can't be confirmed here, but): drag-select + Ctrl+C → "Copied to clipboard" (not
quit); no-selection Ctrl+C still arms quit; bracketed text paste lands in the
composer. 71 pass.
2026-06-08 18:20:59 +00:00
..
scripts feat(opentui-v2): Phase 0 scaffold — Solid + Effect-at-boundary native TUI 2026-06-08 13:36:54 +00:00
src opentui(v2): clipboard copy/paste, image paste, glyph-free selection (items 1, 4) 2026-06-08 18:20:59 +00:00
.gitignore feat(opentui-v2): Phase 0 scaffold — Solid + Effect-at-boundary native TUI 2026-06-08 13:36:54 +00:00
.prettierrc feat(opentui-v2): Phase 0 scaffold — Solid + Effect-at-boundary native TUI 2026-06-08 13:36:54 +00:00
bun.lock feat(opentui-v2): Phase 0 scaffold — Solid + Effect-at-boundary native TUI 2026-06-08 13:36:54 +00:00
bunfig.toml feat(opentui-v2): Phase 0 scaffold — Solid + Effect-at-boundary native TUI 2026-06-08 13:36:54 +00:00
eslint.config.mjs feat(opentui-v2): Phase 0 scaffold — Solid + Effect-at-boundary native TUI 2026-06-08 13:36:54 +00:00
package.json feat(opentui-v2): Phase 0 scaffold — Solid + Effect-at-boundary native TUI 2026-06-08 13:36:54 +00:00
tsconfig.json feat(opentui-v2): Phase 0 scaffold — Solid + Effect-at-boundary native TUI 2026-06-08 13:36:54 +00:00