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.
- 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