- Resync the capture bundle (caption-local e5637d1): relay-config.js and
ws-publisher.js have no default relay, and the capture page starts with
empty relay and caption website fields.
- overlay.html, overlay_enhanced.html and editor.html always go through
CaptionRelay.setup(), which asks for a relay address when the link does
not carry ?relay=, instead of connecting to the public relay.
- relay/init-config.cjs no longer adds https://caption.ninja to the
generated origins.
sanitize() parsed untrusted caption text with innerHTML on a detached div, so
<img src=x onerror=...> executed in every overlay (including OBS), and its
textContent output was inserted as HTML again, so <img ...> ran too.
Parse with DOMParser (inert document) and escape the result before callers
insert it. Covers overlay.html and overlay_enhanced.html; Steve's upstream
fix/overlay-escaped-caption-text-20261006 only addresses the second decode.
- Remove remote translation providers (Google Cloud Translation, OpenAI,
Anthropic): translation-providers.js is now a local-only shim and the
overlays translate through the bundled Mozilla Bergamot worker only.
- Remove Google Cloud TTS (ttskey/googlettskey parameters and the speak()
branch); native browser TTS plus opt-in ElevenLabs/Speechify remain.
- worker.js loads only the bundled /models directory and no longer falls
back to the remote model proxy.
- Update translation-guide.html, README.md, CLAUDE.md and
overlay_enhanced_readme.md for the local-only workflow.
- Sync the caption-local browser bundle (relay defaults, Firefox
resampling, session token, favicon, CSP).
- Add language toggle control to index.html for quick FR/EN switching
- New &togglelang=en-US,fr-FR URL parameter
- Toggle button UI with Ctrl+L keyboard shortcut
- Speech recognition restarts automatically with new language
- Add Google auto-detect language feature for overlays
- New &fromlang=auto and &autodetect URL parameters
- Requires Google API key (premium feature)
- Google automatically detects source language per phrase
- Update documentation in translation-guide.html
- New 'Multi-Language Speakers' section with both options
- Clear workflow examples for bilingual events
- Update overlay_enhanced_readme.md with new parameters
Closes#20