Files
imagod-web/src/frontend/changelog.html
T
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

113 lines
7.9 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Changelog — imagod-web v0.2.0</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🖼️</text></svg>">
<style>
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:'Segoe UI',system-ui,-apple-system,sans-serif; background:#0d1117; color:#c9d1d9; min-height:100vh; }
header { background:#161b22; border-bottom:1px solid #30363d; padding:1rem 1.5rem; display:flex; align-items:center; justify-content:space-between; position:sticky; top:0; z-index:100; }
header h1 { font-size:1.2rem; color:#58a6ff; }
nav { display:flex; gap:0.5rem; }
nav a { color:#8b949e; text-decoration:none; padding:0.5rem 1rem; border-radius:6px; font-size:0.9rem; transition:all .2s; }
nav a:hover, nav a.active { background:#21262d; color:#f0f6fc; }
.version-badge { background:#23863622; color:#3fb950; padding:0.2rem 0.6rem; border-radius:1rem; font-size:0.75rem; border:1px solid #23863644; }
main { max-width:900px; margin:2rem auto; padding:0 1.5rem; }
h2 { color:#f0f6fc; margin:1.5rem 0 1rem; padding-bottom:0.5rem; border-bottom:1px solid #30363d; }
h3 { color:#58a6ff; margin:1rem 0 0.5rem; }
h4 { color:#8b949e; margin:0.5rem 0; }
p { margin:0.5rem 0; line-height:1.6; }
code { background:#161b22; padding:0.15em 0.4em; border-radius:3px; font-size:0.9em; color:#d2a8ff; }
pre { background:#161b22; border:1px solid #30363d; border-radius:6px; padding:1rem; overflow-x:auto; margin:0.75rem 0; }
pre code { background:none; padding:0; color:#c9d1d9; }
li { margin:0.3rem 0 0.3rem 1.5rem; }
li input[type=checkbox] { margin-right:0.5rem; }
table { border-collapse:collapse; width:100%; margin:0.75rem 0; }
th, td { border:1px solid #30363d; padding:0.5rem 0.75rem; text-align:left; font-size:0.9rem; }
th { background:#161b22; color:#f0f6fc; }
hr { border:none; border-top:1px solid #30363d; margin:1.5rem 0; }
a { color:#58a6ff; }
a:hover { text-decoration:underline; }
strong { color:#f0f6fc; }
em { color:#8b949e; }
footer { text-align:center; color:#484f58; font-size:0.8rem; padding:2rem; }
</style>
</head>
<body>
<header>
<h1>📋 imagod-web <span class="version-badge">v0.2.0</span></h1>
<nav>
<a href="/">🖼️ Galerie</a>
<a href="/changelog" class="active">📋 Changelog</a>
<a href="/help">❓ Aide</a>
</nav>
</header>
<main>
<h1>Changelog — imagod-web</h1>
<p>Toutes les modifications notables de imagod-web sont documentées ici.</p>
<hr>
<h2>[v0.2.0] — 2026-06-25</h2>
<h3>🚀 Ajouts majeurs</h3>
<li><strong>Phase 3 — Clipboard Watcher (Windows)</strong> : Module <code>clipboard.rs</code> avec capture d'image via <code>arboard</code>, conversion BGRA→PNG, hachage SHA-256 pour dédoublonnage</li>
<li><strong>Phase 6 — Boucle Watcher</strong> : Polling unifié Windows (clipboard) / Linux-macOS (dossier), dédoublonnage SQLite persistant, pipeline complet détection → upload → nettoyage</li>
<li><strong>Navigation dashboard</strong> : Barre d'onglets 🖼️ Galerie | 📋 Changelog | ❓ Aide</li>
<li><strong>Badge version</strong> : Affichage <code>v0.2.0</code> dans l'en-tête du dashboard</li>
<li><strong>Pages statiques</strong> : <code>changelog.html</code> et <code>help.html</code> générées depuis le markdown, encastrées dans le binaire</li>
<li><strong>Endpoint version</strong> : <code>GET /api/version</code> retourne la version, le build, l'OS et l'architecture</li>
<h3>🐛 Corrections</h3>
<li><strong>Thumbnails 404</strong> : Les miniatures échouaient car les balises <code>&lt;img&gt;</code> n'envoyaient pas le header <code>X-API-Key</code>. Correction : <code>get_thumbnail()</code> utilise toujours la clé serveur configurée, pas le header utilisateur</li>
<li><strong>Clé API expirée</strong> : Mise à jour de la configuration avec la clé valide</li>
<h3>🧪 Tests</h3>
<li><strong>Watcher Linux validé</strong> : Polling dossier fonctionnel, upload réussi vers Imago (image test ID=13), dédoublonnage confirmé</li>
<li><strong>Phase 3 compilée</strong> : Code clipboard compilé et prêt, test Windows à venir</li>
<li><strong>Cross-compilation Windows</strong> : Build x86_64-pc-windows-gnu réussi (8.1 MB, standalone)</li>
<h3>🔧 DevOps</h3>
<li><strong>Phase 10 — Service NSSM</strong> : <code>imagod-web install</code> télécharge NSSM, installe le service 'ImagodWeb' avec démarrage auto + redémarrage sur crash</li>
<li><strong>Phase 12 — Cross-compilation</strong> : Cible Windows x86_64, linker mingw-w64, config <code>.cargo/config.toml</code></li>
<li><strong>Build.rs</strong> : Génération automatique de <code>changelog.html</code> et <code>help.html</code> depuis CHANGELOG.md et ROADMAP.md à chaque build</li>
<li><strong>Routage</strong> : Correction fallback <code>.html</code> pour <code>/changelog</code> et <code>/help</code></li>
<h3>📚 Documentation</h3>
<li><strong>ROADMAP.md</strong> : Créé avec planification complète des phases 3 à 15</li>
<li><strong>CHANGELOG.md</strong> : Ce fichier</li>
<hr>
<h2>[v0.1.0] — 2026-06-23</h2>
<h3>🏗️ Architecture</h3>
<li>Structure du projet Rust (Cargo, modules)</li>
<li>CLI avec <code>clap</code> : commandes <code>start</code>, <code>serve</code>, <code>stop</code>, <code>status</code>, <code>config</code>, <code>logs</code>, <code>install</code>, <code>uninstall</code></li>
<li>Configuration TOML (<code>imagod.toml</code>) avec auto-génération</li>
<li>Serveur web <code>axum</code> avec frontend vanilla JS embarqué via <code>rust-embed</code></li>
<li>Multiplateforme : Windows, Linux, macOS (x86_64, ARM64)</li>
<h3>🎨 Dashboard Web (Phase 7-9)</h3>
<li>Interface sombre moderne, responsive mobile/desktop</li>
<li><strong>Authentification</strong> : Login par clé API, validation immédiate, persistence localStorage</li>
<li><strong>Galerie d'images</strong> : Affichage responsive avec thumbnails, recherche textuelle, stats (nombre, stockage)</li>
<li><strong>Upload</strong> : Zone drag &amp; drop, sélection de fichier, barre de progression</li>
<li><strong>Suppression</strong> : Bouton corbeille avec confirmation, toast notification</li>
<li><strong>Tags</strong> : Édition inline, ajout/suppression, enregistrement automatique</li>
<li><strong>WebSocket</strong> : Connexion temps réel avec indicateur de statut</li>
<li><strong>Modale</strong> : Détail complet (EXIF, OCR, description AI, tags, taille)</li>
<li><strong>Filtrage</strong> : Recherche par nom, tags, description AI</li>
<h3>🔌 Client Imago v2</h3>
<li><strong>Endpoints</strong> : <code>list<em>images</code>, <code>search</em>images</code>, <code>upload<em>image</code>, <code>delete</em>image</code>, <code>update_tags</code></li>
<li><strong><code>get_thumbnail()</code></strong> : Appel <code>thumbnail-url</code> + suivi URL signée + fallback <code>download-url</code> si 404</li>
<li><strong><code>get_file()</code></strong> : Appel <code>download-url</code> + suivi URL signée</li>
<li><strong>Auth</strong> : Header <code>X-API-Key</code> dynamique (clé serveur ou utilisateur)</li>
<li><strong>Multi-tenant</strong> : Support header <code>X-Tenant-ID</code></li>
<h3>🗄️ Dédoublonnage</h3>
<li>Base SQLite locale pour le cache SHA-256</li>
<li>Table <code>dedup_hashes</code> avec horodatage</li>
<li>Nettoyage automatique du cache (limite configurable, défaut 10 000 entrées)</li>
<h3>🔧 Configuration</h3>
<li><code>imagod.toml</code> : sections <code>[imago]</code>, <code>[watcher]</code>, <code>[dedup]</code>, <code>[ui]</code>, <code>[logging]</code></li>
<li>Paramètres watcher : <code>capture<em>images</code>, <code>poll</em>interval<em>ms</code>, <code>watch</em>dir</code>, <code>filters</code></li>
<li>Gestion multi-environnement : développement (dev.lab.home) et production</li>
<hr>
<h2>Légende des tags</h2>
</main>
<footer>imagod-web v0.2.0 — <a href="https://git.dracodev.net/Projets/imagod-web">Gitea</a></footer>
</body>
</html>