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
The #249 PWA work is built and live on https://docs.plus. No child counts as shipped until it passes on a real device. Headless browsers cannot check a splash, a vibrate, an app badge, a share sheet, or a screen reader. This issue runs one checklist on real devices. Each child issue closes when all of its checks pass.
Acceptance criteria
Every check in the table under "Agent brief" has a result: pass, fail, or not run, with the device and OS version.
Type: HITL — a person with an iPhone, an Android phone and a desktop Chromium browser runs each check. They post the results on #249 and close the children that pass. The bounce alert row waits for #354; mark it "not run" until then.
Category: enhancement
Current behavior: The build is live. The production manifest serves share_target with action /receive, and the three iPhone splash images return 200 (checked 2026-09-28). The repo copy is apps/webapp/public/manifest.json. No real-device result is recorded on any #249 child.
Desired behavior: Each #249 child is either closed on a passed device check or carries a filed failure.
The checks, per device. "Issue" is where the result goes. A #249 child closes when all of its rows pass.
Device
Check
Issue
iPhone with a 390, 393 or 430 pt wide screen (for example iPhone 14, 15, 16 or 16 Plus), Home Screen app
Remove the app, add it to the Home Screen again, then cold launch it. The splash image shows, not a blank white screen. The 16 Pro and 16 Pro Max have no splash image, so do not use them.
The pad skip link moves focus into the pad's one main landmark. Share, Make private and Sign out are dialogs named by their visible title. Focus stays inside the TOC drawer and the sheets, and returns to the opener on close.
#248 (a Tab leak during the open motion goes on #310)
Android, installed app
Hold a chat message for half a second. It buzzes once. A tap, a scroll, or a hold where the finger slides does not buzz.
Zero rows is a pass. One row means an old pad now sits behind the reserved route. Post the row on #253.
To create a bounce alert, use a test account only. A maintainer runs select public.record_email_bounce('<test account email>', 'hard'); in the Supabase SQL editor. That call also pauses the account's email notifications. Turn them back on in Settings → Notifications after the check.
Where to start: Only for writing a precise failure report. Splash: apps/webapp/src/pages/_document.tsx (apple-touch-startup-image). Badge: apps/webapp/src/utils/appBadge.ts. Vibrate: apps/webapp/src/components/chatroom/components/MessageCard/hooks/useLongPressInteraction.ts (navigator.vibrate). Home collapse: apps/webapp/src/components/pages/home/HomePage.tsx (HomeCollapseRegion). Persist: requestPersistentStorage in apps/webapp/src/hooks/useYdocAndProvider.ts. First-visit reload: controllerchange in apps/webapp/src/hooks/useServiceWorker.ts. Find: apps/webapp/src/components/TipTap/find/FindBar.tsx. Command jump: apps/webapp/src/components/commandJump/CommandJump.tsx. Inbound share: apps/webapp/public/service-worker.js and apps/webapp/src/pages/receive.tsx. Line numbers are hints as of 2026-09-28; the agent searches by symbol.
Rules that apply:apps/webapp/CLAUDE.md §Landing Page Shell And PWA (parked guards #257, #259, #260, #261 stay open). AGENTS.md §UI And Theme. Names follow CONTEXT.md (Slash menu, Command jump).
Verify: Run each row on https://docs.plus in light and dark theme where the row shows UI. Record device model, OS version and browser version for each result.
Out of scope
Fixing a failed check. File or update the child issue, and fix it there.
Parent
#328. Related: #249, #197, #247, #248, #250, #251, #252, #253, #254, #255, #256, #258, #308, #309, #310, #312
What to build
The #249 PWA work is built and live on
https://docs.plus. No child counts as shipped until it passes on a real device. Headless browsers cannot check a splash, a vibrate, an app badge, a share sheet, or a screen reader. This issue runs one checklist on real devices. Each child issue closes when all of its checks pass.Acceptance criteria
Blocked by
None — can start now.
Agent brief
Type: HITL — a person with an iPhone, an Android phone and a desktop Chromium browser runs each check. They post the results on #249 and close the children that pass. The bounce alert row waits for #354; mark it "not run" until then.
Category: enhancement
Current behavior: The build is live. The production manifest serves
share_targetwith action/receive, and the three iPhone splash images return 200 (checked 2026-09-28). The repo copy isapps/webapp/public/manifest.json. No real-device result is recorded on any #249 child.Desired behavior: Each #249 child is either closed on a passed device check or carries a filed failure.
The checks, per device. "Issue" is where the result goes. A #249 child closes when all of its rows pass.
/on an empty line. The Slash menu opens and the keyboard stays up..docxand a.mdfile into docs.plus, signed in. Each opens as a new pad with the file content./receiveshows Sign in. After sign-in, no pad is made from that file./on an empty line. The Slash menu opens and the keyboard stays up.navigator.storage.persisted()returnstrue(remote DevTools console).settings. Run after #354.receive(query below).The slug check runs read-only on the production Prisma database:
Zero rows is a pass. One row means an old pad now sits behind the reserved route. Post the row on #253.
To create a bounce alert, use a test account only. A maintainer runs
select public.record_email_bounce('<test account email>', 'hard');in the Supabase SQL editor. That call also pauses the account's email notifications. Turn them back on in Settings → Notifications after the check.Where to start: Only for writing a precise failure report. Splash:
apps/webapp/src/pages/_document.tsx(apple-touch-startup-image). Badge:apps/webapp/src/utils/appBadge.ts. Vibrate:apps/webapp/src/components/chatroom/components/MessageCard/hooks/useLongPressInteraction.ts(navigator.vibrate). Home collapse:apps/webapp/src/components/pages/home/HomePage.tsx(HomeCollapseRegion). Persist:requestPersistentStorageinapps/webapp/src/hooks/useYdocAndProvider.ts. First-visit reload:controllerchangeinapps/webapp/src/hooks/useServiceWorker.ts. Find:apps/webapp/src/components/TipTap/find/FindBar.tsx. Command jump:apps/webapp/src/components/commandJump/CommandJump.tsx. Inbound share:apps/webapp/public/service-worker.jsandapps/webapp/src/pages/receive.tsx. Line numbers are hints as of 2026-09-28; the agent searches by symbol.Rules that apply:
apps/webapp/CLAUDE.md§Landing Page Shell And PWA (parked guards #257, #259, #260, #261 stay open).AGENTS.md§UI And Theme. Names followCONTEXT.md(Slash menu, Command jump).Verify: Run each row on
https://docs.plusin light and dark theme where the row shows UI. Record device model, OS version and browser version for each result.Out of scope