Files
bruno d05bcc0ef7 chore: structure Nexus version/OS/, CHANGELOG v0.2.1+0.2.2, README
- CHANGELOG.md : ajout entrées v0.2.1 (update, install auto-config, NSSM fixes)
  et v0.2.2 (fix --config ignoré, Config::load_from)
- Nexus : structure v0.2.2/windows/ et v0.2.2/linux/
- README.md + CHANGELOG.md uploadés à la racine imagod-web/
- Anciens fichiers plats supprimés (v0.2.2/*.zip, SHA256SUMS)
2026-06-30 09:45:34 -04:00

115 lines
5.7 KiB
Markdown

# 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 <path>` 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 `<img>` 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 |