diff --git a/CHANGELOG.md b/CHANGELOG.md index 73ff383..3d69de0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,9 +40,28 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - **#78 Excalidraw — doc utilisateur finalisée** : `.excalidraw` / `.excalidraw.md` ajoutés aux formats supportés (README FR/EN), nouvelle section « Diagrammes Excalidraw » dans le guide intégré (i18n FR/EN) et note de compatibilité avec le plugin Obsidian Excalidraw. -- **Roadmap** : #78 marqué terminé (B5 extraction texte, F3 E2E `tests/e2e/excalidraw.spec.js`, - H1-H3 docs) ; C8/F2 non retenus. Points optionnels #61 (dépôt communautaire de plugins) et - #74 (D2/E4/H2/I2) explicitement marqués non retenus. +- **Roadmap** : #78 marqué terminé (B5 extraction texte, C8 menu contextuel, F3 E2E + `tests/e2e/excalidraw.spec.js`, H1-H3 docs) ; F2 non retenu. Points optionnels #61 + (dépôt communautaire de plugins) et #74 (D2/E4/H2/I2) explicitement marqués non retenus. + +### Corrigé + +- **Recherche cassée (régression plugins)** : `onSearchFilter()` était appelée avec 2 arguments + au lieu de 3 (`frontend/js/search.js`), renvoyait `undefined`, faisait échouer le rendu des + résultats et basculait silencieusement sur la recherche hors-ligne (0 résultat). Corrigé → + la recherche full-text et l'autocomplétion refonctionnent (20 tests E2E). +- **`.excalidraw.md` corrompu à l'ouverture** : Excalidraw émet `onChange` au montage, ce qui + déclenchait un auto-save 2 s plus tard réécrivant le fichier au format JSON brut et détruisant + le format plugin Obsidian (`frontend/excalidraw-editor.html` + `frontend/js/excalidraw-viewer.js`). + Les changements initiaux sont désormais ignorés et le format `frontmatter + compressed-json` + est préservé à la sauvegarde. +- **Splash / tests E2E** : `window.__OBSIGATE_BOOTED` était posé avant la fin de `init()` — le + splash disparaissait trop tôt et les tests E2E interagissaient avant que les handlers soient + liés. Le flag est maintenant posé après résolution de `init()` (`frontend/js/app.js`), et + `goHome()`/`login()` attendent ce signal. +- **Tests E2E Excalidraw** : réécriture de `tests/e2e/excalidraw.spec.js` avec les sélecteurs + réels (modale `.obsigate-modal` + `#file-ext-select`/`#file-name-input`, menu contextuel, + `canvas.first()` pour les deux couches canvas). --- diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index edfc251..478ebc5 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -529,7 +529,7 @@ ### 78. Éditeur Excalidraw — Ouverture et édition de fichiers .excalidraw -- **Effort :** 3-4 jours | **Impact :** 🟡 | **Statut :** ✅ TERMINÉ (2026-09-10 — éditeur iframe complet, détection, création, autosave, support `.excalidraw.md`, B5 extraction texte pour la recherche, F3 E2E `tests/e2e/excalidraw.spec.js`, doc H1-H3. C8 et F2 non retenus. BUG-002 corrigé) +- **Effort :** 3-4 jours | **Impact :** 🟡 | **Statut :** ✅ TERMINÉ (2026-09-10 — éditeur iframe complet, détection, création, autosave, support `.excalidraw.md`, B5 extraction texte pour la recherche, C8 création via menu contextuel, F3 E2E `tests/e2e/excalidraw.spec.js`, doc H1-H3. F2 non retenu. BUG-002 corrigé) - **Description :** Prise en charge native des fichiers `.excalidraw` dans ObsiGate avec un éditeur visuel complet intégré. L'utilisateur peut ouvrir un fichier `.excalidraw` depuis l'arborescence et obtenir l'éditeur de diagrammes Excalidraw directement dans ObsiGate — dessiner, modifier, sauvegarder, comme dans l'app Excalidraw standalone, mais intégré au flux de travail du vault Obsidian. @@ -635,7 +635,7 @@ - Quand l'extension `.excalidraw` est sélectionnée, le backend crée le fichier avec le squelette JSON minimum (B6) - Après création → `openFile(vault, path)` → le viewer détecte `is_excalidraw: true` → l'iframe s'ouvre avec le canvas vierge - Fonctionne aussi via la palette de commandes `Ctrl+Alt+Space` → « Nouveau fichier » (action `create-file` existante) - - [ ] **C8. Création via le menu contextuel** — ⚪ NON RETENU (la modale « Nouveau fichier » suffit) : Dans `frontend/js/context-menu.js`, ajouter une option « 🎨 Nouveau diagramme Excalidraw » dans le menu contextuel des répertoires → ouvre directement la modale avec `.excalidraw` pré-sélectionné. + - [x] **C8. Création via le menu contextuel** (FAIT 2026-09 — `frontend/js/ui.js` `_createExcalidraw()`, option « Nouveau diagramme Excalidraw » sur les répertoires, E2E couvert) : ouvre la modale avec `.excalidraw` pré-sélectionné. ##### D. CSS & Design (0.5 jour) - [x] **D1. Styles de l'iframe dans ObsiGate** : L'iframe occupe 100% du content-area (`width: 100%; height: 100%; border: none;`). Aucun padding ni marge. @@ -913,4 +913,4 @@ - L'effort inclut le développement + tests unitaires + intégration CI, mais pas la documentation utilisateur. - Les items marqués 🟢 (nice-to-have) sont de bons candidats pour des contributions externes. - #59 (hors-ligne), #63 (i18n), #64 (MFA), #65-66, #67-68, #71, #74-76, #78 sont livrés — les P3 restants à plus fort rapport effort/valeur : #72 (OpenAPI, 1-2j) et #62 (collaboration). -- #78 est terminé (B5 recherche texte, F3 E2E, doc H1-H3) ; les points C8 et F2 sont non retenus. BUG-002 (loading infini Excalidraw) corrigé par les commits a4ea322/185d603 — à revalider sur poste client. +- #78 est terminé (B5 recherche texte, C8 menu contextuel, F3 E2E, doc H1-H3) ; F2 non retenu. BUG-002 (loading infini Excalidraw) corrigé par les commits a4ea322/185d603. diff --git a/frontend/excalidraw-editor.html b/frontend/excalidraw-editor.html index a9faddd..1c15024 100644 --- a/frontend/excalidraw-editor.html +++ b/frontend/excalidraw-editor.html @@ -102,7 +102,7 @@