docs: CHANGELOG.md + README v1.7.0 + ROADMAPs mis à jour
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
**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.
|
||||
|
||||
[]()
|
||||
[]()
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
[](https://www.docker.com/)
|
||||
[](https://www.python.org/)
|
||||
@@ -46,9 +46,11 @@
|
||||
|
||||
## ✨ Fonctionnalités
|
||||
|
||||
- **🤖 AI Editor intégré** — Éditeur CodeMirror 6 avec toolbar IA : amélioration, correction, traduction, génération, réécriture personnalisée, toolbox (liste, tableau, frontmatter, canvas) — multi-provider DeepSeek/OpenRouter/Gemini
|
||||
- **🗺️ Vue graphe interactive** — Canvas force-directed avec Barnes-Hut O(n log n), filtres (tag, type), profondeur, mode focus, historique de navigation ←→↑, export PNG, aperçu au survol (Ctrl+click)
|
||||
- **🗂️ Multi-vault** : Visualisez plusieurs vaults Obsidian simultanément
|
||||
- **🌳 Navigation arborescente** : Parcourez vos dossiers et fichiers dans la sidebar
|
||||
- **🔍 Recherche avancée** : Moteur TF-IDF avec normalisation des accents, snippets surlignés, facettes, pagination et tri
|
||||
- **🔍 Recherche avancée** : Moteur TF-IDF avec stemming français, normalisation des accents, snippets surlignés, facettes, pagination et tri
|
||||
- **💡 Autocomplétion intelligente** : Suggestions de fichiers, tags et historique avec navigation clavier
|
||||
- **🧩 Syntaxe de requête** : Opérateurs `tag:`, `#`, `vault:`, `title:`, `path:`, `ext:` avec chips visuels
|
||||
- **📜 Historique de recherche** : Persisté en localStorage (max 50 entrées, LIFO, dédupliqué)
|
||||
@@ -823,146 +825,8 @@ 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.5.1 (2026-05-28)
|
||||
|
||||
**Refactoring frontend**
|
||||
- `app.js` (8875 lignes) splitté en 12 modules ES dans `frontend/js/`
|
||||
- Modules : state, utils, auth, search, sidebar, viewer, ui, dashboard, config, sync, graph, legacy
|
||||
- Nouvel orchestrateur `js/app.js` (80 lignes) — importe tous les modules
|
||||
- `index.html` migré vers `<script type="module">`
|
||||
- `app.js` original préservé pour rétrocompatibilité
|
||||
- Tous les modules passent `node --check`
|
||||
|
||||
### v1.4.0 (2026)
|
||||
|
||||
**Authentification & Contrôle d'accès**
|
||||
- Système d'authentification JWT (HS256) optionnel — désactivé par défaut, activation via `OBSIGATE_AUTH_ENABLED=true`
|
||||
- Hachage des mots de passe **Argon2id** (paramètres OWASP 2024 : time_cost=2, mem=64MB)
|
||||
- Sessions avec **access token (1h)** + **refresh token (7j, HttpOnly cookie)** et révocation
|
||||
- Contrôle d'accès **par vault** : chaque utilisateur accède uniquement à ses vaults assignées
|
||||
- Bootstrap automatique du compte admin au premier démarrage (mot de passe généré et affiché dans les logs)
|
||||
- CLI de gestion des utilisateurs : `python backend/create_admin.py create|list|delete`
|
||||
- Interface d'administration dans la SPA : création/modification/suppression d'utilisateurs avec sélection de vaults
|
||||
- Protection brute-force : verrouillage 15 min après 5 tentatives échouées
|
||||
- Réponses en temps constant sur le login pour éviter l'énumération d'utilisateurs
|
||||
- Token de rafraîchissement révocable (persisté dans `data/revoked_tokens.json`)
|
||||
- Clé secrète JWT auto-générée (512 bits) et persistée dans `data/secret.key`
|
||||
|
||||
**Sécurité (headers)**
|
||||
- `Content-Security-Policy` sur toutes les réponses
|
||||
- `X-Frame-Options: SAMEORIGIN`
|
||||
- `X-Content-Type-Options: nosniff`
|
||||
- `X-XSS-Protection: 1; mode=block`
|
||||
- `Referrer-Policy: strict-origin-when-cross-origin`
|
||||
|
||||
**Frontend**
|
||||
- Écran de connexion avec glassmorphism (avant chargement de l'app si auth activée)
|
||||
- Menu utilisateur dans le header (nom affiché, bouton admin, déconnexion)
|
||||
- Rafraîchissement silencieux de l'access token (via cookie refresh)
|
||||
- Compatibilité totale : `OBSIGATE_AUTH_ENABLED=false` → comportement identique à v1.3.x
|
||||
|
||||
### v1.3.0 (2025)
|
||||
|
||||
**Synchronisation temps réel**
|
||||
- Surveillance automatique des fichiers via `watchdog` avec fallback polling automatique
|
||||
- Mise à jour incrémentale de l'index : ajout, modification, suppression et déplacement de fichiers sans rebuild complet
|
||||
- Server-Sent Events (SSE) : endpoint `/api/events` pour notifications temps réel vers le frontend
|
||||
- Badge de synchronisation dans le header avec indicateur visuel (connecté/déconnecté/syncing)
|
||||
- Panel d'événements récents accessible en cliquant sur le badge
|
||||
- Reconnexion SSE automatique avec backoff exponentiel
|
||||
- Toast informatif à chaque mise à jour détectée
|
||||
- Rafraîchissement automatique de la sidebar et du fichier courant si affecté
|
||||
|
||||
**Gestion dynamique des vaults**
|
||||
- `POST /api/vaults/add` : ajouter une vault à chaud sans redémarrage
|
||||
- `DELETE /api/vaults/{name}` : supprimer une vault de l'index
|
||||
- `GET /api/vaults/status` : statut détaillé (fichiers, tags, état de surveillance)
|
||||
- Les vaults ajoutées sont automatiquement surveillées par le watcher
|
||||
|
||||
**Configuration watcher**
|
||||
- Nouveaux paramètres dans `config.json` : `watcher_enabled`, `watcher_use_polling`, `watcher_polling_interval`, `watcher_debounce`
|
||||
- Section « Synchronisation automatique » dans la modal de configuration frontend
|
||||
- Toggles pour activer/désactiver la surveillance et le mode polling
|
||||
|
||||
### v1.2.0 (2025)
|
||||
|
||||
**Performance (critique)**
|
||||
- Réécriture du moteur `advanced_search()` : retrieval par set-intersection sur l'index inversé (O(k × postings) au lieu de O(N))
|
||||
- Prefix matching par recherche binaire sur liste triée de tokens (O(log V + k) au lieu de O(V))
|
||||
- Offload des fonctions de recherche CPU-bound via `ThreadPoolExecutor` (2 workers par défaut)
|
||||
- Pré-calcul des expansions de préfixe pour éviter les recherches binaires répétées
|
||||
- Fix du bug de staleness : `is_stale()` utilise un compteur de génération au lieu de `id(index)`
|
||||
|
||||
**Frontend**
|
||||
- Guard contre les race conditions : `currentSearchId` vérifié après chaque `fetch` avant rendu
|
||||
- Barre de progression animée pendant la recherche
|
||||
- Timeout de recherche configurable (30s par défaut)
|
||||
- Longueur minimale de requête configurable (2 caractères par défaut)
|
||||
- Affichage du temps de requête serveur (`query_time_ms`) dans les résultats
|
||||
- Pagination ajoutée sur l'endpoint legacy `/api/search` (params `limit`/`offset`)
|
||||
|
||||
**Configuration & Diagnostics**
|
||||
- Nouveaux endpoints `GET/POST /api/config` pour la configuration persistante (`config.json`)
|
||||
- Nouveau endpoint `GET /api/diagnostics` (stats index, mémoire, moteur de recherche)
|
||||
- Page de configuration étendue : paramètres frontend (debounce, résultats/page, timeout) et backend (workers, boosts, expansions)
|
||||
- Panel de diagnostics intégré dans la modal de configuration
|
||||
- Boutons « Forcer réindexation » et « Réinitialiser » dans les paramètres
|
||||
|
||||
### v1.1.0 (2025)
|
||||
|
||||
**Sécurité**
|
||||
- Protection path traversal sur tous les endpoints fichier
|
||||
- Utilisateur non-root dans le conteneur Docker
|
||||
- Dockerfile multi-stage (élimination des outils de build)
|
||||
|
||||
**Performance**
|
||||
- Recherche fulltext en mémoire (zéro I/O disque par requête)
|
||||
- Table de lookup O(1) pour la résolution des wikilinks
|
||||
- Renderer mistune mis en cache (singleton)
|
||||
- Scoring multi-facteurs (titre, chemin, tags, fréquence)
|
||||
- `lucide.createIcons()` batché via `requestAnimationFrame`
|
||||
- `AbortController` sur les requêtes de recherche
|
||||
|
||||
**Robustesse**
|
||||
- Swap atomique de l'index (thread-safe) pendant le reload
|
||||
- Extraction des tags inline (#tag) depuis le contenu markdown
|
||||
- Modèles Pydantic sur tous les endpoints API
|
||||
- Gestion d'erreurs avec toasts utilisateur (frontend)
|
||||
- États de chargement pour la sidebar et le contenu
|
||||
- Remplacement de `on_event` déprécié par `lifespan`
|
||||
|
||||
**Infrastructure**
|
||||
- Endpoint `/api/health` pour monitoring
|
||||
- Healthcheck Docker (Dockerfile + docker-compose)
|
||||
- `build.sh` amélioré (variable version, checks, couleurs)
|
||||
|
||||
**Documentation**
|
||||
- Docstrings complètes sur toutes les fonctions Python
|
||||
- Schémas Pydantic documentés (Swagger UI auto-générée)
|
||||
- README : sections Architecture, Performance, Sécurité, Changelog
|
||||
- CONTRIBUTING.md ajouté
|
||||
|
||||
### v1.0.0 (2025)
|
||||
- Version initiale
|
||||
Consultez le [CHANGELOG.md](./CHANGELOG.md) pour l'historique complet de toutes les versions (v1.0.0 → v1.7.0).
|
||||
|
||||
---
|
||||
|
||||
*Projet : ObsiGate | Version : 1.5.1 | Dernière mise à jour : Mai 2026*
|
||||
*Projet : ObsiGate | Version : 1.7.0 | Dernière mise à jour : Mai 2026*
|
||||
|
||||
Reference in New Issue
Block a user