Commit Graph

57 Commits

Author SHA1 Message Date
jgitta 598bd83887 deploy: filter global navs from RSS news cache 2026-05-27 14:12:36 +00:00
jgitta 6a4eee9a15 feat: upgrade local newspaper to full-text and images 2026-05-27 14:12:08 +00:00
jgitta 4b1ea2da11 feat: add local ad-free newspaper 2026-05-27 14:09:15 +00:00
jgitta 0d31af526c deploy: integrate emoji font to first boot installer 2026-05-27 14:00:21 +00:00
jgitta 3d8aef5f22 deploy: accurate waterloo ia geolocation 2026-05-27 13:51:41 +00:00
jgitta ac6ca6d1b3 deploy: secure weather caching 2026-05-27 13:44:22 +00:00
jgitta 46cd4f77c9 deploy: weather patch 2026-05-27 13:40:56 +00:00
jgitta 1b06a29e53 feat: add local ad-free weather page 2026-05-27 13:33:44 +00:00
jgitta fd519a64b0 fix: don't pre-create Chromium profile dir in browser.py 2026-05-26 01:10:21 +00:00
jgitta a2c14a4a39 fix: don't pre-create Chromium profile dir — causes profile error on first launch 2026-05-26 01:06:01 +00:00
jgitta ab423ef1a7 fix: sync before reboot to ensure repo survives first-boot restart 2026-05-26 01:03:30 +00:00
jgitta e9ee8caccf fix: shallow clone (--depth=1) to skip 3.5GB of ISO history blobs 2026-05-26 01:00:00 +00:00
jgitta 68dccf958e fix: remove clear command, not needed for silent install 2026-05-26 00:58:07 +00:00
jgitta 0dcfe060e5 fix: robust SSH auth + always pull latest kiosk-setup from Gitea on boot
Replace sed-based PermitRootLogin fix with explicit appends to guarantee
root SSH with password works for debugging. .bash_profile now pulls the
latest install-kiosk.sh from Gitea before running so fixes take effect
without rebuilding the ISO or recreating the VM.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 00:50:00 +00:00
jgitta 86f6334737 fix: replace xprop with x11-utils, use apt websocket-client package
xprop is not a Debian package name — it's in x11-utils. Also replace
pip3 install with python3-websocket from apt (same library, no pip needed).
This fixes the apt failure that prevented lightdm from being installed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 00:46:31 +00:00
jgitta 2431c6b6ae fix: enable root SSH login in preseed-bootstrap for debugging
Allows SSH as root during first-boot setup phase so we can run
commands without relying on the Proxmox console for paste.
install-kiosk.sh already disables this after kiosk setup completes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 00:36:02 +00:00
jgitta 5d3bcb679d fix: remove CDROM apt source before package install
Debian netinstall adds cdrom: to sources.list. With the ISO still
attached in the VM, apt-get update fails on it. Strip it before
running apt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 00:24:54 +00:00
jgitta 23779690d6 fix: bypass final installer dialog with background reboot in late_command
d-i finish-install/reboot_in_background doesn't suppress the 'Installation
complete, click Continue' dialog in Trixie. Instead, fork a background
reboot from late_command that fires 3s after setup completes, killing the
dialog before it can block. Also removes the redundant reboot_in_background
setting.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 00:15:35 +00:00
jgitta 96838f9f67 fix: fully silent first-boot — no prompts, auto-reboot on completion
Removes all interactive prompts from install-kiosk.sh. Username fixed
to 'kiosk', display name fixed to 'Kiosk'. Reboots automatically after
setup without waiting for user input.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 23:49:03 +00:00
jgitta 05f20355c8 fix: use generic 'kiosk' username, prompt only for senior's name
Removes the username prompt — all installs use 'kiosk' as the system
user. Only the senior's display name is asked during first-boot setup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 23:48:10 +00:00
jgitta 165e77b9b8 fix: use getty auto-login instead of systemd TTY service for first-boot setup
Replaces kiosk-firstboot.service (which got SIGHUP'd by getty) with a
simpler approach: configure getty@tty1 to auto-login root, run kiosk-setup
from .bash_profile. Cleaner TTY ownership — no service/getty conflicts.
install-kiosk.sh now removes the auto-login config and kiosk-setup script
on completion so root doesn't auto-login after the kiosk is running.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 23:36:42 +00:00
jgitta d3b05f981f fix: stop getty@tty1 before first-boot setup service to prevent SIGHUP kill
Conflicts=getty@tty1 ensures systemd releases TTY1 before kiosk-setup
runs interactively. Also add partman/choose_partition select finish to
preseed so disk write confirmation is fully automated.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 23:33:20 +00:00
jgitta b73b8fab65 fix: prefer wired interface in preseed to avoid WiFi passphrase prompt 2026-05-24 11:36:09 +00:00
jgitta 19b02f91e9 fix: use Debian 13.5.0 stable ISO to fix kernel module mismatch; gitignore ISOs 2026-05-24 03:21:37 +00:00
jgitta dcdbedc26e feat: auto-increment version on deploy, show version in toolbar 2026-05-24 03:14:39 +00:00
jgitta 508328b282 fix: add isohybrid --uefi post-process to make ISO USB-bootable 2026-05-24 02:25:50 +00:00
jgitta b3bc19aa44 fix: push via internal Gitea URL to bypass Caddy 502 on git-receive-pack 2026-05-23 15:05:08 +00:00
jgitta fa329c7e3c fix: correct xorriso boot params for Trixie netinstall ISO structure 2026-05-23 14:35:24 +00:00
jgitta cb5bf7ff94 feat: generic user, dynamic paths, simplified ISO build pipeline 2026-05-23 14:26:25 +00:00
jgitta 312db58775 refactor: remove dead code, fix home screen config bug 2026-05-23 13:57:35 +00:00
jgitta e9207b4315 fix: configure deploy.sh to push with Gitea token authentication 2026-05-23 13:04:25 +00:00
jgitta b7866000b4 feat: add custom Debian ISO build for automated silent installation 2026-05-23 12:37:31 +00:00
jgitta 38f7ae467a refactor: use config.json with MVC architecture 2026-05-23 02:52:34 +00:00
jgitta c8534c967c Document Gitea layout from homelab-configs (Caddy, port 2222 SSH).
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-22 21:51:54 +00:00
jgitta 8553705e47 Fix bookmarks menu dismiss, home Email URL, and deploy hygiene.
Close the hamburger panel on outside click/focus via X11 (xinput/xdotool)
without a fullscreen overlay; point home Email to Roundcube; sync
home-screen-index.html in deploy/install; remove credentials.md from git
and document private LAN-only Gitea usage.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-22 21:39:07 +00:00
jgitta b99f058bfb add .cursorrules for Cursor AI auto-context 2026-05-22 20:56:23 +00:00
jgitta 2ea316ffd8 add CLAUDE.md — full project context for AI assistants 2026-05-22 20:48:02 +00:00
jgitta ea2b5c30c7 deploy.sh: always restart kiosk-dev; production is optional best-effort 2026-05-22 20:44:13 +00:00
jgitta 8e105aa0af v0.11: fix infobar flag, hamburger click-outside via polling timer 2026-05-22 20:34:29 +00:00
jgitta 237c81ace2 v0.10: remove deprecated flags that cause unsupported-flag infobar 2026-05-22 20:27:21 +00:00
jgitta 686395f2d5 v0.09: remove --disable-blink-features=AutomationControlled (causes infobar) 2026-05-22 20:25:38 +00:00
jgitta ff58ec0fd4 v0.08: prevent minimize — toolbar self-restores, Chromium watchdog 2026-05-22 20:22:03 +00:00
jgitta d4041582f0 fix: ignore tiny resize events from minimize/RDP disconnect 2026-05-22 13:10:55 +00:00
jgitta ba2d5c2f17 fix: responsive toolbar and Chromium resize on screen geometry change 2026-05-22 13:05:41 +00:00
jgitta e34ea8f7c8 fix: remove --no-sandbox, dynamic screen resolution detection 2026-05-22 13:03:11 +00:00
jgitta a61f66e57a add deploy.sh: one-command push to production kiosk 2026-05-22 12:54:51 +00:00
jgitta aac4605e66 v0.07: switch to Chromium snap, remove Google Chrome
- Replace google-chrome with /snap/bin/chromium
- Remove --test-type flag (was triggering Google bot detection/CAPTCHA)
- Add --disable-blink-features=AutomationControlled (hides webdriver flag)
- Move profile dir to /home/jgitta/chromium-kiosk (snap can't write to .config)
- Uninstall google-chrome-stable and its apt repo
2026-05-22 12:28:52 +00:00
jgitta e574403853 v0.06: replace QMenu with custom BookmarkPanel widget
QMenu has z-order and event-grab issues under Openbox/X11 — the menu was
being created successfully but either appeared behind Chrome or was
dismissed instantly by the mouse-release event.

Replace with BookmarkPanel: a QWidget using Qt.Tool | WindowStaysOnTopHint
| FramelessWindowHint (same flags as the toolbar itself). Since the toolbar
already stays above Chrome, the panel does too. Features:
- Scrollable list of all bookmarks with folder headers
- Closes when clicking anywhere outside
- Manage Bookmarks entry at the bottom
- Toggle open/close on hamburger button
2026-05-21 20:39:59 -05:00
jgitta 2ca1da4f8e v0.05: fix Roundcube autologin + hamburger menu focus
Roundcube autologin fix:
- Added missing session->regenerate_id(false) and session->set_auth_cookie()
  calls after login, matching Roundcube's normal login flow in index.php.
  Without these, the roundcube_sessauth cookie was never set, causing every
  second request to fail with 'session is invalid or expired'.

Hamburger menu fix:
- Added activateWindow() + raise_() + processEvents() before menu.exec_()
  to ensure the toolbar window is active before the QMenu event loop starts.
  Without this, WA_ShowWithoutActivating prevents focus from being grabbed
  and the menu vanishes immediately.
- Added try/except to surface any silent errors.
2026-05-21 20:29:46 -05:00
jgitta dfba158f3c v0.04: fix hamburger menu position + clear stale Roundcube cookie
- Hamburger menu: calculate explicit QPoint position (right-aligned below
  toolbar) instead of relying on Qt overflow logic with bottomRight() anchor.
  sizeHint() used for width with 360px fallback.
- Roundcube login: clear mail.jgitta.com session cookie from Chrome's
  SQLite Cookies DB on every startup so autologin always fires cleanly
  instead of showing 'session is invalid or expired'.
2026-05-21 20:14:50 -05:00