实现 Makelore 一键提交审核
需求:让非专业用户在项目操作区一次提交,运营审核通过后直接发布。 实现:由 Electron Main 完成安全打包、自动版本、幂等重试和状态脱敏;补齐友好失败反馈、唯一提交入口及隔离 Electron E2E fixture。
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# Task: 迁移并验收 Makelore 一键发布客户端
|
||||
|
||||
## Identity
|
||||
|
||||
- Task ID: 20260807-makelore-release-client-8c4e
|
||||
- Mode: Feature
|
||||
- Branch: codex/20260807-makelore-release-client-8c4e-makelore-release-client
|
||||
- Worktree: D:\Datas\OthersProjects\makelore-release-client-8c4e
|
||||
- Base commit: 7b23cce67a1b9e61a48d89dedbd088d37b10ecd4
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
|
||||
## Scope
|
||||
|
||||
- 以 `D:\Datas\OthersProjects\makelore` 为正确客户端仓库,重新核对一键发布实现与 Electron E2E 基线。
|
||||
- 补齐 `tests/e2e/fixtures/electron.ts`,恢复现有 Electron E2E 的测试收集和隔离启动能力。
|
||||
- 在不恢复独立发布/上传工作台的前提下,迁移 Main-owned 安全打包、自动版本、幂等重试和友好失败反馈。
|
||||
- 用户已确认在现有项目操作区增加唯一“提交审核”动作;不新增发布页面、侧栏入口或发布资源卡。
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- 项目文件、ZIP 生成、Works Square Token、幂等键和网络重试均由 Electron Main 持有;Renderer 只调用 Host API。
|
||||
- 遵守 Makelore 产品边界:不恢复 Works/素材广场、发布上传页面或云部署工作台。
|
||||
- 保留内部 `niancode` 兼容标识,面向用户的新增文案使用 Makelore。
|
||||
- 当前主工作区存在未归属的登录、设备预览等改动;所有实现只允许在本任务隔离工作树进行。
|
||||
- E2E 每个测试使用独立临时 profile,同一测试内重启复用该 profile,结束后关闭 Electron 并清理临时目录。
|
||||
|
||||
## Outcome
|
||||
|
||||
- 已确认此前客户端改动落在错误的 NianCode 工作树,不能计为 Makelore 已完成;服务端发布链路不受此路径更正影响。
|
||||
- 已确认 Makelore 当前 HEAD 与全部本地 Git 历史都缺少 `tests/e2e/fixtures/electron.ts`,但 13 个 E2E spec 均导入该模块,因此 Playwright 会在测试收集阶段因模块不可解析而停止。
|
||||
- 已补齐 fixture 最小契约:`test`、`expect`、`launchElectronApp`、`electronApp`、`page`、`getStableWindow`、`closeElectronApp` 与 `completeSetup`;每个测试隔离 profile,同测试重启复用,所有 Electron 进程都有有界关闭与强杀兜底;启动环境采用跨平台必要变量白名单,不继承 Works 配置、密钥或开发服务器地址。
|
||||
- 已在 Electron Main 增加确定性静态项目打包:校验 npm/Vite 根项目、生成兼容 `niancode.yml`、排除依赖/构建产物和常见云凭据/私钥/密钥状态文件、限制数量与体积,并通过目录祖先 identity 链在扫描、打开和读取前后拒绝符号链接、越界目录与打包期间替换。
|
||||
- 已将 Works Square 会话 Token、`VERSION.md`/时间版本、更新说明、临时 ZIP 和幂等键全部留在 Main;408/502/503/504 与网络异常重试复用同一键和相同字节,新的用户提交生成新键。
|
||||
- 已为提交和当前项目状态提供无 Renderer Token 的 Host API;成功响应也只投影安全字段并校验必需结构,异常 200、安全失败、上游正文、构建堆栈、路径与未知字段均不会进入 Renderer。
|
||||
- 已在现有项目配置底部操作区加入唯一“一键提交审核”:自动作品 ID/标题/简介/分类,2 秒轮询云端构建,成功后显示“已提交,等待运营审核”,可恢复失败给出原因和下一步,不确定结果保持锁定以防重复提交。
|
||||
- 未新增 `/publish` 路由、发布侧栏或发布资源卡;现有 E2E 继续断言这些工作台入口不存在。
|
||||
- fixture 恢复后暴露的登录按钮旧文案、设置页旧 test id/控件和项目配置旧入口断言已按当前 Makelore 产品行为更新,没有为测试绕开生产登录门禁。
|
||||
- README 已同步当前产品状态:不恢复独立发布工作台,只在现有项目配置底部提供 Main-owned 一键提交审核。
|
||||
|
||||
## Verification
|
||||
|
||||
- 只读文件检查确认 `tests/e2e/fixtures` 目录不存在。
|
||||
- `git ls-tree -r HEAD -- tests/e2e` 确认当前提交只包含 13 个 spec,不包含 fixture。
|
||||
- `git log --all -- tests/e2e/fixtures` 无结果,确认没有可直接 cherry-pick 的本地历史来源。
|
||||
- `rg` 确认现有 spec 需要 shared fixture,同时现有 E2E 明确断言发布侧栏和发布资源卡不存在。
|
||||
- 发布链路聚焦 Vitest:6 files / 77 tests passed。
|
||||
- `pnpm run typecheck` 与全部变更 TypeScript/TSX 的 scoped ESLint 通过。
|
||||
- `pnpm run build:vite` 的 Renderer、Main、Preload 构建通过;仅保留仓库既有的大 chunk 提示。
|
||||
- `pnpm exec playwright test --list --reporter=line` 成功收集 13 files / 21 tests。
|
||||
- 真实 Electron 串行验收覆盖首次设置、跳过后登录门禁、同 profile 重启、俄语设置持久化、创建项目、Superpowers 默认关闭和唯一发布入口:8 passed。
|
||||
- `git diff --check` 通过,构建输出与依赖没有进入未跟踪文件列表。
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- 使用真实 Works Square URL、创作者账号和已部署 Builder/Static Gateway 运行“客户端提交 → 构建/浏览器门禁 → 运营批准 → 公共作品”整链;当前本地验证未冒充生产发布成功。
|
||||
- 集成时优先合并服务端发布生命周期与门禁,再发布依赖新状态字段和错误码的 Makelore 客户端。
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- Target: Makelore `AGENTS.md` 或发布集成说明。
|
||||
- Proposal: 将“发布入口只存在于现有项目操作区,Renderer 只发 projectId/非敏感元数据,Main 持有文件、Token、版本、ZIP、幂等与重试”记录为长期客户端边界。
|
||||
- Evidence: 本任务实现、77 项聚焦回归、13/21 E2E 收集和 8 项真实 Electron 验收。
|
||||
- Future impact: 后续发布状态、失败反馈和真实环境验收不得重新引入发布工作台或 Renderer Token/文件路径。
|
||||
- Semantic conflicts: 无;与仓库禁止恢复发布/上传工作台的现行约束一致。
|
||||
- Human confirmation required: 是。
|
||||
Reference in New Issue
Block a user