From 92db1e70658ebdca8538d4d2e1de4ce89f616046 Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Mon, 14 Sep 2026 12:32:54 +0800 Subject: [PATCH 01/67] =?UTF-8?q?=E5=8F=B3=E4=BE=A7=E5=AF=B9=E8=AF=9D?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E6=94=B9=E4=B8=BA=20Codex=20=E6=A1=8C?= =?UTF-8?q?=E9=9D=A2=E5=AE=A2=E6=88=B7=E7=AB=AF=E7=95=8C=E9=9D=A2=E8=AF=AD?= =?UTF-8?q?=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ProjectSupervisorView:direct-codex 面板改成三段式(顶部极简条 / 唯一滚动区消息列表 / 文档流输入盒) - ProjectSupervisorView:顶部只留状态点 + 状态文案(aria-live=polite)+ 设置齿轮,移除头像、标题、副标题、审批按钮与泥点钱包槽 - ProjectSupervisorView:新增 direct-codex 空态(线稿图标 + 主标题「你想让陶泥儿做什么游戏?」+ 短指令副标题),整体在消息区垂直水平居中 - ProjectSupervisorView:输入盒改成三行结构(`项目名` · `本地` 信息标签 / ResourceReferenceInput 文本区 / 控制排) - ProjectSupervisorView:控制排左为 `+` 附件钮与 `@` 引用钮(都复用 composerRef.openPicker),右为模型下拉与圆形主色发送钮 - ProjectSupervisorView:新增 walletEntry 可选属性,透传到设置浮层的「泥点」行 - ProjectSupervisorSettingsDialog(新增):设置齿轮打开的独立浮层(role=dialog + aria-modal + Esc 关闭 + 点遮罩关闭),承载运行配置入口、操作权限入口与泥点 - approvalMode(新增):把「严格 / 风险 / 无」审批模式选项与文案抽成可复用模块 - ApprovalModeDialog(新增):审批模式对话框改成可复用组件,index.tsx 改为复用它 - project-development/index.tsx:`!uiEditorRoute` 的 game-workbench-chat 头部精简掉标题/审批按钮/钱包槽,并用 cloneElement 把 walletEntry 透传给 supervisor 元素 - project-development/index.tsx:`planningStartMode` 分支保持原样 - ConversationModelSelect:触发按钮只显示已选模型 displayName,未加载完时显示「模型」占位(菜单内加载提示保留) - styles.css:消息列表去掉绝对定位与 196px/256px 底边留白,改成唯一滚动区 - styles.css:输入盒去掉绝对定位,改成文档流三行网格,成为唯一有边框的容器(1px 边框、14px 圆角) - styles.css:助手消息去掉整块底色,用户消息保留右对齐浅底气泡 + 主色描边 - styles.css:新增顶栏、空态、设置浮层与暖色执行过程卡的样式区块,颜色全部取自现有 platform 变量 - styles.css:窄屏(760px/1000px 断点)下输入盒留在文档流并保留四周边距 - chatDialogFrameLayout.test.ts:把「输入区浮在消息列表之上」的旧契约改写成「输入盒在消息列表下方、文档流、列表无浮层留白」的新契约 - project-development.suite.ts:同步更新表单布局、提交按钮尺寸与钱包槽的断言,并新增空态 + 设置浮层用例 --- .../ConversationModelSelect.tsx | 4 +- .../ProjectSupervisorSettingsDialog.tsx | 116 ++++ .../ProjectSupervisorView.tsx | 120 +++- apps/ai-game-creator-shell/src/styles.css | 542 +++++++++++++++--- .../ApprovalModeDialog.tsx | 94 +++ .../view/project-development/approvalMode.ts | 44 ++ .../src/view/project-development/index.tsx | 152 +---- .../appSurface/project-development.suite.ts | 307 +++++++--- .../tests/chatDialogFrameLayout.test.ts | 263 +++++---- 9 files changed, 1252 insertions(+), 390 deletions(-) create mode 100644 apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorSettingsDialog.tsx create mode 100644 apps/ai-game-creator-shell/src/view/project-development/ApprovalModeDialog.tsx create mode 100644 apps/ai-game-creator-shell/src/view/project-development/approvalMode.ts diff --git a/apps/ai-game-creator-shell/src/features/project-workspace/ConversationModelSelect.tsx b/apps/ai-game-creator-shell/src/features/project-workspace/ConversationModelSelect.tsx index 1bc4c9ea4..fb78371e2 100644 --- a/apps/ai-game-creator-shell/src/features/project-workspace/ConversationModelSelect.tsx +++ b/apps/ai-game-creator-shell/src/features/project-workspace/ConversationModelSelect.tsx @@ -331,8 +331,8 @@ export function ConversationModelSelect({ aria-hidden="true" /> - {models.find((model) => model.id === selected)?.displayName ?? - (busy ? '正在读取模型' : '选择模型')} + {/* 控件位只显示已选模型名;目录还没读完时用「模型」占位(加载提示留在菜单里)。 */} + {models.find((model) => model.id === selected)?.displayName ?? '模型'}