core/SUIVI.md
enzo 5f6681dd17 feat: LineIcons Duotone, page profil, widgets dashboard, sidebar gauche/droite
- Intégration LineIcons Duotone (css/ + toutes les pages)
- Remplacement de tous les symboles Unicode par des icônes lnid-*
- Page profile.html : préférences thème, position sidebar, langue
- Dashboard : système de widgets add/remove + drag-and-drop natif
- Sidebar gauche/droite configurable per-user (data-sidebar CSS + FOUC script)
- Store ui : sidebarPosition, applySidebarPosition(), setSidebarPosition()
- Composant profilePage() dans app.js
- nav.profile ajouté dans fr.json et en.json
- SUIVI.md mis à jour

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 18:38:48 +01:00

5.7 KiB

Suivi d'implémentation — ProxmoxPanel CORE

Référence : instruction.md | Mis à jour : 2026-03-21


Stack technique actuelle

Composant Choix Statut
Backend Go 1.23 + chi v5 + gorilla/websocket Implémenté
Base de données SQLite via modernc.org/sqlite (sans CGO) Implémenté
Auth PAM via SSH + JWT RS256 Implémenté
Chiffrement AES-256-GCM (master.key) Implémenté
Frontend Alpine.js v3 + HTMX v2 + Swup v4 Branche frontend/alpine
Icônes LineIcons Duotone ⚠️ Non intégré (symboles Unicode utilisés)
Terminal xterm.js v5 + addon-fit + WS PTY Implémenté
Build frontend esbuild (bundler Swup ESM → IIFE) Implémenté
Serveur statique Nginx 1.27 Dockerfile simplifié

Fonctionnalités CORE — État d'avancement

1. Page d'installation

  • Wizard 4 étapes (Alpine.js)
  • Pré-remplissage URL automatique depuis window.location.origin
  • Test SSH (fetch POST /api/install/test-ssh)
  • Configuration Proxmox API (token unique format user@realm!tokenid=secret)
  • Manque : pré-remplissage du port depuis la requête entrante

2. Gestion des comptes utilisateurs

  • Création automatique au premier login (PAM SSH → upsert SQLite)
  • JWT access (15min) + refresh cookie httpOnly (7j)
  • Deux niveaux : Admin (groupe sudo/wheel) et Utilisateur
  • Manque : page profil utilisateur, préférences per-user en DB

3. Détection LXC/VM

  • API Proxmox REST (client Go, InsecureSkipVerify)
  • WS /ws/proxmox — polling 10s, type resources_update, payload [...]
  • Affichage en temps réel dans les pages Dashboard et Proxmox
  • Fix appliqué : données immédiates via HTTP + WS pour live updates

4. Dashboard ⚠️ Partiel

  • Compteurs LXC running/stopped
  • Liste LXC avec CPU/RAM
  • WebSocket live
  • Manque : widgets configurables (add/remove/drag-drop) ← requis par instruction.md
  • Manque : raccourcis vers services (Grafana, Proxmox, Traefik…)
  • Manque : personnalisation per-user sauvegardée en DB

5. Thème Neumorphism

  • neu.css (dark/light mode via CSS custom properties)
  • Toggle dark/light dans la navbar
  • Sidebar repliable
  • Responsive (media queries)
  • Manque : sidebar gauche/droite per-user ← requis par instruction.md
  • Manque : LineIcons Duotone (actuellement Unicode symbols) ← requis par instruction.md

6. Gestion des langues

  • fr.json / en.json via Alpine store i18n
  • Sélecteur dans la navbar
  • Sauvegarde dans localStorage
  • Manque : sauvegarde per-user en DB

7. Mises à jour paquets

  • Liste par cible (host + LXC)
  • apt update + apt full-upgrade -y via SSH
  • Streaming WS live (type update_output / update_done / update_error)
  • Fix appliqué : msg.payload (pas msg.data)
  • Manque : historique des mises à jour

8. Système de paramètres

  • Onglets Général / SSH / Proxmox API
  • PUT /api/settings/{key} per-key
  • Secrets chiffrés AES-256-GCM en DB
  • Manque : onglet Apparence (sidebar position, thème par défaut)
  • Manque : onglet Langues disponibles

9. Mises à jour CORE/modules Non implémenté

  • Vérification nouvelles versions Forgejo
  • Affichage changelog
  • Détection migrations post-update

10. Store de modules ⚠️ Partiel

  • Liste des modules (CORE + optionnels stubs)
  • Toggle enable/disable
  • Manque : installation/désinstallation de modules externes
  • Manque : registre officiel + registres supplémentaires

11. Page post-installation/migration Non implémenté

  • Blocage total de l'accès si migration en attente

Bugs résolus dans cette session

Bug Fix
CSS cassé au changement de page via Swup Extraction de tous les styles inline en css/pages.css global
Dashboard/Proxmox WS bloqué à " Connexion…" Type WS était proxmox_resources → corrigé en resources_update
WS lit msg.data au lieu de msg.payload Corrigé pour dashboard, proxmox, updates
Délai 10s avant 1er affichage données Ajout fetch HTTP immédiat + WS pour updates live
access_token null au login Corrigé en session précédente
CSS variables incorrectes (--bg-primary) Corrigé en session précédente

Non-conformités instruction.md à corriger

Règle État Priorité
Icônes LineIcons Duotone uniquement Intégrés (css/ + toutes les pages) Haute
Dashboard widgets add/remove/drag-drop Widget system + DnD natif HTML5 Haute
Sidebar gauche/droite per-user data-sidebar CSS + profilePage Moyenne
Page profil préférences (thème/sidebar/langue) profile.html créée Moyenne
Préférences utilisateur en DB localStorage uniquement Basse
Historique mises à jour Non affiché Basse
Mises à jour CORE/modules depuis interface Non implémenté Basse
Page blocage migration Non implémenté Basse

Architecture Docker

core/
├── backend/        (Go — port 3001 interne)
├── frontend/       (Alpine.js — build → Nginx)
│   ├── js/app.js   (stores + composants Alpine)
│   ├── css/neu.css (neumorphism + layout)
│   ├── css/pages.css (styles spécifiques pages)
│   └── *.html      (pages statiques)
└── docker-compose.yml

Commandes utiles

# Build frontend (sur LXC ou machine dev)
cd core/frontend && npm run build

# Déploiement sur LXC 112
docker compose pull && docker compose up -d --build

# Logs
docker compose logs -f backend
docker compose logs -f frontend