No description
Find a file
Mitchell R 1c0fe02fcf feat: layout switch push + idle/sleep timer + offline bundle cache
Layout switch push:
- POST /admin/kiosks/:id/layout/:layoutId — coordinator sends
  {type:"layout-switch", layout_id} via WS
- Kiosk renders specified layout from cached bundle
- KioskEditPage adds Switch Layout dropdown + button

Idle/sleep timer:
- thread_local LAST_ACTIVITY + IS_ASLEEP + CURRENT_LAYOUT_ID
- mark_activity() on render/switch/wake; wakes if asleep
- glib timeout_add_local every 1s checks elapsed:
  - elapsed >= idle_timeout AND not on default + resets_idle_timer
    → switch to default layout
  - elapsed >= sleep_timeout AND !asleep → cec::standby()
- Display idle/sleep timeouts from bundle.display

Offline cache:
- server::save_bundle → ~/.betterframe-kiosk/bundle.json
- server::load_cached_bundle on offline boot
- fetch_bundle no longer panics; returns Option
- 30s retry loop until server reachable
- Reload-bundle gracefully handles fetch failures
2026-05-13 01:00:11 +02:00
deploy fix(proxy): split Node-RED route surfaces 2026-05-11 10:44:45 +02:00
docs refactor: merge templates into layouts, displays from kiosks 2026-05-10 21:39:09 +02:00
kiosk feat: layout switch push + idle/sleep timer + offline bundle cache 2026-05-13 01:00:11 +02:00
scripts adding initial project 2026-05-10 01:09:13 +02:00
server feat: layout switch push + idle/sleep timer + offline bundle cache 2026-05-13 01:00:11 +02:00
.gitignore adding initial project 2026-05-10 01:09:13 +02:00
CLAUDE.md fix(proxy): split Node-RED route surfaces 2026-05-11 10:44:45 +02:00
package-lock.json feat: entities (unified content pool) + ONVIF discovery flow 2026-05-10 23:18:44 +02:00
package.json adding initial project 2026-05-10 01:09:13 +02:00
sec-config.yaml fix(deploy): require proxied local services 2026-05-11 09:51:00 +02:00
tsconfig.base.json adding initial project 2026-05-10 01:09:13 +02:00