- no-store on everything except /stream: stale cached app.js (old CDN hls.js ref) was the cause of the black screen — video plays fine in a real Chromium once the fresh JS loads (verified via playwright) - synopsis moved under the episode grid
- upstream.py: Cloudflare-proof fetchers (curl_cffi), self-checking - app.py: /api/* routes + /stream/{token} HLS proxy (CDN has no CORS) - static/: search -> detail/seasons/episodes -> hls.js player, history - verified end-to-end: search chainsaw man -> ep1 dub 1080p segment