8 Commits
Author SHA1 Message Date
catarrh 8c442bf7b6 fix(offline): surface degraded/missing preloads, join re-entrant runs, cache manifest to IDB
- loadManifest() goes through DataCache.fetchWithFallback: the file list is
  written to IDB and survives SW-cache eviction; a run with the reduced
  fallback set is flagged and shown as degraded (new i18n en/ru/cu).
- 404 answers are counted as 'missing' (deployment drift) with a
  preload-missing diag entry, instead of silently reporting Done.
- preload() is re-entrancy safe: concurrent calls join the in-flight run.
- versions.json is loaded once per session (was fetched per translation).
- Write-through failures in fetchWithFallback()/fetch() log idb-write-fail.
- preload-manifest.json SW route is NetworkFirst (fresh coverage online).
- Manifest now also covers the shared/lives + shared/commands fallbacks.
2026-10-04 17:14:33 +03:00
catarrh f49735b360 feat: explicit PWA update prompt with build stamp
- registerType 'prompt' + skipWaiting/clientsClaim false: new SW waits
  instead of silently hijacking running sessions
- main.ts registers via virtual:pwa-register; onNeedRefresh shows
  dismissible toast (i18n en/ru/cu) with Update button -> updateSW(true)
- No polling — update check only on navigation, zero extra traffic
- Settings About shows __BUILD_DATE__ build stamp for remote debugging
2026-08-24 11:39:47 +03:00
catarrh 193038a671 fix: hide install button when PWA already installed
- Button hidden by default; async isPwaInstalled() check (standalone mode,
  ponomar-installed flag, getInstalledRelatedApps) unhides only if installable
- Click hint 'already installed' branch uses same multi-signal detection
- manifest id '/' for getInstalledRelatedApps matching on desktop Chrome
2026-08-22 23:14:25 +03:00
catarrh b4ebd37cc3 fix: unstretched PWA icons, maskable purpose, theme-aware favicon
- generate-icons.py: preserve SVG aspect ratio (was stretched 1.49x), art at 80% for maskable safe zone, emit transparent cross-gold.png
- manifest icons: purpose 'any maskable'
- applyTheme(): compose favicon per app theme (chrome bg + gold cross)
2026-08-22 11:36:14 +03:00
catarrh 058ef497f7 fix: add skipWaiting + clientsClaim for immediate SW activation 2026-08-02 01:46:25 +03:00
catarrh e397591781 fix: exclude data files from precache to prevent SW install errors 2026-08-02 01:22:35 +03:00
catarrh 8b27bd4767 PWA optimization: vite-plugin-pwa, split misc.json, IndexedDB cache layer 2026-08-01 21:39:10 +03:00
catarrh 58b379d6e3 initial commit 2026-07-23 02:41:15 +03:00