Describe the bug
User-facing onboarding pages depend on three third-party CDNs loaded at runtime, so onboarding breaks for any user whose browser/network can't reach them (ad/script blockers like uBlock Origin or Brave Shields, privacy browsers, DNS filtering, restrictive firewalls, or CDN outages). When this happens the page's HTML renders but with no CSS or JS: unstyled white page, no animations, and broken buttons (e.g. "Join Server" never responds, because its handler script didn't load).
The dependencies can be found in app/templates/:
Affected templates include at least user-plex-login.html (the first page a new Plex invitee sees), welcome-jellyfin.html, and the error pages (401/404/500.html).
Screenshots
N/A
Logs
N/A — fails silently client-side. Reproduce by loading an invite link with a basic browser- or DNS-level content blocker enabled, or with DevTools → Network offline-to those domains; CSS/JS requests to the three hosts fail and the page renders unstyled with dead buttons.
Additional context
This is on v2026.4.0 and also present on main. Docker (ghcr.io/wizarrrr/wizarr:latest), SQLite backend, Python 3.13.
Self-hosting these assets from /static (a compiled Tailwind build instead of the Play CDN, plus local copies of anime.js and bowser) would make onboarding robust regardless of client network/extensions, remove the production use of the Play CDN.
Describe the bug
User-facing onboarding pages depend on three third-party CDNs loaded at runtime, so onboarding breaks for any user whose browser/network can't reach them (ad/script blockers like uBlock Origin or Brave Shields, privacy browsers, DNS filtering, restrictive firewalls, or CDN outages). When this happens the page's HTML renders but with no CSS or JS: unstyled white page, no animations, and broken buttons (e.g. "Join Server" never responds, because its handler script didn't load).
The dependencies can be found in app/templates/:
Affected templates include at least user-plex-login.html (the first page a new Plex invitee sees), welcome-jellyfin.html, and the error pages (401/404/500.html).
Screenshots
N/A
Logs
N/A — fails silently client-side. Reproduce by loading an invite link with a basic browser- or DNS-level content blocker enabled, or with DevTools → Network offline-to those domains; CSS/JS requests to the three hosts fail and the page renders unstyled with dead buttons.
Additional context
This is on v2026.4.0 and also present on main. Docker (ghcr.io/wizarrrr/wizarr:latest), SQLite backend, Python 3.13.
Self-hosting these assets from /static (a compiled Tailwind build instead of the Play CDN, plus local copies of anime.js and bowser) would make onboarding robust regardless of client network/extensions, remove the production use of the Play CDN.