# Changelog - FlowDeck ## v7.24.0 (2026-10-01) — Audit : A27 extraction TERMINÉE (bilan -85 %) ### Changed - **A27 (phase 2c)** — `_database_table_scripts.html` : **1 314 L extraites** vers `static/js/database_table.js`. Le Jinja du bloc était confiné à la construction de l'objet de config (4 clés + `{% if collection_data %}`) → config JSON `#db-config` **null-vs-objet** : `new DBInstance(container, PAGE_COLLECTION_ID, DB_CONFIG)` remplace les 2 branches Jinja - 2 tests adaptés (lisaient le template source → `database_table.js`) ; `FlowDeckDB` plus dans le HTML → assert sur le JS ### Notes - **BILAN A27 : 11 874 L extraites en 4 phases** (4 243 + 2 516 + 3 801 + 1 314), **inline 13 904 → 2 022 L (-85 %)**, 22 fichiers `static/js/*.js`, `node --check` vert partout, eslint **0 erreur / 285 warnings** - Reste : `base` 1 523 L structurel (`{% block %}`/`{% for %}` — reste inline par nature, décision assumée), ~500 L de petits blocs hors cibles, nettoyage des 285 warnings - Suite complète : **1089/1089** ## v7.23.0 (2026-10-01) — Audit : A27 phase 2b (+3 801 L) ### Changed - **A27 (phase 2b)** — 4 blocs interpolés extraits avec la recette config JSON (identique à la 2a) : · `local_workspace.html` → `local_workspace.js` (2 031 L, `lw-config` : current_folder_id, workspace_id) · `settings.html` → `settings.js` (1 093 L, `st-config` : avatar_url, avatar_color, user full_name/login/email, is_admin, auth_method — **2 routes rendent ce template**, les expressions `or ""` sont préservées pour les valeurs Undefined, `is_admin` reste un booléen) · `_page_editor_realtime.html` → `page_editor_realtime.js` (531 L, `rt-config` : SELF id/login/full_name/color) · `board.html` → `board.js` (146 L, `bd-config` : owner/repo/initial_view) - BONUS sécurité : les valeurs passent par `|tojson` (échappement JSON explicite) au lieu d'être interpolées dans des strings JS - Tags : config JSON inline (nonce conservé) + `