# Strict offline mode When strict offline mode is enabled, `mag-dash` must not fetch any assets from the public internet. This hardens offline deployments and ensures predictable behavior in disconnected environments. ## What it affects - MQTT client loading: the UI first attempts to load the vendored bundle at `web/vendor/mqtt/mqtt.bundle.mjs`. - If strict offline is enabled and this local bundle is missing or unusable, the UI fails fast with a clear message and does not attempt any CDN fallback. ## How to enable Use any one of the following (first match wins): 1. URL query: append `?strict_offline=1` to the page URL 2. Local storage: run `localStorage.setItem('magdash.strict_offline','1')` in DevTools and reload 3. Global flag: set `window.MAGDASH_STRICT_OFFLINE = true` before the app loads Disable by removing the flag or setting it to `0`/`false`. ## Verifying offline readiness - Run `deno run -A scripts/verify_assets.ts` to confirm vendored assets exist (Tabler Icons and MQTT bundle). - In DevTools → Network, ensure no requests go to third‑party CDNs while using the app (including when opening the MQTT tab). ## Optional CSP For defense‑in‑depth, add this header at your proxy: ``` Content-Security-Policy: default-src 'self'; connect-src 'self' ws: wss: ``` This blocks third‑party scripts while still allowing `ws:`/`wss:` data feeds.