Backend:
- modules/services: list, status, start/stop/restart systemctl services
with pct exec support for LXC targets
- modules/logs: journalctl unit listing + WebSocket live streaming
(direct SSH connection, journalctl -f, graceful teardown on WS close)
- migrations/003: seed services and logs modules in DB
- main.go: register services.New() and logs.New() in module loader
Frontend:
- services.html: target selector, search/filter, services table with
active state indicators and start/stop/restart buttons
- logs.html: target + unit selectors, live follow toggle, scrollable
terminal output with 3000-line cap
- app.js: servicePage() and logsPage() Alpine components + navItems
- locales: services and logs i18n keys (fr + en)
- pages.css: services table, state dots, logs output styles
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 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>