From a5a5237d193099e101d640be71a7b2a607a286f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Wed, 7 Oct 2026 17:41:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=85=A5=E5=8F=A3=E6=94=B9?= =?UTF-8?q?=E5=90=8D=EF=BC=9A=E8=81=8A=E5=A4=A9=E5=A4=B4=E3=80=8C=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E3=80=8D=E6=94=B9=E3=80=8C=E5=8F=91=E5=B8=83=E3=80=8D?= =?UTF-8?q?=EF=BC=8C=E6=8D=A2=E7=81=AB=E7=AE=AD=E5=9B=BE=E6=A0=87=E5=B9=B6?= =?UTF-8?q?=E5=8A=A0=E6=82=AC=E5=81=9C=E4=B8=8A=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - DirectProject 聊天头入口文案与 aria/title 由「导出/导出产物」改为「发布」,图标由 Package 换为 Rocket - 悬停/聚焦时火箭图标 translateY(-2px) 轻微上移,160ms ease,并在 prefers-reduced-motion 下关闭 - 同步更新聊天头入口相关注释与 directProjectChatHeader 单测 --- apps/ai-game-creator-shell/src/styles.css | 37 +++++++++++++++++++ .../chat/DirectProjectChatView.tsx | 2 +- .../DirectProjectChatHeader.tsx | 23 +++++++----- .../tests/directProjectChatHeader.test.tsx | 16 ++++---- 4 files changed, 60 insertions(+), 18 deletions(-) diff --git a/apps/ai-game-creator-shell/src/styles.css b/apps/ai-game-creator-shell/src/styles.css index af78f75d4..a1c061641 100644 --- a/apps/ai-game-creator-shell/src/styles.css +++ b/apps/ai-game-creator-shell/src/styles.css @@ -12750,6 +12750,43 @@ button.design-workspace-tree__entry:hover, cursor: not-allowed; } +/* 火箭图标悬停轻微上移:一点点「起飞」暗示,位移小到不改变胶囊高度。 */ +.game-workbench-chat + .project-chat-surface.is-direct-codex + .project-chat-publish-trigger-icon { + transition: transform 160ms ease; +} + +.game-workbench-chat + .project-chat-surface.is-direct-codex + .project-chat-publish-trigger:hover:not(:disabled) + .project-chat-publish-trigger-icon, +.game-workbench-chat + .project-chat-surface.is-direct-codex + .project-chat-publish-trigger:focus-visible + .project-chat-publish-trigger-icon { + transform: translateY(-2px); +} + +@media (prefers-reduced-motion: reduce) { + .game-workbench-chat + .project-chat-surface.is-direct-codex + .project-chat-publish-trigger-icon { + transition: none; + } + + .game-workbench-chat + .project-chat-surface.is-direct-codex + .project-chat-publish-trigger:hover:not(:disabled) + .project-chat-publish-trigger-icon, + .game-workbench-chat + .project-chat-surface.is-direct-codex + .project-chat-publish-trigger:focus-visible + .project-chat-publish-trigger-icon { + transform: none; + } +} + .game-workbench-layout--design .project-chat-topbar-status > span:last-child, .game-workbench-chat .project-chat-surface.is-direct-codex diff --git a/apps/ai-game-creator-shell/src/view/project-development/chat/DirectProjectChatView.tsx b/apps/ai-game-creator-shell/src/view/project-development/chat/DirectProjectChatView.tsx index 26fa9281d..2706208aa 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/chat/DirectProjectChatView.tsx +++ b/apps/ai-game-creator-shell/src/view/project-development/chat/DirectProjectChatView.tsx @@ -75,7 +75,7 @@ export type DirectProjectChatViewProps = { ensureConversationReadAllowed: DirectProjectConversationReadGate; /** 项目对话写权限门:只在发起回合时检查;同样必填,缺省会让未传入的调用方静默跳过授权。 */ ensureConversationWriteAllowed: DirectProjectConversationWriteGate; - /** 导出产物入口:由工作台壳持有导出面板,聊天只提供触发按钮。 */ + /** 发布入口:由工作台壳持有发布面板,聊天只提供触发按钮。 */ onRequestExport?: () => void; /** * 工作台壳入队的项目权限确认:聊天只展示并转发确认/取消, diff --git a/apps/ai-game-creator-shell/src/view/project-development/chat/components/DirectProjectChatHeader/DirectProjectChatHeader.tsx b/apps/ai-game-creator-shell/src/view/project-development/chat/components/DirectProjectChatHeader/DirectProjectChatHeader.tsx index 6d05f6f64..a2c18f81c 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/chat/components/DirectProjectChatHeader/DirectProjectChatHeader.tsx +++ b/apps/ai-game-creator-shell/src/view/project-development/chat/components/DirectProjectChatHeader/DirectProjectChatHeader.tsx @@ -1,13 +1,14 @@ -import { Package, Settings } from 'lucide-react'; +import { Rocket, Settings } from 'lucide-react'; /** * DirectProject 聊天头:运行状态与设置入口。 * * 状态文案由容器决定(忙态优先),这里只负责渲染;DirectProject 不再把工作台壳的 - * 全局状态文案搬进来。发布入口归导出产物面板的陶泥儿 tab,不在聊天头。 + * 全局状态文案搬进来。聊天头这颗是**打开发布面板**的入口(面板里再选目标 tab),真正的平台 + * 发布动作在陶泥儿 tab 里。 * - * 导出入口在回合在途(`busy`)时禁用:导出会读写项目文件,和 DirectProject 回合的写入并发 - * 会互相踩;设置入口不受影响。 + * 发布入口在回合在途(`busy`)时禁用:发布面板会读写项目文件,和 DirectProject 回合的写入并发 + * 会互相踩;设置入口不受影响。悬停时火箭图标轻微上移(见 `.project-chat-publish-trigger-icon`)。 */ export function DirectProjectChatHeader({ busy, @@ -18,7 +19,7 @@ export function DirectProjectChatHeader({ busy: boolean; statusText: string; onOpenSettings: () => void; - /** 没有项目时不传;传了才渲染导出产物入口。 */ + /** 没有项目时不传;传了才渲染发布入口。 */ onRequestExport?: () => void; }) { return ( @@ -35,13 +36,17 @@ export function DirectProjectChatHeader({ ) : null}