From 802114e14ba26a207e8f9c4cc470fd8148fa2761 Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Tue, 15 Sep 2026 19:35:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=B9=E8=AF=9D=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E8=BF=87=E7=A8=8B=E5=8D=A1=E4=B8=8E=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E5=9D=97=E7=9A=84=E5=B1=95=E7=A4=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ProjectSupervisorView:把「任务执行中 / 正在思考中」过程卡从消息列表内部移到列表外,紧贴输入盒上方(固定在输入框上面,不随消息滚走) - styles.css:过程卡离开列表后补回左右 16px 内缩,与消息内容、输入盒对齐(并补回底部间距) - ToolCallGroup:未结束时不再显示「结束于 HH:mm」——只有全部工具落定后才显示块尾那行 - ToolCallGroup:进行中改为「现在 - 最早开始时间」并每秒重算,用时数字会实时跳动(此前只在新事件到达时变) - ToolCallGroup:只有正在跑的回合才显示「进行中 / 执行中」;已结束回合里残留的 running 快照不再让用户看到永远停在「执行中」 - ProjectSupervisorView:给实时回合的折叠块传 active,历史回合的块不传(默认按已结束渲染) - ComposerControls:推理档从原生 select 换成与模型选择器同一套观感的浮层(复用 conversation-model-* 触发钮与菜单样式,带选中勾选),不再出现操作系统原生下拉 --- .../project-workspace/ComposerControls.tsx | 80 ++++++++++--- .../ProjectSupervisorView.tsx | 113 +++++++++--------- .../project-workspace/ToolCallGroup.tsx | 70 +++++++++-- apps/ai-game-creator-shell/src/styles.css | 10 ++ 4 files changed, 186 insertions(+), 87 deletions(-) diff --git a/apps/ai-game-creator-shell/src/features/project-workspace/ComposerControls.tsx b/apps/ai-game-creator-shell/src/features/project-workspace/ComposerControls.tsx index ddf8bce7b..0aa574dbc 100644 --- a/apps/ai-game-creator-shell/src/features/project-workspace/ComposerControls.tsx +++ b/apps/ai-game-creator-shell/src/features/project-workspace/ComposerControls.tsx @@ -5,7 +5,17 @@ * 这些组件只承载表现与交互;回合附件由 `App.tsx` 上传并落进 `DirectCodexTurnAttachment`, * 队列由 `chatComposerQueue.ts` 的纯函数维护。 */ -import { FileUp, Images, Mic, MicOff, Plus, Square, X } from 'lucide-react'; +import { + Check, + ChevronDown, + FileUp, + Images, + Mic, + MicOff, + Plus, + Square, + X, +} from 'lucide-react'; import type { RefObject } from 'react'; import { useEffect, useRef, useState } from 'react'; @@ -335,6 +345,7 @@ export function ComposerReasoningEffortSelect({ }: { disabled: boolean; }) { + const [open, setOpen] = useState(false); const [effort, setEffort] = useState( DEFAULT_COMPOSER_REASONING_EFFORT, ); @@ -414,23 +425,56 @@ export function ComposerReasoningEffortSelect({ return ( - + {/* 与模型选择器同一套观感:复用 `conversation-model-*` 的触发钮与浮层样式, + 不再用原生 `