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.
This commit is contained in:
catarrh committed 2026-10-04 17:14:33 +03:00
1 parent 1201e16d5e
commit 8c442bf7b6
7 files changed
+184 -55

No files matched your search

+60
View File
@@ -26,6 +26,26 @@
"/data/shared/fasting.json",
"/data/shared/calendar/triodion.json",
"/data/shared/calendar/pentecostarion.json",
"/data/shared/lives/01.json",
"/data/shared/lives/03.json",
"/data/shared/lives/05.json",
"/data/shared/lives/09.json",
"/data/shared/lives/10.json",
"/data/shared/lives/11.json",
"/data/shared/lives/12.json",
"/data/shared/lives/misc/1.json",
"/data/shared/lives/misc/2.json",
"/data/shared/lives/misc/3.json",
"/data/shared/lives/misc/4.json",
"/data/shared/lives/misc/5.json",
"/data/shared/lives/misc/6.json",
"/data/shared/lives/misc/7.json",
"/data/shared/lives/misc/8.json",
"/data/shared/lives/misc/9.json",
"/data/shared/commands/DivineLiturgy.json",
"/data/shared/commands/Fasting.json",
"/data/shared/commands/ScriptureTransfers.json",
"/data/shared/commands/ServiceRules.json",
"/data/en/menaion-bundle.json",
"/data/shared/services/templates/AllSaints.json",
"/data/shared/services/templates/Ambrose.json",
@@ -1773,6 +1793,26 @@
"/data/shared/fasting.json",
"/data/shared/calendar/triodion.json",
"/data/shared/calendar/pentecostarion.json",
"/data/shared/lives/01.json",
"/data/shared/lives/03.json",
"/data/shared/lives/05.json",
"/data/shared/lives/09.json",
"/data/shared/lives/10.json",
"/data/shared/lives/11.json",
"/data/shared/lives/12.json",
"/data/shared/lives/misc/1.json",
"/data/shared/lives/misc/2.json",
"/data/shared/lives/misc/3.json",
"/data/shared/lives/misc/4.json",
"/data/shared/lives/misc/5.json",
"/data/shared/lives/misc/6.json",
"/data/shared/lives/misc/7.json",
"/data/shared/lives/misc/8.json",
"/data/shared/lives/misc/9.json",
"/data/shared/commands/DivineLiturgy.json",
"/data/shared/commands/Fasting.json",
"/data/shared/commands/ScriptureTransfers.json",
"/data/shared/commands/ServiceRules.json",
"/data/shared/services/templates/AllSaints.json",
"/data/shared/services/templates/Ambrose.json",
"/data/shared/services/templates/Annunciation.json",
@@ -3113,6 +3153,26 @@
"/data/shared/fasting.json",
"/data/shared/calendar/triodion.json",
"/data/shared/calendar/pentecostarion.json",
"/data/shared/lives/01.json",
"/data/shared/lives/03.json",
"/data/shared/lives/05.json",
"/data/shared/lives/09.json",
"/data/shared/lives/10.json",
"/data/shared/lives/11.json",
"/data/shared/lives/12.json",
"/data/shared/lives/misc/1.json",
"/data/shared/lives/misc/2.json",
"/data/shared/lives/misc/3.json",
"/data/shared/lives/misc/4.json",
"/data/shared/lives/misc/5.json",
"/data/shared/lives/misc/6.json",
"/data/shared/lives/misc/7.json",
"/data/shared/lives/misc/8.json",
"/data/shared/lives/misc/9.json",
"/data/shared/commands/DivineLiturgy.json",
"/data/shared/commands/Fasting.json",
"/data/shared/commands/ScriptureTransfers.json",
"/data/shared/commands/ServiceRules.json",
"/data/cu/menaion-bundle.json",
"/data/shared/services/templates/AllSaints.json",
"/data/shared/services/templates/Ambrose.json",