# Changelog — imagod-web Toutes les modifications notables de imagod-web sont documentées ici. --- ## [v0.2.2] — 2026-06-30 ### 🐛 Corrections - **Fix `--config` ignoré par `serve`** : Le flag `--config` était parsé par le CLI mais jamais passé à `cmd_serve()`. Le service NSSM passait `serve --config ` mais la commande lisait toujours depuis `%APPDATA%/imagod-web/imagod.toml`. Résultat : le service Windows crashait au démarrage (SERVICE_PAUSED). - **Ajout `Config::load_from(path)`** : Nouvelle méthode pour charger la config depuis un chemin arbitraire, utilisée quand `--config` est spécifié. ### 🔧 Améliorations - Structure Nexus : `v0.2.2/windows/` et `v0.2.2/linux/` au lieu d'un fichier plat - Builds Linux + Windows systématiques --- ## [v0.2.1] — 2026-06-28 ### 🚀 Ajouts - **Commande `update`** : Self-update depuis Nexus (`imagod-web update`), téléchargement + vérification SHA256 + remplacement du binaire - **`install` auto-config** : Génération automatique de `imagod.toml` avec `--api-key`, plus besoin de créer le fichier manuellement - **NSSM AppDirectory** : Le service Windows définit maintenant le répertoire de travail correctement ### 🐛 Corrections - **Service NSSM** : `AppDirectory` pointe maintenant vers le dossier du binaire (et non `C:\Windows\System32`) - **Redémarrage auto** : Configuration `AppExit Default Restart` pour le service Windows --- ## [v0.2.0] — 2026-06-25 ### 🚀 Ajouts majeurs - **Phase 3 — Clipboard Watcher (Windows)** : Module `clipboard.rs` avec capture d'image via `arboard`, conversion BGRA→PNG, hachage SHA-256 pour dédoublonnage - **Phase 6 — Boucle Watcher** : Polling unifié Windows (clipboard) / Linux-macOS (dossier), dédoublonnage SQLite persistant, pipeline complet détection → upload → nettoyage - **Navigation dashboard** : Barre d'onglets 🖼️ Galerie | 📋 Changelog | ❓ Aide - **Badge version** : Affichage `v0.2.0` dans l'en-tête du dashboard - **Pages statiques** : `changelog.html` et `help.html` générées depuis le markdown, encastrées dans le binaire - **Endpoint version** : `GET /api/version` retourne la version, le build, l'OS et l'architecture ### 🐛 Corrections - **Thumbnails 404** : Les miniatures échouaient car les balises `` n'envoyaient pas le header `X-API-Key`. Correction : `get_thumbnail()` utilise toujours la clé serveur configurée, pas le header utilisateur - **Clé API expirée** : Mise à jour de la configuration avec la clé valide ### 🧪 Tests - **Watcher Linux validé** : Polling dossier fonctionnel, upload réussi vers Imago (image test ID=13), dédoublonnage confirmé - **Phase 3 compilée** : Code clipboard compilé et prêt, test Windows à venir - **Cross-compilation Windows** : Build x86_64-pc-windows-gnu réussi (8.1 MB, standalone) ### 🔧 DevOps - **Phase 10 — Service NSSM** : `imagod-web install` télécharge NSSM, installe le service 'ImagodWeb' avec démarrage auto + redémarrage sur crash - **Phase 12 — Cross-compilation** : Cible Windows x86_64, linker mingw-w64, config `.cargo/config.toml` - **Build.rs** : Génération automatique de `changelog.html` et `help.html` depuis CHANGELOG.md et ROADMAP.md à chaque build - **Routage** : Correction fallback `.html` pour `/changelog` et `/help` ### 📚 Documentation - **ROADMAP.md** : Créé avec planification complète des phases 3 à 15 - **CHANGELOG.md** : Ce fichier --- ## [v0.1.0] — 2026-06-23 ### 🏗️ Architecture - Structure du projet Rust (Cargo, modules) - CLI avec `clap` : commandes `start`, `serve`, `stop`, `status`, `config`, `logs`, `install`, `uninstall` - Configuration TOML (`imagod.toml`) avec auto-génération - Serveur web `axum` avec frontend vanilla JS embarqué via `rust-embed` - Multiplateforme : Windows, Linux, macOS (x86_64, ARM64) ### 🎨 Dashboard Web (Phase 7-9) - Interface sombre moderne, responsive mobile/desktop - **Authentification** : Login par clé API, validation immédiate, persistence localStorage - **Galerie d'images** : Affichage responsive avec thumbnails, recherche textuelle, stats (nombre, stockage) - **Upload** : Zone drag & drop, sélection de fichier, barre de progression - **Suppression** : Bouton corbeille avec confirmation, toast notification - **Tags** : Édition inline, ajout/suppression, enregistrement automatique - **WebSocket** : Connexion temps réel avec indicateur de statut - **Modale** : Détail complet (EXIF, OCR, description AI, tags, taille) - **Filtrage** : Recherche par nom, tags, description AI ### 🔌 Client Imago v2 - **Endpoints** : `list_images`, `search_images`, `upload_image`, `delete_image`, `update_tags` - **`get_thumbnail()`** : Appel `thumbnail-url` + suivi URL signée + fallback `download-url` si 404 - **`get_file()`** : Appel `download-url` + suivi URL signée - **Auth** : Header `X-API-Key` dynamique (clé serveur ou utilisateur) - **Multi-tenant** : Support header `X-Tenant-ID` ### 🗄️ Dédoublonnage - Base SQLite locale pour le cache SHA-256 - Table `dedup_hashes` avec horodatage - Nettoyage automatique du cache (limite configurable, défaut 10 000 entrées) ### 🔧 Configuration - `imagod.toml` : sections `[imago]`, `[watcher]`, `[dedup]`, `[ui]`, `[logging]` - Paramètres watcher : `capture_images`, `poll_interval_ms`, `watch_dir`, `filters` - Gestion multi-environnement : développement (dev.lab.home) et production --- ## Légende des tags | Tag | Signification | |-----|--------------| | 🚀 | Nouvelle fonctionnalité majeure | | 🐛 | Correction de bug | | 🧪 | Tests et validation | | 📚 | Documentation | | 🎨 | Interface utilisateur | | 🔌 | Intégration API | | 🔧 | Configuration / DevOps | | 🗄️ | Base de données / Stockage | | 🏗️ | Architecture / Structure |