GravityLAN 0.4.0: Health & Availability Radar and Mobile Experience Rework
🚀 Highlights
🩺 Health & Availability Dashboard (/health)
-
Network Health Score (0-100): Real-time SLA radar combining ICMP ping latency, jitter, uptime percentage, flapping frequency, SSL certificate validity, and pending security updates into an overall Network Health Score ($0-100$).
-
24/7 Server vs. Client Classification: Devices can be marked as non-24/7 client systems (
alert_offline: false), preventing offline laptops or sleeping workstations from dragging down the homelab's overall score or triggering false outage alarms.
-
Interactive Telemetry Graphs: High-resolution latency & jitter sparklines with smooth SVG cubic bezier curves, cursor tracking, and precise point inspection tooltips.
-
Incident & Stability Timeline: Real-time log tracking connection drops, flapping cycles, certificate warnings, and security advisory notices.
-
Telemetry Drawer: Full slide-over drawer with hardware telemetry (CPU, RAM, Temp), port probes, and SLA statistics for any inspected device.
-
Mobile Touch Cards: Optimized card layout replacing wide tables on mobile screens for comfortable single-thumb navigation.
📱 Mobile UX Rework Across All Submenus
- Bottom Navigation Bar: Full 6-tab mobile navigation bar with touch-friendly 60px height and safe-area insets.
- Submenus & Dialogs: Responsive single-column collapse on screens < 640px for Device Inspector, Agent Management, and Settings lists.
- Popovers as Modals: Notification Center and Gateway popovers adapt dynamically as centered dialog sheets on mobile screens (
position: fixed; inset-x: 12px; max-height: 70vh).
- Save Bar: Refined sticky Save Bar alignment directly above the mobile bottom tab bar.
🛠️ CSS Architecture Hardening
- Universal resets encapsulated inside
@layer base, resolving specificity collisions with Tailwind v4 utilities.
- Replaced brittle
space-y-* child margin hacks with native CSS gap layouts across the application.
📦 Docker Image
docker pull sleeperxr/gravitylan:0.4.0
docker pull sleeperxr/gravitylan:latest