Skip to content

fix(dashboard): Clean up mobile conversation chrome - #1598

Merged
dcramer merged 21 commits into
mainfrom
fix/mobile-conversation-scroll-shell
Aug 16, 2026
Merged

fix(dashboard): Clean up mobile conversation chrome#1598
dcramer merged 21 commits into
mainfrom
fix/mobile-conversation-scroll-shell

Conversation

@sentry-junior

@sentry-junior sentry-junior Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Mobile conversation view had three problems: short transcripts rubber-banded the whole PWA shell, the composer sat above the home indicator, and the header stacked competing chrome rows.

What changed

  • Pin the fixed shell to innerHeight / offsetTop: 0 when the keyboard is closed. Follow visualViewport only while the keyboard is open.
  • Share one refcounted document scroll lock across the workspace shell, mobile nav, and drawers.
  • Composer footer padding uses max(0.375rem, safe-area).
  • Conversation detail mobile chrome is one row: [←] truncated title [⋯].
  • Tools move into the overflow menu. App menu opens the nav sheet from there.
  • Nav sheet keeps plain destination rows and a vertical spend callout above every link.
  • Dashboard style check now bans classic 100vh and additive safe-area padding.
  • Desktop layout stays split-pane with the full icon bar and profile popover.

Scope

Checks

  • pnpm dashboard-style:check
  • pnpm --filter @sentry/junior-dashboard lint
  • pnpm --filter @sentry/junior-dashboard typecheck
  • pnpm --filter @sentry/junior-dashboard test
  • playwright test …/conversations-mobile.spec.ts

Please verify on an installed iOS PWA: no whole-page roll on short transcripts, composer near the bottom, one title row with back + overflow, and the vertical spend callout at the top of the app menu.

Requested by David Cramer.

--

View Junior Session [Sentry]

sentry-junior Bot and others added 2 commits August 16, 2026 02:04
Ignore visualViewport offset while the keyboard is closed so short
transcripts cannot drag the fixed conversation shell. Lock document
overscroll on mobile workspace and keep footer safe-area padding from
stacking with the base gap.

Co-Authored-By: David Cramer <david@sentry.io>
Drop the transcript touch-pan tweak and document that focus-time Safari
pan freezes stay in the lag PR so this branch only owns rubber-band shell
geometry and composer safe-area gap.

Co-Authored-By: David Cramer <david@sentry.io>
@vercel

vercel Bot commented Aug 16, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
junior-docs Ready Ready Preview Aug 16, 2026 7:19am

Request Review

@github-actions

github-actions Bot commented Aug 16, 2026

Copy link
Copy Markdown

Dashboard visual evidence

Mode: path-selected
Selected: conversations, conversation-detail, system, component-gallery

Triggered by:

  • packages/junior-dashboard/e2e/conversations-mobile.spec.ts
  • packages/junior-dashboard/e2e/conversations.spec.ts
  • packages/junior-dashboard/src/client/App.tsx
  • packages/junior-dashboard/src/client/bodyScrollLock.ts
  • packages/junior-dashboard/src/client/components/Drawer.tsx
  • packages/junior-dashboard/src/client/components/LoadingView.tsx
  • packages/junior-dashboard/src/client/components/ProfileMenu.tsx
  • packages/junior-dashboard/src/client/components/layout/DashboardChrome.tsx

Conversations · desktop

Conversations · desktop

Conversations · mobile

Conversations · mobile

Conversation detail · desktop

Conversation detail · desktop

Conversation detail · mobile

Conversation detail · mobile

System · desktop

System · desktop

Component gallery · desktop

Component gallery · desktop

Full-page screenshots from the mock dashboard. Not a pixel-diff gate.

Show one mobile row with navigation, conversation context, and close. Move the signed-in profile control into the mobile navigation sheet.

Co-Authored-By: David Cramer <david@sentry.io>
Move the mobile workspace browser scenario out of conversations.spec.ts
so the suite stays under the 1000-line limit.
…menu

Use the selected conversation title in the mobile shell header and expand
the account section in the navigation sheet with identity and profile links.

Co-Authored-By: David Cramer <david@sentry.io>
Replace the dual mobile headers with back + title + overflow.
Move tools into a ⋯ menu and keep app nav reachable from there.

Co-Authored-By: David Cramer <david@sentry.io>
Stop rendering the desktop popover card inside the nav sheet.
Use one continuous identity row plus sheet-matched account links.

Co-Authored-By: David Cramer <david@sentry.io>
Match Gmail/Linear mobile drawers: plain account rows like primary nav,
quiet monogram identity pinned with the version footer, no spend card.

Co-Authored-By: David Cramer <david@sentry.io>
Co-Authored-By: David Cramer <david@sentry.io>
Use the same muted sheet link styling as primary nav destinations.
Move personal spend into a small callout above the account links.

Co-Authored-By: David Cramer <david@sentry.io>
Move personal spend to the top of the mobile navigation sheet as a
vertical callout so it sits above every destination row.

Co-Authored-By: David Cramer <david@sentry.io>
@sentry-junior sentry-junior Bot changed the title fix(dashboard): Stop mobile PWA rubber-band shell pan fix(dashboard): Clean up mobile conversation chrome Aug 16, 2026
Keep rubber-band shell pinning and composer safe-area gap.
Adopt focus-time offset freeze and keyboard-height mailbox max from main.

Co-Authored-By: David Cramer <david@sentry.io>
@dcramer
dcramer marked this pull request as ready for review August 16, 2026 05:02
@blacksmith-sh

This comment has been minimized.

After merging main, keyboard offset stays frozen while the composer is
focused. Assert that freeze, then accept the settled offset on blur.

Co-Authored-By: David Cramer <david@sentry.io>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 8069892. Configure here.

Comment thread packages/junior-dashboard/src/client/App.tsx
Replace text-[11px] with text-xs so dashboard-style:check passes.
Portal the conversation-detail live flag into the shell title row so
mobile chrome stays in sync with the 2s status poll.

Co-Authored-By: David Cramer <david@sentry.io>
Comment thread packages/junior-dashboard/src/client/App.tsx
Prefer detail-query titles for the shell header so off-feed conversations
keep their real name. Mark mobile overflow search as pressed when open.
Comment thread packages/junior-dashboard/src/client/mobileViewport.ts Outdated
Independent overflow save/restore in the workspace shell, mobile nav, and
drawers could leave body.overflow stuck on hidden after navigation. Use one
refcounted lock so nested holders restore the original styles only once.
Comment thread packages/junior-dashboard/src/client/components/ProfileMenu.tsx
Comment thread packages/junior-dashboard/e2e/conversations-mobile.spec.ts
The mobile nav logout e2e only asserted sheet dismissal. Wait for the
sign-out POST too so a missing onSignOut handler cannot pass.
Drop the test-only body scroll lock reset in favor of a factory, ban
classic 100vh and additive safe-area padding in dashboard-style checks,
and switch LoadingView to dvh.

Co-Authored-By: David Cramer <david@sentry.io>
Comment thread packages/junior-dashboard/src/client/App.tsx
Comment thread scripts/check-dashboard-styles.test.mjs
Gate mobile conversation mode on the back target, not a non-empty
title, and ignore block-comment lines in the classic 100vh style check.
@dcramer
dcramer merged commit 74ddc37 into main Aug 16, 2026
37 checks passed
@dcramer
dcramer deleted the fix/mobile-conversation-scroll-shell branch August 16, 2026 15:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: high PR risk score: high

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant