From 4066c48412e7d0186fbaced17305e227523d2d1f Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 25 Jul 2026 03:50:18 +0000 Subject: [PATCH] Sidebar: sync scroll instead of a separate inner scrollbar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous fix (max-height + overflow-y:auto) made every widget reachable but required scrolling the sidebar itself independently of the article column — two different scroll regions felt janky. Replaced it with a three-layer structure: a plain spacer sized to the sidebar's full natural height (reserving the right amount of page scroll room), a sticky+clipped viewport box, and a content wrapper translated upward via a scroll listener. The translation amount is driven by how far the page has scrolled past the point where the sidebar started sticking, clamped to the overflow amount — so scrolling the article feed down reveals more of the sidebar in lockstep, and scrolling back up reverses it, all through the single page scrollbar. Short sidebars that already fit the viewport are unaffected (reveal range is zero, so it behaves exactly like plain sticky-to-top as before). Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_014c1L8ghNBFjfiH64UMViP8 --- .../src/lib/components/sidebar/Sidebar.svelte | 100 +++++++++++++++--- 1 file changed, 84 insertions(+), 16 deletions(-) diff --git a/frontend/src/lib/components/sidebar/Sidebar.svelte b/frontend/src/lib/components/sidebar/Sidebar.svelte index 478e7fe..250d620 100644 --- a/frontend/src/lib/components/sidebar/Sidebar.svelte +++ b/frontend/src/lib/components/sidebar/Sidebar.svelte @@ -1,4 +1,5 @@ - +