# 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 ```bash # 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 ```