Fix mobile navigation behaviour #112
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Grandiras/Ponente#112
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Flyouts from the bottom are nice, but if the button they get triggered by is way up at the top, it gets hard to navigate.
🤖 On it — follow along in the action run; the reply will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the task runs.
Everything is committed, pushed, and cleaned up.
On a phone the nav is now a bar on the bottom edge, so the two controls that open bottom sheets sit where their sheets are.
What changed (
app.css, phone block only — everything is inside@media (max-width: 599px)except one inert token and one keyframe):.board-headerisposition: fixedto the bottom edge below 600px. One bar, not a header plus a tab strip — nothing is named twice and the same 56px is spent once.--phone-nav-h(56px +env(safe-area-inset-bottom), because the bar is what sits in that inset) is the single number everything that has to stop where the bar starts subtracts: the board, the calendar page, the column's max height, the pagination pill, the toasts, and both sheets.body:has(.board-header)pads by it for the pages that just scroll —:has()because sign-in //signup//requestrender no header and 56px of dead space under a centred card is a scrollbar for nothing.translateY(100%)start would be drawn straight over the bar. The switcher shares the newsheetRise; the card dialog keepsslideUpMobilebecause it covers everything.z-index: -1it paints above the header's background but below its children, so a full-height dim would tint the bar and leave its buttons crisp on top of the tint.Also in the branch: a
Changelog.Unreleasedbullet in both locales;docs/ui.mdanddocs/boards-and-permissions.mdrewritten for the move (including why each of the four consequences above is the way it is); new assertions inmobile.spec.js(bar on the bottom edge, board ending exactly where it starts, sheet seated on the bar, toggle closing what it opened) andboards.spec.js(same for the switcher's sheet).Verified against a real stack in this container (installed .NET 10, reached the dind daemon, built the image, ran Playwright against
:8090):dotnet build+dotnet test— 312 passed, 0 failed.mobile.spec.json a freshly recreated stack — 6 passed, 1 failed. The failure is the card dialog fills the phone…, which waits for.card .tag-chip-staticand creates neither the card nor the tag; a wiped stack has no tagged card. Filed separately.boards.spec.js— the phone test's own assertions all pass; it and four others fail indeleteBoard, where.btn-dangeron/admin/boardsdoes nothing when clicked straight after the navigation. That is the exact prerender racedocs/testing.mddocuments as reproducing on an unmodified tree in a job container, it happens at the 1280px default viewport, and every rule I added is scoped undermax-width: 599px. I did not touch it.HEAD'sapp.cssserved over the wire.Branch:
claude/issue-112.⏱ 23m 58s · 238 turns · tokens: 252.1k in / 87.6k out (+43221.8k cache-read)
📜 Full session transcript
→ Opened PR: #124
→ Filed follow-up issue #125: mobile.spec.js's card-dialog test needs a tagged card it never creates