Skip to content

TUI copy-paste polluted with box-drawing Unicode decorations (╎ ▎ ● │ ┃) #4208

Description

@eugenicum

Problem

When selecting and copying text from the TUI terminal, decorative Unicode characters are included in the copied text. Example of what gets copied:

▎ Hi
… reasoning done · 0.9s
╎ The user just said "Hi"...
● Eugene, hi. What are we working on today?
┌─────────────────────────────────────────

These are NOT part of the model output — they are TUI rendering artifacts:

Char Unicode Source in code Purpose
U+258E/U+258F history.rs:226'\u{258F}' Conversation continuation rail
U+254E Thinking block rail Thinking/reasoning prefix
U+25CF history.rs:867 — tool status bullet Tool success indicator
U+2502 history.rs:1758 — card rail Tool card border
U+250C/U+2514 Tool card borders Card frame

Impact

Copy-paste from the TUI is unusable — every copied line contains visual noise that must be manually stripped. This affects anyone who wants to share or save model output.

Relevant source

crates/tui/src/tui/history.rs already tracks:

  • rail_prefix_widths — display-column widths of rail prefixes
  • copy_prefix_widths — visual prefixes that should be stripped from clipboard
  • CopyLineSeparator — preserves hard newlines vs soft wraps

The plumbing for clean copy exists — it just needs to be wired into the clipboard/selection path.

Suggested fix

When copying selected text to clipboard, strip the rail prefix characters (based on rail_prefix_widths / copy_prefix_widths) so the clipboard gets plain text matching what the model actually output. Alternatively, add a rail_style = "ascii" / "off" setting for users who prefer plain rendering.

Metadata

Metadata

Assignees

No one assigned

    Labels

    tuiTerminal UI behavior, rendering, or interaction

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions