Summary
Add web-UI config fields (General section) to toggle autostart at boot and the boot splash screen, so an operator can configure both from the browser instead of an SSH task enable/disable.
Motivation
Autostart and the boot splash are currently only controllable over SSH via task enable / task disable (i.e. systemctl enable/disable openfollow.service) and by enabling/disabling openfollow-splash.service. On a headless show Pi that's an offline LAN, the web UI is the operator's only real interface, so these should be first-class settings there.
Proposed change
Two boolean fields, surfaced in the General web section (Pi/systemd-only – hidden or disabled on macOS/dev):
- Autostart on boot →
systemctl enable/disable openfollow.service
- Boot splash → enable/disable
openfollow-splash.service
State should reflect the actual systemctl is-enabled status on render, not just a config flag, so it can't drift from reality.
Notes / pointers
- The privilege broker already ships the
service.enable / service.disable capabilities (openfollow/privilege/capabilities.py), so no new sudoers surface is needed – reuse them.
- Units live at
packaging/debian/openfollow.service and packaging/debian/openfollow-splash.service.
- Follow the config-field contract in
CLAUDE.md: dataclass normalisation + apply_section_data re-run, FIELD_RULES registration, regression tests, and a help-drawer note (web/help/general-station.md) rather than inline behavioural copy.
- Must keep the offline-runtime contract (no outbound network).
Scope: small, additive.
Summary
Add web-UI config fields (General section) to toggle autostart at boot and the boot splash screen, so an operator can configure both from the browser instead of an SSH
task enable/disable.Motivation
Autostart and the boot splash are currently only controllable over SSH via
task enable/task disable(i.e.systemctl enable/disable openfollow.service) and by enabling/disablingopenfollow-splash.service. On a headless show Pi that's an offline LAN, the web UI is the operator's only real interface, so these should be first-class settings there.Proposed change
Two boolean fields, surfaced in the General web section (Pi/systemd-only – hidden or disabled on macOS/dev):
systemctl enable/disable openfollow.serviceopenfollow-splash.serviceState should reflect the actual
systemctl is-enabledstatus on render, not just a config flag, so it can't drift from reality.Notes / pointers
service.enable/service.disablecapabilities (openfollow/privilege/capabilities.py), so no new sudoers surface is needed – reuse them.packaging/debian/openfollow.serviceandpackaging/debian/openfollow-splash.service.CLAUDE.md: dataclass normalisation +apply_section_datare-run,FIELD_RULESregistration, regression tests, and a help-drawer note (web/help/general-station.md) rather than inline behavioural copy.Scope: small, additive.