From c57d64f4decb6ed09672ac86c4bfb1e2869c9bac Mon Sep 17 00:00:00 2001 From: Jason Date: Sat, 3 Oct 2026 20:37:41 +0800 Subject: [PATCH] fix(ui): reserve the scrollbar gutter on main scroll areas v7 shows an 8px scrollbar that takes layout space, so a page or list whose content crossed the overflow threshold (filtering the MCP table, switching usage tabs) shifted every column sideways by 8px. Add a scroll-stable utility (scrollbar-gutter: stable) and apply it to page scroll areas, sheet bodies and the large list/table containers; menus, code blocks and small dialogs keep the default. Drop the unused scroll-overlay utility. --- src/App.tsx | 14 ++++++++++---- src/components/apps/AppsPage.tsx | 5 ++++- src/components/common/FullScreenPanel.tsx | 2 +- src/components/mcp/UnifiedMcpPanel.tsx | 4 ++-- src/components/prompts/PiNativePromptResources.tsx | 4 ++-- src/components/prompts/PromptFormPanel.tsx | 2 +- src/components/prompts/PromptLibrary.tsx | 2 +- src/components/providers/mode/SwitchModePanel.tsx | 2 +- src/components/sessions/SessionManagerPage.tsx | 2 +- src/components/sessions/reader/SessionOutline.tsx | 2 +- src/components/sessions/reader/SessionReader.tsx | 2 +- src/components/settings/SettingsPage.tsx | 2 +- src/components/skills/SkillsPage.tsx | 2 +- src/components/skills/UnifiedSkillsPanel.tsx | 2 +- src/components/ui/sheet.tsx | 2 +- src/components/usage/UsageDashboard.tsx | 6 +++--- src/index.css | 9 ++++----- 17 files changed, 36 insertions(+), 28 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 2b7befdc5..23c47b0cb 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1207,7 +1207,7 @@ function App() {
{activeApp === "claude-desktop" && ( @@ -1284,7 +1284,7 @@ function App() { id="main-content" role="tabpanel" aria-labelledby={`openclaw-config-${openclawConfigTab}`} - className="min-h-0 flex-1 overflow-y-auto" + className="min-h-0 flex-1 overflow-y-auto scroll-stable" > {openclawConfigTab === "env" ? ( @@ -1298,7 +1298,10 @@ function App() { ); case "hermesMemory": return ( -
+
); @@ -1350,7 +1353,10 @@ function App() { } /> -
+
diff --git a/src/components/apps/AppsPage.tsx b/src/components/apps/AppsPage.tsx index 7f8c4309d..34e16261e 100644 --- a/src/components/apps/AppsPage.tsx +++ b/src/components/apps/AppsPage.tsx @@ -249,7 +249,10 @@ export function AppsPage() { } /> -
+
{t("appsPage.columnApp")} diff --git a/src/components/common/FullScreenPanel.tsx b/src/components/common/FullScreenPanel.tsx index af49c4fd8..cedc0fdca 100644 --- a/src/components/common/FullScreenPanel.tsx +++ b/src/components/common/FullScreenPanel.tsx @@ -163,7 +163,7 @@ export const FullScreenPanel: React.FC = ({ } /> -
+
{children}
diff --git a/src/components/mcp/UnifiedMcpPanel.tsx b/src/components/mcp/UnifiedMcpPanel.tsx index 2451df7be..35d7d1a6c 100644 --- a/src/components/mcp/UnifiedMcpPanel.tsx +++ b/src/components/mcp/UnifiedMcpPanel.tsx @@ -734,7 +734,7 @@ const UnifiedMcpPanel: React.FC = ({ ) : (
@@ -1051,7 +1051,7 @@ const UnifiedMcpPanel: React.FC = ({

)}
-
+
{importReport.error && (

diff --git a/src/components/prompts/PiNativePromptResources.tsx b/src/components/prompts/PiNativePromptResources.tsx index ea373413d..b043d429b 100644 --- a/src/components/prompts/PiNativePromptResources.tsx +++ b/src/components/prompts/PiNativePromptResources.tsx @@ -134,7 +134,7 @@ function PromptDrawer({ {description}

-
+
{children}
@@ -907,7 +907,7 @@ export const PiPromptTemplates = forwardRef< return (
    {filteredTemplates.map((template, index) => { const summary = getPiPromptTemplateSummary(template.content); diff --git a/src/components/prompts/PromptFormPanel.tsx b/src/components/prompts/PromptFormPanel.tsx index 9c31064d7..5af6affae 100644 --- a/src/components/prompts/PromptFormPanel.tsx +++ b/src/components/prompts/PromptFormPanel.tsx @@ -185,7 +185,7 @@ const PromptFormPanel: React.FC = ({
-
+