diff --git a/CLAUDE.md b/CLAUDE.md
index c852d56..29c15fd 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -38,6 +38,7 @@ js/app.favicon.js (favicon fetch/cache + faviconHost — extrait §3.1)
js/app.import.js (export container + import CSV/JSON — extrait §3.1)
js/app.backup.js (auto-backup planifié — extrait §3.1)
js/app.health.js (vault health dashboard — extrait §3.1)
+js/app.overlays.js (quick search + cheatsheet + password history — extrait §3.1)
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 = …`)
@@ -109,6 +110,7 @@ seule `api()` est stubbée).
| Import/export frontend (CSV/JSON parse, export container) — extrait §3.1 | `js/app.import.js` |
| Auto-backup frontend (planifié, chiffré) — extrait §3.1 | `js/app.backup.js` |
| Vault health dashboard — extrait §3.1 | `js/app.health.js` |
+| Quick search + cheatsheet + history modal — extrait §3.1 | `js/app.overlays.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` |
diff --git a/CODE_AUDIT.md b/CODE_AUDIT.md
index f7d81ca..da6d92a 100644
--- a/CODE_AUDIT.md
+++ b/CODE_AUDIT.md
@@ -245,11 +245,15 @@ réécriture des call-sites, risque quasi nul vs conversion en modules ES).
- ✅ `js/app.health.js` extrait (vault health dashboard) — byte-for-byte
identique, chargé AVANT app.js (`auditCache`/`auditFilter` viennent avec,
résolus cross-fichier).
-- `app.js` : 11 936 → **9 545 lignes** (7 modules sortis).
+- ✅ `js/app.overlays.js` extrait (quick search + cheatsheet + password
+ history) — quicksearch était entrelacé avec ces 2 overlays, donc extraits
+ ensemble en un bloc contigu byte-for-byte. Chargé AVANT app.js.
+- `app.js` : 11 936 → **9 170 lignes** (8 modules sortis, ~2 770 lignes).
- Suite de tests : 42 → **62 tests**.
-- Reste : slideover, settings, autofill… Note : **quicksearch n'est PAS
- contigu** (entrelacé avec cheatsheet + history-modal 886-1063) → extraction
- propre pas triviale, reportée.
+- Reste : sections très couplées au state/DOM (slideover, settings, folders,
+ attachments, autofill, PIN/recovery/quick-unlock) — rendement/risque faible,
+ à faire au fil de l'eau. Le socle §3.1 (pattern + modules à risque isolés +
+ filet de tests) est en place.
- ✅ `node --check` en pré-étape de `BuildAssets.ps1` : **déjà fait** (cf. §3.2).
### 3.2 🟡 Aucun test automatisé — **partiellement adressé (2026-07-04)**
diff --git a/delphi-backend/assets/BuildAssets.ps1 b/delphi-backend/assets/BuildAssets.ps1
index 4fa36a7..9383bbe 100644
--- a/delphi-backend/assets/BuildAssets.ps1
+++ b/delphi-backend/assets/BuildAssets.ps1
@@ -58,6 +58,7 @@ $patterns = @(
'js\app.import.js',
'js\app.backup.js',
'js\app.health.js',
+ 'js\app.overlays.js',
'js\app.js',
'js\app.sync.js',
'css\style.css'
diff --git a/index.html b/index.html
index 73bdab1..3b54da4 100644
--- a/index.html
+++ b/index.html
@@ -1198,6 +1198,7 @@
+