wrolpi/app/src/components/admin
Roland 2328524ab2 controller: VNC toggle, gated on the Desktop running
Add a VNC toggle to the Controller (both UIs) that starts/stops whichever VNC
backend is installed: wayvnc for Wayland (Raspberry Pi OS), RealVNC for X11.

Runtime-only, like the Desktop toggle: the unit is never enabled, so VNC does
not return after a reboot. Users who want it permanently on can enable it with
raspi-config.

VNC serves the desktop session, so starting it without a desktop gives clients
a blank screen. The gate lives in the backend, not just the UI, so curl callers
get it too (409, distinct from a systemctl failure). Stopping is never gated so
a running VNC server can't be stranded on with no way to turn it off.

Backend selection deliberately avoids raspi-config's live-compositor probe
(pgrep labwc), which reports X11 — and would pick the wrong backend — whenever
the desktop is stopped. wayvnc also requires its config to exist; that is
checked directly rather than via the unit's ConditionResult, which reports 'no'
for any unit that has never been started.

Extracts _unit_properties()/_systemctl_unit() so Desktop and VNC share one
systemd probe and start/stop path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 18:10:05 -06:00
..
AdminRoute.js Creating browser extension to facilitate starting downloads. Chrome/Brave and Firefox supported. 2026-05-03 11:48:50 -06:00
browserDetect.js app: treat pure Chromium UA as supported for extension banner 2026-07-18 13:52:26 -06:00
Configs.js Add ordered collections (playlists): polymorphic items + item API (#475) 2026-06-11 19:46:34 -06:00
ControllerPage.js controller: VNC toggle, gated on the Desktop running 2026-07-29 18:10:05 -06:00
ControllerPage.test.js controller: VNC toggle, gated on the Desktop running 2026-07-29 18:10:05 -06:00
Downloads.js downloads: surface daily-limit stall to users 2026-07-29 14:58:37 -06:00
Downloads.test.js Adding selection to the Downloads page, user can delete or retry multiple downloads at once. 2025-12-26 10:35:30 -07:00
ExtensionInstallSuggestion.js app: only show extension install banner on Chromium/Firefox 2026-07-18 13:52:07 -06:00
ExtensionInstallSuggestion.test.js app: treat pure Chromium UA as supported for extension banner 2026-07-18 13:52:26 -06:00
ExtensionPage.js app: only show extension install banner on Chromium/Firefox 2026-07-18 13:52:07 -06:00
ExtensionPage.test.js Creating browser extension to facilitate starting downloads. Chrome/Brave and Firefox supported. 2026-05-03 11:48:50 -06:00
Settings.js Controller: move hotspot settings to controller.yaml with WiFi device dropdown. 2026-07-04 09:03:58 -06:00
Status.js controller: report cooling fan RPM in CPU status 2026-07-23 19:52:47 -06:00