From a5ff7800991792af6cf9496978773bedc0e68945 Mon Sep 17 00:00:00 2001 From: YiJie Date: Wed, 29 Jul 2026 00:43:02 +0800 Subject: [PATCH] fix(client): normalize compact composer edge spacing --- .../__tests__/composer-landing.spec.tsx | 25 ++++++++++++++++++ .../ComposerStarterLayout.scss | 6 ----- apps/client/src/routes/ChatRoute.scss | 2 +- changelog/0.1.0-beta.10/client.md | 3 +++ .../compact-composer-padding.jpg | Bin 0 -> 29821 bytes 5 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 changelog/0.1.0-beta.10/compact-composer-padding.jpg diff --git a/apps/client/__tests__/composer-landing.spec.tsx b/apps/client/__tests__/composer-landing.spec.tsx index 54cf7951..78f2c487 100644 --- a/apps/client/__tests__/composer-landing.spec.tsx +++ b/apps/client/__tests__/composer-landing.spec.tsx @@ -1,3 +1,5 @@ +import { readFileSync } from 'node:fs' + import { renderToStaticMarkup } from 'react-dom/server' import { describe, expect, it } from 'vitest' @@ -5,6 +7,29 @@ import { ComposerLanding } from '#~/components/composer-landing/ComposerLanding' import { ComposerStarterGuide } from '#~/components/composer-landing/ComposerStarterGuide' describe('composer landing', () => { + it('keeps starter layout horizontal spacing owned by the shared 10px surface padding', () => { + const layoutStyles = readFileSync( + new URL( + '../src/components/composer-landing/ComposerStarterLayout.scss', + import.meta.url + ), + 'utf8' + ) + const routeStyles = readFileSync( + new URL('../src/routes/ChatRoute.scss', import.meta.url), + 'utf8' + ) + + expect(layoutStyles).toContain('--chat-surface-padding: 10px') + expect(layoutStyles).not.toContain('--chat-surface-padding: 6px') + expect(routeStyles).toContain( + 'padding: calc(var(--chat-header-overlay-content-offset) + 12px) 0 16px' + ) + expect(routeStyles).not.toContain( + 'padding: calc(var(--chat-header-overlay-content-offset) + 12px) 24px 16px' + ) + }) + it('keeps starter content inside one full-height landing region', () => { const html = renderToStaticMarkup( diff --git a/apps/client/src/components/composer-landing/ComposerStarterLayout.scss b/apps/client/src/components/composer-landing/ComposerStarterLayout.scss index 644e6001..ae6aa436 100644 --- a/apps/client/src/components/composer-landing/ComposerStarterLayout.scss +++ b/apps/client/src/components/composer-landing/ComposerStarterLayout.scss @@ -105,9 +105,3 @@ margin-top: auto; } } - -@media (max-width: 600px) { - .composer-starter-layout { - --chat-surface-padding: 6px; - } -} diff --git a/apps/client/src/routes/ChatRoute.scss b/apps/client/src/routes/ChatRoute.scss index 57763529..75d444ee 100644 --- a/apps/client/src/routes/ChatRoute.scss +++ b/apps/client/src/routes/ChatRoute.scss @@ -47,7 +47,7 @@ align-items: center; justify-content: center; overflow: auto; - padding: calc(var(--chat-header-overlay-content-offset) + 12px) 24px 16px; + padding: calc(var(--chat-header-overlay-content-offset) + 12px) 0 16px; } } } diff --git a/changelog/0.1.0-beta.10/client.md b/changelog/0.1.0-beta.10/client.md index 35262b11..abac64df 100644 --- a/changelog/0.1.0-beta.10/client.md +++ b/changelog/0.1.0-beta.10/client.md @@ -5,3 +5,6 @@ - Refine Launcher menu surfaces with opaque theme-owned root and language submenus, keep icon-label spacing consistent at 6px, and show the platform settings shortcut alongside the settings command. - Remove the duplicate plugin configuration entry from the settings sidebar now that plugin management lives in the plugin marketplace, and safely redirect obsolete plugin settings links to General. - Keep the new-session environment menu coherent when only the built-in default is available, and preserve a visible, keyboard-accessible control for restoring a collapsed status bar. +- Normalize new-session composer edge spacing to the shared 10px inset across compact and medium desktop windows while keeping the wide 800px layout centered. + +![New-session composer with consistent edge spacing](./compact-composer-padding.jpg) diff --git a/changelog/0.1.0-beta.10/compact-composer-padding.jpg b/changelog/0.1.0-beta.10/compact-composer-padding.jpg new file mode 100644 index 0000000000000000000000000000000000000000..17fea393b7ceec795090bb12baa4fca33b130898 GIT binary patch literal 29821 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 literal 0 HcmV?d00001