28aaf3d484
Favicon badge: removed crossOrigin='anonymous' from _drawFaviconBadge Image lazy-init. Same-origin favicons don't need CORS credentials; setting it caused silent cache-miss failures when the browser had the asset cached without CORS headers, preventing the canvas from drawing. Page title: new updatePageTitle() centralizes title logic. Format: '(N) hostname - muxplex' when N sessions have unseen bells, otherwise 'hostname - muxplex'. Hostname uses device_name setting with fallback to location.hostname. Called from pollSessions on every tick, from loadServerSettings callback, and immediately when device_name input changes (updating _serverSettings.device_name in place first so the helper sees the latest value without waiting for the debounced PATCH). Replaced 3 scattered document.title assignments with updatePageTitle(). Updated 3 existing source-pattern tests to reflect the new centralised approach; added 2 new tests for updatePageTitle existence and pollSessions call site.