Files
makelore/.project-docs/30-worklog/current-state.md

14 KiB
Raw Blame History

Current State

This file is the integrated default-branch snapshot. Feature tasks record progress in 30-worklog/tasks/{task_id}.md and propose canonical changes for the Integration Gate. Feature tasks must not rewrite this file; it changes only in integration mode.

Integrated Through

  • ea75b06: Robot configuration reads accept canonical weak numeric response ETags introduced by public response compression only when the numeric revision exactly matches the strictly projected DTO; configuration and assignment writes continue to emit strong If-Match.
  • fd9b5b46a913c515e94e4e26f185d43866c2581f / 7a811590c4943b7b1b7ea5f3b4d3ce3ce05622a5: Codex-style persistent AI Programming context-compaction timeline, run-lifecycle separation, polling-idle completion, and cold-hydration hardening.
  • 22378efcee07e7fb80b651e65e3202f1a1dfea1d: AI Canvas bidirectional Agent WebSocket commands, idempotent transport fallback, and Quote-based generation-task recovery.
  • aba5cae286807093cf4ef643fe9f498050985c31: Robot / AI hardware module, Main-owned Works Square proxy, and cross-repository wire contract.
  • 86ece3a / 4dde8f3:客户端登录七天滑动续期及集成提交。
  • 724290e / dcc92fcMain-owned 一键打包提交审核及集成提交。
  • 493b31c:客户端三类 ProjectType、小游戏/小程序受控发布模板与自定义项目发布隔离。
  • 4df0477 / 8dd99c1:客户端静态发布唯一链路、旧 Compose 协调链退役及安全边界补强。
  • 4980894 / 03dae62AI 绘画 Enter 发送及同一 Workspace 下的多 Conversation 客户端模型。
  • 926056aMakelore 内置 Electron WebContents/CDP 发布前本地预览检查。
  • 5b44864Main-owned 本地 npm/Vite 构建、同字节 Electron 双视口预检、source+built 双归档与 artifact contract 上传。
  • 08da976 / 0ee5254AI 编程首次发送已知空 session 快速路径与明确上游饱和终止态投影。
  • 809364e / 88281b8 / 7a807a2AI 绘画单参考图图生图选择/上传交互、最新客户端主线集成及旧版 Brief medium 缺失兼容。
  • f05b9d4 / e221374Updater 稳定源缺包诊断与用户错误脱敏修复,以及当前 main 上的图生图最终合并提交。
  • f4113a8:远程主线客户端收口,包含启动预热、课程 Skill、项目 Agent 模型配置、浅色界面整合,并移除独立真机预览与内置 Superpowers。

Current Focus

客户端面向非专业用户提供“创建小游戏或小程序 → 项目配置中一键提交 → Main 本地 npm/Vite 构建 → Electron 双视口预检最终产物 → 上传 source+built 双归档与 contract → 运营审核”的唯一创建者链路。Main 对安全源码快照运行安装包内固定 npm 11.6.2 的 npm ci --ignore-scripts,再显式调用项目 package-lock.json 锁定的 ViteVite config/plugins 以当前桌面用户权限执行,因此只适用于用户信任的本地项目,不是 sandbox。预检由 Main 以临时 loopback origin 和 Electron WebContents/CDP 检查与最终 built_archive 相同的内存文件字节,覆盖桌面/移动视口、运行错误、白屏和外域访问;不使用 Playwright。该检查仍可由非官方客户端绕过不产生可信 receipt也不复刻生产 opaque-origin。服务端不再替客户端运行项目 Vite而是把源码、构建归档和 contract 视为不可信输入,逐字节重算与校验并固化不可变 Release人工审核仍不可绕过。自定义和缺少类型字段的旧项目不提供该入口。已发布作品优先使用安全投影后的 play_urlruntime_url 仅保留一个客户端版本的兼容回退。

AI 绘画的一个 Workspace 可包含多条 Conversation。消息、Brief、Quote 和 turnRevision 随 Conversation 隔离;生成任务和资产保持 Workspace 级共享。图片 Brief 支持文生图,以及从当前项目已完成作品或本地上传中选择一张参考图继续生成;视频复用同一选择器绑定首帧。两条路径都通过现有 Workspace Asset 契约提交一个真实 Asset ID。每条 Conversation 使用服务端持久 Agent Gateway Session连接正常时命令、Run 与设计事件共用双向 WebSocket只有发送、断连或 ACK 超时等传输故障才以同一 client_command_id 回退 REST结构化业务错误不重复提交且未知上游文本由 Main 脱敏。确认生成会按 Quote 对账 Workspace 任务;任务已经落库但 Run 随后失败时仍恢复任务列表,内部对账失败不覆盖当前 UI 错误,同时 Conversation 写入继续受 Workspace-load 与 Conversation-selection generation 保护。

AI 编程首次发送在新建 OpenCode session 已知为空时不再等待冗余历史读取prompt 可直接进入 Host API普通历史会话仍刷新消息。Main AI proxy 只把明确的上游分组饱和投影为当前 OpenCode 的终止状态,配额耗尽保持独立终止态,通用限速继续保留 429。上下文压缩以每个 Session 的持久时间线事件呈现:自动与手动压缩使用不同文案,运行态原位弱化显示,完成后静态保留并可从历史恢复;session.compacted 只完成对应事件,只有真实 idle 才结束 run 和释放排队消息。

Updater 仍由 Electron Main 选择目标 feed、记录原始诊断并保持失败语义。正式稳定源缺少对应平台 manifest 时设置页只显示一条简洁中文提示并允许重试不把缺包误报为已是最新版也不向普通界面暴露堆栈、URL、路径或错误码签名产物发布和真实升级安装仍属于外部 Release Gate。

Recently Completed

  • 2026-08-15: Corrected the deployed Robot configuration-read contract after the compressed public Works response was observed with ETag: W/\"0\" and matching numeric config_revision: 0. Electron Main now accepts only canonical strong or weak numeric response tags, still requires exact DTO revision equality, and always sends strong If-Match for mutations. No production client rollout is claimed.
  • 2026-08-15AI 编程上下文压缩改为 Codex 风格的会话内时间线事件;手动与自动压缩原位展示并持久保留,历史回放去重且状态只允许从 running 单调进入 completed压缩完成不再冒充整个 run idle。
  • 2026-08-14: AI Canvas Agent 命令与流式事件改为共用双向 Conversation WebSocket并保留仅面向传输故障的幂等 REST 回退;结构化 Gateway 错误不重试且未知文本脱敏;确认生成按 Quote 恢复已落库任务,切换 Conversation 后仍同步 Workspace 任务且不覆盖新会话状态或错误。
  • 2026-08-13: Integrated the enabled Makelore Robot top-level module at /ai-hardware. Renderer uses typed safe DTOs while Electron Main owns Works Square authentication, idempotency identities, ETag/If-Match forwarding, response projection, limits, timeouts, and credential recovery. Robot and Canvas routes no longer initialize AI Programming projects/providers. No production deployment or real activation-code smoke is claimed.
  • 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 安全投影和本机绑定失败告警。
  • 2026-08-11AI 绘画支持在同一设计项目内创建和切换多条独立 Conversation保留项目级任务/资产,并使用 Workspace + Conversation 身份保护异步与流式更新。退出时关闭本地流并清除本地 Session-id 缓存,不删除服务端持久 Conversation Session。
  • 2026-08-12一键提交前复用当前项目的内置浏览器 loopback preview以 fresh 临时 Electron WebContents/CDP 执行桌面/移动 UX 预检;服务端仍执行唯一受控构建、不可变 Release 安全门禁和人工审核。
  • 2026-08-12发布架构反转为 Main-owned 本地构建;固定 npm 11.6.2 按项目 lockfile 安装并执行项目 ViteElectron 预检最终上传同字节产物,再上传 source+built 双归档和严格 contract。服务端仅校验并固化不可信字节不再承担项目 Vite 构建。
  • 2026-08-12AI 编程新 session 的首条 prompt 不再被已知空历史读取阻塞;明确上游分组饱和会快速终止,通用 429 仍保持原有限速语义。
  • 2026-08-13AI 绘画把原视频首帧选择器泛化为单图来源选择器;图片 Brief 可选择项目作品或上传本地图作为图生图参考图,视频及未决 medium 保持历史首帧行为,成功提交后关闭弹窗。
  • 2026-08-13Updater 对 Works Square 稳定源缺少 Windows/macOS manifest 保持错误状态,在 Main 日志保留原始诊断,并在设置页去重、脱敏为可操作的中文提示;未发布任何新安装包。

In Progress

  • 成组集成服务端 source+built+contract 校验、OSS immutable Release、CDN/Edge 与 App 消费链后,使用真实账号和生产配置执行客户端提交到作品播放的整链验收。
  1. 成组核对客户端 source+built+contract 上传 → 服务端逐字节校验 → OSS immutable Release → CDN/Edge 的发布契约与客户端 play_url 消费契约。
  2. 配置真实生产环境,分别执行“小游戏/小程序创建 → 客户端本地构建与同字节预检 → 提交 → 服务端合同/摘要校验与不可变 Release 固化 → 运营批准 → App 播放”。
  3. 核对生产环境的提交状态、构建结果和告警证据。

Open Questions / Blockers

  • 客户端与模拟上游回归已完成真实服务端新协议、OSS/CDN、运营审核、App 播放、生产账号和环境变量仍待部署环境确认,不能据此宣称生产发布链已经验收。当前已验证的 Windows 安装器未上传或发布。

Risky Areas

  • 一键提交已成功但本机 submission binding 落盘失败时必须保持提交成功、显示固定 binding_warning 并继续轮询,避免用户误判上传失败。
  • 公共 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 持有。
  • 本地 projectType 只决定产品分流和模板选择,不得作为授权依据或替代 Main/服务端的包体校验。
  • 本地构建必须使用安装版 Electron Node、固定 npm 11.6.2 和项目 package-lock.json 锁定的 Vite不得回退到全局 PATH、已有 node_modules 或未验证的 npm 闭包;依赖安装需要网络。
  • 项目 Vite config/plugins 以桌面用户权限执行,不能称为 sandbox此风险边界必须在发布说明中保留。
  • AI 绘画消息、Brief、Quote 和 turnRevision 必须按 Workspace + Conversation 隔离;任务事件仍按 Workspace 归并,迟到的异步结果不得污染已切换的会话。
  • AI 绘画 WebSocket 命令只能在传输发送、连接关闭或 ACK 超时时回退到 REST并必须复用原 client_command_idGateway 结构化业务错误不得触发重复提交,未知错误文本不得进入 Renderer。确认后的任务恢复必须按不可变 Quote 身份归并到 Workspace不能用任务恢复放宽 Conversation generation 门禁或覆盖新会话错误。
  • 服务端持久 Conversation Session 不由客户端在注销或退出时删除Main 只关闭本地流、清除本机缓存并撤销本地凭据。
  • 客户端对最终构建字节的 loopback 检查没有可信 receipt且不复刻生产 opaque-origin服务端必须独立重算 source/built/contract、校验不可变 Release人工审核仍不可绕过。如未来需要不可绕过的 runtime gate必须引入可信 verifier 并绑定精确构建产物。
  • AI proxy 的明确饱和 429 → 400 是与当前 OpenCode 重试契约匹配的内部投影;升级 OpenCode 或上游饱和错误文案变化时必须复核。不得把通用 429 或仅含 rate_limit_exceeded 的响应误分类为终止饱和。
  • AI 编程压缩事件必须按 Session、run token、runtime generation 与 native Part/event identity 关联;session.compacted 不等于 session.idle,历史 hydration 不得把 completed 降回 running失败或中止必须清理本 run 的未完成事件。
  • AI 绘画单图选择器仍精确匹配 quick reply 从作品列表选择图片,用途再从当前 Brief medium 推断;本地化或协议文案变化可能破坏入口。扩展更多素材输入前应升级为结构化 action/purpose。
  • Updater 源码错误提示不能代替发布正式签名产物;稳定 feed 缺 manifest 必须保持失败Renderer 不得展示原始堆栈、URL、路径或错误码。升级链只有在旧版本完成发现、下载、重启和安装 smoke 后才可视为生产就绪。

Last Updated

2026-08-15