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 (
-
+
{
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 fe865c0e..f9dae85b 100644
--- a/frontend/src/v2-theme.css
+++ b/frontend/src/v2-theme.css
@@ -3710,6 +3710,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 {