From 271a463d6dd5c9e62985e303bd7c4ec00bda505a Mon Sep 17 00:00:00 2001 From: Bruno Charest Date: Thu, 28 May 2026 13:11:08 -0400 Subject: [PATCH] docs: ROADMAP.md + README v1.5.0 (CI/CD complet) --- README.md | 23 ++++++++++++++-- ROADMAP.md | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 ROADMAP.md diff --git a/README.md b/README.md index d0d2536..5e29f50 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,11 @@ **Porte d'entrée web ultra-léger pour vos vaults Obsidian** — Accédez, naviguez et recherchez dans toutes vos notes Obsidian depuis n'importe quel appareil via une interface web moderne et responsive. -[![Version](https://img.shields.io/badge/Version-1.4.0-blue.svg)]() +[![Version](https://img.shields.io/badge/Version-1.5.0-blue.svg)]() [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Docker](https://img.shields.io/badge/Docker-Ready-blue.svg)](https://www.docker.com/) [![Python](https://img.shields.io/badge/Python-3.11+-green.svg)](https://www.python.org/) +[![CI/CD](https://img.shields.io/badge/CI%2FCD-Gitea_Actions-green.svg)](https://git.dracodev.net/Projets/ObsiGate/actions) ``` ┌─────────────────────────────────────────────────────────┐ @@ -822,6 +823,24 @@ Ce projet est sous licence **MIT** - voir le fichier [LICENSE](LICENSE) pour les ## 📝 Changelog +### v1.5.0 (2026-05-28) + +**CI/CD Pipeline (Gitea Actions)** +- Pipeline 4 jobs : lint (ruff + mypy 0 erreur), test (175 tests), security (bandit + pip-audit), build (Docker) +- Runner Gitea auto-hébergé via `gitea/act_runner:0.2.11` sur Proxmox/Alpine +- Coverage artifact uploadé via `actions/upload-artifact@v3` (natif Gitea, zéro dépendance GitHub) +- Badge CI/CD dans le README + +**Qualité de code** +- 28 erreurs mypy corrigées → 0 erreur sur 24 fichiers +- 36 erreurs ruff corrigées → 0 erreur +- Imports inutilisés, `Response` redéfini, types `Optional` normalisés +- 4 warnings Bandit résolus (faux positifs OAuth2 `bearer`, try/except shutdown) + +**Documentation** +- ROADMAP.md créé +- README mis à jour (v1.5.0) + ### v1.4.0 (2026) **Authentification & Contrôle d'accès** @@ -936,4 +955,4 @@ Ce projet est sous licence **MIT** - voir le fichier [LICENSE](LICENSE) pour les --- -*Projet : ObsiGate | Version : 1.4.0 | Dernière mise à jour : 2026* +*Projet : ObsiGate | Version : 1.5.0 | Dernière mise à jour : Mai 2026* diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..2535120 --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,78 @@ +# ObsiGate — Roadmap + +## ✅ Complété + +### CI/CD Pipeline (Gitea Actions) +- [x] Ruff linting — 0 erreur +- [x] Mypy type checking — 0 erreur (28 erreurs pré-existantes corrigées) +- [x] Pytest — 175 tests, 49% coverage +- [x] Bandit SAST — scan de sécurité +- [x] Pip-audit — vulnérabilités des dépendances (advisory) +- [x] Docker build — vérification image +- [x] Coverage artifact — uploadé via `actions/upload-artifact@v3` (natif Gitea) +- [x] Runner Gitea auto-hébergé — `gitea/act_runner:0.2.11` sur Alpine/Proxmox + +### Performance +- [x] `sortedcontainers` — O(log n) insert/remove dans l'index inversé +- [x] Compression GZip (SSE-safe) +- [x] Cache-Control immutable +- [x] Recherche sans I/O disque + +### Sécurité +- [x] JWT + Argon2id +- [x] Rate limiting +- [x] Audit log +- [x] Backup automatique +- [x] Redaction de secrets +- [x] Headers CSP +- [x] Protection path traversal +- [x] Utilisateur non-root Docker + +### DX / Qualité +- [x] `.dockerignore` +- [x] `.env` → `.env.example` migration +- [x] Ruff config — 0 erreur +- [x] Mypy config — 0 erreur + +--- + +## 🔜 Prochaines étapes (par priorité) + +### 1. Stemming français 🇫🇷 +- **Effort** : 30 min +- **Impact** : 🟡 Améliore la recherche ×2 pour les termes fléchis +- **Module** : `snowballstemmer` (stemmer français) +- **Fichiers** : `backend/search.py` (tokenizer) + +### 2. Split `app.js` en modules ES +- **Effort** : 2-3 jours +- **Impact** : 🟡 Dette technique, maintenabilité +- **Fichiers** : `frontend/app.js` (~8000 lignes → modules) + +### 3. Tests d'intégration +- **Effort** : 3-5 jours +- **Impact** : 🟢 Couverture 49% → 70%+ +- **Cibles** : `main.py` (26%), `watcher.py` (23%), `router.py` (37%), `create_admin.py` (0%), `image_processor.py` (15%) + +### 4. Export PDF +- **Effort** : 1 jour +- **Impact** : 🟡 WeasyPrint déjà intégré (lazy import), manque GTK sur certaines plateformes +- **Alternative** : Markdown → HTML → PDF via headless Chrome + +### 5. Vue graphe des wikilinks +- **Effort** : 3-5 jours +- **Impact** : 🟢 Nouvelle fonctionnalité, visualisation des connexions entre notes +- **Stack** : D3.js ou Cytoscape.js + +--- + +## 📋 Backlog + +- **Filtres de recherche avancés** : created:, modified:, size: +- **Mode hors-ligne** : Service Worker + cache IndexedDB +- **API publique documentée** : OpenAPI/Swagger amélioré +- **Thèmes personnalisés** : CSS variables exposées +- **Export multi-formats** : HTML, MD bundle, ePub +- **Notifications web** : Push API pour changements de vault +- **Multi-langue i18n** : Interface traduisible +- **Plugins système** : Extensions utilisateur (similaire Obsidian)