- daynivo-config.json, daynivo-authorized_keys and daynivo-network-reset
on the boot partition; errors go to daynivo-config.error.txt.
- daynivo-kiosk-ctl, with voxip-kiosk-ctl as a symlink to it.
- The voxip-* names keep working, so existing SD cards and instructions
stay valid; when both config files are present the Daynivo one is
applied last.
- Internal names (services, /etc/voxip-kiosk, user voxip) are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- .github/workflows/release.yml: a tag vX.Y.Z runs the tests, publishes
daynivo-kiosk-os-X.Y.Z.tar.gz (+ .sha256) and install-online.sh as a
Gitea release, then builds the SD image with pi-gen and attaches it.
- install-online.sh: curl | sudo bash installer for the latest release.
- voxip-kiosk-updater: checks the latest release, verifies and unpacks a
newer one under /opt/daynivo-kiosk-os and runs its update.sh. A daily
timer checks around 03:00 and installs when auto_update is on.
- Web interface: Systeem -> Software-updates with the auto-update switch,
check now and install now (helper verbs update-check / update-install).
- CI checks out with plain git, so it runs on Gitea's act_runner too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Daynivo mark sits on a small white tile in the navy bar, where its
navy parts would otherwise disappear; the favicon is Daynivo's too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With no address on any interface (cable out, no wifi) the kiosk now
switches to the offline screen right away and returns when the network
and server are back. An unreachable server with the network up still
leaves the page running for InfoFlow's offline cache. The panel on the
local pages loses its blue top edge.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Dark grey background, name top left, date and clock top right, a flat
panel with a blue top edge. The pages show the kiosk link (token masked)
and the management address; the clock code is shared in kiosk.js.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The actions are now on every page in the same place instead of a button
row that differed per page.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Without a connected monitor every Chromium start waited 30 s for one, so
DevTools was unreachable for ~35 s after a restart. Only wait right after
boot. The reload error now says Chromium may still be starting.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ProtectKernelTunables, ProtectKernelModules and LockPersonality imply
NoNewPrivileges for a non-root unit, so sudo refused to start the helper
(hostname, reboot, network changes all failed). Guarded by a test.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Chromium kiosk without a desktop for the Raspberry Pi 3, a Flask web
interface on port 8080 (kiosk, system and network management), a
restricted root helper, network changes with automatic rollback, a
healthcheck timer, install/update/uninstall scripts and a pi-gen image
build.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>