• feat(web): code-block word-wrap + per-code-block and per-turn copy buttons

    vh released this 2026-07-17 08:58:22 -07:00 | 99 commits to main since this release

    Operator UX asks on the web console:

    • Code blocks now WRAP (white-space: pre-wrap; overflow-wrap: anywhere) instead of
      overflowing with a horizontal scrollbar — a long unbreakable token wraps in place.
    • Per-code-block copy button (hover-revealed, top-right of each .md-code-wrap).
    • Per-turn copy button (in the live turn-rule; top-right on seeded/historical turns) —
      copies the turn's response text; the existing think-inline copy is unchanged.

    One delegated click handler on #tw covers both (works across live / historical / think
    renders where blocks are injected via innerHTML). copyText falls back to a hidden
    textarea + execCommand when navigator.clipboard is absent (plain-http LAN context),
    and buttons flash "✓ copied". Static file served from disk — a browser refresh picks it
    up, no :8765 restart. Playwright-verified: code wraps (no x-overflow), both buttons copy
    the right text; 90 web tests green.

    Downloads