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)}