Change evidence report

Mobile daily session list: reviewer evidence

PR 1901 replaces the booking widget mobile daily carousel with one chronological semantic list. Exact-revision browser evidence now covers 320, 375 and 430 CSS pixels in both light and dark themes with long session, instructor and location labels, plus desktop daily and weekly states. All observed pages remain within their viewport and navigation controls measure 44 by 44 pixels.

Range
9d8fdc955b1bf705f129ec5ac981fca02f88d911…e9a416393505b841607c5cb4987297afaeec03ea
Source state
fix/1879-mobile-daily-session-list at code head e9a416393505b841607c5cb4987297afaeec03ea; this evidence source and matrix assets are the following report update
Generated

Reviewer brief

Outcome and scope

Daily sessions stack vertically without losing information or actions

At 320 CSS pixels the exact current base renders a 569 pixel horizontal snap carousel inside a 286 pixel viewport with no semantic list. The exact candidate renders two vertical UL list items at every mobile width and theme, preserves all content and Book actions, has no page overflow, keeps 44 by 44 pixel navigation controls, and preserves desktop daily and weekly modes.

Exact revision and fixture capture

The before image was rebuilt from current merge-base 9d8fdc955b1b. Every matrix and desktop after image was rebuilt from candidate code head e9a416393505 with the same deterministic two-session fixture. The fixture deliberately uses long class, instructor and location labels. Full immutable SHAs are recorded in Scope. No production data was used.

Claim map

Evidence coverage

Each material changed behavior or state maps to direct evidence or an explicit gap.

Behavior or claimEvidenceStatus
Mobile daily sessions form one vertical chronological semantic list instead of a snap carouselExact current-base and candidate 320px light comparison plus UL and direct-LI runtime inspectionCovered
Long class, instructor and location labels stay within 320, 375 and 430pxSix exact-head captures, light and dark at every width; document scrollWidth equals clientWidth in all sixCovered
Session time, duration, type, instructor, facility, availability and booking action remain visibleEvery matrix capture uses the same dense two-session fixture and retains both Book actionsCovered
Mobile calendar controls meet 44px targetsDay, Previous week and Next week each measure 44 by 44 pixels at 320, 375 and 430px in both themesCovered
Desktop daily and weekly modes remain intactExact-head 1200px captures and runtime aria-pressed state for both modes; no horizontal overflowCovered
Shared responsive behavior is defended automaticallyBookingCalendar and WeekDayPicker suites: 68 passed, 0 failed, 320 assertions; Widgets typecheck passedCovered

Observed change

Review evidence

Evidence is grouped by the reviewer question each item addresses.

Booking widget, 320px light

Screenshot

Current base carousel becomes a vertical list

Same exact two-session fixture at 320 by 900 CSS pixels. The base uses a 569px snap carousel inside 286px; the candidate exposes a semantic UL with two vertically separated rows and no page overflow.

Base 9d8fdc955b1b: second session is off-screen in a horizontal snap carousel.Before
Exact base mobile booking widget with one session card visible and the next card clipped off-screen
Head e9a416393505: both long-label sessions stack vertically with availability and Book actions.After
Exact candidate mobile booking widget at 320 pixels with two complete long-label session rows stacked vertically

Booking widget, 320px dark

Screenshot

Narrowest dark state retains the same content

The semantic list remains within 320 CSS pixels. Root text computes to rgb(250, 250, 250) under the dark theme class.

320px dark: two list items, no page overflow and 44px navigation controls.After
Dark booking widget at 320 pixels showing two complete vertically stacked session rows

Booking widget, 375px light

Screenshot

Long labels wrap at 375px light

Two list rows remain within the 375px document and retain all dense fixture content.

375px light: 309px list rows at distinct vertical positions.After
Light booking widget at 375 pixels with long class, instructor and facility labels wrapped inside two rows

Booking widget, 375px dark

Screenshot

Long labels wrap at 375px dark

The dark variant uses the same fixture, dimensions and controls without horizontal page overflow.

375px dark: dark theme class active, two semantic list rows, document width 375px.After
Dark booking widget at 375 pixels with two dense session rows contained in the viewport

Booking widget, 430px light

Screenshot

Wide mobile light state preserves row density

Rows expand to 364px while remaining vertical and retaining every session detail and action.

430px light: 364px rows, two list items and no page overflow.After
Light booking widget at 430 pixels with two vertically stacked long-label session rows

Booking widget, 430px dark

Screenshot

Wide mobile dark state preserves row density

Dark text and controls remain readable with the same 430px geometry.

430px dark: dark theme class active, two 364px rows and no page overflow.After
Dark booking widget at 430 pixels with two complete vertically stacked session rows

Booking widget, desktop daily

Screenshot

Desktop daily layout remains a compact list

At 1200 by 900 CSS pixels, Day is aria-pressed, both sessions render as full-width rows and the document has no horizontal overflow.

Exact head at 1200px with Day selected and both dense sessions visible.After
Desktop booking widget daily view with two horizontal session rows

Booking widget, desktop weekly

Screenshot

Desktop weekly grid remains intact

Switching the same exact candidate to Week preserves the weekly grid, two session targets and the 1200px document boundary.

Exact head at 1200px with Week selected and both sessions in the weekly grid.After
Desktop booking widget weekly view with the full week grid and two session cards

Measured behavior

Table

Exact browser matrix measurements

All measurements came from exact base and candidate Storybook builds with one deterministic fixture.

Revision and stateObserved geometry or semanticsResult
Base 9d8fdc955b1b, 320 lightCarousel 569px scroll width / 286px client width; zero semantic UL matchesHorizontal carousel reproduced
Head e9a416393505, 320 light/darkDocument 320px; two 254px direct LI rows; root dark class toggles explicitlyVertical semantic list, no overflow
Head e9a416393505, 375 light/darkDocument 375px; two 309px direct LI rowsDense labels wrap, no overflow
Head e9a416393505, 430 light/darkDocument 430px; two 364px direct LI rowsDense labels wrap, no overflow
Head e9a416393505, all six mobile statesDay, Previous week and Next week each 44 by 44pxTouch targets covered
Head e9a416393505, 1200 daily/weeklyDocument 1200px; Day then Week aria-pressed; two sessions in each modeDesktop modes preserved

Confidence

Validation

Pass

BookingCalendar and WeekDayPicker suites

68 passed, 0 failed, 320 assertions on the rebased candidate

Pass

Widgets typecheck

bun run --filter @sauna-crm/widgets typecheck exited successfully

Pass

Exact mobile browser matrix

320, 375 and 430 CSS pixels in light and dark, all with two semantic rows, long labels, no document overflow and 44px controls

Pass

Exact desktop browser states

1200px daily and weekly captures, both aria-pressed transitions and two session targets observed without overflow

Limits

Known issues, risks, and gaps

Exact candidate evidence covers every requested mobile width and theme plus desktop daily and weekly regressions

Localized content can exceed the deterministic fixture The fixture intentionally uses long English class, instructor and location labels. Automated tests also defend dense wrapping, but no finite screenshot matrix can represent every locale or user-authored string.