• 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

    bruno released this 2026-10-01 15:55:09 -04:00 | 99 commits to main since this release

    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

    Downloads