❓ imagod-web v0.2.2+build.35-08dca81

Roadmap — imagod-web

Planification des évolutions de imagod-web.

Les phases sont ordonnées par priorité et dépendances.


🟢 Phase 1–2 — Fondations ✅ *Complété*

  • Structure du projet Rust (Cargo, modules)
  • CLI avec clap (commands serve, watcher, install, uninstall)
  • Configuration TOML + variables d'environnement
  • Client HTTP Imago v2 (reqwest + rustls)
  • Dédoublonnage SHA-256 + SQLite
  • Compilation Linux x86_64

  • 🟢 Phase 7–9 — Dashboard Web ✅ *Complété*

  • Serveur axum avec frontend embarqué (rust-embed)
  • API REST proxy vers Imago v2 (CRUD images, recherche, stats)
  • Authentification par clé API (login/logout, localStorage)
  • Galerie responsive desktop + mobile
  • Upload drag & drop + raccourcis clavier
  • Modale détail image (EXIF, OCR, AI, métadonnées)
  • Suppression avec confirmation
  • Gestion des tags inline (ajout, suppression, édition)
  • Notifications toast
  • WebSocket temps réel (hub broadcast)
  • Pagination + recherche plein texte

  • 🟢 Phase 3 — Clipboard Watcher (Windows) ✅ *Complété*

    Objectif : Capture automatique des screenshots depuis le presse-papier Windows.

    Notes techniques :

  • ✅ Utiliser arboard::Clipboard::new() → get_image()
  • ✅ Convertir ImageData en bytes PNG via le crate image
  • ✅ Gérer le cas où le clipboard est vide ou contient du texte
  • ⚠️ Testé uniquement sous Linux (headless) — validation Windows à faire
  • Dépendances estimées : crate image (si pas déjà présent)


    🟢 Phase 6 — Boucle principale du Watcher ✅ *Complété*

    Objectif : Assembler clipboard + dédoublonnage + upload dans une boucle de polling.

    Pipeline détaillé :

    ┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐
    │ Poll     │───▶│ Hash     │───▶│ Dedup    │───▶│ Upload   │───▶│ Notify   │
    │ Clipboard│    │ SHA-256  │    │ Check    │    │ Imago    │    │ WS Hub   │
    └──────────┘    └──────────┘    └──────────┘    └──────────┘    └──────────┘

    Dépendances : Phase 3 (clipboard)


    🟡 Correctifs Backend Imago

    Ces tâches dépendent du backend Imago, pas d'imagod-web directement :


    🟢 Phase 10 — Service Windows (NSSM) ✅ *Complété*

    Objectif : Installation de imagod-web comme service Windows natif.

    Approches possibles :

    1. NSSM (recommandé) — wrapper externe, simple et robuste

    2. windows-service crate — pure Rust, plus complexe

    3. sc.exe — commandes Windows natives


    🟠 Phase 11 — Intégration Ditto Clipboard Manager

    Objectif : Plugin/addon Ditto qui envoie automatiquement les screenshots vers imagod-web.

    Contexte : Bruno utilise Ditto, un gestionnaire de presse-papier avancé pour Windows.

    Deux approches envisageables :

    Option A : Script externe Ditto

  • Ditto peut exécuter un script/exe quand un nouvel élément est copié
  • Un petit binaire Rust qui appelle POST /api/upload de imagod-web
  • Avantage : simple, découplé
  • Option B : Plugin Ditto natif

  • Ditto supporte des plugins/addons (C++ ou COM)
  • Plugin qui intercepte les images et les envoie directement à Imago
  • Avantage : plus intégré, pas de polling nécessaire
  • > ⚠️ Nécessite une investigation sur l'API plugin Ditto (peu documentée)


    🟢 Phase 12 — Cross-Compilation & CI/CD ✅ *Complété*

    Objectif : Binaires natifs pour Windows x86_64, Linux ARM64.

    Blocage potentiel : arboard et windows-sys sont Windows-only, il faut du conditional compilation.


    🔵 Phase 13 — Application Système (Tray Icon)

    Objectif : Icône dans la zone de notification Windows avec menu contextuel.

    Crate : tray-icon (déjà dans Cargo.toml)


    🔵 Phase 14 — Dashboard Avancé

    14a — Galerie avec Filtres Avancés

  • Filtrer par plage de dates (date picker)
  • Filtrer par tags (multi-sélection)
  • Filtrer par statut de processing (pending/done/error)
  • Trier par date, taille, nom
  • 14b — Vue Timeline

  • Frise chronologique des captures
  • Regroupement par jour/semaine/mois
  • Navigation par scroll infini
  • 14c — Batch Operations

  • Sélection multiple d'images (checkboxes)
  • Suppression en masse
  • Tag en masse
  • Export ZIP
  • 14d — Intégration Hermes Agent

  • Endpoint pour qu'Hermes puisse requêter les images
  • Webhook de notification (nouvelle image → message Telegram)
  • Skill Hermes imagod-web pour interroger la bibliothèque en langage naturel

  • 🔵 Phase 15 — Client Mobile

    15a — PWA (Progressive Web App)

  • Service worker pour cache offline
  • Manifest JSON pour installation
  • Notifications push (nouvelles images)
  • 15b — Share Intent Android/iOS

  • Endpoint API pour recevoir des images depuis le menu "Partager"
  • Deep link imagod:// pour ouverture directe

  • ⚫ Idées Futures (Backlog)

  • OCR Search — Recherche dans le texte OCR extrait par Imago
  • AI Semantic Search — « trouve les photos de chats dans mon salon »
  • Export — ZIP, galerie HTML statique, PDF contact sheet
  • Multi-tenant — Support de plusieurs clés API / espaces Imago
  • Thèmes — Clair, contrasté, personnalisable
  • Deduplication cross-tenant — Éviter les doublons entre utilisateurs
  • Statistiques avancées — Graphiques (appareils, résolutions, heures de capture)
  • Mode hors-ligne — File d'attente locale quand Imago est inaccessible

  • 📊 Résumé des phases


    🎯 Prochaines actions immédiates (recommandées)

    1. Corriger le scope images:delete dans l'admin Imago → débloque la suppression

    2. Corriger le stockage Imago (upload 500) → débloque les tests

    3. Implémenter Phase 3 (clipboard watcher) ✅ — 25 juin 2026

    4. Implémenter Phase 6 (watcher loop) ✅ — 25 juin 2026

    5. Corriger le backend Imago (thumbnails, upload, stockage)