From 82a0a02c56921f54301642828fba9cfe91fd51d0 Mon Sep 17 00:00:00 2001 From: AutumnNazi <104422820+AutumnNazi@users.noreply.github.com> Date: Fri, 24 Jul 2026 20:23:46 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=90=9B=20fix(tabs/query-editor):=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A0=87=E7=AD=BE=E5=9C=86=E8=A7=92=E5=B9=B6?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=90=9C=E7=B4=A2=E6=8F=90=E7=A4=BA=E9=81=AE?= =?UTF-8?q?=E6=8C=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 V2 工作区标签统一为四角圆角,并让激活色沿圆角自然显示 - 放开 Monaco 查找组件可见时的浮层裁剪,不改变按钮位置和顶部间距 - 补充标签圆角与查找提示显示的回归测试 --- .../QueryEditor.external-sql-save.test.tsx | 10 +++++++--- .../src/components/TabManager.adaptive-width.test.ts | 12 ++++++++++++ frontend/src/styles/v2-theme-workbench.css | 4 ++++ frontend/src/v2-theme.css | 9 +++++++++ 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/QueryEditor.external-sql-save.test.tsx b/frontend/src/components/QueryEditor.external-sql-save.test.tsx index 201e1def..018bd074 100644 --- a/frontend/src/components/QueryEditor.external-sql-save.test.tsx +++ b/frontend/src/components/QueryEditor.external-sql-save.test.tsx @@ -11644,13 +11644,17 @@ describe('QueryEditor external SQL save', () => { expect(css).toContain('body[data-ui-version="v2"] .gn-v2-query-results .query-result-tab-text {'); }); - it('does not reserve vertical space for the Monaco find widget in the v2 query editor', () => { + it('shows Monaco find button hovers without moving the find widget in the v2 query editor', () => { const source = readFileSync(new URL('./QueryEditor.tsx', import.meta.url), 'utf8'); const css = readV2ThemeCss(); + const findWidgetOverflowRule = css.match( + /body\[data-ui-version="v2"\] \.gn-v2-query-monaco-stage:has\(\.monaco-editor \.find-widget\.visible:not\(\.hiddenEditor\)\)\s*\{(?[^}]*)\}/s, + )?.groups?.body ?? ''; expect(source).not.toContain('addExtraSpaceOnTop: true'); - expect(css).not.toContain('body[data-ui-version="v2"] .gn-v2-query-monaco-stage:has(.monaco-editor .find-widget.visible:not(.hiddenEditor)) {'); - expect(css).not.toContain('padding-top: 24px;'); + expect(findWidgetOverflowRule).toContain('overflow: visible;'); + expect(findWidgetOverflowRule).not.toContain('padding-top'); + expect(findWidgetOverflowRule).not.toContain('top:'); expect(css).not.toContain('body[data-ui-version="v2"] .gn-v2-query-monaco-stage .monaco-editor .find-widget {'); }); diff --git a/frontend/src/components/TabManager.adaptive-width.test.ts b/frontend/src/components/TabManager.adaptive-width.test.ts index 981ae392..0995326d 100644 --- a/frontend/src/components/TabManager.adaptive-width.test.ts +++ b/frontend/src/components/TabManager.adaptive-width.test.ts @@ -51,4 +51,16 @@ describe('v2 workbench adaptive tab width', () => { /\.gn-v2-main-tabs \.ant-tabs-tab \{[^}]*width: 260px;[^}]*min-width: 260px;[^}]*max-width: 260px;/s, ); }); + + it('rounds all four corners of every v2 workbench tab', () => { + expect(themeSource).toMatch( + /\.gn-v2-main-tabs \.ant-tabs-tab \{[^}]*border-radius: 8px !important;/s, + ); + expect(themeSource).toMatch( + /\.gn-v2-main-tabs \.ant-tabs-tab\.ant-tabs-tab-active \{[^}]*box-shadow: inset 0 2px 0 var\(--gn-accent\) !important;/s, + ); + expect(themeSource).toMatch( + /\.gn-v2-main-tabs \.ant-tabs-tab\.ant-tabs-tab-active::after \{[^}]*display: none;/s, + ); + }); }); diff --git a/frontend/src/styles/v2-theme-workbench.css b/frontend/src/styles/v2-theme-workbench.css index f27fe310..65314d97 100644 --- a/frontend/src/styles/v2-theme-workbench.css +++ b/frontend/src/styles/v2-theme-workbench.css @@ -347,6 +347,10 @@ body[data-ui-version="v2"] .gn-v2-query-monaco-stage { background: var(--gn-bg-panel); } +body[data-ui-version="v2"] .gn-v2-query-monaco-stage:has(.monaco-editor .find-widget.visible:not(.hiddenEditor)) { + overflow: visible; +} + body[data-ui-version="v2"] .gn-v2-query-monaco-shell { min-height: 0; overflow: visible; diff --git a/frontend/src/v2-theme.css b/frontend/src/v2-theme.css index a279b689..d0cb9058 100644 --- a/frontend/src/v2-theme.css +++ b/frontend/src/v2-theme.css @@ -3729,6 +3729,15 @@ body[data-ui-version="v2"] .gn-v2-main-tabs .ant-tabs-tab { height: 36px; margin: 0 !important; padding: 0 !important; + border-radius: 8px !important; +} + +body[data-ui-version="v2"] .gn-v2-main-tabs .ant-tabs-tab.ant-tabs-tab-active { + box-shadow: inset 0 2px 0 var(--gn-accent) !important; +} + +body[data-ui-version="v2"] .gn-v2-main-tabs .ant-tabs-tab.ant-tabs-tab-active::after { + display: none; } body[data-ui-version="v2"] .gn-v2-main-tabs-double .ant-tabs-tab { From a6c83d916455753c8b2269d9b816d1ec26f03c6f Mon Sep 17 00:00:00 2001 From: AutumnNazi <104422820+AutumnNazi@users.noreply.github.com> Date: Fri, 24 Jul 2026 20:52:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=90=9B=20fix(about):=20=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E5=85=B3=E4=BA=8E=E9=A1=B5=E9=9D=9E=E5=BF=85=E8=A6=81?= =?UTF-8?q?=E6=BB=9A=E5=8A=A8=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除关于页冗余底部留白,内容完整时不再触发滚动 - 保留内容溢出时的滚动能力并补充布局回归断言 --- frontend/src/App.settings-center.test.ts | 2 ++ frontend/src/App.tsx | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/src/App.settings-center.test.ts b/frontend/src/App.settings-center.test.ts index 54235b59..99b127c6 100644 --- a/frontend/src/App.settings-center.test.ts +++ b/frontend/src/App.settings-center.test.ts @@ -343,6 +343,8 @@ describe('settings center layout', () => { expect(appSource).toContain("border: 'none'"); expect(appSource).toContain("background: 'transparent'"); expect(aboutPaneSource).toContain('className="gonavi-about-pane"'); + expect(aboutPaneSource).toContain("style={{ display: 'flex', flexDirection: 'column' }}"); + expect(aboutPaneSource).not.toContain("padding: '0 0 18px'"); expect(aboutPaneSource).toContain('aria-labelledby="gonavi-about-version-heading"'); expect(aboutPaneSource).toContain('aria-labelledby="gonavi-about-project-heading"'); expect(aboutPaneSource).toContain("gridTemplateColumns: 'minmax(0, 1.15fr) minmax(260px, 0.85fr)'"); diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 133d02ae..ec5b4795 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -5333,7 +5333,7 @@ function App() { ]; return ( -
+