Files
ObsiGate/docs/ROADMAP.md
T
bruno 2813d546a7
CI / lint (push) Successful in 2m41s
CI / security (push) Successful in 2m0s
CI / test (push) Successful in 4m45s
CI / build (push) Successful in 3m4s
CI / e2e (push) Successful in 15m36s
feat: facette Extensions dans les facettes de recherche #157
2026-10-01 20:35:21 -04:00

37 KiB
Raw Blame History

ObsiGate — Roadmap

Version : 2.46.0 | Dernière mise à jour : 2026-10-01 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 : ✅ livré le 2026-09-28 — P0 le 2026-09-27 (BUG-085 → BUG-088), A5/A10/A12 le 2026-09-28 (avec BUG-089), A8/A9/A9bis le 2026-09-28 (avec BUG-090), puis v2.33.0 → v2.39.0 : A6, A7, A13, A14, A15, A16, A17 (+ A11 déjà au CI) — backlog #153 terminé
  • 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) — 🟢 livré
      • 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 (v2.33.0)
      • A7 Navigation clavier + barre de formule + nom de cellule (Tab/Entrée/flèches) (v2.34.0)
      • 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 (JSDOM dans le job lint depuis v2.31.0 ; spec E2E livrée avec A9bis)
      • 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) — 🟢 livré
      • A13 Tri / filtre / recherche dans la feuille + export CSV de la sélection (v2.35.0)
      • A14 CRUD de feuilles, lignes et colonnes (renommer, insérer, supprimer, dupliquer) (v2.36.0)
      • A15 Styles minimaux + lecture fidèle (gras, fond, formats, fusions, volets figés) (v2.37.0)
      • A16 Formats additionnels (.xlsm avec keep_vba, .xls/.ods lecture seule via xlrd/odfpy, .csv éditable) (v2.38.0)
      • A17 Vue « tableau de bord » (plages nommées, TCD/graphiques, KPI par feuille, hint actions IA) (v2.39.0)
  • 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).

🔵 En cours — Refonte UI/UX tableur (P2)

154. Refonte UI/UX de la visionneuse & éditeur XLSX (ruban, grille, inspecteur)

  • Effort : 6-9 jours (Lot 1 ✅ · Lot 2 · Lot 3 · Lot 4) | Impact : 🟡
  • Statut : ✅ livré le 2026-09-29 (Lots 1 → 5, A1-A5) — ruban de commandes groupé, onglets de feuilles permanents avec bouton « + », badges d'état lecture seule / formules non recalculées, tokens de grille et affordances ; dialogues thémés showConfirm/showPrompt, bandeau de conflit 409 non bloquant, indicateur dirty ; inspecteur droit repliable (tableau de bord + entrée Assistant IA, redimensionnable) ; undo/redo, chargement via IntersectionObserver, ARIA role="grid" ; extraction des unités sans état dans frontend/js/xlsx/*.
  • Analyse, architecture cible et plan par lots : features/xlsx-ui-redesign.md
  • Description : la visionneuse XLSX (#152/#153) est fonctionnelle mais peu conviviale : commandes à plat sans hiérarchie, en-têtes de grille indistincts des cellules, états avancés (tableau de bord, troncature, lecture seule, formules non recalculées, conflits) mal intégrés. La refonte s'appuie sur les standards Excel/Google Sheets/Airtable sans renier la contrainte vanilla JS, zéro framework, zéro build npm.
  • Sous-tâches :
    • A1 Coquille : barre de commandes groupée, onglets feuilles permanents + « + », badges d'état, tokens de grille et affordances visuelles (Lot 1)
    • A2 Dialogues thémés (modales + toasts) et feedback non bloquant des conflits 409 (Lot 2)
    • A3 Inspecteur droit repliable : Tableau de bord + entrée Assistant IA (Lot 3)
    • A4 Undo/redo, chargement via IntersectionObserver, sémantique ARIA (Lot 4)
    • A5 Découpage frontend/js/xlsx/*, lien dashboard → grille, inspecteur redimensionnable (Lot 5)

🔵 En cours — Ergonomie tableur

155. Ergonomie tableur — menu contextuel & sélection type Excel

  • Effort : 2-4 jours | Impact : 🟡
  • Statut : ✅ livré — 2026-09-29 (menu contextuel clic droit + appui long, sélection type Excel)
  • Analyse, conception et critères : features/xlsx-context-menu.md
  • Description : retours utilisateur après #154 — ajouter un menu contextuel (clic droit + appui long tactile) sur les cellules et en-têtes, et aligner la sélection/curseur sur le comportement d'Excel (plage par glisser, Maj, sélection de ligne/colonne par en-tête).
  • Sous-tâches :
    • A1 Menu contextuel thémé (clic droit + appui long) : insérer/supprimer ligne & colonne, trier, effacer le contenu
    • A2 Sélection type Excel : plage (glisser / Maj+clic / Maj+flèches), en-têtes ligne/colonne, curseur croix, zone Nom affichant la plage

✅ Terminé — Tableur Excel (complétude)

156. Éditeur Excel — complétude fonctionnelle (presse-papiers, mise en forme, calcul, robustesse)

  • Effort : 15-22 jours (P0 2-3 j ✅ · P1 4-6 j ✅ · P2 5-7 j ✅ · P3 4-6 j ✅) | Impact : 🟡
  • Statut : ✅ livré le 2026-09-30 — P0 (4 défauts BUG-096 → BUG-099 corrigés), P1 (A5-A7 : presse-papiers de plage, clavier complet, zone Nom éditable), P2 (A8 mise en forme en écriture, A9 décision « pas de moteur de formule, annoncée dans l'UI », A10 undo/redo unifié conservé au re-rendu) et P3 (A11 export sélection/ Markdown/HTML/impression + recherche multi-feuilles, A12 concurrence optimiste If-Match, A13 cache des métadonnées, A14 outils IA .xlsm/.csv + recherche/analyse/structure)
  • Analyse, défauts, risques et critères d'acceptation : features/xlsx-editor-completeness.md
  • Description : #153 a rendu l'éditeur correct sur la grille de valeurs, #154/#155 l'ont rendu convivial (ruban, inspecteur, undo/redo des cellules, sélection et menu contextuel type Excel). Il reste l'écart avec un vrai éditeur tableur : coller une plage, écrire la mise en forme, calculer, sortir le résultat, et détecter un écrivain concurrent. La fiche porte l'audit ; les cases ci-dessous sont le suivi de référence.
  • Défauts corrigés le 2026-09-29 (cf. ISSUES_TODOLIST.md) :
    • ✅ BUG-096 — enregistrer un .csv depuis la visionneuse levait un TypeError (sheet: sheets[…].name alors qu'un CSV n'a pas de xlsx_sheets) : aucun PUT …/csv/save n'était émis (reproduit en JSDOM, corrigé + test) ;
    • ✅ BUG-097 — feuille .xlsm tronquée : « Charger la suite » échouait en 415 — GET …/xlsx/sheet accepte désormais .xlsx et .xlsm ;
    • ✅ BUG-098 — délimiteur CSV détecté (;/,/tabulation) et réutilisé à l'écriture : un CSV français s'affiche en colonnes et le reste après édition ;
    • ✅ BUG-099 — sonde de perte par feuille + signal cached_values_unverified quand le budget est épuisé : plus de perte silencieuse possible des valeurs calculées.
  • Sous-tâches :
    • P0 — défauts (🔴, 2-3 j) — ✅ livré le 2026-09-29
      • A1 Sauvegarde .csv depuis la visionneuse — BUG-096 (test JSDOM : PUT …/csv/save émis)
      • A2 Chargement paresseux des .xlsm — BUG-097 (GET …/xlsx/sheet accepte .xlsx/.xlsm)
      • A3 Délimiteur CSV détecté et réutilisé à l'écriture — BUG-098 (sniff_csv_delimiter)
      • A4 Sonde de perte par feuille + signal cached_values_unverified — BUG-099
    • P1 — presse-papiers & clavier (🟡, 4-6 j) — ✅ livré le 2026-09-29
      • A5 Presse-papiers de plage — copier/couper/coller un bloc TSV (Ctrl+C/Ctrl+X/Ctrl+V, menu contextuel), presse-papiers interne + système, remplissage multi-cellules (tests JSDOM : A1:B2 → D5:E6)
      • A6 Clavier complet — Ctrl+S, Ctrl+A, Suppr, F2, Ctrl+Home/End, Home/End, PgUp/PgDn, Ctrl+flèches, Maj+Entrée (saut de ligne en cellule)
      • A7 Zone Nom éditable (« Atteindre » : B12, A1:B3, Feuille!A1) + aide à la saisie des fonctions
    • P2 — mise en forme, calcul, undo (🟡, 5-7 j) — ✅ livré le 2026-09-30
      • A8 Mise en forme en écriture — bouton Mise en forme (gras/italique/souligné, alignements, couleurs, formats de nombre, fusions, volets figés, largeur/hauteur) via PUT …/xlsx/style (verrou, backup, garde de perte, If-Match)
      • A9 Calcul — décision documentée : pas de moteur de formule, l'enregistrement annonce « enregistrée comme texte » (la garde anti-DDE reste)
      • A10 Undo/redo unifié (cellules, effacement, tri/filtre, structure) et conservé au re-rendu (_xlsxHistory par fichier)
    • P3 — sortie, robustesse, performances (🟢, 4-6 j) — ✅ livré le 2026-09-30
      • A11 Sortie & recherche : export de la sélection / Markdown / HTML / impression, recherche sur toutes les feuilles (compteur n/m · k feuilles)
      • A12 Concurrence optimiste inter-processus (ETag/If-Match, 409 réparable, bouton « Réessayer » qui relit)
      • A13 Performances : cache des métadonnées par (chemin, mtime, taille) (LRU 8), invalidé à chaque écriture (axe des colonnes > MAX_COLS : hors périmètre)
      • A14 Outils IA étendus — .xlsm/.csv acceptés, search_workbook, analyze_range, edit_xlsx_structure

⚪ 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
154 Tableur — Refonte UI/UX (ruban groupé, onglets permanents, badges d'état, inspecteur droit, undo/redo) 2.40.0→2.43.1 features/xlsx-ui-redesign.md
155 Tableur — Menu contextuel (clic droit / appui long) & sélection type Excel 2.44.0 features/xlsx-context-menu.md
156 Tableur — Complétude éditeur : presse-papiers/clavier (A5-A7), mise en forme (A8), décision calcul (A9), undo unifié (A10), export + recherche multi-feuilles (A11), concurrence optimiste (A12), cache méta (A13), outils IA .xlsm/.csv (A14) + BUG-096 → BUG-099 2.45.0 features/xlsx-editor-completeness.md
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
157 Recherche — facette « Extensions » dans les résultats (3ᵉ filtre avec Vaults et Tags) 2.46.0 archive

📊 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
✅ Terminé #153 Visionneuse & édition XLSX — complétude (A1-A17 toutes livrées, v2.27.0 → v2.39.0) 0 jour restant
✅ Terminé #154 Refonte UI/UX tableur (A1-A5 toutes livrées, v2.40.0 → v2.43.1) 0 jour restant
✅ Terminé #155 Ergonomie tableur — menu contextuel & sélection type Excel 0 jour restant
✅ Terminé #156 Éditeur Excel — complétude — P0-P3 ✅ livrés le 2026-09-30 (BUG-096 → BUG-099, A5-A14) 0 jour restant
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.
  • Ajout 2026-09-29 : #154 ouvert — refonte UI/UX de la visionneuse/éditeur XLSX (audit UX, architecture cible, plan par lots) dans features/xlsx-ui-redesign.md ; livré en 5 lots (ruban groupé, onglets permanents + « + », badges d'état, tokens de grille, dialogues thémés, inspecteur droit, undo/redo, extraction frontend/js/xlsx/*).
  • Ajout 2026-09-29 : #155 livré — menu contextuel (clic droit / appui long) et sélection type Excel sur la grille (features/xlsx-context-menu.md) ; au passage BUG-094 corrigé (feuille vide/nouvelle désormais éditable, quadrillage vierge 20×8).
  • Clôture 2026-09-30 : #156 livré (P0 → P3) — A8 mise en forme en écriture (bouton Mise en forme : gras/italique/souligné, alignements, couleurs, formats de nombre, fusions, volets figés, largeur/hauteur — via PUT …/xlsx/style), A9 décision « pas de moteur de formule, annoncée dans l'UI », A10 undo/redo unifié conservé au re-rendu, A11 export de la sélection / Markdown / HTML / impression + recherche sur toutes les feuilles, A12 concurrence optimiste (If-Match, 409 réparable), A13 cache des métadonnées par mtime, A14 outils IA .xlsm/.csv + search_workbook/analyze_range/edit_xlsx_structure — détail dans features/xlsx-editor-completeness.md.
  • Ajout 2026-09-29 : #156 P1 livré — A5 presse-papiers de plage (copier/couper/coller un bloc, presse-papiers interne + système, entrées du menu contextuel, remplissage multi-cellules), A6 clavier complet (Ctrl+S/Ctrl+A/Suppr/F2/Ctrl+Home|End/PgUp|PgDn/Ctrl+flèches/Maj+Entrée) et A7 zone Nom éditable + aide à la saisie ; restent P2 (mise en forme, calcul, undo unifié) et P3 (sortie, concurrence optimiste, performances, outils IA).
  • Ajout 2026-09-29 : #156 ouvert — audit de complétude de l'éditeur Excel : 4 défauts recensés (BUG-096 enregistrement .csv, BUG-097 lazy-load .xlsm, BUG-098 délimiteur CSV, BUG-099 sonde de perte), corrigés le jour même (P0 ✅) avec tests de non-régression ; restent P1-P3 (presse-papiers, clavier, mise en forme, calcul, export, concurrence optimiste) puis presse-papiers de plage, clavier complet, mise en forme en écriture, calcul, undo/redo unifié, export/impression, concurrence optimiste — détail dans features/xlsx-editor-completeness.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.