Defer media loading and strengthen persistence tests
All checks were successful
Deploy Sokko G / deploy (push) Successful in 18s

This commit is contained in:
Shinuwa 2026-09-12 23:28:05 +02:00
parent 09a2d4b71a
commit d0e1fd73b1
19 changed files with 459 additions and 71 deletions

View file

@ -37,7 +37,7 @@ Entrée type dans `modules` :
### Ordre et confirmation des écritures
Le démarrage attend la lecture complète du registre, des liens, des modules et
Le démarrage attend la lecture du registre, des liens, des modules hors médias et
de la position des notifications avant d'ouvrir l'interface. Un échec laisse
le stockage non prêt : les méthodes d'écriture refusent les opérations, et la
création, l'import et l'export ne peuvent pas utiliser un état vide incomplet.
@ -58,6 +58,25 @@ la fin de transaction. Une erreur synchrone pendant sa préparation déclenche
l'abandon de la transaction. Les écritures ordinaires d'un module restent ciblées
sur sa clé et ne réécrivent pas les images des autres outils.
Les données des outils `images` et `imageAnnotation` sont lues à leur première
ouverture, en page complète ou dans le panneau latéral. Les minuteurs et calendriers
restent chargés au démarrage pour assurer les alertes globales. Les couvertures,
incluses dans le registre des toolboxes, restent également chargées au démarrage.
Un marqueur uniquement en mémoire distingue un média non lu d'un outil vide ; il
n'est jamais persisté ni exporté. Les transactions de snapshot conservent les
entrées non lues, sauf celles explicitement supprimées de l'état courant.
Une lecture tardive ne réintroduit pas un outil supprimé entre-temps.
Pendant la lecture, le contenu de l'outil est bloqué. Un échec affiche une reprise
locale sans empêcher les autres outils de fonctionner ni autoriser l'écrasement
du média non lu. Après ouverture, les médias restent en mémoire jusqu'au
rechargement de l'application ; il n'y a pas d'éviction à la fermeture.
Les exports attendent les écritures précédentes dans la même file et lisent les
médias manquants depuis l'état confirmé, sans les ajouter au cache de l'interface.
Si cette lecture échoue, aucun fichier partiel n'est téléchargé. Les formats
IndexedDB et import/export sont inchangés.
Cette coordination est locale à l'instance React ; elle ne synchronise pas
l'édition entre plusieurs onglets.