Skip to content

Crew call sheet: one Accept / Decline pair on a phone, the bar at the bottom - #105

Merged
WPCom100 merged 1 commit into
masterfrom
dev
Nov 14, 2026
Merged

WPCom100 merged 1 commit into
masterfrom
dev

Conversation

@WPCom100

Copy link
Copy Markdown
Owner

What

On a phone, the public crew call sheet (#/crew/<token>, modules/crew-view.js) showed the Accept / Decline pair twice: once in the action card under the shifts and once in the bar fixed to the bottom of the screen. Crew reported the card's pair as dead. It did register the tap, but it opened the note panel below the fold at the same moment the bar vanished and the page shifted under the thumb, so nothing visible answered it; the bar's pair scrolled the card into view and so appeared to work.

  • At 600px and under, the bottom bar is now the only Accept / Decline pair. The card keeps the question and the note panel, and until a choice is made it reads "Answer with the buttons at the bottom of your screen." Back in the panel brings the bar straight back.
  • Desktop is unchanged: the in-card pair, no bar.
  • The bar's scroll is fixed properly. It ran before the panel had grown, and with the card near the foot of the page it could not scroll far enough, so the Confirm button still sat partly under the fold. The tap now aligns the card to the top (with a scroll margin), and a second pass once the panel has opened nudges only as far as needed.
  • The phone breakpoint is written once and seeded into state from the media query.
  • Shell cache bumped to v126 (sw.js), as the CI guard requires for a served-file change.

Verification

  • Drove the real app with Playwright on iPhone 13 and iPhone SE sizes from three scroll positions, plus a 1280px desktop: phone shows no in-card pair and one bar, and after the bar tap the question, textarea and Confirm button all sit within the viewport; desktop shows the in-card pair, no bar, and the panel opens in place without a page jump.
  • New suite tests/test_crew_view_mobile.js (48 assertions): a hook-capable Node render of the sheet on phone and desktop covering the bar flow, Back, decline, flat-rate and already-answered requests. Its runner also rejects a hook count that changes between renders (React error #310), which caught a misplaced hook during this work.
  • All 41 JS suites and tests/check_shell_version.py pass.

Generated by Claude Code

… bottom

On a phone the public call sheet (#/crew/<token>) showed the Accept /
Decline pair twice: once in the action card under the shifts and once in
the bar fixed to the bottom of the screen. The card's pair was the one
crew reported as dead. Tapped with the card low on the screen, it opened
the note panel below the fold at the same moment the bar vanished and
the page shifted under the thumb, so nothing visible answered the tap;
the bar's pair scrolled the card into view and so appeared to work.

Now, at 600px and under, the bar is the only pair. The card keeps the
question and the note panel, and until a choice is made it points at
the bar. Back in the panel brings the bar straight back. Desktop is
unchanged: the in-card pair, no bar.

The bar's scroll is also fixed properly rather than by luck. It runs
before the panel has grown, and with the card near the foot of the page
the page could not scroll far enough, so the Confirm button still sat
under the fold. The tap now aligns the card to the top (with a scroll
margin), and a second pass once the panel has opened nudges only as far
as needed. The breakpoint is seeded into state from the media query and
written once.

Covered by tests/test_crew_view_mobile.js: a hook-capable Node render of
the sheet on phone and desktop, including the bar flow, Back, decline,
flat-rate and answered requests. Its runner also rejects a hook count
that changes between renders, the mistake the real React reports as
error #310. Shell cache bumped to v126.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FUTgf6UKLxccdJiN18rjzV
@WPCom100
WPCom100 merged commit 3245213 into master Nov 14, 2026
13 checks passed
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.

2 participants