gilles
d1b0290e3b
feat(apt): analyse des dépôts APT (lecture seule) (tâche 4)
...
- template repositories (deb lines + deb822), non destructif
- analyzeRepositories (TDD) : composants, repos, détection Proxmox
enterprise/no-subscription, warnings (pve_enterprise_without_subscription,
pve_repo_missing) + notes Debian/Ubuntu composants manquants
- route POST /machines/:id/apt-repositories ; api analyzeRepositories
- popup config : bloc « Dépôts APT » (composants + warnings + notes)
Analyse uniquement (modification = action validée séparée, future). tsc 0 · 113 tests · build OK.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-06 18:41:11 +02:00
gilles
e3e824185f
feat(probe): sonde enrichie CPU/RAM/disques + recommandations de profils (tâche 4)
...
- template machine-probe : lscpu Model name + nproc, MemTotal, lsblk disques
- parseProbe étendu (cpuModel/cpuCores/memoryBytes/disks) + buildRecommendations
(KVM/QEMU → vm_guest_tools) ; tests TDD
- runProbe persiste cpu/mem/disks dans machine_hardware ; /probe renvoie recommendations
- popup Sonde affiche cpu/ram/disks + profils conseillés
tsc 0 · 110 tests · build OK.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-06 18:36:49 +02:00
gilles
c390addadb
feat(metrics): machine_metrics_simple — CPU/RAM/disque live par machine (tâche 4)
...
- template machine-metrics (loadavg/nproc, /proc/meminfo, df -B1) non destructif
- parseMetrics (TDD) → cpu load/cores, mémoire kB→B + %, filesystems, warnings >=90%
- collectMetrics (SSH léger) persiste machine_metrics_latest ; getLatestMetrics (sans SSH)
- routes GET /machines/:id/metrics + POST /metrics/collect ; api latestMetrics/collectMetrics
- section Hardware : bloc métriques live (CPU/RAM/disques + alertes) + bouton Collecter
→ comble le gap « Health » de la tâche 3
tsc 0 · 108 tests · build OK.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-06 17:01:45 +02:00
gilles
58abebf687
feat(ui): ajout machine OS/type, section Hardware, identité app (tâche 3)
...
- AddMachineModal : sélecteurs OS + Type machine ; createMachine accepte
osFamily/machineKind (manuel prioritaire, "Autre/auto" → détection os-release)
- section Hardware sur la tuile + panneau détail : os/type/virt/arch/gpu/réseau
depuis machine_hardware (sonde) via GET /machines/:id/hardware
- identité : favicon.svg (serveur + LED Gruvbox), favicon.ico, apple-touch-icon,
PWA 192/512, site.webmanifest ; liens + theme-color dans index.html
tsc 0 · 104 tests · build OK.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-06 14:07:46 +02:00
gilles
4eb0335900
feat(ui): section post-install interactive (profils + preview) (tâche 3)
...
Branche le frontend sur le moteur post-install (SJ-8) :
- liste des profils (badge de risque), dépliage → champs de formulaire typés
(text/select/bool/secret), pré-remplis depuis defaults + utilisateur SSH
- Preview (script rendu, secrets masqués) en Popup
- Exécuter : profils sûrs en direct, profils à risque (identity_network) via
confirmation Popup → action_request approuvé ; auto-sélection machine →
flux visible dans le terminal
- api client : getProfiles / previewProfile / runProfile + types
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-06 10:57:44 +02:00
gilles
faa654c95a
feat(ui): config machine (sonde+proxy), mode Listing, défaut apt-cacher-ng
...
- popup Profil sur la tuile : sonde machine → propositions os_family/
machine_kind/virtualization avec Appliquer ; proxy APT (mode + url) +
appliquer persistant
- mode d'affichage Tuiles/Liste : toggle + bouton Ajouter déplacés dans le
header de page ; vue Liste = liste compacte + panneau détail « Machine view »
(sections Docker/Post-install dépliées ; pliées en mode tuile)
- Popup rendu via portail document.body (position fixed, z-index 1000) :
passe au premier plan, échappe au backdrop-filter des tuiles
- Paramètres : onglet Proxy APT (défaut apt-cacher-ng + appliquer à toutes
les machines) ; AddMachineModal pré-remplit le proxy par défaut
- api client : settings, updateMachine, probe ; icônes network/grid/list
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-06 07:53:57 +02:00
gilles
c79c3e5ccb
feat(ui): section Docker interactive sur la tuile machine (tâche 3)
...
Branche le frontend sur le backend Docker (SJ-4/5/6) :
- scan, configuration des racines Compose, liste stacks + services avec
badges de statut (candidat/activé/maj dispo/à jour)
- activer/ignorer/désactiver un stack ; pull-check (non destructif)
- apply/down/prune via action_request + confirmation Popup (design system)
- toute action streamée auto-sélectionne la machine → flux visible dans le
terminal de droite (outputHub rejoue le buffer)
- api client : docker settings/roots/scan/stacks/status + action-requests
- icônes trash/check, styles docker-* (variables CSS uniquement)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-06 07:09:07 +02:00
gilles
47fe952240
feat(settings): backup/restore de la base de données (amelioration #4 )
...
- service dbBackup : createBackup (VACUUM INTO → archive .db cohérente),
validateSqlite (header + integrity_check + schéma), prepareRestore
(sauvegarde de sécurité auto + dépôt <db>.incoming)
- swap hors-ligne au démarrage (db/client.ts) : aucune corruption d'une base
ouverte ; restauration appliquée au redémarrage
- routes GET /system/db/info|backup, POST /system/db/restore
- lib api : dbInfo / dbBackup (download navigateur) / dbRestore (upload)
- SettingsModal : onglet « Base de données » (taille, télécharger, restaurer
avec confirmation Popup), icônes database/upload, styles DS variables only
Testé end-to-end : backup 184 Ko valide, restore + safety .bak + swap au boot,
fichier invalide rejeté. tsc 0 erreur · 91 tests · build OK.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-06 06:13:03 +02:00
gilles
08919752e3
feat: socle BDD (tâche 1.9 Phase 1-2) + moteur APT (tâche 2 SJ-0→3) + WIP capabilities/auth/Rust
...
Checkpoint multi-chantiers (arbre vert : tsc 0 erreur, 70 tests, build OK).
- tâche 1.9 Phase 1 : schéma socle (machine_state/events/reports/raw_artifacts/
hardware/metrics + colonnes étendues) + wiring refresh/execute. Migration 0002.
- tâche 1.9 Phase 2 : machine_credentials + machine_host_keys (non destructif,
dual-read + backfill). Migration 0003. Fix séquence journal de migration.
- tâche 2 : SJ-0 (types étendus rétro-compatibles, réducteur Docker, resolveTemplate),
SJ-1 (update-analyze enrichi), SJ-2 (apply + diff dpkg + timeout inactivité SSH),
SJ-3 (reboot vérifié boot_id).
- WIP parallèle inclus : /api/capabilities, auth/apiTokens/apiClients, system metrics,
scaffold app_rust, ajustements frontend.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-05 19:50:25 +02:00
gilles
f9ce991ec5
feat(ui): classes layout header/statusbar/inputs/terminal
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-05 05:27:04 +02:00
gilles
cebe991601
feat(ui): helper sumUpdates (TDD)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-05 05:26:31 +02:00
gilles
b9699bfb8f
feat(ui): helper de thème dark/light persisté (TDD)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-05 05:26:00 +02:00
gilles
d3bf4a9fd2
feat(ui): brancher le design system (exports ESM, Font Awesome, polices offline)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-05 05:25:21 +02:00
gilles
17134ed1a6
feat: UI 3 volets (Hermes stub, dashboard tuiles, terminal xterm.js)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-05 04:20:13 +02:00
gilles
46d27768f3
feat: librairies client API REST + WebSocket
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-05 04:18:52 +02:00
gilles
bd87e84742
feat: scaffolding client Vite/React + design system Gruvbox
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-05 04:18:33 +02:00