策划面零语义变化:#600 的改动收口到 Direct 输入区
Project CI / Backend tests (pull_request) Failing after 40s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 3m36s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 4m26s
Project CI / Repository checks (pull_request) Failing after 18s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 5m33s
Project CI / Frontend tests (pull_request) Successful in 2m25s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m5s
Project CI / Native shell tests (pull_request) Successful in 6m18s

- 控件排几何按宿主拆成两条规则:策划面恢复改动前的 `gap: 8px` / 不换行 / `padding-top: 2px`,Direct 侧保留 `flex-wrap: wrap` + `gap: 6px 8px`
- 控件排两侧分组同样拆开:策划面恢复 `gap: 8px`,Direct 侧保留 `gap: 6px 8px`;左侧动作组换行只作用于 Direct
- 模型选择器上限:共享规则恢复 180px,Direct 侧新增一层真实祖先(`.project-chat-composer-controls-right`)把上限收到 160px,不依赖源码顺序
- 提示段落:策划面恢复 `margin: 4px 0 0`(改动前的值),Direct 侧新增 `margin: 0`(多带 `.project-chat-conversation` 祖先提高特异性);96px 上限与 `overflow-wrap: anywhere` 只新增选择器,不改策划面的值
- 文件末尾区块的选择器全部收窄为 Direct 链,并注明策划输入区不在本 issue 范围
- 校验:临时审计脚本用层叠求值逐元素比对策划输入区子树(1440/1024/390px),origin/master 零差异、对改判前提交 ac2df9f12 报 62 处差异
This commit is contained in:
2026-10-04 00:27:02 +08:00
parent ac2df9f123
commit ef10d9527b
+59 -49
View File
@@ -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