Changelog — imagod-web
Toutes les modifications notables de imagod-web sont documentées ici.
[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
📚 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 : listimages, searchimages, uploadimage, deleteimage, 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 : captureimages, pollintervalms, watchdir, filters
Gestion multi-environnement : développement (dev.lab.home) et production
Légende des tags