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.
Problem
When selecting and copying text from the TUI terminal, decorative Unicode characters are included in the copied text. Example of what gets copied:
These are NOT part of the model output — they are TUI rendering artifacts:
▎▏history.rs:226—'\u{258F}'╎●history.rs:867— tool status bullet│history.rs:1758— card rail┌└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.rsalready tracks:rail_prefix_widths— display-column widths of rail prefixescopy_prefix_widths— visual prefixes that should be stripped from clipboardCopyLineSeparator— preserves hard newlines vs soft wrapsThe 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 arail_style = "ascii"/"off"setting for users who prefer plain rendering.