Skip to content

fix(kiosk): a finished timer stays in its pane and goes with one tap; its close button is clear of the dashboard's; kiosk 0.2.2 - #453

Merged
kh0pper merged 1 commit into
mainfrom
fix/kiosk-timer-done-dismiss
Oct 7, 2026
Merged

kh0pper merged 1 commit into
mainfrom
fix/kiosk-timer-done-dismiss

Conversation

@kh0pper

@kh0pper kh0pper commented Oct 6, 2026

Copy link
Copy Markdown
Owner

The problem

When a timer finished, the kiosk page turned its card into a full-screen layer. Opened from the dashboard ("Talk to Crow", the session overlay), this caused three problems:

  • The card's close button sat in the frame's top-right corner, directly under the overlay's own close button. Measured at 412x915: the card's button was at x 351-407, y 5-61 and the overlay's at x 360-404, y 8-52. The overlay's button is drawn above the frame, so a tap there closed the whole overlay.
  • The full-screen layer covered the bird and the "Tap to talk" button, so you couldn't say "stop" either.
  • The timer stays on the server until it is dismissed, so it showed "Time's up" again every time you reopened the overlay.

The fix

  • A finished timer now stays in its window pane instead of covering the page. While it is ringing, the page background takes a teal tint, so the alert can still be seen from across the room on a wall display.
  • One tap anywhere on a finished timer dismisses it. It sends the same server event as its close button, so it does not come back on reopen. A short "Tap to dismiss" line (English and Spanish) says so. Repeated events from one gesture (swipe, close button, card tap) dismiss it once, not twice.
  • In session mode a window's close button sits at the card's top-left corner. The overlay's button moves down with the phone's status-bar inset, which the frame cannot read, so only a separate column guarantees the two never overlap.
  • The talk button sits above the windows.
  • Kiosk 0.2.2. The turn-check test now reads the version from the manifest instead of hardcoding it.

Tests

  • New live test tests/kiosk-timer-done-live.test.js runs in a private headless browser. It covers the session overlay at 412x915, 915x412 and 1280x800, and a paired display at 800x480 and 412x915. It checks with real hit-testing that the card's close button, the bird and the talk button are each reached by a tap at their center, and that no column is shared with the overlay's button. A real click on the card dismisses it once. Against the previous page code every case fails.
  • New view tests in tests/kiosk-page.test.js: tap-to-dismiss, the dismiss happening only once, the page tint, and the CSS rules.
  • Full suite: 7708 pass, 0 fail, 1 skipped. Public-hygiene and registry checks are clean.

… its close button is clear of the dashboard's; kiosk 0.2.2

A finished timer was a full-screen layer inside the kiosk page. In the
dashboard's Talk to Crow overlay its close button sat exactly under the
overlay's own close button, and the layer covered the bird and the talk
button, so the only control left closed the whole overlay and the timer
came back on reopen.

- the finished timer stays in its window pane; the page tint marks it
- one tap anywhere on a finished timer dismisses it (the same server event
  as its close button); a second event from the same gesture is ignored
- in session mode a window's close button sits at the card's top-left,
  clear of the dashboard's button whatever the status-bar inset
- the talk button sits above the windows
- a live headless-browser test checks the geometry and a real tap at
  phone, landscape and desktop sizes, and on a paired display
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant