What this is
Each card below is one concrete problem a phone user hits today, with the on-device measurement that proves it and a proposed fix. Nothing here changes the live app — adopt the parts that land. The five, in rough order of how broken they look:
- 1.Header brand wraps to two lines at ≤360px and touches the profile pill
- 2.Bottom-sheet peek leaks half-clipped tabs + search at the seam
- 3.Legal footer is pinned over the sheet — 11px from its controls
- 4.Settings says “Press Esc / click outside” — neither exists on touch
- 5.Tapping an article gives no visible feedback (detail opens off-screen)
Header brand wraps at narrow widths
Problem. On a 360px phone the centred brand block gets only 130px between the hamburger and the profile pill, so “COMMAND CENTER” and “GLOBAL INTELLIGENCE” each wrap to two lines and the brand’s right edge butts directly against the pill with zero gap. It reads as broken, not branded — and it’s worse on a 320px iPhone SE.
Fix. Below 380px: keep the brand on one line by trimming its letter-spacing, drop the “GLOBAL INTELLIGENCE” subtitle (it’s decorative, not load-bearing), and collapse the anonymous profile pill to a 32px icon-only chip. The full label + subtitle return at ≥380px. Frees ~80px and the brand never wraps.
The peek leaks half-clipped tabs + search
Problem. The peek is a fixed 120px, but its header (handle + Briefing + DEFCON) is only ~64px — so the remaining ~56px reveals the FEED/ANALYST tab row and a hard-clipped sliver of the search box, cut off mid-field right at the footer line. The peek is supposed to show “Briefing + status only”; instead the seam looks like a rendering bug.
Fix. Make the peek a deliberate status bar: handle + Briefing + DEFCON/sync on one row, plus a right-aligned “Feed ⌃ 240” chevron that names the gesture. Clip the body exactly at the header bottom and add a short fade so nothing reads as cut. Tabs + search live only once the sheet is actually open.
Legal footer is pinned over the sheet
Problem. The marketing-style footer (description sentence + four legal links) is pinned below the bottom sheet on the dashboard, permanently eating ~88px. Even fully expanded, the sheet’s “PULL FEEDS / last sync” row sits 11px above it, the description truncates mid-word (“…AI voice br…”), and at 360px the links wrap. It’s the single biggest source of cramping at the bottom.
Fix. The crawler/compliance requirement is that the Privacy + Terms links are present in SSR HTML and visible on mobile — not that the marketing blurb is. On the dashboard, collapse to a single ~30px line of links only (“Privacy · Terms · Pricing”). Keep the full descriptive footer on the marketing pages. Reclaims ~58px and removes the truncation + wrap.
Command Center Global — Real-time global intelligence dashboard. Stories from hundreds of news outlets, plotted on a 3D Earth, with optional AI voice br
Compliance-sensitive: Google OAuth rejected the site twice for a mobile-hidden privacy link. This proposal keeps the Privacy + Terms links visible on every viewport in SSR HTML — it only drops the non-required marketing sentence on the dashboard view. Verify with the crawler before shipping.
“Press Esc / click outside” on a touchscreen
Problem. The full-screen Settings (“Operator Console”) panel pins a bottom hint reading “Press Esc to close, or click outside.” On a phone there is no Esc key, and because the panel is full-width there is nothing “outside” to tap. The only real dismissal — the ✕ top-right — isn’t mentioned, so the instruction is both wrong and unhelpful.
Fix. Branch the hint on pointer type (coarse → touch). On touch: drop the Esc/outside line and add a full-width “Done” button at the bottom, in the thumb zone, alongside the existing ✕. Keyboard users keep the Esc hint.
Tapping an article does nothing visible
Problem. Tapping a feed card expands its detail inline — but the expansion (and the only “SOURCE →” link) renders far down the sheet’s scroll. With the sheet at peek the detail lands ~370px below the fold, so a tap highlights a card the user can’t see and surfaces a link they can’t reach. It feels like the tap was ignored.
Fix. Tapping a card opens a dedicated detail sheet that slides up in view — title, outlet coverage, summary and a thumb-height SOURCE button — instead of an inline expand buried in the scroll. Immediate feedback, always in view, one tap to dismiss. Try it:
The detail sheet is the same spring + drag-handle language as the main bottom sheet, so it reads as part of the system rather than a new surface (honours the two-overlay convention — it’s a localised context sheet, not a third global overlay).
Alternative if a dedicated sheet is too much: tapping a card while collapsed auto-snaps the sheet to middle and scrolls the tapped card to the top — cheaper, but the dedicated sheet gives cleaner focus and a guaranteed-visible Source button.
Where each fix lands in the codebase
- 1 · 4 Header + dismissal —
MobileHeader.tsx,SettingsPanel(branch onuseIsCoarsePointer()). - 2 · 5 Peek + article tap —
MobileShell.tsxpeek header +MobileBottomSheet.tsxoverflow clip. - 3 Footer —
layout.tsxcompliance strip (compliance-sensitive — verify with crawler).
None of these touch the globe render path or the per-frame pub/sub invariants. They’re chrome-only — the riskiest is the footer (compliance), which is why it’s flagged separately above.