diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0673a77..d221e1c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,85 @@ Toutes les modifications notables d'ObsiGate sont documentées dans ce fichier.
Format basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/),
et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+> **En cours de développement** : les changements non publiés sont dans la section
+> [2.0.0 — Unreleased](#200--unreleased). La dernière version publiée est **1.8.0**.
+
+---
+
+## [2.0.0] — Unreleased
+
+> ObsiGate passe à **2.0.0** avec sa **version bureau native** et de nombreuses fonctionnalités
+> de productivité (branch main, 341 commits après le tag v1.8.0).
+
+### Ajouté
+
+- **Application bureau native (Tauri 2)** — Porte d'entrée desktop pour vaults Obsidian (`desktop/`)
+ - Shell Rust + Tauri 2 (tray icon, notifications OS, auto-update depuis Gitea)
+ - Backend Python embarqué (python-embed) avec health check, démarrage ~2s
+ - Sélecteur de dossiers natif, config persistante des vaults (type VAULT vs DIR)
+ - Fenêtre console masquée, arrêt propre via tray, associations de fichiers `.md`
+ - Packages : Windows MSI + NSIS, Linux .deb + AppImage
+ - Pipeline CI/CD Desktop (`.gitea/workflows/desktop-build.yml`)
+ - Thème système auto (clair/sombre) + RAM réduite (~80 MB au repos)
+ - Écran de chargement inline (staging backend/frontend pour le bundle desktop)
+- **Internationalisation FR/EN complète** — 1357 clés i18n, préférence serveur, guide entièrement traduit
+- **Vue multi-panneaux (Split View #75)** — PaneManager + TabManager par panneau
+ - Split droite/bas, drag & drop cross-pane, drag-to-split (bord droit/bas)
+ - Boutons de split, navigation clavier, fermeture auto des panneaux vides
+- **Mermaid.js** — Rendu de diagrammes (22 templates, thème dark synchronisé)
+ - Header bar Code/Preview, zoom, export SVG + PNG, plein écran / focus 480px
+ - Pré-processeur Obsidian (`[[liens]]`, `![[img]]`, `==highlight==`)
+- **Gestionnaire de Backups complet** — Page, filtres, purge, restauration
+ - Diff viewer (unifié + côte à côte), preview 100 Ko, compression gzip
+ - Backup automatique, auto-nettoyage (max_backups_per_file)
+- **Support Excalidraw (#78)** — Fichiers `.excalidraw` / `.excalidraw.md`
+ - Décompression lz-string, création depuis modale/menu contextuel
+- **Éditeur Forge + autocomplétion IA** — Auto-height, Mermaid QI, ghost text
+ - Autocomplétion Ollama (qwen2.5-coder), Alt+/, auto-continuation listes/checkboxes
+- **Support PDF + multi-format** — PDF avec TOC, images/CSV/JSON/TXT
+- **15 thèmes clair/sombre (#65)** — Système de thèmes configurable
+- **Mode hors-ligne PWA (#59)** — Badge hors-ligne + gestion des conflits
+- **Tests E2E Playwright (#58)** — Suite desktop (44 tests) + CI
+
+### Modifié
+
+- `desktop/` — Nouveau : application Tauri (Cargo.toml, build.rs, `src/main.rs`, scripts build)
+- `frontend/` — i18n, split view, Mermaid, Excalidraw, Forge, thèmes
+- `backend/` — Endpoints backups, Excalidraw, multi-format, versioning git
+- `docs/ROADMAP.md` — Feuille de route passée à 2.0.0-dev, items #75/#78 complétés
+
+---
+
+## [1.8.0] — 2026-06-04
+
+### Ajouté
+
+- **Palette de commandes** — Navigation rapide fichiers + commandes
+ - Raccourcis : `Ctrl+P` fichiers, `Ctrl+Alt+Espace` commandes, `Ctrl+Shift+Espace`
+ - Navigateur de dossiers : créer/supprimer fichiers/dossiers par sélection
+ - Opérateurs `+include` / `-exclude` dans la recherche globale
+ - 6 nouvelles commandes : créer/supprimer fichiers/dossiers, éditer, pop-out
+- **Barre d'outils mobile de bas de page** — Type Obsidian 📱
+ - Explorateur, recherche, palette, changement d'onglet
+ - Indicateur de vault contextuel sous le header, pull-to-refresh
+- **Diff viewer des backups** — Comparaison unifiée + côte à côte, restauration
+- **Indicateur AI Actif** — Badge/statut IA dans le header (lecture runtime des clés)
+- **Page d'accueil de vault** — Liste récursive des fichiers par date
+- **Drag & drop de fichiers** dans l'arborescence
+- **Guide d'aide enrichi** — Recherche, scroll spy, slide-over mobile, section webhooks
+- **Indexation inversée non-bloquante** (`run_in_executor`)
+- **Infrastructure de tests** — Couverture pytest portée à 70% (+109 tests)
+
+### Modifié
+
+- `frontend/` — Palette, mobile toolbar, aide, AI indicator, vault home
+- `backend/` — Indexation non-bloquante, statut IA, diff/restauration backups
+- `docs/` — Guide d'utilisation enrichi (navigation clavier), CHANGELOG/README/ROADMAP
+
+### Corrigé
+
+- Correctifs UI mobile, palette, aide et AI toolbar (thème clair, menu clipping)
+
---
## [1.7.0] — 2026-05-30
@@ -209,7 +288,7 @@ et [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
- `includeHidden`, `hiddenWhitelist` — UI + env vars
- Filtrage côté client (hideHiddenFiles)
-### Ajouté
+### Modifié
- `backend/attachment_indexer.py` — Scan et indexation d'images
- `backend/image_processor.py` — Prétraitement Markdown pour les syntaxes d'images
diff --git a/docs/ISSUES_TODOLIST.md b/docs/ISSUES_TODOLIST.md
new file mode 100644
index 0000000..10d92b2
--- /dev/null
+++ b/docs/ISSUES_TODOLIST.md
@@ -0,0 +1,178 @@
+> **IMPORTANT — Lire d'abord**
+> Ce document utilise un **format tabulaire simple et rigoureux** conçu pour être
+> maintenu à la fois par un humain (éditeur texte) et par un agent IA. Les règles
+> exactes sont définies dans la section **« Comment fonctionne ce document »**.
+
+# 🐛 ObsiGate — Suivi des Bugs / TODO de Correction
+
+> **Rôle du document** : registre unique et vivant des bugs découverts et des corrections
+> à apporter au projet **ObsiGate** (application Web + desktop Tauri).
+> C'est l'**outil de communication commun** entre l'utilisateur humain et l'IA
+> qui effectue les corrections dans le code.
+
+- **Projet** : ObsiGate — Porte d'entrée web pour vaults Obsidian
+- **Stack** : Python 3.11+ (backend FastAPI) · JavaScript/Vanilla (frontend) · Tauri/Rust (desktop)
+- **Dernière mise à jour** : *(à tenir à jour à chaque modification)*
+
+---
+
+## ⚙️ Comment fonctionne ce document (À LIRE ABSOLUMENT)
+
+Ce document est un **contrat de travail partagé**. Suivez les règles ci-dessous pour
+qu'un humain OU un agent IA puisse le lire, le modifier et l'exploiter sans ambiguïté.
+
+### 1. Une table = un état (workflow par rangée)
+
+Chaque bug/TODO est une **rangée** dans la section [📋 Registre des bugs / TODOs](#-registre-des-bugs--todos).
+Une rangée ne change **jamais de table** au fil de sa vie ; c'est la **colonne « Statut »**
+qui encode son avancement :
+
+| Statut (colonne) | Signification | Qui peut le poser |
+|---|---|---|
+| `🔴 ouvert` | Bug confirmé / tâche à faire, en attente de traitement | Utilisateur **ou** IA |
+| `🟠 en cours` | Un agent IA a **commencé** à corriger | IA uniquement |
+| `🟢 corrigé` | La correction est écrite **et** vérifiée (tests OK) | IA uniquement |
+| `✅ vérifié` | L'utilisateur (ou les tests) a **validé** le correctif | Utilisateur uniquement |
+| `⚪ abandonné` | Décision de ne pas corriger (documentée dans notes) | Utilisateur ou IA |
+
+### 2. Cycle de vie d'un bug (workflow)
+
+```mermaid
+flowchart LR
+ A[🔴 ouvert
Découverte d'un bug] --> B[🟠 en cours
IA travaille dessus]
+ B --> C[🟢 corrigé
Correctif écrit + tests OK]
+ C --> D[✅ vérifié
Re-validation par l'utilisateur]
+ C --> E[⚪ abandonné
Refus / hors périmètre]
+ D --> F[✅ Fermé : lignée conservée en historique]
+```
+
+1. **Un bug est signalé** → posé en `🔴 ouvert` par l'utilisateur **ou** l'IA (à l'issue d'une
+ investigation ou d'une session de test).
+2. **L'IA prend en charge** → passe le statut en `🟠 en cours` **avant** de commencer à coder,
+ et crée une entrée dans [🛠️ Journal des interventions AI](#-journal-des-interventions-ai).
+3. **La correction est terminée** → l'IA exécute les tests pertinents, passe le statut en
+ `🟢 corrigé` et remplit la colonne « Correctif / Commit ».
+4. **Validation finale** → c'est l'utilisateur qui passe en `✅ vérifié` une fois le correctif
+ contrôlé. Les rangées `✅ vérifié` sont **déplacées dans l'historique** périodiquement.
+5. **Abandon** → justifié obligatoirement dans la colonne « Notes / Scope ».
+
+> ⚠️ **Ne JAMAIS supprimer** une rangée terminée : déplacez-la dans la section
+> [📜 Historique des bugs résolus](#-historique-des-bugs-résolus) à la place.
+
+### 3. Ordre de lecture pour un agent IA
+
+Avant de corriger quoi que ce soit, un agent IA doit :
+
+1. **Lire ce fichier en entier** (en particulier ce guide et le registre).
+2. **Identifier** les rangées de statut `🔴 ouvert` avec un **scope `IA`** et une
+ **priorité** élevée qui lui sont attribuées (colonne « Assigné »).
+3. **Poser le statut `🟠 en cours`** sur la rangée choisie **avant** toute modification de code.
+4. Corriger en respectant la [checklist de vérification](#-checklist-de-traitement-dun-bug-rappel-pour-toute-ia)
+ et les [conventions du projet](CONTRIBUTING.md).
+5. Revenir mettre le statut à `🟢 corrigé`, documenter le correctif, et **journaliser** son passage.
+6. Ne pas marquer `✅ vérifié` lui-même (c'est un droit utilisateur, sauf mention contraire explicite).
+
+### 4. Identifiants uniques (ID)
+
+- Chaque bug porte un **ID stable** `BUG-###` ou `TODO-###` (voir le format dans le registre).
+- L'ID **ne change jamais**, même après résolution. Il permet de retrouver le bug dans
+ l'historique et dans le journal d'interventions.
+- Le format du numéro est `###` = 3 chiffres incrémental (001, 002, 003…).
+- Si vous (IA) créez un nouveau bug, **reprenez le plus grand numéro existant + 1** dans le
+ registre, quel que soit l'ordre des lignes.
+
+### 5. Comment mettre à jour ce document (bonnes pratiques)
+
+- **Formatage** : garder les colonnes alignées par des espaces pour la lisibilité brute.
+ Une rangée = une seule ligne de tableau Markdown.
+- **Copier-coller** : pour ajouter un bug, dupliquez une ligne existante puis modifiez les champs.
+- **Ne pas casser** : conservez le séparateur d'en-tête `|---|---|…|` et les **champs fixes**
+ (#, Titre, Statut, Priorité, Scope, Assigné, Zone, Cmd de repro, Correctif/Commit, Notes).
+- **Frontière des rôles** : un agent IA ne doit **jamais** se passer à lui-même une rangée en
+ `✅ vérifié` ; il s'arrête à `🟢 corrigé` (sauf si l'utilisateur l'y autorise explicitement).
+
+---
+
+## 📋 Registre des bugs / TODOs
+
+> **Légende colonnes :**
+> - **Statut** : `🔴 ouvert` | `🟠 en cours` | `🟢 corrigé` | `✅ vérifié` | `⚪ abandonné`
+> - **Priorité** : `P0` (critique/bloquant) · `P1` (élevée) · `P2` (normale) · `P3` (basse/cosmétique)
+> - **Scope** : `📱 frontend` · `⚙️ backend` · `🔌 api` · `🧩 tests` · `🖥️ desktop` · `📦 build` · `📄 docs` · `🤖 ia` · `❓ inconnu` (À affiner par l'IA)
+> - **Assigné** : `IA` (à traiter par un agent) · `USER` (à traiter par l'utilisateur) · `—` (non attribué)
+> - **Zone** : chemin/nom de fichier concerné (ex. `frontend/app.js`, `backend/search.py`)
+> - **Cmd de repro** : commande ou scénario permettant de reproduire / vérifier (vide si N/C)
+
+### Bugs ouverts (à traiter)
+
+| # | Titre | Statut | Priorité | Scope | Assigné | Zone (fichier) | Cmd de repro | Correctif / Commit | Notes |
+|---|---|---|---|---|---|---|---|---|---|
+| *BUG-001* | L'ouverture des fichier PDF ne fonctionne pas et donne l'erreur Internal Server Error | 🔴 ouvert | P1 | fichier PDF | IA | |
+https://og.dracodev.net/api/file/Recettes/pdf/stream?path=98_Boite_Outils%2F98.2_Attachments%2FBi%C3%A8re%20blonde%20envoy%C3%A9%20par%20Desja.pdf| — | l'erreur se retrouve dans la section network de la console web et dans l'interface web lors du chargement d'un pdf |
+| *BUG-002* | l'ouverture d'un fichier .excalidraw ne fonctionne pas et affiche toujours Loading *Excalidraw…* | 🔴 ouvert | P1 | fichier .excalidaw | IA | | | — | test d'accès réaliser via cloudflare et réseau local démontre que ce problème est au 2 endroits |
+| | | | | | | | | | |
+
+### TODOs techniques (améliorations / nouvelles tâches)
+
+| # | Titre | Statut | Priorité | Scope | Assigné | Zone (fichier) | Cmd de repro | Correctif / Commit | Notes |
+|---|---|---|---|---|---|---|---|---|---|
+| *(exemple)* TODO-002 | Rendre l'index inversé incrémental (40k+ fichiers) | 🔴 ouvert | P1 | ⚙️ backend | IA | `backend/indexer.py`, `backend/search.py` | Recherche sur très gros vault | — | Exemple à remplacer. Cf. plan.md |
+| *(À remplir)* | | | | | | | | | |
+
+---
+
+## 🛠️ Journal des interventions AI
+
+> Chaque passage d'un agent IA qui modifie du code ou l'état du registre est journalisé.
+> **Règle** : l'IA ajoute **une ligne** à la fin de ce tableau à chaque session de correction.
+> Colonnes : `Date` (YYYY-MM-DD) · `ID(s) traité(s)` · `Action` · `Fichiers modifiés` · `Résumé` · `Statut après`.
+
+| Date | ID(s) traité(s) | Action | Fichiers modifiés | Résumé | Statut après |
+|---|---|---|---|---|---|
+| *(exemple)* 2026-06-15 | BUG-001 | Correction | `frontend/app.js` | Réécriture de `renderFile()` pour préserver le DOM dashboard | 🟢 corrigé (en attente vérif) |
+
+---
+
+## 📜 Historique des bugs résolus
+
+> Les rangées `✅ vérifié` (ou `⚪ abandonné`) sont déplacées ici régulièrement pour garder
+> le **registre actuel** court et lisible. Conservez l'ID d'origine pour la traçabilité.
+
+| # | Titre | Date résolution | Résolu par | Correctif / Commit | Notes |
+|---|---|---|---|---|---|
+| *(aucun pour l'instant)* | | | | | |
+
+---
+
+## 🧪 Procédure de vérification d'une correction (pour l'IA)
+
+Quand une correction est écrite, l'agent IA doit **avant** de passer en `🟢 corrigé` :
+
+1. **Exécuter les tests** du projet :
+ - Backend : `python -m pytest tests/ -v` (ou `pytest`)
+ - S'il existe des tests ciblés sur la zone modifiée, les lancer en priorité.
+2. **Vérifier le lancement** du module concerné (import sans erreur, endpoint répond).
+3. **Relire sa propre diff** pour éviter les régressions.
+4. Mettre la colonne « Correctif / Commit » à jour **puis** le statut en `🟢 corrigé`.
+5. Si un test échoue ou que la correction est incomplète, **rester en `🟠 en cours`** et le noter.
+
+---
+
+## ✔️ Checklist de traitement d'un bug (rappel pour toute IA)
+
+- [ ] Bug identifié avec un **ID** et repris dans le [registre](#-registre-des-bugs--todos)
+- [ ] Statut posé en `🟠 en cours` avant de coder
+- [ ] Correction conforme aux [conventions du projet](CONTRIBUTING.md)
+- [ ] Tests exécutés et **vert** (colonne « Correctif / Commit » renseignée)
+- [ ] Journal des interventions AI mis à jour
+- [ ] Statut passé en `🟢 corrigé` (pas `✅ vérifié` sauf autorisation)
+- [ ] (Après validation utilisateur) rangée déplacée dans l'historique
+
+---
+
+## 📚 Liens utiles
+
+- **Guide de contribution** : [CONTRIBUTING.md](CONTRIBUTING.md) (conventions de code)
+- **Structure du projet** : [README.fr.md](../README.fr.md)
+- **Tests** : répertoire `tests/` — voir CONTRIBUTING
+- **Analyse/décisions complémentaires** : [IMPLEMENTATION_PLAN.md](IMPLEMENTATION_PLAN.md), [ROADMAP.md](ROADMAP.md)