Repository navigation
v3.51.4: cockpit fits the iPhone 18 Pro Max home-screen app (dashboard 0.26.1) - #141
Merged
Merged
Conversation
…d 0.26.1)
Checked in the iOS 27 simulator on an iPhone 18 Pro Max (440x956 CSS px,
62px status-bar inset), launched from the Home Screen like the operator's
phone, against a snapshot of the production task DB.
- Cold launch: ~2s in, iOS parks the page at scrollY -62 while the sticky
header already pads itself by env(safe-area-inset-top), so the board sat
under a doubled 124px gap until the first scroll. Once the page rests
below 0 with no finger down, it goes back to 0. A real pull-to-bounce
keeps firing scroll events until it settles at 0, so it never trips this.
- iOS 26+ lays a dark scrim over a web app's status bar that fades out
~28px below it and greyed the brand + counts row. In the home-screen app
only, the header starts 16px lower.
- body is min-height:100% instead of height:100%. Pinned to the viewport,
its 74px + home-indicator padding added no scroll room, so the last
~108px of every pane sat under the tab bar and a 5-card lane could not
scroll at all.
- The lane picker's sticky offset watches the header's border box. iOS
fills the safe-area inset in after launch, which grows the padding but
not the content box, so the picker pinned too high and hid under the
header.
- Lane and review cards wrap their chips in their own column so snooze,
dismiss and done stay on the right. A deadline chip used to push all
three onto an empty row of their own. Desktop is unchanged (the wrapper
is display:contents there).
- An open task sheet locks the board (overflow hidden + overscroll
containment); a flick inside the sheet used to scroll the page behind it.
- Composer: the native date field ignored width:100% and ran past the
card. Timeline: NOW gets its own row instead of colliding with a nearby
date ("09-21 +1NOW"). The hidden skip link no longer peeks out from
behind the status bar.
Tests: tests/phone_layout.test.mjs (9) runs the shipped launch-offset
handler against fake scroll/touch events and pins the CSS and markup
contracts above; added to the CI node list. Mutation check: disabling the
snap-back fails it. All 124 dashboard Python tests and 33 Node tests pass.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The pTask cockpit now fits the iPhone 18 Pro Max when it runs as the Home Screen app. I checked every tab, the task sheet and the composer in the iOS 27 simulator (440×956 CSS px, 62px status-bar inset), launched from the Home Screen against a snapshot of the production task DB.
What was wrong, and the fix
display-mode: standalone), the header starts 16px lower.body{height:100%}kept its tab-bar padding inside the viewport.body{min-height:100%}.display:contents).overflow:hiddenplus overscroll containment).Versions: pt 3.51.4, dashboard 0.26.1, with a README changelog entry.
Tests
dashboard/tests/phone_layout.test.mjs(9 tests), added to the CI node list. It runs the shipped launch-offset handler against fake scroll and touch events, and pins the CSS and markup contracts above. I checked that disabling the snap-back makes it fail.🤖 Generated with Claude Code