Initial-bootstrap failure stopped the poll interval from ever starting,
and even once running, refresh() never reset the indicator back to
'polling' on success — so a single upstream blip pinned the plugin
in an error state until the user reloaded the page.
refresh() now loads namespaces on demand (absorbs bootstrap), the
interval is started unconditionally on show(), and every successful
poll flips the indicator back to green.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Dashboard now reachable across the internet: browser calls /api/dashboard/*
same-origin, PHP forwards to OUMTA_DASHBOARD_URL (configurable via env,
with docker-compose defaults pointing at host.docker.internal:8085).
Keeps the bearer token server-side and lets the dashboard live on a
private network.
Plumbing bits: polling indicator now green (no reason to look anxious
about a healthy poll loop), and the support plugin returns 200 pulled=0
when its relay isn't configured instead of flooding the network tab
with 502s on every background tick.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>