diff --git a/src/app/globals.css b/src/app/globals.css index b9f0d81..e4037d7 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -174,6 +174,22 @@ } } +/* Unified scrollbar style for scrollable containers. + Matches StickToBottom's internal scrollbar-gutter so all scroll areas + behave the same: symmetric gutter, no layout shift. */ +.scrollbar-thin { + scrollbar-width: thin; + scrollbar-color: var(--border) transparent; + scrollbar-gutter: stable both-edges; +} + +/* Single-edge variant: only reserves space on the scrollbar side */ +.scrollbar-thin-edge { + scrollbar-width: thin; + scrollbar-color: var(--border) transparent; + scrollbar-gutter: stable; +} + /* Streamdown code blocks: dark mode via shiki dual-theme CSS variables */ .dark [data-streamdown="code-block-body"] { background-color: var(--shiki-dark-bg, var(--sdm-bg, transparent)) !important; diff --git a/src/components/conversations/sidebar-conversation-list.tsx b/src/components/conversations/sidebar-conversation-list.tsx index eae1756..5d94881 100644 --- a/src/components/conversations/sidebar-conversation-list.tsx +++ b/src/components/conversations/sidebar-conversation-list.tsx @@ -482,11 +482,8 @@ export function SidebarConversationList({
diff --git a/src/components/diff/unified-diff-preview.tsx b/src/components/diff/unified-diff-preview.tsx index 4813de7..ad1e127 100644 --- a/src/components/diff/unified-diff-preview.tsx +++ b/src/components/diff/unified-diff-preview.tsx @@ -546,7 +546,7 @@ export function UnifiedDiffPreview({ if (files.length === 0) { return ( -
+
           {diffText}
         
@@ -555,7 +555,7 @@ export function UnifiedDiffPreview({ } return ( -
+
{files.map((file) => { const newFile = isNewFileOnly(file) @@ -586,7 +586,7 @@ export function UnifiedDiffPreview({ )} -
+
{newFile ? file.hunks.map((hunk) => ( diff --git a/src/components/files/file-workspace-panel.tsx b/src/components/files/file-workspace-panel.tsx index 7dd724c..bbbbb2f 100644 --- a/src/components/files/file-workspace-panel.tsx +++ b/src/components/files/file-workspace-panel.tsx @@ -693,7 +693,7 @@ function DiffFileList({

)}
-
+
{diffOutline.files.map((file) => ( diff --git a/src/components/layout/aux-panel-file-tree-tab.tsx b/src/components/layout/aux-panel-file-tree-tab.tsx index 9e7c155..7a4551d 100644 --- a/src/components/layout/aux-panel-file-tree-tab.tsx +++ b/src/components/layout/aux-panel-file-tree-tab.tsx @@ -2167,7 +2167,7 @@ export function FileTreeTab() {
-
+
-
+
{trackedChanges.length === 0 && untrackedChanges.length === 0 ? (

diff --git a/src/components/layout/aux-panel-git-log-tab.tsx b/src/components/layout/aux-panel-git-log-tab.tsx index cbcaa9c..a1ade89 100644 --- a/src/components/layout/aux-panel-git-log-tab.tsx +++ b/src/components/layout/aux-panel-git-log-tab.tsx @@ -903,7 +903,7 @@ export function GitLogTab() { if (loading) { return ( -

+
{hasBranches && ( +
{hasBranches && ( +
{hasBranches && (
{hasBranches && (
+
{groups.map((group, groupIndex) => { const groupKey = `${group.userTurnId}-${group.timestamp}-${groupIndex}` const isOpen = openGroups[groupKey] ?? false @@ -290,7 +290,7 @@ export function SessionFilesTab() { return (
-
+
diff --git a/src/components/message/virtualized-message-thread.tsx b/src/components/message/virtualized-message-thread.tsx index 5f67fd4..030a9e0 100644 --- a/src/components/message/virtualized-message-thread.tsx +++ b/src/components/message/virtualized-message-thread.tsx @@ -73,7 +73,7 @@ export function VirtualizedMessageThread({ return ( {items.length === 0 ? ( @@ -88,7 +88,7 @@ export function VirtualizedMessageThread({ key={getItemKey(item, index)} style={itemStyle(index, items.length)} > -
+
{renderItem(item, index)}