Commit Graph
13 Commits
Author SHA1 Message Date
bruno 05d13a7725 feat: implémentation réelle du service Windows via NSSM (install/uninstall) 2026-06-26 08:47:46 -04:00
bruno ce93740a5e fix: gestion correcte des doublons dans le frontend (compteur dédié + message final adapté) 2026-06-25 21:28:04 -04:00
bruno 9cabfb526b fix: MIME type dynamique au lieu de 'image/png' hardcodé (causait 500 sur JPEG) 2026-06-25 16:11:04 -04:00
bruno 42eff296e4 fix: ajout DefaultBodyLimit 50MB pour accepter les photos volumineuses (>2MB) 2026-06-25 15:52:15 -04:00
bruno 62e63e441a fix: CORS layer — corrige 'serveur injoignable' dans le navigateur
- Ajout CorsLayer::permissive() au router axum
- Répond aux requêtes OPTIONS (preflight CORS)
- Le header X-API-Key rendait les requêtes non-simples → preflight obligatoire
- Sans réponse OPTIONS, le navigateur bloquait → 'Failed to fetch'
- Curl fonctionnait car pas de preflight
2026-06-25 15:33:02 -04:00
bruno 4917dad351 feat: route /api/ping + message d'erreur affiche l'URL cible
- Ajout route GET /api/ping pour diagnostic connectivité rapide
- Le message 'serveur injoignable' affiche maintenant l'URL exacte tentée
- Aide à identifier les problèmes de proxy/iframe (mauvaise origine)
2026-06-25 15:28:30 -04:00
bruno 41fcb238b1 fix: anti-doublon complet — flag isUploading frontend + traitement duplicate comme succès
- Frontend: flag isUploading empêche les uploads parallèles (double/triple soumission)
- Frontend: réponse 'duplicate' traitée comme un succès (toast info au lieu d'erreur)
- Frontend: message d'erreur réseau plus explicite ('serveur injoignable')
- Frontend: HTTP 409 (conflit concurrent) géré proprement
- Serveur lancé sans watcher (--no-watcher) sur Linux (dossier vide = inutile)
2026-06-25 14:42:12 -04:00
bruno 0309359231 fix: déduplication SQLite AVANT upload — bloque tout doublon, même séquentiel
- Vérifie already_seen() dans la DB SQLite avant chaque upload vers Imago
- Si le hash existe déjà → retourne status=duplicate sans re-uploader
- Protège contre les doublons séquentiels (pas juste concurrents)
- Testé: 1er upload OK (ID 81), 2e upload même fichier → duplicate, 3e fichier différent → OK (ID 82)
2026-06-25 14:35:24 -04:00
bruno 5a2e12da01 fix: anti-doublon upload — lock mémoire in-flight + garde click/drag frontend
- Backend: Mutex<HashSet> pour bloquer les uploads concurrents du même hash (409 Conflict)
- Backend: logs tracing pour tracer chaque upload entrant
- Frontend: flag isDragging pour éviter le double déclenchement click+drag
- Dépendance: ajout hex = 0.4 pour log du hash

Corrige le bug où un seul fichier uploadé générait 4 copies sur Imago.
2026-06-25 14:23:55 -04:00
bruno 3254c33ae5 feat: versionnement automatique basé sur git (build number + hash)
- build.rs génère version dynamique : X.Y.Z+build.N-abc1234
- Version injectée dans l'API (IMAGOD_BUILD_VERSION) et pages HTML
- Suffixe -dirty si modifications non commitées
- replace_all_versions() consomme le suffixe build metadata
- Suppression auto-changelog — reste manuel pour contrôle qualité
2026-06-25 13:27:13 -04:00
bruno f51d70a646 feat: reset sélection batch au chargement + style toast warning
- initApp() appelle deselectAll() au démarrage (sécurité)
- Toast warning : fond jaune transparent + icône colorée
- Ajout classe toast-icon pour colorer l'icône selon le type
- Correction broadcast WebSocket batch delete (type mismatch)
- Correction compilation Linux : service install/uninstall gated
2026-06-25 12:25:50 -04:00
bruno 0fce8f6727 feat: build.rs — génération automatique des pages HTML depuis CHANGELOG.md et ROADMAP.md
- build.rs convertit CHANGELOG.md → changelog.html et ROADMAP.md → help.html
- Injection automatique de la version Cargo.toml dans toutes les pages
- Correction du routage : /changelog et /help sans .html fonctionnent
- Templates changelog.tmpl.html et help.tmpl.html avec placeholders {{VERSION}}
- Plus jamais de désynchronisation entre .md et pages web !
- v0.2.0 affichée partout (index, changelog, help, API)
2026-06-25 11:16:33 -04:00
bruno 3bab62733d feat: watcher (phase 3+6) + navigation dashboard (version, changelog, aide)
Phase 3 — Clipboard Watcher (Windows):
- clipboard.rs: détection d'images via arboard, conversion BGRA→PNG
- Gère les doublons consécutifs (même image dans le presse-papier)

Phase 6 — Watcher Loop:
- Windows: polling clipboard → hash → dédoublonnage → upload
- Linux/macOS: polling de dossier configurable (watch_dir)
- Ajout champ watch_dir dans WatcherConfig
- Client Imago cloné avant await (évite problème Send/Sync)

Dashboard:
- Badge version v0.1.0 dans le header
- Barre de navigation: Galerie / Changelog / Aide
- Pages changelog.html et help.html (chargement dynamique)
- Endpoint GET /api/version avec infos build
- Correction import delete inutilisé dans routes.rs
2026-06-25 09:41:51 -04:00