diff --git a/apps/ai-game-creator-shell/src/styles.css b/apps/ai-game-creator-shell/src/styles.css index 3d52b4139..d08a30305 100644 --- a/apps/ai-game-creator-shell/src/styles.css +++ b/apps/ai-game-creator-shell/src/styles.css @@ -11298,7 +11298,18 @@ button.design-workspace-tree__entry:hover, color: var(--platform-text-soft); } -.game-workbench-layout--design .project-chat-composer-controls, +/* 策划控件排:保持改动前的几何(不改策划面的间距与表现)。 */ +.game-workbench-layout--design .project-chat-composer-controls { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + min-width: 0; + padding-top: 2px; + pointer-events: auto; +} + +/* Direct 控件排:三层布局下允许换行,两轴间距分开写(行 6 / 列 8)。 */ .game-workbench-chat .project-chat-surface.is-direct-codex .project-chat-composer.is-direct-codex @@ -11312,8 +11323,15 @@ button.design-workspace-tree__entry:hover, pointer-events: auto; } +/* 策划控件排两侧分组:同样保持改动前的几何。 */ .game-workbench-layout--design .project-chat-composer-controls-left, -.game-workbench-layout--design .project-chat-composer-controls-right, +.game-workbench-layout--design .project-chat-composer-controls-right { + display: flex; + align-items: center; + gap: 8px; + min-width: 0; +} + .game-workbench-chat .project-chat-surface.is-direct-codex .project-chat-composer.is-direct-codex @@ -11330,8 +11348,7 @@ button.design-workspace-tree__entry:hover, min-width: 0; } -/* 左侧动作组(`@` 引用 / `+` 附件)允许换行:窄面板下它和右侧控件组各占一行。 */ -.game-workbench-layout--design .project-chat-composer-controls-left, +/* Direct 左侧动作组(`@` 引用 / `+` 附件)允许换行:窄面板下它和右侧控件组各占一行。 */ .game-workbench-chat .project-chat-surface.is-direct-codex .project-chat-composer.is-direct-codex @@ -11383,8 +11400,19 @@ button.design-workspace-tree__entry:hover, position: relative !important; right: auto !important; bottom: auto !important; - /* 上限与触发钮同档(160px):模型名、错误提示都在这一档里用省略号 / 折行收住, - 「@ + · 推理档 · 模型 · 语音 · 发送」在 400px 以上的面板里保持一行。 */ + max-width: 180px; +} + +/* Direct 侧把模型控件收到 160px(与触发钮同档):模型名、错误提示都在这一档里用 + 省略号 / 折行收住,「@ + · 推理档 · 模型 · 语音 · 发送」在 400px 以上的面板里 + 保持一行。多带一层 `.project-chat-composer-controls-right`(真实父元素)是为了 + 严格高于上面那条共享规则的特异性,不依赖源码顺序;策划面仍走上一条的 180px。 */ +.game-workbench-chat + .project-chat-surface.is-direct-codex + .project-chat-composer.is-direct-codex + .project-chat-composer-controls + .project-chat-composer-controls-right + .conversation-model-select { max-width: 160px; } @@ -11745,23 +11773,33 @@ button.design-workspace-tree__entry:hover, font-variant-numeric: tabular-nums; } +/* 提示段落的高度上限与折行:策划面保持改动前的 96px 一档,Direct 侧一并复用 + (原来它没有这条,长提示会把输入盒顶高)。 */ .game-workbench-layout--design .project-chat-composer-notice, .game-workbench-chat .project-chat-surface.is-direct-codex .project-chat-composer.is-direct-codex .project-chat-composer-notice { - /* 两个宿主的提示区同一档:超过就自己滚,不把输入盒顶高(直接子元素由下面的 - 共享规则清零 margin,间距交给各自 composer 的 gap)。 */ max-height: 96px; overflow: auto; overflow-wrap: anywhere; } -.game-workbench-layout--design .project-chat-composer-notice, +/* 策划面:提示段落自带 4px 上间距(改动前的值,不动)。 */ +.game-workbench-layout--design .project-chat-composer-notice { + margin: 4px 0 0; + color: var(--platform-text-soft); + font-size: 12px; +} + +/* Direct 侧:提示段落的上间距交给 composer 的 `gap: 8px`,段落自身归零。 + 多带一层 `.project-chat-conversation`(DirectProjectChatView 里的真实祖先)是为了 + 严格高于上面那条共享规则的特异性,不依赖源码顺序。 */ .game-workbench-chat .project-chat-surface.is-direct-codex + .project-chat-conversation .project-chat-composer.is-direct-codex - .project-chat-composer-notice { + > .project-chat-composer-notice { margin: 0; color: var(--platform-text-soft); font-size: 12px; @@ -13113,10 +13151,12 @@ details.design-agent-reasoning[open] /* ============================================================ 输入区工具栏与状态提示(2026-10 · issue #600) ============================================================ - 三组规则,输入区三层布局的收尾。这里只补前文没有的属性:模型钮的 160px 上限 / - 64px 下限、提示区 96px 上限、队列 chip 与提示段落的 `margin` 都写回前文各自那条 - 规则(`.conversation-model-select` / `.conversation-model-trigger` / - `.project-chat-composer-notice` / `.project-chat-composer-queue`),不在这里重复声明。 + **只作用于工作台 Direct 输入区**(`.game-workbench-chat .project-chat-surface + .is-direct-codex .project-chat-composer.is-direct-codex`)。策划输入区 + (`PlanningChatView` / `.game-workbench-layout--design`)不在本 issue 范围内, + 本次一行都不动:它的控件排几何、下拉宽度、提示段落 margin 全部保持改动前的值。 + 这一组只补前文没有的属性;模型钮的 160px 上限 / 64px 下限、提示段落 margin 均 + 写在前文各自那条规则里(Direct 侧用多一层真实祖先提高特异性,不依赖源码顺序)。 ① 工具栏里的下拉控件(推理档 / 模型)要能收缩、模型名要能省略,宽度不够时靠换行 让位,而不是把整组推到输入盒外面去和左边的 `@` `+` 重叠; ② 模型控件自己的状态提示(`ConversationModelSelect` 的 `[role='alert']` / @@ -13126,10 +13166,7 @@ details.design-agent-reasoning[open] `.project-chat-composer-controls`)取胜,不依赖源码顺序; ③ 状态提示区(队列 chip、提示段落)与输入盒、工具栏共用同一档行间距。 */ -/* ① 下拉控件:可收缩 + 组内换行;模型名超长走省略号(上限已写回前文那条规则)。 */ -.game-workbench-layout--design - .project-chat-composer-controls - .conversation-model-select, +/* ① 下拉控件:可收缩 + 组内换行;模型名超长走省略号。 */ .game-workbench-chat .project-chat-surface.is-direct-codex .project-chat-composer.is-direct-codex @@ -13139,9 +13176,6 @@ details.design-agent-reasoning[open] justify-content: flex-end; } -.game-workbench-layout--design - .project-chat-composer-controls - .conversation-model-trigger-label, .game-workbench-chat .project-chat-surface.is-direct-codex .project-chat-composer.is-direct-codex @@ -13152,34 +13186,18 @@ details.design-agent-reasoning[open] text-overflow: ellipsis; } -/* 推理档的读写失败提示同样回到控件排内,整行右对齐。 */ -.game-workbench-layout--design - .project-chat-composer-controls - .project-chat-reasoning-effort, -.game-workbench-chat - .project-chat-surface.is-direct-codex - .project-chat-composer.is-direct-codex - .project-chat-composer-controls - .project-chat-reasoning-effort { - flex-wrap: wrap; - justify-content: flex-end; -} - -/* 档位文案很短(默认 / 高 / 中 / 低),不参与收缩——收缩会把它截成半个字。 - 要让位时由模型钮(名字走省略号)承担。(策划面已经在 `.game-workbench-layout--design - .project-chat-reasoning-effort` 那条里写了 `flex: 0 0 auto`,这里只补 Direct 侧。) */ +/* 推理档:档位文案很短(默认 / 高 / 中 / 低),不参与收缩——收缩会把它截成半个字, + 要让位时由模型钮(名字走省略号)承担;读写失败提示整行右对齐。 */ .game-workbench-chat .project-chat-surface.is-direct-codex .project-chat-composer.is-direct-codex .project-chat-composer-controls .project-chat-reasoning-effort { flex: 0 0 auto; + flex-wrap: wrap; + justify-content: flex-end; } -.game-workbench-layout--design - .project-chat-composer-controls - .project-chat-reasoning-effort - .project-chat-composer-notice, .game-workbench-chat .project-chat-surface.is-direct-codex .project-chat-composer.is-direct-codex @@ -13192,14 +13210,6 @@ details.design-agent-reasoning[open] } /* ② 模型控件的错误 / 状态提示:从绝对定位浮层改为占一行,跟随控件换行。 */ -.game-workbench-layout--design - .project-chat-composer-controls - .conversation-model-select - [role='alert'], -.game-workbench-layout--design - .project-chat-composer-controls - .conversation-model-select - [role='status'], .game-workbench-chat .project-chat-surface.is-direct-codex .project-chat-composer.is-direct-codex