Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions app/src/components/RootLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,13 @@ export function RootLayout() {
window.scrollTo(0, 0);
}, [pathname, hash, navigationType]);

// Always reset horizontal scroll on route change. If a previous page leaked
// page-level horizontal scroll (e.g. a wide table on mobile), the offset
// otherwise persists into the next page and clips its left edge.
useEffect(() => {
window.scrollTo({ left: 0, top: window.scrollY });
}, [pathname]);

return (
<Box sx={{
display: 'flex',
Expand Down
3 changes: 3 additions & 0 deletions app/src/pages/McpPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ const inlineCodeSx = {
padding: '2px 6px',
borderRadius: '3px',
color: 'var(--ink)',
// Long URLs / commands sit in TableCells; without explicit wrapping they
// force the table wider than a mobile viewport.
overflowWrap: 'anywhere' as const,
};

export function McpPage() {
Expand Down
8 changes: 8 additions & 0 deletions app/src/styles/tokens.css
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,14 @@
/* MonoLisa script variant (italic ss02) — test */
html { font-feature-settings: "ss02"; }

/* Defense-in-depth against page-level horizontal scroll on mobile. `clip`
(not `hidden`) so the masthead's `position: sticky` keeps working — `hidden`
would create a scroll container and break it. Wide elements still need their
own local containment (e.g. tables, code blocks); this just stops a stray
overflow from leaking into viewport-wide horizontal scroll, which on SPA
nav otherwise persists across routes. */
html, body { overflow-x: clip; }

/* Animations */
@keyframes rise {
from { opacity: 0; transform: translateY(8px); }
Expand Down
Loading