Adds software updates, one-click rollback, and theme switching to the on-TV Dashboard App (#155), along with WCAG AA accessibility contrast improvements and native static font support for webOS 4.
New Features
- Software Updates & Rollback from TV Screen (#155):
- Dedicated Updates Tab: Added an
Updatestab to the on-TV dashboard app (dashboard.html). - Check & Install Releases: View current version, query GitHub for new releases, and install updates in-place directly from the couch using the Magic Remote.
- One-Click Rollback: Automatically backs up previous versions to
/var/lib/tvweb/.previous/with immediate one-click rollback capability. - Safety Confirmation: Two-step remote confirmation ("Confirm? Press OK again to install...") prevents accidental triggers.
- Live Restart Polling: In-progress monitoring polls
/api/updateuntil the Node.js server finishes restarting and reloads the interface seamlessly. - System Tab Shortcut: Added
Dashboard Serverrow in the System tab for instant access to the Updates tab.
- Dedicated Updates Tab: Added an
- On-TV Appearance & Theme Toggle:
- Added a
Themetoggle (Dark/Light) under anAppearancesection in the System tab. - Persists user preference in TV
localStoragewithout requiring CSS custom properties (compatible with Chromium 38). - Fast, flicker-free theme switching between true OLED black (
#000) and high-contrast Light mode (#f5f5f5).
- Added a
Enhancements & Fixes
- Accessibility & Contrast Uplift (WCAG 2.1 AA):
- Uplifted opacity steps across all inactive tabs, row labels, values, and section headers from ~1.5:1 / 2:1 up to 5.2:1–8.5:1 contrast ratios.
- Completely eliminates dim, hard-to-read text from sofa distances while preserving visual hierarchy for selected rows.
- Static Font Compatibility for webOS 4 / B8:
- Generated dedicated static TrueType instances (
Outfit-Light,Outfit-Regular,Manrope-Regular,Manrope-SemiBold) with--no-overlapto satisfy legacy OpenType Sanitizers. - Bypasses Chromium 38's lack of OpenType Variable Font support (which previously locked text to hairline 100/200 weights), delivering solid 300/400 stem thickness that upscales cleanly to 4K displays.
- Generated dedicated static TrueType instances (