feat: copy the output panel to the system clipboard (#11)

New app-level `copy` / `copy all` / `copy last` command (ADR-0041).
Delivery is OSC 52 *and* a best-effort native write (arboard), always
both — OSC 52 acceptance is undetectable, so a true fallback can't be
built. Payload is the panel's plain text exactly as rendered (tags,
✓/✗, box-drawing), drift-locked to render_output_line. arboard added
--no-default-features (X11-only; OSC 52 covers Wayland).

Amends ADR-0003's command registry; requirements V6.
This commit is contained in:
claude@clouddev1
2026-06-02 14:23:21 +00:00
parent 1ea376be26
commit d0c8f9d5d2
25 changed files with 1203 additions and 13 deletions
+6
View File
@@ -129,6 +129,12 @@ pub enum Action {
/// refreshes the table list + schema cache.
Undo,
Redo,
/// Copy text to the system clipboard (the `copy` command, ADR-0041).
/// The `App` builds the full text from `App.output` (so `update`
/// stays pure); the runtime performs the I/O — emit an OSC 52 escape
/// to the terminal *and* a best-effort native write, ignoring native
/// failure (a headless host is fine; OSC 52 carried it).
CopyToClipboard(String),
/// User changed the input mode mid-session (the `mode` command).
/// The runtime records it through the worker so `project.yaml`
/// reflects the live mode and it is restored on the next open