3ef63373f8
Self-hosted dashboards served over plain HTTP on a LAN have no navigator.clipboard (insecure context), so every direct writeText call silently failed. web/src/lib/clipboard.ts already ships the HTTP-safe copyTextToClipboard fallback but only OAuthLoginModal used it; ChatPage (OSC 52 + Ctrl/Cmd+Shift+C), ProfilesPage, SystemPage, and WebhooksPage all bypassed it. Route them through the helper and add a source-level regression test that rejects any new direct clipboard write outside lib/clipboard.ts (clipboard reads are exempt: no legacy fallback exists). Sabotage-verified: the guard test fails when a direct write is introduced.