Files
ObsiGate/docs/ROADMAP.md
T
bruno c4b8e66206 feat: tableau de bord classeur - plages nommees, TCD/graphiques et KPI par feuille #153
A17 — nouveau endpoint GET /api/file/{vault}/xlsx/dashboard (read_workbook_
dashboard : plages nommees avec portee depuis defined_names read_only,
comptage graphiques/TCD par parts OPC, stats par feuille bornées 500x40 :
cellules/lignes/colonnes/formules/numerique + 8 premieres valeurs en cartes
KPI) et panneau frontend toggled depuis la toolbar (table des plages,
cartes KPI par feuille, hint actions IA). Bouton absent pour .csv et
formats en lecture seule ; le menu structure est saute quand le bouton
n'existe pas. i18n FR/EN (xlsx.dashboard_*), 8 tests backend + 2 tests
JSDOM + contre-preuve (5 echecs sur neutralisation), ruff/mypy 0.

🤖 Generated with Codebuff
Co-Authored-By: Codebuff <[email protected]>
2026-09-28 16:40:09 -04:00

26 KiB
Raw Blame History

ObsiGate — Roadmap

Version : 2.39.0 | Dernière mise à jour : 2026-09-28 Ce fichier ne contient que le travail à venir (🔵 En cours + ⚪ Backlog) et un index compact vers les fonctionnalités livrées.


Légende

Icône Signification
✅ Terminé
🔵 En cours
⚪ Prévu / Backlog
🔴 Impact Critique / Bloquant
🟡 Impact Utile / Attendu
🟢 Impact Nice-to-have / Confort

Convention : chaque item porte un ID stable #NN (clé de jointure entre roadmap, changelog et commits). Une fonctionnalité livrée sort de ce fichier et entre dans l'index « Complété » ci-dessous, avec son détail dans docs/features/ ou l'archive.


🔵 En cours

77. Application Desktop native — Tauri (Windows / Linux / macOS)

  • Effort : 8-12 jours | Impact : 🟡 | Framework : Tauri v2 (Rust + Webview)
  • Statut : livré (A→F) — projet Tauri, backend Python embarqué, fonctionnalités natives, jumplist vaults, bannière 1er lancement, build CI, UX, 24 tests Rust. Détail complet : features/desktop-tauri.md
  • Reste à faire :
    • Signature de l'updater Tauri (gratuit) : paire de clés générée, pubkey renseignée, createUpdaterArtifacts activé, secrets CI câblés
    • Manifeste latest.json généré par scripts/updater_manifest.py (intégré à publish_release.py), endpoint updater pointé sur main
    • Signature de code Windows : non retenue — décision confirmée le 2026-09-26 : livraison non signée + documentation SmartScreen (« Exécuter quand même »). Alternatives écartées sauf retour utilisateur : SignPath.io (OSS gratuit), Certum OSS, Azure Trusted Signing, certificat EV
    • Exécuter les 6 tests E2E manuels — protocole documenté : DESKTOP_E2E_CHECKLIST.md

🔵 En cours — Visionneuse & édition Excel (P0/P1/P2)

153. Visionneuse & édition XLSX — complétude (fidélité, recherche, IA, UX, formats)

  • Effort : 8-13 jours (P0 ✅ 2-3 j · P1 : 4-6 j · P2 : 2-4 j) | Impact : 🟡
  • Statut : 🔵 en cours — P0 livré le 2026-09-27 (BUG-085 → BUG-088), A5/A10/A12 livrés le 2026-09-28 (avec BUG-089), A8/A9/A9bis livrés le 2026-09-28 (avec BUG-090), reste A6-A7 puis A13-A17
  • Analyse, risques et critères d'acceptation : features/xlsx-viewer.md
  • Description : #152 (visionneuse XLSX, 2.27.0) lit et édite correctement la grille de valeurs d'un .xlsx, mais l'ensemble supporté est étroit : valeurs seulement (ni structure, ni styles en écriture, ni formule recalculée), écriture destructive d'une partie du classeur, tableurs invisibles à la recherche et inutilisables par l'IA au-delà de la création. Ce lot suit ces ajouts ; les cases ci-dessous sont le suivi de référence, la fiche feature porte le détail.
  • Constat (points de départ) : MAX_ROWS = 500 / MAX_COLS = 40 sans indicateur (troncature silencieuse) · wb.save() non atomique et sans verrou (concurrence) · saisie =… stockée comme formule par openpyxl (injection DDE) · content="" à l'indexation (recherche TF-IDF et sémantique aveugles) · aucun outil IA de lecture/édition d'un classeur existant · aucun test frontend ni E2E sur le viewer.
  • Périmètre réel des pertes au round-trip (mesuré sur openpyxl 3.1.5, 2026-09-27) : graphiques, images, dessins et tableaux croisés sont préservés ; sont perdus les valeurs calculées en cache, slicers/chronologies, contrôles de formulaire, connexions/requêtes, custom XML, signature numérique, commentaires enrichis et macros.
  • Sous-tâches :
    • P0 — garde-fous d'écriture (🔴, 2-3 j) — 🟢 livré
      • A1 Alerte de fidélité avant écriture : inspect_workbook() → xlsx_lossy_features + bandeau FR/EN + 409 xlsx_lossy_content sans force (confirmation explicite puis reprise) — BUG-085
      • A2 Écriture atomique (wb.save(.tmp) + os.replace(), backup inchangé) — BUG-086
      • A3 Verrou par fichier autour du read-modify-write (timeout 15 s + 409 conflict) — BUG-087
      • A4 Neutralisation de l'injection de formule (=/@ stockés en texte, opt-in allow_formula + bouton f(x)) — BUG-088
    • P1 — recherche, IA, UX (🟡, 4-6 j) — 🔵 en cours
      • A5 Indexation du contenu des feuilles (noms de feuilles + 20 premières lignes, plafond 5 k caractères) — les mots tapés dans une cellule rendent le fichier trouvable ; au passage BUG-089 (reindex manuel ne reconstruisait pas l'index inversé)
      • A6 Outils IA update_xlsx_cells / append_xlsx_rows / xlsx_to_markdown / list_xlsx_sheets
      • A7 Navigation clavier + barre de formule + nom de cellule (Tab/Entrée/flèches, Maj+Entrée, copie de plage)
      • A8 thead sticky + bandeau « feuille tronquée » (lève la troncature silencieuse) — BUG-090
      • A9 Chargement paresseux par feuille (GET …/xlsx/sheet?offset&limit, défilement virtuel)
      • A10 Types & formats de saisie (nombre/texte, booléens TRUE/FAUX, dates FR JJ/MM/AAAA jour-first)
      • A11 Tests frontend (tests/frontend/xlsx-viewer.test.mjs) + E2E (tests/e2e/xlsx-viewer.spec.js) au CI
      • A12 Valeur calculée affichée sous la formule (2ᵉ lecture data_only=True seulement si l'archive contient un <v>, info-bulle FR/EN)
    • P2 — étendu (🟢, 2-4 j) — ⚪ à faire
      • A13 Tri / filtre / recherche dans la feuille + export CSV de la sélection
      • A14 CRUD de feuilles, lignes et colonnes (renommer, insérer, supprimer, dupliquer)
      • A15 Styles minimaux en écriture + lecture fidèle (gras, fond, formats, fusions, volets figés)
      • A16 Formats additionnels (.xlsm avec keep_vba, .xls, .ods, .csv éditable)
      • A17 Vue « tableau de bord » (plages nommées, TCD, KPI par feuille, actions IA)
  • Convention de suivi : chaque sous-tâche démarre par son ID stable (#153-A<n> dans cette Roadmap) ; celles qui sont des défauts sont aussi ouvertes comme BUG-NNN dans ISSUES_TODOLIST.md (A1→BUG-085, A2→BUG-086, A3→BUG-087, A4→BUG-088 ; A8 le sera à son tour).

⚪ Backlog — Priorité 4 (P4)

73. Synchronisation multi-appareils — Obsidian Sync compatible

  • Effort : 6-8 jours | Impact : 🟢
  • Décision 2026-09-26 : reporté (P4) — axe prioritaire = dette & sécurité (#85/#87) ; #73 hors chemin critique. Si réactivé : partir d'un MVP export/hash/LWW adossé à #59 (PWA offline) + #62 (collab Yjs/CRDT) plutôt qu'un protocole parallèle.
  • Description : Synchronisation des vaults entre plusieurs instances d'ObsiGate via un protocole de synchronisation décentralisé ou compatible Obsidian Sync. Alternative self-hosted à Obsidian Sync.
  • Sous-tâches :
    • Protocole : évaluation CRDT vs OT vs diff/patch pour fichiers markdown
    • Transport : WebSocket ou polling HTTPS avec compression
    • Merge strategy : LWW (Last Writer Wins) avec historique des deux versions
    • Détection de changements : hash SHA-256 par fichier, journal des modifications
    • UI : page « Synchronisation » avec statut par appareil, historique des syncs
    • Conflits : UI de résolution manuelle (diff côte à côte entre version locale et distante)
    • Chiffrement : optionnel, chiffrement AES-256-GCM avant transmission
    • Pairing : échange de clé publique + code QR pour appairage des appareils

⚪ Backlog — Sécurité, architecture & performance (P0/P1)

87. Amélioration continue — tests, CI/CD, revues de sécurité (phase 4)

  • Effort : 3-5 jours | Impact : 🟡 | Zone : .gitea/workflows/, tests/
  • Décision 2026-09-26 : prioritaire (axe Dette & sécurité).
  • Statut : 🔵 en cours depuis 2026-09-26 — par tranches. T1 livrée (v2.28.1) : bandit bloquant (nosec justifiés B324/B404/B603/B607/B406, B105 exclu comme pyproject), npm audit bloquant (0 vulnérabilité), 5 suites frontend intégrées au CI (upload, pretty, media-viewer, mfa-settings, config-ai-keys). pip-audit reste consultatif (montées starlette/weasyprint à qualifier).
  • T6 livrée (v2.28.15) : dépendances qualifiées — mistune 3.3.3, python-multipart 0.0.31, weasyprint 70, mcp 1.28.1, fastapi 0.141.1 + starlette 1.7.0, setuptools 84 (cast mistune 3 sites) — suite 1359 passed, ruff/mypy 0, pip-audit bloquant, 0 vulnérabilité (seule exception documentée : PYSEC-2026-1325 ecdsa, sans correctif upstream, JWT HS256 uniquement).
  • T7 livrée (v2.28.15) : semgrep bloquant sur ruleset 100 % local semgrep-rules/ (8 règles, 0 finding, contrôle négatif OK) ; trivy écarté (binaire + DB réseau, couche Python couverte).
  • T8 livrée (v2.28.15, fin BUG-034) : cookies Secure auto (true|false|auto, X-Forwarded-Proto sous TRUST_PROXY, warning affiné, TRUST_PROXY=true en prod) ; CORSMiddleware same-origin explicite ; style-src 'unsafe-inline' conservé assumé (189 style= + 343 el.style, T5c ayant verrouillé script-src).
  • Description : renforcer le pipeline (.gitea/workflows/ci.yml, desktop-build.yml) pour le rendre bloquant par défaut et accompagner les phases 1 → 3. Constat 2026-09-26 : job security non bloquant (bandit/pip-audit en || echo, ni semgrep ni trivy), E2E limité à chromium-desktop, 5 suites frontend hors CI.
  • Sous-tâches :
    • Jobs CI sécurité bloquants (bandit/semgrep/trivy, audits pip/npm) + tests E2E XSS (page de partage + lecteur markdown) — T4 livrée : tests/e2e/xss.spec.js (BUG-021/022, 2/2 vert) + scripts/e2e-server.ps1 (cycle de vie serveur E2E avec progression start|stop|status|logs) + validation locale projet chromium-desktop : 108/108 verts (obsigate 44, split 37, viewers 24, xss/header 3), mobiles ciblés 10/10
    • Tests de concurrence (users.json), fuzzing de timing regex, couverture des composants critiques ; intégrer au CI les 5 suites frontend hors CI (upload, pretty, media-viewer, mfa-settings, config-ai-keys) — T2 livrée (v2.28.2) : tests/test_hardening_concurrency.py (users.json concurrent + budget temps regex) ; 5 suites au CI (T1)
    • Finir BUG-034 (migration CSP nonce, conversion des handlers inline), Secure cookies à true par défaut, politique CORS same-origin explicite ; confirmer la rotation de la clé DeepSeek (BUG-006, clé dans l'historique Git) — T3 livrée (v2.28.3) (helper + avertissement + CORS attesté) ; T5a livrée (v2.28.6) (16 handlers inline → listeners, CSP inchangée) ; T5b livrée : nonce frais par réponse (backend/csp.py, script-src), injection dans les 6 pages HTML (dont nouvelle route /excalidraw-editor.html), unsafe-inline conservé (inerte) ; T5c livrée (v2.28.13) (script-src sans unsafe-inline) ; T8 livrée (v2.28.15) (fin BUG-034 : Secure auto + CORS explicite ; style-src résiduel assumé ; rotation DeepSeek BUG-006 toujours côté utilisateur)
    • Revue périodique des dépendances ; documentation utilisateur FR/EN synchronisée ; contrôle automatisé de la conformité au DoD — T6/T9 livrées (v2.28.15) (pip-audit 0, npm audit 0, locales FR/EN 2213 clés parité testée test_i18n_parity.py, gardes test_version.py + test_ci_workflow.py)
    • Revue périodique des dépendances ; documentation utilisateur FR/EN synchronisée ; contrôle automatisé de la conformité au DoD

✅ Complété — index

Détail complet dans docs/archive/COMPLETED_v1-v2.md et docs/features/. Cette table est la seule source de navigation ; ne pas re-détailler les items livrés ici.

# Domaine / fonctionnalité Version Détails
152 Viewer XLSX — affichage multi-feuilles, édition des cellules, téléchargement 2.27.0 archive
BUG-047 Versionnage — source unique VERSION + bump SemVer automatique au commit (hooks + tag) 2.3.0 DEVELOPMENT_AND_RELEASES.md
90 Barre d'actions du document — regroupement fonctionnel + spacers 2.3.0 archive
89 Drag & drop complet de fichiers/dossiers & intégration Assistant IA 2.3.0 features/drag-and-drop-ai.md
1–8 Fondations (FastAPI, TF-IDF + stemming, watchdog, SPA, sécurité, path traversal, gzip, PWA) 1.0.0→1.4.0 archive
9–20 UX & productivité (share, webhooks, dashboard, conflits, backlinks, redaction, backups, graphe, header, aperçu) 1.5.0→1.6.0 archive
21–22 Architecture (split app.js → 16 modules, validateur imports CI) 1.5.1 archive
23–25 CI/CD & qualité (Gitea Actions, Ruff/Mypy/Bandit/Pip-audit, pytest) 1.6.0 archive
26–29 AI Editor (toolbar, multi-provider, 16 endpoints, auto-save) 1.7.0 archive
30–39 Fonctionnalités avancées (export PDF, palette, mobile, drag & drop, filtres, indexation non-bloquante) 1.8.0→1.9.0 archive
40–46 Gestion des backups (diff, gestionnaire, purge, auto, rétention) 1.9.0 archive
47–57 Mermaid.js (22 templates, live preview, thèmes, zoom, plein écran, pré-processeur Obsidian) 2.0.0 archive
58 Tests E2E Playwright (44 desktop + 12 mobile, CI) 2.0.0 archive
59 Mode hors-ligne PWA complet (IndexedDB, file de synchro, conflits) 2.0.0 archive
63 Internationalisation i18n FR/EN 2.0.0 archive
65 Thèmes personnalisés (light/dark/high-contrast/sepia, import/export) 2.0.0 archive
66 Export multi-formats (HTML, MD bundle, ePub) 2.0.0 archive
71 Tableau de bord administrateur 2.0.0 archive
64 MFA (TOTP + WebAuthn + recovery codes) 2.1.0 archive
74 Support complet des documents PDF 2.1.0 features/pdf.md
75 Éditeur multi-panneaux (Split View) 2.1.0 features/split-view.md
61 Plugins système (sandbox Web Worker, hooks, 9 endpoints) 2.2.0 archive
67 Notifications web — Push API 2.2.0 archive
68 Health check enrichi 2.2.0 archive
72 API publique documentée — OpenAPI 3.1 2.2.0 archive
76 BooksLM — Console AI contextuelle par répertoire 2.2.0 features/bookslm.md
78 Éditeur Excalidraw 2.2.0 features/excalidraw.md
62 Collaboration temps réel — Édition simultanée (Yjs/CRDT, WebSocket, awareness) 2.3.0 features/collaboration.md
79 Assistant IA — Outils (function calling) & serveur MCP 2.3.0 features/ai-tools-mcp.md
80 Assistant IA — Rendu Markdown, liens fichiers/paths & sessions 2.3.0 features/ai-assistant-ux.md
81 Assistant IA — Commandes (@, /), skills, images & capacités des modèles 2.3.0 features/ai-assistant-commands.md
82 Assistant IA — Section « Fournisseur & modèle » compacte (recherche modèle + info capacités, BUG-043) 2.3.0 features/ai-provider-picker.md
69 Éditeur mobile natif — Interface tactile optimisée 2.3.0 features/mobile-editor.md
70 Recherche sémantique — Embeddings vectoriels (hybride TF-IDF + RRF) 2.3.0 features/semantic-search.md
77 Application Desktop native — Tauri 🔵 en cours features/desktop-tauri.md
84 Consolidation & sécurité — revue statique 2026-09-13 (phase 1, BUG-021→034) 2.3.0 archive
83 Barre d'outils d'édition mobile — ruban style Obsidian Android 2.3.0 archive
88 Assistant IA — contexte applicatif (documents ouverts, répertoire, recherche, fichiers récents) & liens de fichiers fiables (BUG-041, BUG-042) 2.3.0 features/ai-app-context.md
91 Assistant IA — Zone de discussion façon Notion : post ancré en haut, fournisseur/modèle discret & barre d'actions 2.3.0 features/ai-assistant-conversation-ux.md
93 Édition inline — « Editer » et « Forge » remplacent la vue lecture (assistant IA qui met le document à jour) 2.3.0 features/editeur-inline.md
94 Assistant IA — Bouton de soumission arrondi + icône renouvelée (arrow-up) 2.4.0 features/ai-assistant-history.md
95 Assistant IA — Historique permanent des conversations (persistance backend) 2.4.0 features/ai-assistant-history.md
96 Assistant IA — Accès rapide à l'historique depuis la sidebar de navigation 2.4.0 features/ai-assistant-history.md
97 Assistant IA — Panneau « + » extensible (fichiers, Deep Research, contextes, skills…) 2.4.0 features/ai-assistant-history.md
98 Assistant IA — Filtre de recherche dans la sidebar « Historique IA » 2.5.0 features/ai-assistant-history.md
99 Sidebar — Filtrage des vues « Récents » et « Sauvegardes » 2.6.0 features/sidebar-filters.md
100 Assistant IA — Deep Research en pastille (au lieu du texte injecté) 2.6.0 features/ai-assistant-history.md
101 Forge — Assistant IA partagé (bouton AI Panel = assistant, fournisseur/modèle configuré, autocomplétion) + plein écran Forge/Editer 2.8.0 features/forge-assistant.md
BUG-057 Assistant IA — bouton « Ajouter » fonctionnel dans l'éditeur Forge (en plus d'« Editer ») 2.9.0 archive
102 Assistant IA — bouton « Ajouter la section » par bloc de code (insertion du bloc seul) 2.9.0 archive
92 Assistant IA — Écosystème d'outils phase 2 (recherche à clé, cache/retry, Playwright, crawl, Gitea/GitHub, documents XLSX/DOCX/CSV/PDF) 2.10.0 features/ai-tools-roadmap.md
103 Configuration — clés utilisateur des sources connectées & recherche à clé (page Configurations, data/api_keys.json, priorité sur l'env) 2.11.0 features/ai-tools-roadmap.md
104 Configuration — Redesign UI de la section « Clés API IA » : recherche fournisseurs, carte défaut 2 colonnes + badges de capacités, cartes dépliables, footer d'actions sticky 2.12.0 features/ai-keys-ui.md
105 Guide d'utilisation — audit de couverture complet, téléchargement Markdown/PDF, guide desktop élargi, section Architecture (Mermaid) + BUG-067 2.13.0 features/guide-coverage-105.md
106 Assistant IA — Actions instantanées contextuelles, catalogue « Toutes les actions » & frontmatter complet 2.14.0 features/ai-quick-actions.md
107 Configuration — Gestion des clés API & MCP : création/révocation de jetons longue durée (1 j, 1 mois, 6 mois, 1 an, sans fin), une seule clé pour l'API REST et le serveur MCP, « dernière utilisation », store data/api_tokens.json sans secret persisté 2.15.0 features/api-mcp-tokens-107.md
86 Optimisation globale des performances (phase 3) — scan différentiel, excalidraw différé, garde-fou replace (inverted index / PDF lazy / caps regex déjà livrés via BUG-033/040/025) 2.16.0 features/perf-phase3-86.md
108 Support complet des images — arborescence, visionneuse (zoom/pan/navigation/miniatures), indexation nom+métadonnées, media_types.py, filtre ext:, SVG sandbox 2.17.0 features/image-support.md
109 Support audio & vidéo — lecteurs HTML5 intégrés, streaming HTTP Range (/api/media), fallback codec/taille 2.18.0 features/media-viewers-109.md
110 Lecteur média persistant « Now Playing » — élément partagé téléporté (inline ⇄ dock), Media Session, mini-vidéo PiP, mobile, reprise 2.19.0 features/media-viewers-109.md
111 Visionneuse d'images — navigation fluide : image ajustée au cadre, navigation en place (cache annuaire + préchargement), pellicule persistante, flèches latérales au survol 2.20.0 features/image-navigation-111.md
112 En-tête allégé & compte en sidebar — version dans le menu Options, retrait utilisateur/déconnexion du header, section compte en bas de la sidebar, pellicule d'images défilable (molette + flèches) 2.21.0 features/header-user-sidebar-112.md
113 Configuration — ordre naturel des sections (Profil 1er, À propos dernier, TOC = page) & avatar utilisateur (import PNG/JPG/WEBP, persistance serveur, cercle sidebar) 2.22.0 features/settings-order-avatar-113.md
114 Configuration — refonte mobile-responsive (modale plein écran 100dvh, sommaire en drawer coulissant, cibles tactiles ≥ 44 px, inputs 16 px anti-zoom, sauvegarde sticky, MFA 1 colonne, purge i18n/HTML) 2.23.0 features/settings-mobile-114.md
BUG-078 Fichiers de code — coloration syntaxique restaurée (feuilles highlight.js basculées sur le mode de thème et non la clé) 2.25.0 features/viewer-toolbar-highlight-avatars.md
115 Viewer — barre d'outils de lecture épinglée au défilement 2.25.0 features/viewer-toolbar-highlight-avatars.md
117 Configuration — avatars prédéfinis dans le profil utilisateur (12 images) 2.25.0 features/viewer-toolbar-highlight-avatars.md
85 Refonte architecturale — découpage du monolithe (14 routers, main.py 4 827 → ~750 lignes), stores JSON verrouillés, rate-limit SQLite optionnel 2.27.2→2.27.13 features/archi-refonte-85.md

📊 Résumé des efforts

Priorité Items Effort total estimé
✅ Complété #1 → #59, #61–72, #74–76, #78–86, #88–93, #94–100, #102–115, #117, #92 ~141 jours réalisés
🔵 Finitions #77 Desktop : 6 tests E2E manuels (protocole) — signature Windows non retenue (décision 2026-09-26) ~0,5-1 jour
⚪ P4 reporté #73 Sync — reporté (décision 2026-09-26), hors chemin critique 6-8 jours si réactivé
⚪ P0/P1 prioritaire #87 CI/CD (BUG-035 → BUG-040 corrigés, #86 livré) ~3-5 jours
⚪ P0/P1/P2 backlog #153 Visionneuse & édition XLSX — complétude (P0 ✅ A1-A4 ; P1 ✅ A5, A8-A10, A12, A9bis — reste A6-A7 ; A13-A17 2-4 j) 2-4 jours restants
Total chemin critique #77 fin + #87 ~4-6 jours

Notes

  • Décisions 2026-09-26 : axe prioritaire = dette & sécurité (#85/#87) ; #73 Sync reporté (P4, hors chemin critique) ; desktop livré non signé + doc SmartScreen.
  • Ajout 2026-09-27 : #153 ouvert à la suite de l'audit de la visionneuse XLSX (limitations, risques de perte de données, périmètre IA/recherche) — détail et critères dans features/xlsx-viewer.md.
  • Clôture #85 (v2.27.13) : monolithe découpé (T1→T9), stores verrouillés + rate-limit SQLite (T10), fiche docs/features/archi-refonte-85.md.
  • Les items P3/P4 ne sont pas ordonnés par priorité interne — à raffiner selon les retours utilisateurs.
  • 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.
  • Maintenance de ce fichier : quand un item passe à ✅, déplacer son détail vers docs/features/<slug>.md (grosse feature) ou docs/archive/COMPLETED_v1-v2.md (item court), ajouter une ligne dans l'index « Complété », et consigner la version dans le CHANGELOG.