diff --git a/apps/ai-game-creator-shell/src/features/resource-canvas/ResourceCanvasAssetGenerationTasksPanelView.tsx b/apps/ai-game-creator-shell/src/features/resource-canvas/ResourceCanvasAssetGenerationTasksPanelView.tsx index bbd71f3a6..539131016 100644 --- a/apps/ai-game-creator-shell/src/features/resource-canvas/ResourceCanvasAssetGenerationTasksPanelView.tsx +++ b/apps/ai-game-creator-shell/src/features/resource-canvas/ResourceCanvasAssetGenerationTasksPanelView.tsx @@ -230,14 +230,15 @@ function resourceCanvasGenerationTaskRowNode( * 画布上的「生成任务」侧栏(常驻、可折叠、非模态)。 * * 形态对齐网页端美术画布的任务侧栏:**画布右上角**的一枚独立开关 + 展开时贴着它的浮动面板 - * (开关始终在,收起态只剩开关),面板是一列任务(画布照常可交互)。它**不是**模态浮层: + * ——收起态只有那一枚开关,展开态只有面板(开关让位,不并排;面板自己带 × 收起), + * 面板是一列任务(画布照常可交互)。它**不是**模态浮层: * 不铺全屏遮罩、不做焦点陷阱、不进 `isResourceCanvasFloatingPanelOpen` / * `resourceCanvasHostGenerationPanelOpen` 的遮挡判据;折叠也不影响任务推进——任务活在账本与 * 本地队列里,与这个视图的生命周期无关。 * * 位置取舍:右上角是画布上唯一「既不被对话面板占、也不和底部工具栏 / 右下角缩放 Dock 打架」的 * 稳定空位,与美术画布同一处;锚点是**覆盖式**而不是把画布挤窄(画布的视口数学与资源卡排布都 - * 不被 reflow 动到,收起即完全让出画布,只留那一枚开关)。宽度 300px 落在 280–340px 区间内。 + * 不被 reflow 动到,收起即只留那一枚开关)。宽度 300px 落在 280–340px 区间内。 * * 分栏、条数、封顶、折叠语义都在这里;颜色与排版在同目录的 CSS 文件里,取值全部走 * `--platform-*` 设计 token。 @@ -344,10 +345,13 @@ export function ResourceCanvasAssetGenerationTasksPanelView({ }, [open]); /** - * 右上角开关:收起态只剩它(画布完全让出),展开态它是「已经开着的那一枚」。 + * 右上角开关只在**完全收起**时渲染:展开态把开关藏起来(验收口径「开关与面板不该并排, + * 详情出来以后入口就该隐藏」——收起改走面板自己的 × 与点外部),收起动画期间也不画, + * 否则那 160ms 里两者又会同框。 * * 在途计数只在这里算一次,开关与面板头部共用同一个值,两处不会各算一套。 */ + const showToggle = !open && phase === 'idle'; const toggle = (