drives the built client over websocket like production: connect, join,
send and echo a message, and deliver a message between two clients. ergo
is fetched and started by the test harness; run with npm run test:e2e.
TypeScript + React + Vite client with zustand state. IRCv3 caps (SASL,
message-tags, echo-message, chathistory, multiline, account-registration,
webpush, …), mIRC formatting, reactions/typing/read-markers, themes, PWA +
Web Push, and runtime config.json (webchat-style) for re-pointing/re-branding
without a rebuild. See CONFIG.md.