v0.10.0: Phase B — Storage Management UI Polish & Health Severity Fix

- Health severity fix: mount-point check downgraded from issue (FAIL) to warning (WARN)
- All storage health messages translated to Hungarian
- Success flash messages for all storage operations
- Edit storage path labels (inline edit UI + backend)
- App details per storage path on settings page (expandable list with names + sizes)
- Storage badge on stacks page showing which storage each app uses
- Deploy dropdown with free space display and low-space warning (<20%)
- Filesystem & disk info on settings page (ext4/btrfs, device, model via findmnt)
- Backup page storage context with per-app storage label badges

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-17 09:48:51 +01:00
parent 61d8451c69
commit 69698a89e8
15 changed files with 412 additions and 30 deletions
+14 -4
View File
@@ -24,7 +24,7 @@ controller generates secrets, saves app.yaml, runs `docker compose up -d`, and t
with Traefik routing and health checks. The dashboard correctly shows real-time container states
including health substatus (starting → healthy → running).
Current version: **v0.7.2**
Current version: **v0.10.0**
### What works
- Dashboard with live container state (green/orange/yellow/red)
@@ -61,6 +61,12 @@ Current version: **v0.7.2**
- Central hub reporting (periodic JSON push to felhom-hub service)
- Notification preferences sync to hub (controller → hub on save + startup)
- Notification system with email delivery via Resend API (hub relay)
- Storage paths registry with auto-discovery, per-app HDD_PATH resolution, and multi-storage support
- Storage management UI: add/remove paths, edit labels, set default, toggle schedulable
- Per-app storage visibility: storage badges on stacks page, app details per storage path on settings page
- Deploy dropdown with free space display and low-space warnings
- Filesystem & disk info (ext4/btrfs, device, model) on settings page
- Backup page storage context with per-app storage label badges
### Known issues / next priorities
- Cloudflare Tunnel + Traefik TLS: paperless.demo-felhom.eu works locally but shows "Not secure" (certificate chain not fully validated through tunnel)
@@ -122,7 +128,9 @@ controller/
│ │ ├── info_linux.go # Linux: /proc/meminfo + statfs + loadavg + temperature
│ │ ├── info_other.go # Non-Linux stub
│ │ ├── cpu_linux.go # CPU collector (background /proc/stat sampling)
│ │ ── cpu_other.go # CPU collector stub (non-Linux)
│ │ ── cpu_other.go # CPU collector stub (non-Linux)
│ │ ├── mounts_linux.go # Mount point, disk usage, FS info (findmnt, sysfs)
│ │ └── mounts_other.go # Non-Linux stubs for mount/disk/FS functions
│ ├── monitor/
│ │ ├── pinger.go # Healthchecks.io HTTP ping client
│ │ └── healthcheck.go # System health checks (disk, mem, CPU, temp, Docker)
@@ -151,6 +159,7 @@ controller/
│ └── templates/ # go:embed HTML/CSS files (Hungarian UI)
│ ├── layout.html, dashboard.html, stacks.html, login.html
│ ├── logs.html, deploy.html, app_info.html
│ ├── settings.html, backups.html, monitoring.html
│ └── style.css
├── configs/
│ ├── controller.yaml.example # Full config reference (infrastructure only)
@@ -171,7 +180,8 @@ controller/
| **Config** | `internal/config/` | ✅ Done | Load & validate controller.yaml, env overrides |
| **Stacks** | `internal/stacks/` | ✅ Done | Compose operations, scanning, metadata, deploy flow |
| **API** | `internal/api/` | ✅ Done | REST endpoints (stacks, deploy, rescan, system info, health) |
| **System** | `internal/system/` | ✅ Done | System resource info (RAM, disk, CPU, temperature, load) |
| **Settings** | `internal/settings/` | ✅ Done | Persistent settings (password, notifications, storage paths, app backup prefs) |
| **System** | `internal/system/` | ✅ Done | System resource info (RAM, disk, CPU, temperature, load, mount points, FS info) |
| **Web** | `internal/web/` | ✅ Done | Hungarian dashboard, auth, deploy pages, asset serving |
| **Sync** | `internal/sync/` | ✅ Done | Git-based app catalog sync (clone/pull, content-hash copy) |
| **Scheduler** | `internal/scheduler/` | ✅ Done | Central job scheduler (periodic + daily, skip-if-running) |
@@ -391,7 +401,7 @@ docker compose up -d
| Node | Hardware | Domain | IP | Status |
|------|----------|--------|----|--------|
| demo-felhom | Acemagic GK3PLUS N100, 16G RAM, 512G SSD + 1TB HDD | demo-felhom.eu | 192.168.0.162 | ✅ Controller v0.6.0 + Paperless-ngx running |
| demo-felhom | Acemagic GK3PLUS N100, 16G RAM, 512G SSD + 1TB HDD | demo-felhom.eu | 192.168.0.162 | ✅ Controller v0.10.0 + Paperless-ngx running |
| pi-customer-1 | Raspberry Pi 3B+, 1G RAM, 32G SD | pi-customer-1.local | — | 📲 Not yet tested |
### First deployment log (Paperless-ngx on demo-felhom)