fix: navigation partielle Alpine sans course + scripts de page idempotents (v7.45.2)
- app.js : x-ignore sur .main-wrapper au swap fdLoad (nœud remplacé uniquement), démontage unique quand tous les <script src> ont exécuté (load/error + filet 4s) via Alpine.initTree idempotent (_x_marker) — fini les cascades « Undefined variable » (éditeur) et « reading 'has' » ($store.fdCtx) : la zone s'initialisait avant composants et stores. - 5 scripts de page gardés contre la ré-exécution (SyntaxError « Identifier 'LW' has already been declared » à la 2e visite partielle) : local_workspace, board, settings, database_table, page_editor_realtime. - if (window.Alpine) → Alpine.data immédiat sinon listener alpine:init (déjà passé sur swap) : 8 scripts + 7 templates inline. - app.css : purge des 7 blocs @font-face Inter orphelins (fichiers inexistants → 302 HTML → « Failed to decode downloaded font »). - Gates : e2e/regression_editor_mount + e2e/regression_partial_nav (7 pages x complet/1er/2e passage) + regression_logout_dnd + smoke = 6/6 verts sur l'image rebuildée · pytest 1094 passed · ruff OK · OpenAPI 7.45.2.
This commit is contained in:
@@ -1,5 +1,44 @@
|
||||
# Changelog - FlowDeck
|
||||
|
||||
## v7.45.2 (2026-10-03) — Navigation partielle : montage Alpine sans course + scripts idempotents
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Cascades d'erreurs Alpine en navigation partielle** (« Undefined
|
||||
variable: … » puis « reading 'has' » sur `$store.fdCtx`) : sur un swap
|
||||
fdLoad, les `<script src>` de page s'exécutent APRÈS le microtask
|
||||
MutationObserver d'Alpine → toute la zone `.main-wrapper` s'initialisait
|
||||
avant que composants ET stores (menu contextuel) existent, et le
|
||||
démontage anticipé dès le premier script chargé perdait la course avec
|
||||
les autres. Fix : `x-ignore` sur **toute** la zone swapée au
|
||||
`htmx:afterSwap` (uniquement quand le nœud `.main-wrapper` a été
|
||||
remplacé — swaps sidebar/vues inchangés), démontage **unique** quand
|
||||
**tous** les `<script src>` ont exécuté (load/error + filet 4 s) via
|
||||
`Alpine.initTree` (idempotent grâce au `_x_marker`). Vérifié : 7 pages ×
|
||||
(complet / 1ʳᵉ / 2ᵉ visite partielle) + éditeur (3 phases) = 0 erreur.
|
||||
- **`SyntaxError: Identifier 'LW' has already been declared`** : tout
|
||||
script de page ré-exécuté à la 2ᵉ visite partielle plantait entièrement
|
||||
(`const` de haut niveau re-déclaré) → panneaux Alpine non montés.
|
||||
Garde de fichier posé sur `local_workspace.js`, `board.js`,
|
||||
`settings.js`, `database_table.js`, `page_editor_realtime.js` (pattern
|
||||
déjà utilisé par `page_editor_scripts.js`).
|
||||
- **Enregistrement Alpine différé** : `if (window.Alpine) Alpine.data(…
|
||||
sinon listener 'alpine:init'` (l'événement ne sera plus jamais émis sur
|
||||
swap) dans 8 scripts de page et 7 templates inline (`accounts`,
|
||||
`card_detail`, `table_view`, `team_load`, `trash`, `welcome`,
|
||||
`workspace`).
|
||||
- **Polices Inter orphelines** : `app.css` référençait 7 fichiers
|
||||
inexistants (`inter-400-latin.woff2`…) → 302 → HTML → « Failed to
|
||||
decode downloaded font » sur chaque page. Blocs legacy supprimés (les
|
||||
faces variable Inter 100-900 restent).
|
||||
|
||||
### Added
|
||||
|
||||
- **Gates E2E** : `e2e/regression_editor_mount.spec.js` (éditeur en 3
|
||||
phases : partielle / complet / 2ᵉ partielle) et
|
||||
`e2e/regression_partial_nav.spec.js` (7 pages × 3 passages + état
|
||||
fdCtx/appState) —0 erreur Alpine attendue.
|
||||
|
||||
## v7.45.1 (2026-10-02) — Fix logout « hors ligne » (SW) + drag & drop upload 403
|
||||
|
||||
### Fixed
|
||||
|
||||
Reference in New Issue
Block a user