The fetch handler tried to cache every intercepted request, so a chrome-extension:// request made cache.put() throw 'Request scheme chrome-extension is unsupported'. Skip non-http(s) and non-GET requests, and swallow cache-write failures.
- Settings: 'Server' selector — 'Same origin' (default) vs 'Custom URL' (URL input revealed only in custom mode, placeholder 127.0.0.1:8081) - serverUrl defaults to '' (same-origin); persisted per choice - remove SIMTRACE_EMBEDDED frontend check and the server's _EMBEDDED_MARKER index.html injection (no longer needed) - i18n: Server / Same origin / Custom URL (EN/RU)
Server: - --capture accepts 'disabled'; no backend is created, capture_mode exposed - /api/status returns capture_mode; capture start/stop return 403 when disabled; latest/status/delete_session are None-safe PWA: - captureMode state; conn-status shows server version - new capture-mode line (Settings) explaining gsmtap/direct/disabled - hide capture + New capture UI when disabled; trace empty-state shows 'Capture unavailable' - 7 new EN/RU i18n keys Version 1.2.0 (server + PWA); tests: 111.
- frontend/: simtrace-analyser PWA (index.html, sw.js, manifest.json, icons, tests/index.test.html) copied in fresh - server.py: static file serving (_STATIC_MIME, _serve_static) with path-traversal guard; injects window.SIMTRACE_EMBEDDED='1' into index.html so the PWA defaults to a relative API base - server __main__: --web-dir (default <repo>/frontend) - frontend: embedded same-origin mode; sw.js relative precache paths + cache v4; GitHub link + version-warn point at simtrace2-pysniff - version 1.1.0 everywhere (__version__, pyproject, PWA_VERSION, manifest); MIN_SERVER_VERSION stays 1.0.0 - README/scripts/.gitignore updated Tests: 107.