合并远程主分支客户端收口

This commit is contained in:
2026-08-13 17:13:36 +08:00
240 changed files with 4900 additions and 20399 deletions

View File

@@ -6,7 +6,6 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
- `86ece3a` / `4dde8f3`:客户端登录七天滑动续期及集成提交。
- `724290e` / `dcc92fc`Main-owned 一键打包提交审核及集成提交。
- `1a19ad9` / `f02e99e`:项目真机预览、待审 Release Owner preview 及集成提交。
- `493b31c`:客户端三类 `ProjectType`、小游戏/小程序受控发布模板与自定义项目发布隔离。
- `4df0477` / `8dd99c1`:客户端静态发布唯一链路、旧 Compose 协调链退役及安全边界补强。
- `4980894` / `03dae62`AI 绘画 Enter 发送及同一 Workspace 下的多 Conversation 客户端模型。
@@ -15,6 +14,7 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
- `08da976` / `0ee5254`AI 编程首次发送已知空 session 快速路径与明确上游饱和终止态投影。
- `809364e` / `88281b8` / `7a807a2`AI 绘画单参考图图生图选择/上传交互、最新客户端主线集成及旧版 Brief medium 缺失兼容。
- `f05b9d4` / `e221374`Updater 稳定源缺包诊断与用户错误脱敏修复,以及当前 `main` 上的图生图最终合并提交。
- `f4113a8`:远程主线客户端收口,包含启动预热、课程 Skill、项目 Agent 模型配置、浅色界面整合,并移除独立真机预览与内置 Superpowers。
## Current Focus
@@ -28,7 +28,7 @@ Updater 仍由 Electron Main 选择目标 feed、记录原始诊断并保持失
## Recently Completed
- 2026-08-08合并登录续期一键发布和真机预览;发布成功后保存精确 app/version/review 映射Renderer 不接触 Token、ZIP 或本地路径。
- 2026-08-08合并登录续期一键发布;发布成功后保存精确 app/version/review 映射Renderer 不接触 Token、ZIP 或本地路径。
- 2026-08-08补齐跨平台 Electron E2E fixture、Windows ZIP 预检和异常成功响应安全投影。
- 2026-08-09新建项目支持小游戏、小程序和自定义三类不可变产品类型前两类生成固定 Vite 发布模板,自定义及缺少类型字段的旧项目不显示一键提交入口。
- 2026-08-10删除客户端旧 Compose deploy-check、watcher/arm/upload 协调和手工 ZIP 路由submission binding v2 保留旧 `submitted` 绑定并把旧中间态归一为 `legacy_retired`,同时补齐 Renderer capability、`play_url` 安全投影和本机绑定失败告警。
@@ -47,8 +47,7 @@ Updater 仍由 Electron Main 选择目标 feed、记录原始诊断并保持失
1. 成组核对客户端 source+built+contract 上传 → 服务端逐字节校验 → OSS immutable Release → CDN/Edge 的发布契约与客户端 `play_url` 消费契约。
2. 配置真实生产环境,分别执行“小游戏/小程序创建 → 客户端本地构建与同字节预检 → 提交 → 服务端合同/摘要校验与不可变 Release 固化 → 运营批准 → App 播放”。
3. 核对待审 Owner preview 到期刷新、CDN 发布/撤回、生产监控和告警证据。
4. 在一个客户端兼容版本且服务端与存量数据稳定提供 `play_url` 后,删除 `runtime_url` 回退。
3. 核对生产环境的提交状态、构建结果和告警证据。
## Open Questions / Blockers
@@ -57,7 +56,7 @@ Updater 仍由 Electron Main 选择目标 feed、记录原始诊断并保持失
## Risky Areas
- 一键提交已成功但本机 submission binding 落盘失败时必须保持提交成功、显示固定 `binding_warning` 并继续轮询,避免用户误判上传失败。
- 公共 `play_url` 必须满足 Works Square 同源 HTTPS、无 userinfo/loopback、精确 `/apps/{app_id}/` 路径、无 query/fragment、版本非空且上游标记可播放;待审预览仍需绑定当前项目、精确版本和 Release
- 公共 `play_url` 必须满足 Works Square 同源 HTTPS、无 userinfo/loopback、精确 `/apps/{app_id}/` 路径、无 query/fragment、版本非空且上游标记可播放。
- `/api/works/projects/publish-source` 必须在读取凭据和项目文件前校验 Renderer capabilityHost token/base 不能替代该 UI 边界。
- `works-cloud-deploy.json` 仅是已安装数据的兼容文件名,不代表客户端仍拥有自动部署协调器;旧中间态不得恢复为后台任务。
- 刷新凭据、发布 Token、ZIP、幂等键和重试只能由 Electron Main 持有。

View File

@@ -94,15 +94,64 @@ Gate result:
## Outcome
- Not completed.
- `git fetch origin main --prune` resolved the authoritative remote tip to
`f4113a872f7cd6aee6829c9597c882846bc4085b`. The histories had diverged at
`253bad8b40c8cd20a25362006f5d80a4e5c4cd4a`: local `main` contained 18
integration/preparation commits not on the remote, while the remote contained
one consolidation commit not on local `main`.
- Merged `origin/main` with `--no-ff --no-commit`, keeping local `main` as the
first parent. The only textual conflicts were `README.md` and
`.project-docs/20-architecture/data-flow.md`; both were reconciled
semantically instead of choosing either side wholesale.
- Accepted the remote product consolidation that removes the independent Device
Preview capability and the bundled Superpowers distribution, while retaining
the reviewed local Updater, image-to-image, first-chat, AI-proxy, publishing,
and `/deliverables` behavior. Canonical architecture/current-state documents
were updated to remove stale live Device Preview claims and record remote tip
`f4113a8` under `Integrated Through`.
- Preserved the remote startup warmup, curated course skills, per-Agent model
ownership, recursive Skill details, OpenCode path resolution, authentication
hardening, light visual consolidation, fonts, and window material changes.
- Corrected an upstream course-skill manifest mismatch by retiring the absent
`deploy-publish-check` skill instead of advertising it as bundled, with a
regression assertion in the manager suite.
- Corrected merge-exposed test defects without weakening production behavior:
project-config request mocking now receives `RequestInit`; the Windows runtime
queue test injects a deterministic port-owner lookup; the legacy agent-folder
test accepts the intentionally absent directory; and an unused test binding
was removed.
- Rebased the Electron E2E contract on the consolidated UI: Code/Canvas enter
through the module chooser, hidden module actions are expanded before use,
Models is reached through the account/settings flow, Provider seeding uses the
Main-owned Host API, and project-backed chat mocks return valid initialized
configuration. Two Channels specs were removed because the remote product
consolidation removed their UI, route, and Host API rather than relocating
them. Stable test IDs were restored to the retained proxy settings controls.
- The merge is fully verified and ready for an independent final review and
normal push. The final merge commit and remote equality are recorded after
those operations complete.
## Verification
- Not run.
- `pnpm install --frozen-lockfile` — passed.
- High-risk focused Vitest selection — 19 files, 494/494 passed.
- `pnpm test` — 146 files, 1574/1574 passed.
- `pnpm run typecheck` — passed.
- `pnpm run lint:check` — passed with 0 errors and 6 existing warnings.
- `pnpm run build:vite` — passed.
- `pnpm run test:electron:windows` — 3/3 passed.
- `pnpm run test:e2e` — rebuilt Renderer/Main/Preload and passed 24/24.
- `git diff --check` and `git diff --cached --check` — passed.
## Follow-ups
- None recorded.
- Signed packaged updater smoke and live Works Square/Bailian image-to-image
smoke remain external release gates; this Git synchronization does not claim
that either production environment has been exercised.
- A cancelled-before-spawn OpenCode restart can still spend roughly one second
probing a Windows port owner. The queue regression is now deterministic; a
future performance change should distinguish an attached runtime before
skipping that lookup so attached-runtime restart behavior remains intact.
## Promotion Candidates