From 7148ff9eafeb5ea57110715e3c9ca2d202352e77 Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Mon, 21 Sep 2026 04:33:26 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AA=8C=E6=94=B6=E4=BF=AE=E6=AD=A3=EF=BC=9A?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E9=94=9A=E7=82=B9=E6=94=B9=E6=8C=82=E7=94=BB?= =?UTF-8?q?=E5=B8=83=E9=82=A3=E4=B8=80=E6=A0=BC=EF=BC=8C=E5=B1=95=E5=BC=80?= =?UTF-8?q?=E5=90=8E=E5=BC=80=E5=85=B3=E8=AE=A9=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重叠:右上角锚点不再用 position: absolute + 写死的 top(工具条是 stage 第一行、高度随按钮换行变化),改为 stage 网格里与工作面同一个单元格的条目:grid-row 按 placement 分档 + grid-column 1 + justify-self end + align-self start + margin;同格的三处容器也显式钉住第 1 列,避免画布被自动列放置挤进隐式第二列。 - 并排:开关只在完全收起时渲染(收起动画期间也不画),展开态画布右上角只留面板,收起走面板头部 × 或点画布外部。 - 测试:面板用例新增「展开时开关让位」、计数用例拆成收起查开关 / 展开查面板;样式用例改判网格条目坐标与窄屏 justify-self: stretch;dismiss 用例改走面板 × 收起、收起后开关回来能再打开。 - 文档:PRD 3.10 与更新时间、decision-log 新增 2026-09-21 验收修正条目、待办文档补登记该修正。 --- ...rceCanvasAssetGenerationTasksPanelView.tsx | 12 +++-- ...ourceCanvasAssetGenerationTasksSidebar.css | 46 +++++++++++-------- apps/ai-game-creator-shell/src/styles.css | 9 +++- ...ceCanvasAssetGenerationTasksPanel.test.tsx | 21 ++++++--- ...asAssetGenerationTasksSidebarStyle.test.ts | 38 +++++++++------ ...nvasGenerationTasksSidebarDismiss.test.tsx | 25 ++++++---- ...AI游戏创作】项目开发工作台PRD-2026-07-20.md | 4 +- .../shared-memory/decision-log.md | 9 ++++ .../【待办】画布验收后续修复-2026-09-18.md | 3 +- 9 files changed, 110 insertions(+), 57 deletions(-) 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 = (