43b4f724
docs: record shared web clipboard semantics
a73x 2026-08-18 12:27
Commit message
docs/decisions.md
| Old | New | ||
|---|---|---|---|
| @@ -3660,3 +3660,22 @@ socket and QUIC; replacing the old client with the new one failed both legs, | |||
| 3660 | naming the clipboard, title and bracketed-paste frames it rendered. Bells | 3660 | naming the clipboard, title and bracketed-paste frames it rendered. Bells |
| 3661 | coalesce to one replay per drain, so a binary full of BEL bytes cannot turn | 3661 | coalesce to one replay per drain, so a binary full of BEL bytes cannot turn |
| 3662 | into one host-terminal write per byte. | 3662 | into one host-terminal write per byte. |
| 3663 | |||
| 3664 | ## 2026-08-16 (shared client semantics and muxweb copy/paste) | ||
| 3665 | |||
| 3666 | **Protocol meaning has one platform-neutral boundary.** `client_core.zig` | ||
| 3667 | decodes sampled terminal state and one-shot host effects; both the CLI and | ||
| 3668 | WASM/browser adapters consume its validated `term_modes` and `term_event` | ||
| 3669 | results. Browser paste therefore follows the sampled DEC mode 2004 state | ||
| 3670 | rather than maintaining a web-only interpretation of the protocol. | ||
| 3671 | |||
| 3672 | **Browser clipboard authority belongs to the zoomed tile.** OSC 52 clipboard | ||
| 3673 | writes make a serialized, coalesced automatic Clipboard API attempt. If that | ||
| 3674 | fails, one latest-wins explicit Copy action is exposed; its accessible retry | ||
| 3675 | path restores terminal focus and IME handling after the attempt. Unzoomed | ||
| 3676 | tiles neither write the clipboard nor offer the retry. | ||
| 3677 | |||
| 3678 | **Selection remains a second slice.** Mouse-drag selection and scrollback | ||
| 3679 | copy will use the correlated Reply family and the shared selection | ||
| 3680 | architecture. They will not add a web-only protocol parser alongside the | ||
| 3681 | shared client semantics. | ||
docs/roadmap.md
| Old | New | ||
|---|---|---|---|
| @@ -415,9 +415,15 @@ mechanisms. | |||
| 415 | 415 | ||
| 416 | What remains banked is intentionally narrower: mouse mirroring, whose | 416 | What remains banked is intentionally narrower: mouse mirroring, whose |
| 417 | terminal-side reporting would take away native drag selection until | 417 | terminal-side reporting would take away native drag selection until |
| 418 | copy-mode exists; OSC 10/11 colour queries; and browser clipboard support. | 418 | copy-mode exists; mouse-drag selection and scrollback copy (Slice 2); and |
| 419 | The cross-version gate now also proves, over socket and QUIC, that a real | 419 | OSC 10/11 colour queries. Browser copy/paste shipped 2026-08-16: the CLI and |
| 420 | v0.0.1-5 client ignores the new daemon-to-client frames and keeps parsing. | 420 | web/WASM consume one shared semantic decoder, browser paste follows the |
| 421 | sampled DEC mode 2004 state, and OSC 52 first tries the Clipboard API then | ||
| 422 | offers one latest-wins explicit Copy fallback. Only the zoomed tile may act | ||
| 423 | on either clipboard path. Automated coverage pins those semantics; interactive | ||
| 424 | Firefox clipboard acceptance remains manual. The cross-version gate now also | ||
| 425 | proves, over socket and QUIC, that a real v0.0.1-5 client ignores the new | ||
| 426 | daemon-to-client frames and keeps parsing. | ||
| 421 | 427 | ||
| 422 | ## M16 candidates — and still outranked by trial feedback | 428 | ## M16 candidates — and still outranked by trial feedback |
| 423 | 429 | ||