feat(web): code-block word-wrap + per-code-block and per-turn copy buttons
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.
This commit is contained in: