fix: A27 phase 1 — 4 243 L de JS inline extraites + eslint actif (v7.21.0)
FlowDeck CI / lint (push) Canceled after 0s
FlowDeck CI / test (push) Canceled after 0s
FlowDeck CI / docker (push) Canceled after 0s

Extraction des 7 templates dont le JS n'est PAS interpolé Jinja → 9 fichiers
static/js/*.js (4 243 lignes, -30 % du JS inline : 13 904 → 9 661) :
- agent_panel_1/_2 (bloc de 1 788 L livré sur CHAQUE page), library (1 039),
  gitea_workspace (626), _icon_picker_1/_2, _ctx_menu, import, workspaces
- UN fichier par bloc : ordre/timing identiques (pas de defer, attributs
  conservés dont data-cfasync), cache-busting via ?v={{ asset_version }}
  (source unique A40), scripts externes = 'self' en CSP (pas de nonce requis)
- garde-fou : le script refuse tout bloc contenant {{ ou {%
- vérifs : node --check vert sur les 9, 0 script inline restant dans les
  cibles, suite complète 1089/1089

Lint (la moitié « ajouter les templates à eslint » de l'audit) :
- eslint.config.mjs existait (flat v9, sans dépendances npm) mais AUCUN
  binaire eslint n'était installé → npm i -g eslint
- `eslint static/js` → 0 erreur, 120 warnings (no-unused-vars 69,
  no-empty 36, no-undef 15) sur 8 fichiers = baseline à nettoyer
- les extraits sont couverts d'office par la config (static/js/**/*.js)

Reste A27 : blocs interpolés Jinja (page_editor 2 517, local_workspace 2 031,
base 1 523, database_table 1 323, settings 1 093, realtime 531 ≈ 9 661 L)
→ extraction en 2 temps (config JSON injectée + script statique).

suite **1089/1089** · ruff OK · docs à jour
This commit is contained in:
2026-10-01 15:55:09 -04:00
parent 7a38ddd0f6
commit 587ec8d61b
22 changed files with 4289 additions and 4258 deletions
+31
View File
@@ -1,5 +1,36 @@
# Changelog - FlowDeck
## v7.21.0 (2026-10-01) — Audit : A27 phase 1 (4 243 L de JS extraites)
### Changed
- **A27 (phase 1)** — les 7 templates dont le JS **n'est pas interpolé Jinja**
sont extraits vers `static/js/*.js` : agent_panel_1/_2 (dont un bloc de
**1 788 lignes livré sur chaque page**), library (1 039), gitea_workspace
(626), _icon_picker_1/_2, _ctx_menu, import, workspaces →
**4 243 lignes, -30 % de JS inline** (13 904 → 9 661)
- Extraction **un fichier par bloc** : ordre et timing d'exécution identiques
(pas de defer/async, attributs d'origine conservés dont `data-cfasync`),
cache-busting `?v={{ asset_version }}` (source unique A40), CSP : les
scripts externes relèvent de `'self'` (pas de nonce requis)
### Lint
- ESLint **installé globalement** (`npm i -g eslint`) — `eslint.config.mjs`
existait déjà en flat config « sans dépendances » mais **aucun binaire**
n'était installé (d'où « 0 linté »)
- `eslint static/js` : **0 erreur, 120 warnings** sur 8 fichiers
(no-unused-vars 69, no-empty 36, no-undef 15) → baseline à nettoyer
- `node --check` vert sur les 9 fichiers extraits ; `eslint.config.mjs` couvre
déjà `static/js/**/*.js` donc les extraits sont lintés d'office
### Notes
- Reste A27 : les blocs interpolés Jinja (page_editor 2 517, local_workspace
2 031, base 1 523, database_table 1 323, settings 1 093… ≈ 9 661 L) →
extraction en 2 temps (config JSON injectée + script statique)
- Suite complète : **1089/1089**
## v7.20.0 (2026-10-01) — Audit : A32 TERMINÉ (routes Gitea + bug fd_icon)
### Fixed