Files
makelore/.project-docs/30-worklog/tasks/20260807-makelore-release-client-8c4e.md
brother7 724290e864 实现 Makelore 一键提交审核
需求:让非专业用户在项目操作区一次提交,运营审核通过后直接发布。

实现:由 Electron Main 完成安全打包、自动版本、幂等重试和状态脱敏;补齐友好失败反馈、唯一提交入口及隔离 Electron E2E fixture。
2026-08-08 14:44:08 +08:00

5.8 KiB
Raw Blame History

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: 7b23cce67a
  • 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 最小契约:testexpectlaunchElectronAppelectronApppagegetStableWindowcloseElectronAppcompleteSetup;每个测试隔离 profile同测试重启复用所有 Electron 进程都有有界关闭与强杀兜底;启动环境采用跨平台必要变量白名单,不继承 Works 配置、密钥或开发服务器地址。
  • 已在 Electron Main 增加确定性静态项目打包:校验 npm/Vite 根项目、生成兼容 niancode.yml、排除依赖/构建产物和常见云凭据/私钥/密钥状态文件、限制数量与体积,并通过目录祖先 identity 链在扫描、打开和读取前后拒绝符号链接、越界目录与打包期间替换。
  • 已将 Works Square 会话 Token、VERSION.md/时间版本、更新说明、临时 ZIP 和幂等键全部留在 Main408/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 明确断言发布侧栏和发布资源卡不存在。
  • 发布链路聚焦 Vitest6 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: 是。