What you’re missing is a shared “bridge” between the control page and the overlay page.
If both pages are just two separate HTML files (especially if you open them as file://...) then changing something in control.html won’t magically update overlay.html, because they run in different browser contexts.
What won’t work (or only works in limited cases)
- Global JS variables: only exist inside that one page.
postMessage: only works if you opened the overlay window from the control window (same window relationship).localStorage/BroadcastChannel: only works reliably when both pages are in the same browser + same profile + same origin.
OBS Browser Source is basically a separate Chromium instance/profile, so it usually won’t share storage with your Chrome control panel.
What will work (recommended)
You need to sync state over the network using one of these:
Option A (best): WebSocket (real-time)
Run a tiny local server (Node) and broadcast updates:
control.htmlsends updates (color, CSV data, etc.)overlay.htmllistens and re-renders instantly