You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Console at phone width: audit and fix the key flows at 375px (the mobile app now hosts the Console) #29040
objectstack-ai/mobile 2.0 no longer renders business UI natively: it hosts the Console in a WebView (objectstack-ai/mobile#144). Phone users therefore get the Console's responsive layout and nothing else. The last mobile-layout card, #1325, was closed with the experience unverified.
Ask
Drive each flow below in a real browser at 375×812 (and 390×844) against the showcase and CRM examples. Record what breaks and fix it. The triage seat may split this into one card per flow.
Flow
Pages
Approvals
approvals inbox, approve / reject with reason
Lists
list view, filters, search, row actions, pull-to-refresh
Record
record page, related lists, inline edit
Forms
create / edit form, lookups, date and select fields, validation errors
Dashboards
dashboard with charts and KPIs
Notifications
inbox, mark read, open the target record
Navigation
app switcher, nav groups, back behaviour
Auth
sign-in, 2FA, password reset
For each flow, check:
no horizontal page scroll;
touch targets of at least 44px;
dialogs and drawers fit the viewport;
the virtual keyboard does not cover the focused field;
long lists stay responsive on a mid-range Android device profile (CPU throttling 4×).
Acceptance
A run record per flow, with the pass/fail of each check.
Fixes for every failure, or a card for each one that is not fixed in this card.
Playwright coverage at phone viewport for at least the approvals and record flows.
Read fresh. A phone-width (375 / 390 px) audit and fix of eight Console flows, now that the mobile shell gives phone users the Console's responsive layout and nothing else. domain:ui, p2.
The card offers a split per flow. Triage leaves it whole: the ui lane splits it when it claims, one child card per flow, each with Part of #29040, so each PR stays one flow with its own before/after reading. The flow table is the checklist.
⛔ Not a claim. As the triage comment orders, the ui lane split this card into one child per flow, each carrying Part of #29040. domain:ui#1 and domain:ui#4 agreed the split.
This card is the tracker. pm:queue comes off here so nobody claims it whole. It closes when the last child lands, and the Playwright coverage it asks for sits on #29070 and #29071.
Two readings for this audit. They come from a 390×844 run in shell mode (window.ObjectStackNative injected) against the showcase example on main2f7977c, signed in as the seeded admin. The run captured screenshots for the mobile design doc (objectstack-ai/mobile#161). It was not a full audit.
Horizontal page scroll (Navigation/Dashboards check)./apps/com.example.showcase/page/showcase_capability_map lays its cards out in two columns, and the second column runs past the right edge at 390 px.
First-run currency prompt comes back on every page load. Opening the Showcase app shows a "Set the default currency" sheet (USD prefilled, "Set currency" / "Not now"). After "Not now", the sheet appears again on every new page load. On a phone, every cold start and every WebView remount is a page load, so a user who declines sees it constantly.
Passed in the same run:
/home has no horizontal scroll and no bottom bar;
the app drawer opens at about 75% width over a backdrop;
the list shows cards with a floating create button;
the record page has a back link, previous and next, and a bottom action bar (Edit, …);
Tracker closed · 2026-11-02T14:15Z · all eight phone-width flow children are closed through their landed PRs: #29070 (Approvals), #29071 (Record), #29072 (Forms), #29074 (Lists), #29075 (Navigation), #29076 (Notifications), #29078 (Dashboards), #29080 (Auth). Follow-ups their audits filed carry their own cards and are not held by this tracker.
Activity
objectstack-fleet commentedon Nov 2, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: p2 ·
domain:ui·pm:queue· 2026-11-02T06:35Z⛔ Not a claim.
domain:ui, p2.Part of #29040, so each PR stays one flow with its own before/after reading. The flow table is the checklist.Generated by Claude Code
objectstack-fleet commentedon Nov 2, 2026
domain:ui#4 · zhuangjianguo · session_01QsR2jR7ZFkpqmm4U8S1f9y
Split · 2026-11-02T06:58Z
⛔ Not a claim. As the triage comment orders, the ui lane split this card into one child per flow, each carrying
Part of #29040.domain:ui#1anddomain:ui#4agreed the split.domain:ui#4domain:ui#4domain:ui#4domain:ui#1(after #28911 lands)domain:ui#1domain:ui#1domain:ui#1domain:ui#1This card is the tracker.
pm:queuecomes off here so nobody claims it whole. It closes when the last child lands, and the Playwright coverage it asks for sits on #29070 and #29071.Generated by Claude Code
objectstack-fleet commentedon Nov 2, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage:
tracking(the split tracker) · 2026-11-02T07:56Z⛔ Not a claim.
Part of #29040) and tookpm:queueoff so nobody claims it whole. That left the card with no state (H13). It stays open as the tracker until the last child lands, which is thetrackingshape.Generated by Claude Code
hotlong commentedon Nov 2, 2026
Two readings for this audit. They come from a 390×844 run in shell mode (
window.ObjectStackNativeinjected) against the showcase example onmain2f7977c, signed in as the seeded admin. The run captured screenshots for the mobile design doc (objectstack-ai/mobile#161). It was not a full audit./apps/com.example.showcase/page/showcase_capability_maplays its cards out in two columns, and the second column runs past the right edge at 390 px.Passed in the same run:
/homehas no horizontal scroll and no bottom bar;Generated by Claude Code
objectstack-fleet commentedon Nov 2, 2026
domain:ui#4 · zhuangjianguo · session_01QsR2jR7ZFkpqmm4U8S1f9y
Tracker closed · 2026-11-02T14:15Z · all eight phone-width flow children are closed through their landed PRs: #29070 (Approvals), #29071 (Record), #29072 (Forms), #29074 (Lists), #29075 (Navigation), #29076 (Notifications), #29078 (Dashboards), #29080 (Auth). Follow-ups their audits filed carry their own cards and are not held by this tracker.
Generated by Claude Code