修复客户端首页提交反馈与文档契约
整理首页 lucide 图标导入顺序 恢复空输入提交的创作类型提示 统一目录 modifiedAt 的 PRD 与实施计划口径 补充首页空提交回归断言
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
ArrowUp,
|
||||
FileText,
|
||||
FolderKanban,
|
||||
FolderOpen,
|
||||
@@ -6,7 +7,6 @@ import {
|
||||
Image,
|
||||
type LucideIcon,
|
||||
Sparkles,
|
||||
ArrowUp,
|
||||
} from 'lucide-react';
|
||||
import type { FormEvent } from 'react';
|
||||
import { useRef, useState } from 'react';
|
||||
@@ -33,6 +33,7 @@ type HomeCreationTypeItem = {
|
||||
creationType: HomeCreationType;
|
||||
label: string;
|
||||
placeholder: string;
|
||||
emptyPrompt: string;
|
||||
icon: LucideIcon;
|
||||
};
|
||||
|
||||
@@ -41,18 +42,21 @@ const HOME_CREATION_TYPE_ITEMS: readonly HomeCreationTypeItem[] = [
|
||||
creationType: 'game',
|
||||
label: '做游戏',
|
||||
placeholder: '今天想把什么灵感做成游戏',
|
||||
emptyPrompt: '请输入游戏灵感或上传参考素材',
|
||||
icon: Gamepad2,
|
||||
},
|
||||
{
|
||||
creationType: 'art',
|
||||
label: '做素材',
|
||||
placeholder: '今天想做什么样的美术素材',
|
||||
emptyPrompt: '请输入素材需求或上传参考图',
|
||||
icon: Image,
|
||||
},
|
||||
{
|
||||
creationType: 'doc',
|
||||
label: '做方案',
|
||||
placeholder: '今天有什么设计需要帮你整理',
|
||||
emptyPrompt: '请输入方案需求或上传资料',
|
||||
icon: FileText,
|
||||
},
|
||||
];
|
||||
@@ -130,6 +134,7 @@ export default function HomeView({
|
||||
const referencedAttachments = richTextToAttachments(homeRichText);
|
||||
const prompt = richTextToPrompt(homeRichText);
|
||||
if (!prompt && referencedAttachments.length === 0) {
|
||||
onStatusChange(activeCreationType.emptyPrompt);
|
||||
return;
|
||||
}
|
||||
homeCreationBusyRef.current = true;
|
||||
|
||||
@@ -1322,6 +1322,7 @@ export function registerHomeProjectCreationTests() {
|
||||
expect(screen.getByText('你的游戏创作管家')).not.toBeNull();
|
||||
expect(screen.getAllByText('今天有什么设计需要帮你整理')).toHaveLength(1);
|
||||
fireEvent.click(screen.getByRole('button', { name: '开启创作' }));
|
||||
expect(screen.getByText('请输入方案需求或上传资料')).not.toBeNull();
|
||||
expect(invoke).not.toHaveBeenCalledWith(
|
||||
'create_automatic_local_game_project',
|
||||
);
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
### 3.9 项目管理页
|
||||
|
||||
- 项目页采用“标题与状态 + 本地搜索 + 打开项目 / 新建项目 + 紧凑项目表格”的桌面信息架构。可以参考成熟项目管理器的信息层级和密度,但不得复制 Unity 等外部产品的品牌、Logo、深色皮肤、专有图标、列名或文案;页面继续使用 Genarrative 平台主题和陶泥儿客户端壳。
|
||||
- 表格只展示现有权威数据:项目名称与工作区绝对路径、GameAgent / Godot 类型、目录 / manifest / 最近 Runtime 状态和行级操作。当前目录检查合同没有修改时间、编辑器版本、收藏或云状态,前端不得伪造这些列。
|
||||
- 表格只展示现有权威数据:项目名称与工作区绝对路径、GameAgent / Godot 类型、目录自身真实修改时间(由目录检查 `modifiedAt` 提供)、目录 / manifest / 最近 Runtime 状态和行级操作。编辑器版本、收藏或云状态仍不在当前目录检查合同内,前端不得伪造这些列。
|
||||
- 可打开项目的主行点击后进入项目;显示目录和从最近列表移除收进键盘可达的行尾更多菜单。Escape 关闭菜单并把焦点还给触发按钮;移除只修改本机 WebView 最近项目记录,不删除磁盘文件。
|
||||
- 搜索只在已加载项目行中匹配名称、路径、类型、Godot 相对根和状态,不改 localStorage、不触碰项目目录、不新增后端或 Tauri 命令。无匹配状态提供清除搜索;真正空状态仍只引导用户使用顶部打开或新建,不追加第三个目录选择入口。
|
||||
- 正式视觉验收只覆盖 `1280×720` 最小横屏和 `1280×800` 默认窗口:工具栏保持单行,表头与项目列对齐,项目列表内部滚动,document/body 不出现页面级横向或纵向溢出。截图必须使用含 Web、Godot 和无效状态的 populated fixture;视频必须演示搜索、清除、行尾菜单及可观察的项目操作结果,不能只录静止页面或无结果点击。
|
||||
|
||||
@@ -664,7 +664,7 @@ game-project/
|
||||
- 首页发送、项目组目录选择和本地文件选择必须使用 Tauri 非阻塞原生 picker,并把选择器绑定到当前 `client` 窗口;禁止在同步 command 中调用 `blocking_pick_folder` / `blocking_pick_file` 阻塞 WebView 事件循环。选择器打开期间保留首页草稿可编辑,取消后恢复“开启创作”按钮并回显“已取消”。
|
||||
- 当前尚未定义 GameAgent 独立的灵感数据源;首页保留“灵感推荐”模块及空白内容容器,但不显示无数据文案,也不得展示或请求主站 `/creation` 的陶泥儿精选 `/api/editor/showcase/resources`。后续接入前必须先明确独立数据契约和交互验收。
|
||||
- 首页正式桌面版以约 `814px` 的居中内容栏组织品牌区、创作类型、输入框、最近项目与灵感推荐;品牌区和类型按钮在内容栏左缘对齐,输入框和下方模块仍保持整体居中。标题使用深色暖橙层级,固定副标题为“你的游戏创作管家”;选中的创作类型使用实心暖橙按钮,未选中项使用浅色描边,输入框使用更舒展的单行创作起始比例。
|
||||
- 最近项目固定展示至多三个横向信息卡:左侧为本地渐变封面占位,右侧只投影项目名称、项目类型、目录真实修改时间和已有最近运行状态。目录检查通过 `modifiedAt` 提供修改时间;没有封面资产时不得假装读取了项目封面,也不新增封面持久化字段。
|
||||
- 最近项目固定展示至多三个横向信息卡:左侧为本地渐变封面占位,右侧只投影项目名称、项目类型、目录自身真实修改时间和已有最近运行状态。目录检查通过 `modifiedAt` 提供目录自身 mtime,不递归扫描项目文件;没有封面资产时不得假装读取了项目封面,也不新增封面持久化字段。
|
||||
- debug 构建启动后在用户 `client` 窗口之外额外打开 `developer` 窗口;该窗口用于开发者单独选择 Agent、管理对应 active/archived Session 并读取历史,用户消息和真实 Agent 回复只持久化到 `.agent/conversations/agents/<agentId>/` 下的规范 Session。普通用户窗口不得出现 `Agent 聊天` 导航、picker 或工具台入口。
|
||||
- 首页最近项目只展示最近 3 个有效项目;项目组页在同一窗口使用紧凑桌面项目表格管理最近项目。顶部工具栏只放本地搜索、“打开项目”“新建项目”,不常驻路径输入框、目录显示按钮或独立 Godot 入口。两个项目动作都先打开绑定当前 `client` 的非阻塞原生目录选择器:“打开项目”读取已有 GameAgent 项目,或自动识别根目录 / 一层直接子目录中的唯一 Godot 工程并导入;普通未初始化目录提示改用“新建项目”。“新建项目”在用户选择工作区根后沿用非空目录确认,不自动重建无效历史路径。项目表格只投影名称、路径、GameAgent / Godot 类型、目录 / manifest / Runtime 状态;可打开行点击进入项目,显示目录和移除最近记录收进行尾更多菜单。搜索仅过滤当前行,不修改 storage;空状态不追加第三个目录选择入口。正式验收只覆盖 `1280×720` 最小横屏和 `1280×800` 默认窗口,列表内部滚动且无页面级溢出。
|
||||
- 项目开发页保留左侧栏和顶部栏,顶部展示项目名、路径和最近 run 状态;中间只挂载 active `project-supervisor` Session 的正式对话面、Runtime 状态、确认/Needs input 和专业 Agent 协作只读状态,底部保留附件导入结果。真正的项目开发画布仍未落地;专业 Agent picker、完整计划和工具台继续留在开发入口。
|
||||
|
||||
Reference in New Issue
Block a user