From 110a422551627f2ce6cdbdbb0f3331d9cce3357f Mon Sep 17 00:00:00 2001 From: harshitsinghbhandari <24b4506@iitb.ac.in> Date: Tue, 19 May 2026 13:37:01 +0530 Subject: [PATCH] fix(web): bound project page wrapper + lock kanban/done from flex-shrink MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The real clipper was .dashboard-shell--desktop (height 900px, overflow: hidden), not anything inside Dashboard. The project page wrapper (
) was a non-flex block with min-height: 100vh, so .dashboard-main-- desktop grew to its content height (~1411px) instead of being bounded by the shell's 900px. As a result .dashboard-main__body had overflow-y: auto but also grew to content height (~1308px), so it never overflowed and no scrollbar appeared anywhere. Verified in devtools: with this fix .dashboard-main__body clientHeight is 797 and scrollHeight is 1308 — body becomes the single vertical scroll container, kanban above and Done section below, scrolling as one unit. Changes: 1. /projects/[projectId]/page.tsx wrapper: 'flex-1 min-h-screen' -> 'flex min-h-0 min-w-0 flex-1'. Makes the wrapper a bounded flex item so .dashboard-main--desktop inherits a constrained height from the shell row instead of growing past it. 2. globals.css: flex-shrink: 0 on .kanban-board-wrap and .done-bar. Prevents body's flex column from crushing the kanban to make room for the expanded done section. Both children now assert their content size; body content exceeds body height; overflow-y: auto activates. Root cause credit to harshitsinghbhandari — found via devtools after my three prior attempts (#1925 internal scroll on cards, plus the two prior commits on this branch) all addressed the wrong layer of the layout tree. Co-Authored-By: Claude Opus 4.7 (1M context) --- packages/web/src/app/globals.css | 5 +++++ packages/web/src/app/projects/[projectId]/page.tsx | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/web/src/app/globals.css b/packages/web/src/app/globals.css index ec83364c8..f7e239966 100644 --- a/packages/web/src/app/globals.css +++ b/packages/web/src/app/globals.css @@ -5184,6 +5184,7 @@ html.light .xterm .xterm-viewport:hover::-webkit-scrollbar-thumb:active { position: relative; margin-top: 14px; overflow-x: auto; + flex-shrink: 0; } .board-section-head { @@ -5802,6 +5803,10 @@ html.light .xterm .xterm-viewport:hover::-webkit-scrollbar-thumb:active { /* ── Done / Terminated collapsible bar ────────────────────────────────── */ +.done-bar { + flex-shrink: 0; +} + .done-bar__toggle { display: flex; align-items: center; diff --git a/packages/web/src/app/projects/[projectId]/page.tsx b/packages/web/src/app/projects/[projectId]/page.tsx index 39d317391..66549229b 100644 --- a/packages/web/src/app/projects/[projectId]/page.tsx +++ b/packages/web/src/app/projects/[projectId]/page.tsx @@ -29,7 +29,7 @@ export default async function ProjectPage(props: { const pageData = await getDashboardPageData(projectId); return ( -
+