From 0067369af12b5a540624a8adc1961f27c338bc31 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Sat, 21 Mar 2026 16:50:10 -0700 Subject: [PATCH] fix(canvas): prevent mobile scroll by using flex layout for canvas page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On mobile, header/tab-row switch from fixed to sticky (in-flow), but #app.canvas-layout still had height:100vh — total content exceeded viewport causing unwanted scroll. Fix: body becomes a flex column (100dvh, overflow hidden), header/tab-row flex-shrink:0, #app fills remaining space with flex:1. Co-Authored-By: Claude Opus 4.6 --- website/public/shell.css | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/website/public/shell.css b/website/public/shell.css index c20dc4f..6d98eb3 100644 --- a/website/public/shell.css +++ b/website/public/shell.css @@ -406,8 +406,26 @@ body.rstack-sidebar-open #toolbar { #app { padding-top: 0; } + /* Canvas on mobile: header/tab-row are sticky (in-flow), so body must + become a flex column to prevent the 100vh #app from overflowing. */ + body:has(#app.canvas-layout) { + height: 100dvh; + overflow: hidden; + overscroll-behavior: none; + display: flex; + flex-direction: column; + } + body:has(#app.canvas-layout) .rstack-header { + flex-shrink: 0; + } + body:has(#app.canvas-layout) .rstack-tab-row { + flex-shrink: 0; + } #app.canvas-layout { padding-top: 0; + height: auto; + flex: 1; + min-height: 0; } .rspace-iframe-wrap { position: relative;