diff --git a/CLAUDE.md b/CLAUDE.md index 620ea98..8fcb36e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -31,11 +31,18 @@ global** dans le navigateur, donc les `const`/fonctions d'un fichier sont visibles des suivants exactement comme dans le monofichier. Ordre actuel : ``` -js/argon2.js (IIFE, globalThis.NobleArgon2) +js/argon2.js (IIFE, globalThis.NobleArgon2) js/app.crypto.js (KDF, verifier, encrypt/decrypt — extrait §3.1) -js/app.js (le reste) +js/app.js (le reste : state, Bridge, api, UI…) +js/app.sync.js (WebDAV + merge — extrait §3.1, APRÈS app.js car + effet de bord top-level `Bridge.onWebdavResult = …`) ``` +Note ordre : un module **sans** exécution top-level (que des déclarations, +comme `app.crypto.js`) peut se charger AVANT `app.js`. Un module **avec** un +effet de bord top-level qui touche un global d'`app.js` (`Bridge`, `state`…) +doit se charger APRÈS (`app.sync.js`). + Règles pour extraire un nouveau module : - Il doit se charger **avant** ses consommateurs et **ne jamais redéclarer** un `const` d'un autre fichier (un `const` dupliqué entre deux classic @@ -87,6 +94,7 @@ parsing CSV d'import, et l'arbitrage merge/tombstone de sync | Handlers REST | `delphi-backend/Handlers/PM.Handler.*.pas` | | Frontend principal (en cours de découpage §3.1) | `js/app.js` | | Crypto frontend (KDF, verifier, AES-GCM) — extrait §3.1 | `js/app.crypto.js` | +| Sync frontend (WebDAV, snapshot, merge) — extrait §3.1 | `js/app.sync.js` | | Argon2id vendé (bundle `@noble/hashes`, IIFE) | `js/argon2.js` | | HTML racine | `index.html` | | Styles | `css/style.css` | diff --git a/CODE_AUDIT.md b/CODE_AUDIT.md index 61bf799..fca8bff 100644 --- a/CODE_AUDIT.md +++ b/CODE_AUDIT.md @@ -224,11 +224,14 @@ seulement au runtime). chargés dans l'ordre via ` + diff --git a/js/app.js b/js/app.js index 264a79a..b850e34 100644 --- a/js/app.js +++ b/js/app.js @@ -9768,598 +9768,10 @@ async function autoPurgeTrashIfNeeded() { } // ============================================================ -// SYNC (WebDAV, auto-merge with timestamps) +// SYNC (WebDAV) — extracted to js/app.sync.js (§3.1), loaded as a +// separate