Files
fusion/docs/solutions/ui-bugs/mobile-auto-merge-toggle-document-scroll-blank.md
gsxdsm c0ff360737 FN-6243: keep mobile auto-merge toggles visible
Keep the mobile dashboard pinned while offscreen auto-merge controls are toggled.

- Reset document horizontal scroll during mobile board stabilization and immediately after auto-merge toggles.
- Cover portrait and landscape mobile scroll realignment in the auto-merge integration test.
- Document the real-browser blank-dashboard root cause and add a patch changeset.

Files changed:
 .changeset/FN-6243-mobile-auto-merge-blank.md      |  5 ++
 ...bile-auto-merge-toggle-document-scroll-blank.md | 55 ++++++++++++++++++++++
 packages/dashboard/app/components/Board.tsx        | 47 ++++++++++++++++--
 ...-merge-toggle-blank.mobile-integration.test.tsx | 49 +++++++++++++++++++
 4 files changed, 152 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6243

Fusion-Task-Lineage: 91f74de2-667f-4732-a840-47b792288bec
2026-06-11 21:26:59 -07:00

2.7 KiB
Raw Blame History

title, date, category, module, problem_type, component, symptoms, root_cause, resolution_type, severity, related_components, tags
title date category module problem_type component symptoms root_cause resolution_type severity related_components tags
Mobile auto-merge toggle blanks dashboard via document horizontal scroll 2026-06-11 ui-bugs packages/dashboard/app/components/Board ui_bug dashboard-board
Toggling the in-review Auto-merge switch on a mobile viewport leaves the dashboard blank/white until refresh
React board subtree remains mounted; no PageErrorBoundary fallback or pageerror is emitted
Existing jsdom board/task-card/worktree tests pass because jsdom has no real viewport pan/paint
mobile_document_horizontal_scroll code_fix high
packages/dashboard/app/components/Column
packages/dashboard/app/hooks/useAppSettings
packages/dashboard/app/styles.css
mobile
real-browser
auto-merge
horizontal-scroll
blank-screen
fn-6243

Mobile auto-merge toggle blanks dashboard via document horizontal scroll

Problem

The recurring mobile blank-screen regression for the in-review Auto-merge toggle was not a React unmount or thrown exception. A real mobile browser can pan the document horizontally while bringing the offscreen in-review toggle into view/focus. Once window.scrollX is non-zero, the entire dashboard shell is shifted left and the viewport can look blank even though main.board and all columns remain mounted.

Real-browser evidence

FN-6243 reproduced this with the existing Playwright CLI against a real dashboard process (node packages/cli/dist/bin.js dashboard --port 0 --no-auth --dev --paused) at a 375×812 mobile/touch viewport.

Pre-fix evidence:

  • Before toggle: main.board box { x: 0, width: 375, height: 454.828125 }; in-review column box { x: 948, width: 300, height: 430.828125 }.
  • After toggle: main.board still existed but box shifted to { x: -911, width: 375, height: 454.828125 }; in-review column shifted to { x: -874, width: 300, height: 430.828125 }.
  • pageErrors: [].

Post-fix evidence:

  • After toggle round-trip: window.scrollX === 0, main.board remained at { x: 0, width: 375, height: 454.828125 }, in-review column was visible with non-zero size, and pageErrors: [].

Solution

Keep the document/root horizontal scroll pinned to zero on mobile board stabilization and immediately after the auto-merge toggle fires. The board's own internal horizontal scroll remains the only horizontal scroller; do not reintroduce mandatory scroll snap.

Regression coverage should include both:

  1. The existing jsdom integration surface for useAppSettings.toggleAutoMerge success and rollback paths.
  2. A real-browser/manual or smoke run when the bug class involves viewport pan, paint, layout, visual viewport, or fixed mobile chrome. jsdom cannot reproduce this class.