feat: add service worker route with cache-control headers and update PWA manifest icons for proper maskable support

Add /sw.js route with send_from_directory to serve service worker from root scope with Service-Worker-Allowed:/ and Cache-Control:no-cache headers. Add navigator.serviceWorker.register() script to index.html with load event listener and scope:/ parameter. Update service worker cache to v4 with media-mark-192.svg/media-mark-512.svg additions to SHELL array.

Update manifest.json icons
This commit is contained in:
2026-08-16 17:29:21 +02:00
parent cef785361f
commit 5723a5d2a0
5 changed files with 23 additions and 7 deletions
+10 -1
View File
@@ -13,7 +13,7 @@ from datetime import datetime
from pathlib import Path
import requests
from flask import Flask, jsonify, render_template, request
from flask import Flask, jsonify, render_template, request, send_from_directory
RADARR_URL = os.environ.get("RADARR_URL", "http://radarr:7878").rstrip("/")
RADARR_API_KEY = os.environ.get("RADARR_API_KEY", "")
@@ -57,6 +57,15 @@ try:
except OSError as exc:
log.warning("Datei-Logging nicht verfügbar (%s): %s", LOG_FILE, exc)
app = Flask(__name__)
@app.get("/sw.js")
def service_worker():
"""Serve the worker from the origin root so it can control the whole app."""
response = send_from_directory(app.static_folder, "sw.js", mimetype="application/javascript")
response.headers["Service-Worker-Allowed"] = "/"
response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
return response
executor = ThreadPoolExecutor(max_workers=int(os.environ.get("SCAN_WORKERS", "2")))
scan_executor = ThreadPoolExecutor(max_workers=int(os.environ.get("SCAN_WORKERS", "4")))
jobs = {"radarr": {"state": "idle", "total": 0, "done": 0, "error": None}, "sonarr": {"state": "idle", "total": 0, "done": 0, "error": None}}