diff --git a/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx b/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx index b2e7d5320..a94385beb 100644 --- a/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx +++ b/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx @@ -84,12 +84,6 @@ function directStatusTitle(status: string | null | undefined) { } } -/** Codex 顶栏只显示项目名:取路径最后一段,拿不到时退回占位文案。 */ -function projectDisplayName(projectPath: string) { - const name = projectPath.split(/[\\/]/u).filter(Boolean).pop(); - return name ?? '未选择项目'; -} - type ProjectSupervisorViewProps = RuntimePanelProps & { activeVersionId?: string | null; chatInput: string; @@ -508,12 +502,6 @@ export function ProjectSupervisorView({ void validateModel(); }} > - {directCodex ? ( -
- {projectDisplayName(projectPath)} - 本地 -
- ) : null} span { - display: inline-flex; - align-items: center; - min-width: 0; - max-width: 60%; - padding: 1px 7px; - overflow: hidden; - border: 1px solid var(--platform-line-soft); - border-radius: 999px; - background: var(--platform-warm-bg); - color: var(--platform-text-soft); - font-size: 11px; - line-height: 1.6; - text-overflow: ellipsis; - white-space: nowrap; -} - .game-workbench-chat .project-supervisor-surface.is-direct-codex .project-supervisor-composer.is-direct-codex diff --git a/apps/ai-game-creator-shell/tests/appSurface/project-development.suite.ts b/apps/ai-game-creator-shell/tests/appSurface/project-development.suite.ts index 6e21746b7..8fa7280ca 100644 --- a/apps/ai-game-creator-shell/tests/appSurface/project-development.suite.ts +++ b/apps/ai-game-creator-shell/tests/appSurface/project-development.suite.ts @@ -5840,14 +5840,14 @@ export function registerProjectWorkbenchFoundationTests() { expect(styles).toMatch( /\.game-workbench-chat \.project-runtime-summary\s*\{[^}]*position:\s*sticky[^}]*top:\s*-10px/s, ); - // 输入盒是三行网格(信息标签 / 文本区 / 控制排)的文档流块,不再是贴在列表下边的 + // 输入盒是两行网格(文本区 / 控制排)的文档流块,不再是贴在列表下边的 // 绝对定位浮层,也不再与 82px 的发送钮列共用网格。 const composerRule = styles.match( /\.game-workbench-chat\s+\.project-supervisor-surface\.is-direct-codex\s+\.project-supervisor-composer\.is-direct-codex\s*\{([^}]*)\}/s, ); expect(composerRule?.[1]).not.toBeUndefined(); expect(composerRule?.[1]).toContain('position: relative;'); - expect(composerRule?.[1]).toContain('grid-template-rows: auto auto auto;'); + expect(composerRule?.[1]).toContain('grid-template-rows: auto auto;'); expect(composerRule?.[1]).toContain('z-index: 1;'); expect(composerRule?.[1]).toContain('padding: 8px 12px 10px;'); expect(composerRule?.[1]).toContain( @@ -6709,15 +6709,15 @@ export function registerProjectSupervisorSurfaceTests() { expect(anchor).toMatch(/flex:\s*0 1 auto/u); expect(anchor).toMatch(/min-width:\s*0/u); - // 输入盒高度变化不得推动同排操作元素:composer 是三行网格(信息标签 / 文本区 / - // 控制排),文本区从 96px 长到 140px 只把 composer 顶边抬高,控制排仍在同一行的 - // 下面一行(发送钮与模型选择钮不动)。它不再靠 `position: absolute` 底边锚定。 + // 输入盒高度变化不得推动同排操作元素:composer 是两行网格(文本区 / 控制排), + // 文本区从 96px 长到 140px 只把 composer 顶边抬高,控制排仍在同一行的下面一行 + // (发送钮与模型选择钮不动)。它不再靠 `position: absolute` 底边锚定。 const composer = styleRuleBody( styles, '\\.game-workbench-chat\\s+\\.project-supervisor-surface\\.is-direct-codex\\s+\\.project-supervisor-composer\\.is-direct-codex', ); expect(composer).toMatch(/position:\s*relative/u); - expect(composer).toMatch(/grid-template-rows:\s*auto auto auto/u); + expect(composer).toMatch(/grid-template-rows:\s*auto auto;/u); expect(styleNumber(composer, 'bottom')).toBe(0); // 控制排是单行 flex、不换行:窄屏下靠可压缩的模型选择钮(flex 0 1 auto + min-width 0) // 收窄,而不是把模型选择钮/发送钮挤到第二行。 @@ -8113,18 +8113,18 @@ export function registerProjectSupervisorSurfaceTests() { expect( within(supervisorSurface).queryByRole('button', { name: /审批配置/ }), ).toBeNull(); - // 输入盒三段式:信息标签行 / 文本区 / 控制排。项目名 + 本地两个标签,`+` 与 `@` 都在。 + // 输入盒两段式:文本区 / 控制排。原先那行「项目名 · 本地」信息标签已按需求删除, + // 输入盒内不再复述当前项目;`+` 与 `@` 仍在。 const composer = supervisorSurface.querySelector( 'form.project-supervisor-composer', ); expect(composer).not.toBeNull(); - const context = composer?.querySelector( - '.project-supervisor-composer-context', - ); expect( - within(context as HTMLElement).getByText('launcher-codex-panel-game'), - ).not.toBeNull(); - expect(within(context as HTMLElement).getByText('本地')).not.toBeNull(); + composer?.querySelector('.project-supervisor-composer-context'), + ).toBeNull(); + expect( + within(composer as HTMLElement).queryByText('launcher-codex-panel-game'), + ).toBeNull(); expect( within(composer as HTMLElement).getByRole('button', { name: '添加素材引用', diff --git a/apps/ai-game-creator-shell/tests/chatDialogFrameLayout.test.ts b/apps/ai-game-creator-shell/tests/chatDialogFrameLayout.test.ts index c21200d78..e9f8fb36c 100644 --- a/apps/ai-game-creator-shell/tests/chatDialogFrameLayout.test.ts +++ b/apps/ai-game-creator-shell/tests/chatDialogFrameLayout.test.ts @@ -134,7 +134,6 @@ const COMPOSER_INPUT_PLAIN = `${COMPOSER_PLAIN} .resource-reference-input`; const COMPOSER_EDITOR = `${COMPOSER_PLAIN} .resource-reference-input-editor`; const COMPOSER_CONTROLS = `${COMPOSER} .project-supervisor-composer-controls`; const COMPOSER_SUBMIT = `${COMPOSER_CONTROLS} .project-supervisor-submit-button`; -const COMPOSER_CONTEXT = `${COMPOSER_PLAIN} .project-supervisor-composer-context`; const INPUT_ACTIONS = `${COMPOSER} .resource-reference-input-actions`; const TOPBAR = `${CHAT} .project-supervisor-topbar`; // 策划链在会话列里额外挂了一条规划面/窄条时,列表会命中这条 `:has(...)` 规则—— @@ -186,7 +185,6 @@ function composerMaxHeight() { `${INPUT_ACTIONS} .resource-reference-input-polish`, '.resource-reference-input-polish', ); - const context = desktopDeclarations(COMPOSER_CONTEXT); const controls = desktopDeclarations(COMPOSER_CONTROLS); const submit = desktopDeclarations(COMPOSER_SUBMIT); @@ -207,9 +205,6 @@ function composerMaxHeight() { // 一旦设了,网格行高会被顶起来、编辑器的 min-height 也跟着变,算式随之作废。 expect(actions.has('height')).toBe(false); expect(actions.has('min-height')).toBe(false); - // 信息标签行只在 direct-codex 渲染,也只占一行,不设固定高度。 - expect(context.has('height')).toBe(false); - expect(context.has('min-height')).toBe(false); return { actionsRowHeight, @@ -332,7 +327,8 @@ describe('陶泥儿对话区:Codex 三段式(顶栏 / 唯一滚动区 / 文 // 编辑器、`+` / `@` 引用、模型选择、提交按钮全在这棵子树里,位置只由样式挪。 expect(formSource).toContain('ResourceReferenceInput'); - expect(formSource).toContain('project-supervisor-composer-context'); + // 输入盒里不再有「项目名 · 本地」信息标签行(按需求删除)。 + expect(formSource).not.toContain('project-supervisor-composer-context'); expect(formSource).toContain('project-supervisor-composer-controls'); expect(formSource).toContain('project-supervisor-attachment-trigger'); expect(formSource).toContain('project-supervisor-reference-trigger');