- 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>
149 lines
5.7 KiB
Markdown
149 lines
5.7 KiB
Markdown
# 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
|
|
```
|