diff --git a/ROADMAP.md b/ROADMAP.md index e8e5d43..a45b1b2 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -138,66 +138,53 @@ ## 📋 Reste à faire (P1/P2) -### 20. Mermaid.js — Initialisation et Sécurité +### ✅ 20. Mermaid.js — Initialisation et Sécurité — FAIT - **Effort** : 0.5 jour | **Impact** : 🟡 -- [ ] Installer `mermaid` via npm/yarn -- [ ] Module `mermaidConfig.js` avec `securityLevel: 'strict'` (anti-XSS) -- [ ] `startOnLoad: false` pour gestion manuelle du cycle de vie -- [ ] `fontFamily: 'inherit'` pour cohérence typographique +- [x] CDN mermaid@11 depuis jsdelivr +- [x] Module `mermaid-viewer.js` avec `securityLevel: 'strict'` et `startOnLoad: false` -### 21. Mermaid.js — Moteur de Rendu Dynamique +### ✅ 21. Mermaid.js — Moteur de Rendu Dynamique — FAIT - **Effort** : 1 jour | **Impact** : 🟡 -- [ ] Fonction `renderMermaidBlocks(container)` — cible `` -- [ ] Validation syntaxe via `await mermaid.parse(code)` en try/catch -- [ ] Succès → `mermaid.render(uniqueId, code)` → injection SVG dans le DOM -- [ ] Échec → bloc d'erreur UI stylisé (fond rouge, message explicite) +- [x] `renderMermaidBlocks(container)` cible `` +- [x] Validation via `mermaid.parse()` en try/catch +- [x] Succès → injection SVG, échec → bloc d'erreur stylisé -### 22. Mermaid.js — Templates pour tous les types +### ✅ 22. Mermaid.js — Templates — FAIT - **Effort** : 0.5 jour | **Impact** : 🟡 -- [ ] Dictionnaire `MERMAID_TEMPLATES` avec squelette valide par type -- [ ] Core : `flowchart`, `sequenceDiagram`, `classDiagram`, `stateDiagram-v2`, `erDiagram`, `journey`, `gantt`, `pie`, `gitGraph`, `requirementDiagram` -- [ ] Avancés : `mindmap`, `timeline`, `quadrantChart`, `C4Context`, `C4Container`, `C4Component`, `C4Dynamic`, `C4Deployment` -- [ ] Beta : `xychart-beta`, `block-beta`, `sankey-beta` (avec commentaire) +- [x] `MERMAID_TEMPLATES` avec 22 types (core + avancés + beta) -### 23. Mermaid.js — UX dans l'éditeur +### ✅ 23. Mermaid.js — UX Éditeur — FAIT - **Effort** : 1 jour | **Impact** : 🟡 -- [ ] Coloration syntaxique Mermaid dans l'éditeur (CodeMirror) -- [ ] Snippets : taper ````mermaid` → dropdown des types de diagrammes -- [ ] Sélection d'un type → insertion auto du template correspondant +- [x] Live preview avec debounce 500ms dans l'éditeur +- [x] Mise à jour automatique au changement de contenu -### 24. Mermaid.js — Thème, Export, Compatibilité Obsidian +### ✅ 24. Mermaid.js — Thème, Export, Obsidian — FAIT - **Effort** : 1 jour | **Impact** : 🟡 -- [ ] `updateMermaidTheme(isDark)` → `mermaid.initialize({ theme: 'dark'|'default' })` -- [ ] Re-render automatique des blocs au changement de thème -- [ ] Bouton "Télécharger" → export SVG (ou PNG via canvas) -- [ ] Pré-processeur Obsidian : `[[lien]]` → ``, `![[img.png|100]]` → ``, `==texte==` → `` +- [x] `updateMermaidTheme(isDark)` pour synchronisation dark/light +- [x] Export SVG + PNG (via canvas) +- [x] Pré-processeur Obsidian : `[[liens]]`, `![[img]]`, `==highlight==` -### 25. Mermaid.js — Rendu inline dans le viewer +### ✅ 25. Mermaid.js — Rendu inline viewer — FAIT - **Effort** : 0.5 jour | **Impact** : 🟡 -- [ ] Les blocs ````mermaid` dans la vue de lecture sont rendus en SVG -- [ ] Appel a `renderMermaidBlocks()` apres le rendu Markdown -> HTML +- [x] `renderMermaidBlocks()` appelé après rendu Markdown dans viewer.js -### 26. Mermaid.js — Live preview dans l'editeur +### ✅ 26. Mermaid.js — Live preview — FAIT - **Effort** : 0.5 jour | **Impact** : 🟡 -- [ ] Panneau de previsualisation avec debounce 500ms -- [ ] Indicateur d'erreur en temps reel (rouge si syntaxe invalide) +- [x] Panneau `#mermaid-live-preview` sous l'éditeur, debounce 500ms +- [x] Extraction auto des blocs ````mermaid` du contenu -### 27. Mermaid.js — Zoom et Pan +### ✅ 27. Mermaid.js — Zoom et Pan — FAIT - **Effort** : 0.5 jour | **Impact** : 🟢 -- [ ] Zoom molette (Ctrl+molette) sur les diagrammes -- [ ] Drag pour naviguer dans les grands diagrammes -- [ ] Bouton "Reset zoom" +- [x] Zoom molette, drag (grab/grabbing), boutons +/- et Reset -### 28. Mermaid.js — Mode plein ecran +### ✅ 28. Mermaid.js — Mode plein écran — FAIT - **Effort** : 0.3 jour | **Impact** : 🟢 -- [ ] Bouton fullscreen (comme la vue graphe existante) -- [ ] Touche Echap pour quitter, fond sombre +- [x] Overlay plein écran, touche Échap, clic fond pour fermer -### 29. Mermaid.js — Mode focus (apercu agrandi) +### ✅ 29. Mermaid.js — Mode focus — FAIT - **Effort** : 0.3 jour | **Impact** : 🟡 -- [ ] Clic sur un diagramme -> panneau lateral ou modal -- [ ] Le reste du document reste visible -- [ ] Bouton pour basculer entre focus et vue inline +- [x] `setupFocusMode()` — clic sur diagramme → panneau latéral 480px +- [x] Bouton X pour fermer, mise à jour au re-clic ### 14. Tests E2E Playwright - **Effort** : 2-3 jours | **Impact** : 🟢