mirror of
https://github.com/wavetermdev/waveterm
synced 2026-04-21 14:37:16 +00:00
Fixes #2778. ## Problem `xterm.js`'s `getSelection()` returns lines padded to the full terminal column width. Every copy path passed this directly to `navigator.clipboard.writeText()`, so pasting into Slack, editors, etc. included hundreds of trailing spaces. ## Solution Adds a `term:trimtrailingwhitespace` setting (default `true`) that strips trailing whitespace from each line before writing to the clipboard. Applied to all three copy paths: - copy-on-select (`termwrap.ts`) - `Ctrl+Shift+C` (`term-model.ts`) - right-click Copy context menu (`term-model.ts`) OSC 52 is intentionally excluded — that path copies program-provided text, not grid content. The trim itself uses the same per-line `trimEnd()` approach already present in `bufferLinesToText` via `translateToString(true)`. Setting to `false` restores the previous behaviour. ## Files changed - `pkg/wconfig/settingsconfig.go` — new `TermTrimTrailingWhitespace *bool` field - `pkg/wconfig/defaultconfig/settings.json` — default `true` - `frontend/app/view/term/termutil.ts` — `trimTerminalSelection` helper - `frontend/app/view/term/termwrap.ts` — copy-on-select path - `frontend/app/view/term/term-model.ts` — Ctrl+Shift+C and right-click paths - Generated: `pkg/wconfig/metaconsts.go`, `frontend/types/gotypes.d.ts`, `schema/settings.json` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| aipresets.json | ||
| backgrounds.json | ||
| connections.json | ||
| settings.json | ||
| waveai.json | ||
| widgets.json | ||