Add tablet Kitchen reading mode (2a) (Feature 15)
CI / ci (push) Successful in 5m3s
CI / ci (pull_request) Successful in 5m0s

From 768 px, /dinner/:id renders mock 2a instead of the phone sheet:
a header with back, the planned day as "{Weekday, Mon D} · Side
quest|Regular" (absent when this or next week's plan does not have the
dinner from today on), the 36 px title, a Keep screen on switch and an
A/A/A text-size control remembered per device in localStorage. Below,
the Ingredients card with 22 px checkboxes and "N of M set out" beside
the steps, one current at a time, moved by Previous / Next step and the
arrow keys (not while a text field has focus). Checked ingredients and
the current step are local to the visit.

The Keep screen on switch only holds its state for now: useKeepScreenOn
is the seam for the Wake Lock task (c7da10dc).

Maestro task de9f49a8-a6d0-41f4-9f75-8d7243546f3b.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-08 21:39:41 -04:00
co-authored by Claude Opus 5.5
parent c454c76816
commit 522f74ec40
9 changed files with 1042 additions and 28 deletions
+7
View File
@@ -52,6 +52,13 @@ export function weekdayName(date: string): string {
return weekday.format(midnightUTC(date))
}
const longDay = new Intl.DateTimeFormat('en-US', { weekday: 'long', month: 'short', day: 'numeric', timeZone: 'UTC' })
// dayAndDate is date's day in full with its month and day: "Saturday, Oct 10".
export function dayAndDate(date: string): string {
return longDay.format(midnightUTC(date))
}
// monday reads start as midnight UTC, or throws when it is not a Monday.
function monday(start: string): Date {
const t = midnightUTC(start)