bruno
f25174f143
feat: upload drag-drop + responsive mobile
...
Backend:
- Route POST /api/upload avec multipart (axum 0.8)
- Proxy vers Imago, validation MIME, feedback JSON
Frontend:
- Zone de drop avec drag & drop (effet visuel au survol)
- Bouton Upload dans le header + FAB flottant mobile
- Support Ctrl+V (coller depuis presse-papier)
- Upload multiple, feedback toast (succès/erreur)
- Raccourci Ctrl+U pour upload
- Responsive: 2 breakpoints (768px, 400px)
- Gallery 2 colonnes sur mobile, FAB, toasts bottom
- user-scalable=no, tap-highlight transparent
2026-06-23 10:31:02 -04:00
bruno
29b4390844
fix: fallback thumbnail dashboard - placeholder DOM au lieu de SVG cassé
...
- Remplace le onerror SVG data URI (cassé) par un vrai div placeholder
- Affiche 🖼️ + 'Pas d'aperçu' quand le thumbnail est indisponible
- Même fallback dans la modale detail
2026-06-23 09:39:24 -04:00
bruno
80fc4f6bce
fix: adaptation structs Imago API v2 - ExifCamera/ExifGps/AiData/OcrData
...
- Corrige ExifData pour matcher l'API réelle (camera/gps/raw nestés)
- Corrige OcrData (has_text ajouté)
- Corrige AiData (confidence, model_used, processed_at, prompt/output_tokens)
- Supprime les champs obsolètes (category, url_summary, window_title)
- get_image expose maintenant les champs EXIF/GPS complets
- Plus d'erreur 'missing field tags' sur le list/detail
2026-06-23 09:16:07 -04:00
bruno
e92da02067
feat: Phase 9 — Dashboard web embarqué
...
- Frontend vanilla JS (18.9KB) : dark theme, gallery grid, search, stats, WebSocket
- rust-embed : frontend servi depuis le binaire (zéro dépendance externe)
- API REST fonctionnelle : /api/health, /api/images, /api/search, /api/images/:id, /api/stats
- WebSocket hub (dashmap + broadcast) : notifications temps réel
- ImagoClient: méthode get_raw() pour proxy thumbnails, Serialize sur ImageInfo
- MIME guess pour servir CSS/JS/images avec bons headers
- Fallback SPA : routes inconnues → index.html
- Dépendances : tokio-stream, futures-util, dashmap, chrono
- Testé : health OK, stats JSON, dashboard 18.9KB HTML, WS upgrade 400 (HTTP)
0 errors, 0 warnings (cargo check + build --release)
2026-06-22 17:05:49 -04:00
bruno
b680c0fff7
feat: Phase 7 — CLI complet (start/serve/stop/status/config/logs)
...
- Gestion PID (write/read/remove + verification processus)
- cmd_start: lance watcher + dashboard avec Ctrl+C graceful shutdown
- cmd_serve: dashboard seul (Linux) avec --no-watcher
- cmd_stop: kill processus via SIGTERM/OpenProcess + nettoyage PID
- cmd_status: affiche PID, dashboard URL, config, polling
- cmd_config show/set/reset: gestion dotted keys (imago.url, watcher.*, etc.)
- cmd_logs: affiche derniers logs
- Fix Default derives: ImagoConfig, DedupConfig, UiConfig, LoggingConfig
- Ajout dependances: open, libc (Unix)
- Watcher::run(self) au lieu de &self pour Send
- tests: start → API /api/health OK → stop → status OK
- 0 errors, 0 warnings (cargo check + cargo build --release)
2026-06-22 16:57:41 -04:00
bruno
38f274c3d5
fix: corriger les erreurs de compilation (Default, Debug, rustls)
2026-06-22 16:47:02 -04:00
bruno
a3b853de04
chore: initialiser le projet imagod-web (Rust)
...
- Structure du projet Cargo avec dépendances (clap, axum, reqwest, rusqlite, arboard, tray-icon)
- CLI avec sous-commandes start, serve, stop, status, config, install, uninstall, logs
- Module config: parsing TOML, chemins Windows/Linux
- Module dedup: dédoublonnage SHA-256 avec cache SQLite
- Module imago_client: client HTTP pour API Imago (upload, search, get)
- Module watcher: boucle de polling stub
- Module server: serveur web axum avec routes API REST stub
- Platform-specific: clipboard, tray, service, window_info (Windows)
- Frontend placeholder HTML
- Config par défaut (imagod.toml)
- README.md, LICENSE (MIT), .gitignore
2026-06-22 16:44:47 -04:00