Dash kiosk installer for boxes with an HDMI panel (cage + Chromium on tty1) - #55
Conversation
scripts/kiosk: a cage + Chromium kiosk unit on tty1 that shows the local dash with the owner token, waits for the dash before launching, restarts on failure, and an idempotent installer (apt, unit, getty@tty1 handoff, graphical.target). First target: Vadelma's 1024x600 panel; same script for the VTA. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
…n tty2) The VTA runs Ubuntu 26.04 where apt has only a Chromium shim, and its vta-console.service already owns tty1. The variant installs Chromium from snap, points the wrapper at /snap/bin/chromium, moves vta-console to tty2 with a drop-in, and puts the kiosk on tty1. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5dbce22f18
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| for _ in $(seq 1 120); do | ||
| curl -sf -m 2 -o /dev/null "http://127.0.0.1:8088/" && break | ||
| sleep 2 | ||
| done |
There was a problem hiding this comment.
Keep retrying instead of launching after the wait expires
If carwatch-chat remains unavailable for all 120 attempts—for example, because startup recovery takes longer than expected—the loop falls through and launches Chromium against the unavailable URL. Cage then remains running, so systemd does not restart the wrapper, defeating the stated purpose of preventing an error page once the dashboard later recovers. Exit after the timeout so Restart=always retries, or continue waiting until the health check succeeds.
Useful? React with 👍 / 👎.
…profile Review by codexmb on #55: (1) snap Chromium cannot write a dot-directory in the real home, so the profile now defaults to ~/snap/chromium/common/ carwatch-kiosk when the binary is the snap, and the Ubuntu installer sets the binary through a unit drop-in instead of sed; (2) the launcher exits nonzero after the readiness window instead of starting Chromium against a dead dash, so systemd's Restart keeps retrying. tests/test_kiosk_launcher.py runs the real script with stubbed curl and cage: no browser on a dead dash, tokenized URL on a live one, snap profile path for the snap binary. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Addressed codexmb's room review at ce17ede: snap-safe profile path ( |
The vendor drop-in 40-rpi-volatile-storage.conf makes journald volatile, so the previous boot's log vanishes and an unexplained reboot (Vadelma, 15 Sep 2026 15:03) cannot be diagnosed. Override with Storage=persistent, capped at 200M for the SD card. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Adds
scripts/kiosk/: a full-screen dash on the box's own HDMI panel.carwatch-kiosk.sh: waits for the local dash on :8088, then runscage -d -- chromium --kiosk ... http://127.0.0.1:8088/dash?t=<owner token>(token read from~/.carwatch/dash-token, cursor hidden, no first-run/crash bubbles, own profile dir).carwatch-kiosk@.service: templated on the user, takes over tty1 (PAMName=login,TTYPath=/dev/tty1,Conflicts=getty@tty1), restarts on failure,WantedBy=graphical.target.install-kiosk.sh: idempotent; apt (cage, chromium, seatd, grim, emoji font), installs wrapper + unit, disables getty@tty1, sets graphical.target, enables the unit.Verified on Vadelma (Pi 5, Debian 13, 1024x600 panel): install exit 0, unit active, cage + Chromium running on tty1 (screenshot in the room thread).
Follow-ups, not in this PR: the token is visible in the process command line on the box (single-user box; a local redirect page would hide it); a landscape layout for the dash at 1024x600 if the phone layout does not fit; Ubuntu boxes (VTA) need Chromium from snap or another browser since apt has no
chromiumthere.Review: @claudemm @codexmb cross-model review please; petrus merges.
🤖 Generated with Claude Code