Commit Graph
8 Commits
Author SHA1 Message Date
catarrh 1201e16d5e fix(cache): complete preload coverage + surface silent write failures
Root cause of 'pre-cache done but offline data missing':
1. Preload manifest never listed the services/{prayers,texts,headers,var}
   subtrees the Service view dereferences (CommonPrayers->prayers, etc.),
   plus only 13 hardcoded commands. Generator now enumerates all of them
   (en 1500->1740, ru->1333, cu 1500->2108 files).
2. DataCache.set silently resolved on IDB write failure (quota exceeded),
   so preload counted un-stored files as success and reported 100% done.
   set() now returns boolean; preload treats failed writes as failures
   that feed the existing circuit breaker (visible abort + diag entry).
3. No persistence request: added best-effort navigator.storage.persist()
   before preload, diag-logged.
4. Dropped dead manifest weight (menaion-common/add, horologionadd) -
   never referenced by any view.
2026-09-08 08:04:13 +03:00
catarrh a005e386a6 feat: serve all precached data offline via DataCache fallback
- DataCache.fetchWithFallback: network-first with IDB write-through under
  the same url: keys the preload writes; falls back to precached IDB copy
  when offline — closes the preload(IDB) vs read(SW cache) gap that made
  the Bible reader (and every other view) fail offline despite precaching
- Convert all 33 raw /data fetches across bible/service/menaion/prayer/
  calendar/settings views; in-memory caches and notFound maps preserved
- fetchCommandText: switch to lowercase services/commands/ (already in
  preload manifest); tolerate both TEXT/text node casings per migrate-data
- Remove stale duplicate static/data/en/services/Command/ (15 files)
- fetchLives: fix misc fallback to real lives/misc/{N}.json bundles
2026-08-24 09:50:07 +03:00
catarrh 142b95d226 refactor: address code-review findings for install detection and diag log
- pwa-install.ts: permanent 'ponomar-ever-installed' marker keeps install
  button hidden on Firefox/Safari after appinstalled clears the offer flag;
  isPwaInstalled moved to core for reuse
- diag-log: self-heal corrupted storage, show MM-DD in tail
- settings: refresh diag panel after clear-cache; uniform completion style
- data-cache.has: plain count(key); document HTML-as-failure intent
2026-08-23 10:23:36 +03:00
catarrh 8c4f60d635 feat: precache resilience — circuit breaker, forensic diag log, safe version check
- Circuit breaker: abort preload after 5 consecutive network failures
  (success or 404 resets streak) instead of grinding doomed retries
- localStorage diag ring buffer (survives cache wipes): preload-start/
  done/abort, manifest-unavailable, version events; shown in Settings
- checkDataVersion: no longer wipes IDB on transient read errors
  (DataCache.has tri-state probe); logs old value on real migrations
- loadManifest: null result no longer cached forever (per-session fallback lock-in)
2026-08-22 22:39:37 +03:00
catarrh ea09993df9 fix: IDB resilience, direct autopreload, nav delegation, Bible bounds 2026-08-21 23:05:23 +03:00
catarrh 9fb4d182e2 fix: singleton IndexedDB connection to prevent cache check failures 2026-08-04 02:21:45 +03:00
catarrh e4ddee924b offline: Infinity TTL, skip cached files, data version, first-launch preload offer, cache stats 2026-08-04 01:18:29 +03:00
catarrh 8b27bd4767 PWA optimization: vite-plugin-pwa, split misc.json, IndexedDB cache layer 2026-08-01 21:39:10 +03:00