L'édition d'un .xlsx pouvait détruire une partie du classeur, le concurrencer en silence, ou diffuser une injection de formule. - BUG-085 : inspect_workbook() détecte ce qu'un round-trip openpyxl perd (valeurs calculées en cache, slicers, contrôles, connexions, custom XML, signature, commentaires enrichis, macros) → xlsx_lossy_features exposé en lecture, bandeau FR/EN, et 409 xlsx_lossy_content sans `force` (confirmation explicite puis reprise). Périmètre réel revalidé : graphiques, images et TCD survivent au round-trip. - BUG-086 : écriture atomique (fichier .tmp + os.replace) : un plantage ne peut plus tronquer le classeur, le backup reste intact. - BUG-087 : verrou par fichier autour du read-modify-write (timeout 15 s, 409 conflict) ; endpoint xlsx/save devenu synchrone pour que l'attente s'exécute dans le threadpool. - BUG-088 : une saisie en '=' ou '@' est stockée en texte, sauf opt-in `allow_formula` ou le bouton f(x) de la visionneuse. Le handler ServiceError expose désormais code + details, que api() propage. - BUG-084 : la suppression d'une vault purge enfin l'index inversé (documents fantômes qui continuaient de matcher) et is_stale() devient is_ready(), le nom étant trompeur (la staleness n'existe plus). Tests : 1390 pytest, 10 JSDOM (xlsx-viewer.test.mjs, branché au CI), 3 E2E Playwright, suite E2E complète verte, ruff/mypy 0. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <[email protected]>
📚 Guides d'utilisation ObsiGate
Bienvenue dans le répertoire des guides utilisateur d'ObsiGate. Chaque guide est autonome, écrit en français et illustré d'exemples concrets (commandes, configuration, captures conceptuelles).
Vous découvrez ObsiGate ? Commencez par le Guide de prise en main. Une aide rapide est aussi intégrée directement dans l'application (menu Options → Guide d'utilisation, FR/EN, téléchargeable en Markdown et PDF).
🗂️ Sommaire des guides
| Guide | Public | Contenu |
|---|---|---|
| 🚀 Prise en main | Tous | Premier lancement, interface, navigation, vaults, raccourcis |
| 🔍 Recherche, PDF, Excel & Excalidraw | Tous | Syntaxe de requête, recherche sémantique, lecteurs PDF/Excel, diagrammes |
| 🤖 Assistant IA & Forge | Tous | Fournisseurs, éditeur IA, BooksLM, Forge, commandes @ / / |
| 📝 Édition & collaboration | Tous | Édition simultanée, curseurs distants, persistance |
| 📱 PWA & mode hors-ligne | Tous | Installation PWA, cache, file de synchronisation, notifications |
| 🔌 API REST | Développeurs | Authentification, clés API, endpoints, exemples curl, SSE |
| 🧩 Serveur MCP | Développeurs / IA | Brancher Claude Desktop, Cursor, Cline… sur vos vaults |
| 🔒 Authentification & sécurité | Admin | Utilisateurs, MFA, permissions par vault, bonnes pratiques |
| 🐳 Déploiement Docker | Admin / Ops | docker-compose, volumes, reverse proxy, mises à jour |
| 🖥️ Application desktop (Tauri) | Tous | Installation, premier lancement, build depuis les sources |
🧭 Par où commencer ?
- Je veux juste utiliser l'application → Prise en main
- Je veux sécuriser mon instance → Authentification & sécurité
- Je veux brancher une IA → Assistant IA & Forge puis MCP
- Je veux scripter/automatiser → API REST
- Je veux héberger sur un serveur → Déploiement Docker
📖 Documentation associée
| Type | Où |
|---|---|
| Vue d'ensemble produit | README.fr.md · README.md |
| Conception détaillée par fonctionnalité | docs/features/ |
| Standards de code | docs/CONTRIBUTING.md |
| Méthode de livraison (Definition of Done) | docs/DELIVERY_WORKFLOW.md |
| Roadmap / travail à venir | docs/ROADMAP.md |
| Historique des versions | CHANGELOG.md |
| API interactive (Swagger / ReDoc) | /docs · /redoc (instance ObsiGate) |
Convention : ce répertoire est la porte d'entrée utilisateur. Le comment (utilisation) vit ici ; le pourquoi (conception technique) vit dans
docs/features/. Ne jamais dupliquer le détail technique des fiches.