Le span de fallback (fa-server) démarrait en display:flex — visible en
permanence derrière l'image. Il passe à display:none et n'est affiché
que si l'img déclenche onerror (pas d'icône).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
GET /api/agents inclut désormais last_metrics (dernière ligne de la table
metrics) pour chaque agent. grid.js l'utilise lors du refresh initial, ce
qui peuple les tuiles sans attendre le prochain message WebSocket.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- nginx: client_max_body_size 10m (limite par défaut 1 Mo bloquait les images)
- icons.go: import _ golang.org/x/image/webp et image/gif pour décoder WEBP/GIF
- index.html: retire SVG de l'accept (serveur le rejette) et corrige le hint
- popups.js: try/catch autour de uploadIcon → message d'erreur visible dans le hint
pendant 4s si l'upload échoue ; reset du file input pour re-sélectionner le même
fichier ; rafraîchit l'img de la tuile avec cache-busting après succès
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- payload.rs : champ version (env!("CARGO_PKG_VERSION"))
- models.go : Version dans AgentMetrics et Agent
- db.go : colonne version dans agents + migration ALTER TABLE
- popups.js : badge version dans la section INFORMATIONS
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Le disque est envoyé toutes les 60s mais les paquets arrivent toutes les 2s.
Chaque nouveau paquet écrasait les champs null, effaçant le disque affiché.
Correction : fusion avec les anciennes métriques, null ne remplace pas une valeur.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- g-val : largeur fixe 34px → min-width + white-space:nowrap (RAM "3.0Go/5.8Go")
- tile-foot : justify-content:space-between + wrapper tile-foot-info
pour que la corbeille soit toujours en bas à droite
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- API DELETE /api/agents/{id} — supprime agent + métriques + config + icône
- Bouton poubelle sur chaque tuile + dialog de confirmation
- RAM : affichage "utilisé/total" en Go (ex: 6.2Go/8.0Go) au lieu du %
- Config agent par défaut : cpu, memory, disk, smart activés (UDP)
- DefaultAgentConfig() dans models pour les nouveaux agents
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Nouvelle section "INSTALLATION AGENT" en bas du popup de configuration :
champ lecture seule avec la commande curl pré-remplie (SERVER_IP auto
depuis window.location.hostname) + bouton Copier.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Ajout de esc() dans api.js pour échapper les valeurs serveur avant injection innerHTML
- Application de esc() sur hostname, ip et agentId dans grid.js et popups.js
- Fix fuite mémoire ResizeObserver dans showDetail : déconnexion avant recréation (_resizeObs)
- Fix WebSocket reconnect : clearTimeout avant setTimeout pour éviter les timers concurrents (_reconnectTimer)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ajout de la structure de base du dashboard Nanometrics :
- index.html avec header, grille agents, footer et 4 popups (détail, config agent, config serveur, SMART)
- css/app.css avec design system complet (tokens dark/light, composants, animations)
- Polices locales : Inter, JetBrains Mono, Share Tech Mono (woff2)
- Font Awesome 6.5.1 en local (vendor/fontawesome)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>