Commit Graph

3630 Commits

Author SHA1 Message Date
k88936 a3cf980000 陶泥儿构建收尾超平台上限的产物不再整包读入内存
- conclude 在 std::fs::read 前同时按平台 200MiB 上限过滤,200MiB~512MiB 的产物直接判 artifactMissing
2026-10-07 14:00:58 +08:00
k88936 ad08772190 仓库上下文扫描忽略 .export 导出目录
- should_ignore_directory 顶层组件匹配补回 .export,避免把生成的导出包/zip 纳入 agent 仓库上下文
2026-10-07 14:00:47 +08:00
k88936 5df27afed3 预览服务重新把 .export 列为受保护目录
- preview.rs 两处受保护组件列表补回 .export(导出目录由 exports 改名时遗漏),避免 .export/taonier.json 等导出元数据被本地预览读取返回
2026-10-07 13:57:56 +08:00
k88936 5b0c416839 陶泥儿 H5 打包改用临时文件原子落盘
- writeZipEntries 先写同目录 <zip>.tmp-<pid>,全部成功后再 renameSync 覆盖落点,失败只清理临时文件
- makeZip 失败路径不再删除落点,避免写盘失败时丢掉落点上原有的 zip
2026-10-07 13:53:31 +08:00
k88936 bda1bb0814 陶泥儿 H5 打包拒绝非普通文件条目
- collectZipEntries 遇到 FIFO/socket/设备文件时抛错,不再静默跳过导致缺文件的包
2026-10-07 13:50:14 +08:00
k88936 9c26642896 陶泥儿 H5 产物校验覆盖单引号根路径引用
- assertH5Root 的属性正则同时匹配单/双引号并容忍 = 两侧空白,避免手写/插件 HTML 漏检
2026-10-07 13:49:07 +08:00
k88936 af752eaa1a 陶泥儿 H5 配置合并后钉死 build.outDir
- mergeConfig 不再允许 overrides 静默改写 build.outDir,保证与 pack.mjs 的 --vite-built-dir 默认值一致
2026-10-07 13:48:40 +08:00
k88936 003f7cfe95 陶泥儿 H5 导出收尾改用 lstatSync 清理空目录
- pruneEmptyDirs 不再跟随符号链接,避免递归走出 dist-taonier 或对指向祖先的链接递归到栈溢出
2026-10-07 13:48:10 +08:00
k88936 61ca2127cf Merge remote-tracking branch 'origin/master' into feat/adapt-taonier-skill
# Conflicts:
#	docs/project-memory/shared-memory/pitfalls.md
2026-10-07 13:35:15 +08:00
k88936 c171800151 发布媒体路径改由发布面板传入,不再回读草稿注册表
- 发布命令新增 coverPath / screenshotPaths 参数,本地图路径与文字字段都取 packageAll 落定的同一份权威表单
- Rust 侧 resolve_publish_media 去掉 read_form,不再读 .export/taonier.json,按面板路径与张数失败关闭
- resolve_publish_media 单元测试改为直接传面板路径,并新增「面板路径优先于磁盘草稿」用例
- 前端 facade 与 useTaonierTab 透传面板路径,补路径透传与空槽位断言
- 同步技术方案中发布媒体来源说明
2026-10-07 13:32:24 +08:00
k88936 50c2c91d4a 修复对话设置中「运行配置」被设置浮层遮挡的层级问题
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
调整 .project-chat-settings-backdrop 的 z-index 从 240 降到 210,让二级浮层运行配置(220)与插件面板(230)正常叠在其上

新增 windowChromeOverlayContract 回归测试,约束对话设置 / 运行配置 / 插件面板三层 z-index 严格递增
2026-10-07 13:27:08 +08:00
k88936 441be8d621 Merge pull request 'Feat/支持fnm nvm' (#663) from feat/support-more-node into master
Project CI / AI game creator shell Rust lane 2/2 (push) Failing after 6m22s
Project CI / AI game creator shell Rust crates (push) Successful in 6m25s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 8m27s
Project CI / Frontend tests (push) Successful in 2m41s
Project CI / Backend tests (push) Successful in 10m17s
Project CI / AI game creator shell web tests (push) Failing after 4m26s
Project CI / Repository checks (push) Successful in 7m34s
Project CI / Native shell tests (push) Successful in 9m49s
Reviewed-on: #663
2026-10-07 13:08:49 +08:00
k88936 2fa7923362 合并 origin/master 到 feat/adapt-taonier-skill:保留陶泥儿退役链路并吸收 master 错误详情改动
Project CI / Backend tests (pull_request) Failing after 1m12s
Project CI / Native shell tests (pull_request) Failing after 3m48s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 5m43s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 6m39s
Project CI / Repository checks (pull_request) Failing after 1m0s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 6m51s
Project CI / Frontend tests (pull_request) Successful in 1m58s
Project CI / AI game creator shell web tests (pull_request) Failing after 54s
- commands/desktop.rs:按本分支「exports 全退役」保留删除,不回填 master 改动的 playtest 打包/读取/列举命令
- project/export.rs:保留本分支删除,旧导出实现已由 export/draft 陶泥儿与小工具链路替换
- useGameDistributionPublishForm.ts:保留本分支删除,发布表单已由 export/state 与 tabs/taonier 面板替换
- game_distribution_publish.rs:保留本分支新增的 owner 媒体读路由与图片直传辅助函数,删除 master 改动的封面生成与 AI 资料建议退役代码
- game_distribution_publish.rs:吸收 master 的错误详情改动(parse_error_payload、response_data、map_http_error、request_json、request_json_for_read、describe_distribution_request_failure、emit_publish_progress 及对应测试)
- resolve_preview_url:合并为本分支 owner_media_read_url 加错误日志
2026-10-07 12:57:59 +08:00
k88936 05012a85c3 删掉滚动回归测试,改为守卫「回到底部」不盖住输入盒弹层
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m39s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 5m59s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m0s
Project CI / Frontend tests (pull_request) Successful in 2m47s
Project CI / Backend tests (pull_request) Successful in 7m42s
Project CI / AI game creator shell web tests (pull_request) Failing after 3m33s
Project CI / Repository checks (pull_request) Successful in 7m2s
Project CI / Native shell tests (pull_request) Successful in 10m2s
- 删除 useConversationScroll.test.tsx 里新增的两条用例:加载行隐藏滞回、内容塌回一屏后收起胶囊
- chatDialogFrameLayout.test.ts:消息列表改为 flex 列容器后 gap 实际为 0,断言由 14px 改为 0 并注明间距仍由子项 margin 提供
- chatDialogFrameLayout.test.ts:新增用例——胶囊的 z-index 必须低于输入盒,模型 / 附件菜单向上展开时盖住胶囊而不是被胶囊盖住
- project-development.suite.ts:输入盒 z-index 断言由 1 改为 30,并注明层叠关系由上面那条用例守卫
2026-10-07 11:55:04 +08:00
k88936 680503d2a5 导出产物保存收敛成共享 exportArtifactDownload
- 新增 exportArtifactDownload.ts,承载保存对话框 + save_local_project_asset_file + 文件管理器定位
- 删掉逐字重复的 taonierDownload.ts 与 xhsMinitoolDownload.ts
- 两个 ArtifactsPane 改用通用的 saveExportArtifactToDisk / revealExportArtifactInManager
2026-10-07 11:53:18 +08:00
k88936 2a1e7fb373 Merge branch 'master' into fix/chat-history-style
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
2026-10-07 11:46:42 +08:00
k88936 ab2af60d30 发布用 packageAll 落定的权威表单合成 metadata
- useTaonierExport 维护 effectiveFormRef,refresh 采纳新表单与打包前 flush 成功时同步
- 暴露 getEffectiveForm;publishGame 在 await packageAll() 之后用它,避免旧快照与宿主读盘不一致
- 补两条单测:采纳新表单后权威表单更新、未保存输入先落盘再作为权威表单
2026-10-07 11:41:27 +08:00
k88936 800c456804 回读版本冻结资料时透传 objectKey 并接受字符串截图数组
- GameDistributionPublicationImageDraft 增加 objectKey,封面/截图回读时带上沿用键
- FrozenPublicationMetadata.screenshots 改按字符串数组解析,删除只认 {assetId,objectKey} 的旧结构
- 前端草稿类型补 objectKey;补字符串数组解析的 Rust 单测
2026-10-07 11:39:34 +08:00
k88936 aa946a9304 发布命令删掉已失效的 package_relative_path 形参
- Rust 命令与 stage_publish_package 去掉该形参,整包固定读 .export/taonier.zip
- 前端服务类型、invoke 载荷与 useTaonierTab 调用同步删除
- 更新单测与 live 测试,去掉对已忽略形参的断言
2026-10-07 11:34:54 +08:00
kdletters 8ceada8690 合并 codex/agc-error-convergence-20261004:交付核心以 master 新设计为准并保留分支错误明细
Project CI / AI game creator shell Rust lane 1/2 (push) Failing after 5m43s
Project CI / AI game creator shell Rust crates (push) Successful in 4m52s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 5m40s
Project CI / Frontend tests (push) Successful in 2m48s
Project CI / Backend tests (push) Successful in 7m14s
Project CI / AI game creator shell web tests (push) Failing after 3m50s
Project CI / Native shell tests (push) Successful in 8m27s
Project CI / Repository checks (push) Successful in 7m9s
冲突处理:交付合同/租约相关现场取 master(#608 重构),分支侧错误明细在可安全保留处回补
编译修复:direct_tool_bridge 回执结算失败正文、direct_patch 指纹读取、direct_delivery 终态读取按 Result 形状对齐
前端修复:DirectProjectChatView 取 master,其余缺失的错误正文 import/参数回补
重新生成 AuthServiceUnavailable 绑定以匹配 Rust 声明
2026-10-07 11:33:18 +08:00
k88936 7ed3696959 修复nvm默认别名并补真实nvm沙箱验证
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m41s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 7m1s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 7m46s
Project CI / Frontend tests (pull_request) Successful in 3m17s
Project CI / Backend tests (pull_request) Successful in 7m25s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m52s
Project CI / Repository checks (pull_request) Successful in 6m9s
Project CI / Native shell tests (pull_request) Successful in 8m28s
- nvm 的 alias/default 只写主版本号(如 22),改为按同一 pin 子集在已安装版本里选最高匹配,避免按 (22,0,0) 精确匹配永远落空
- 新增 opt-in 真机测试 command_sandbox_real_linux_opt_in_runs_nvm_installation_prefix,在 bwrap 内跑真实 nvm 安装前缀的 node 与 npm
- 新增单测 nvm_major_only_default_alias_selects_the_installed_patch 守住主版本号别名
- 里程碑、decision-log 与 pitfalls 记录真实 nvm v0.40.8 + Node v22.23.3 验证与 default 别名口径
2026-10-07 11:12:49 +08:00
k88936 42c742df5c 发布预检的标题/简介长度改按码点计数
- normalizeMetadata 用 Array.from(...).length,与面板校验及服务端 chars().count() 同口径
- 含 emoji 的压线标题/简介不再因 UTF-16 码元长度被发布预检误拒
- 补 40 个 emoji 标题 + 120 个 emoji 简介的定向测试
2026-10-07 11:09:08 +08:00
k88936 075078f358 保存遇宿主不可用保持 dirty,避免陈旧注册表覆盖未落盘输入
- 保存失败分流后不再无条件 setDirty(false):exportUnavailable 分支保留 dirty
- dirty 为真时 adoptable 保持 false,宿主恢复后的重读不会用旧注册表表单覆盖用户输入
- 冲突/未知失败仍归零 dirty,维持「同一份输入不反复打宿主」
2026-10-07 11:08:13 +08:00
k88936 00448e0b26 重读采纳新表单不再清掉构建失败现场
- 采纳路径去掉无条件 setFailure(null),只保留上方「读来源失败」的函数式清理
- 面板后台注册表被改写时,构建失败弹窗不再被下一次成功重读顺手抹掉
- 补「构建失败 + 重读采纳新表单」定向测试
2026-10-07 11:08:09 +08:00
k88936 51e6d1d9b9 AGC命令沙箱原生支持fnm/nvm托管Node
- 新增共享窄叶校验 validate_node_installation_prefix,只接受含 bin/node 与 lib/node_modules/npm/bin/npm-cli.js 的完整 Node 安装前缀,拒绝 HOME、管理器根、宽泛目录和逃逸 symlink
- 开发构建枚举 fnm node-versions/<ver>/installation 与 nvm versions/node/<ver>,按 .nvmrc / .node-version 权威 pin、PATH、engines.node 偏好、活动版本、默认别名、最高版本选择
- .nvmrc / .node-version 能理解但未安装时返回 node-version-pinned-not-installed 失败关闭;engines.node 与无法解析的 pin 不阻塞
- Linux 命令沙箱只读挂载通过校验的完整 Node 安装前缀,并在内联环境剔除 FNM_MULTISHELL_PATH
- Linux npm 改以受信任 node <npm-cli.js> 启动,npm install 联网判定跟随真实启动形态
- 非 Node 程序在 Linux 受信任 PATH 前置 Node 工具链 bin,npx / corepack 等随 node 同版本
- 同步技术方案 V1.11.2、实施计划切片、里程碑规范、decision-log 与 pitfalls
2026-10-07 11:07:16 +08:00
k88936 b99302dbfb 弹层打开时输入盒盖住「回到底部」胶囊
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 6m53s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m22s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m4s
Project CI / Frontend tests (pull_request) Successful in 3m34s
Project CI / Backend tests (pull_request) Successful in 8m12s
Project CI / Repository checks (pull_request) Failing after 6m49s
Project CI / AI game creator shell web tests (pull_request) Failing after 3m38s
Project CI / Native shell tests (pull_request) Successful in 8m57s
- styles.css 把 DirectProject 输入盒的 z-index 从 1 抬到 30:输入盒自己是层叠上下文,模型 / 附件菜单的 z-index 只在盒内有效,盒子不抬高会被列表里的胶囊(z-index: 10)盖住
- 30 仍低于拖拽落点提示(60)与设置弹窗(240)两个整屏浮层,它们照旧盖在输入盒之上
2026-10-07 11:05:15 +08:00
k88936 057b56b24a 截图导入按剩余名额逐张写入,不再只取最后一张
- AssetImporter 是多选(上限 100),onImport 改为遍历 assets 按 6 张上限截断
- 一次选多张时不再静默丢弃除最后一张外的截图
- 补多选导入定向测试
2026-10-07 11:02:29 +08:00
k88936 bb7097ce5c FormCard 截图数量文案摊平嵌套三元
- 本地张数 / 整组沿用线上 / 还没有截图三态先算成 screenshotSummary
- 行为不变,去掉嵌套三元
2026-10-07 11:01:04 +08:00
k88936 e4d46609cf FormCard 字段控件摊平嵌套三元
- options/multiline/input 三态改为 if/else 生成 inputSlot
- 复用一个 fieldClassName,去掉三份重复的边框/错误态样式与嵌套三元
2026-10-07 11:00:34 +08:00
k88936 8d74fa9aba 发布打包 reject 时收尾进度,避免面板卡死
- packageAll 在宿主不可用/读失败时会直接抛,await 包一层 try/catch
- 失败时把进度置为 failed 并带上原因,不再停在 running(运行中对话框没有关闭入口)
2026-10-07 10:59:50 +08:00
k88936 7b521f6f29 useTaonierTab 发布版本号判空改用严格相等
- `online.nextVersionNumber == null` 改为 `=== null`,去掉宽松相等
- online 为空已由 `!online` 显式挡掉,语义不变
2026-10-07 10:59:14 +08:00
k88936 4acb0e7124 陶泥儿产物读取按已知体积预分配
- read_package_bytes 接收调用方已验证的 expected_bytes,用 Vec::with_capacity
- 接近 200 MiB 的包不再因反复扩容多复制约一倍数据
2026-10-07 10:58:46 +08:00
k88936 d3d7e5a8ca 陶泥儿构建收尾:体积超线不整包读入内存
- conclude 仅在 produced(普通文件、非链接、非空)时才读取产物
- 读取前先看 metadata.len(),超过 ARTIFACT_PACKAGE_READ_MAX_BYTES 直接判不合格
- 避免构建脚本写出超大 zip 时先把宿主内存读满,也堵住符号链接被整包读取
2026-10-07 10:57:00 +08:00
k88936 500c3fda6b ConflictCard 按字段类型分开赋值,去掉 as never
- 截图字段走数组分支,文本字段走字符串分支,不再用 as never 关掉类型检查
- 表单将来加入非 string/string[] 字段时这里会当场编译失败
2026-10-07 10:55:25 +08:00
k88936 4d72a77aeb OnlineValuesCard 线上状态文案摊平嵌套三元
- 模板字符串里的版本号后缀与已发布/未发布两态改为先算 onlineSummary 变量
- 行为不变,去掉嵌套三元
2026-10-07 10:54:32 +08:00
k88936 7db1fc4ff4 发布按钮禁用条件纳入 taonier.running
- 「打包并发布」与「打包」共用禁用判据,构建进行中不能再并发触发 packageAll
- 避免两次构建争抢同一个 .export/taonier.zip 并互相覆盖结果
2026-10-07 10:53:56 +08:00
k88936 229f0580fa ArtifactsPane 发布禁用条件改用严格判空
- `online?.nextVersionNumber == null` 改为 `!online || online.nextVersionNumber === null`
- 去掉宽松相等,同时显式挡掉 online 为空的形态
2026-10-07 10:53:28 +08:00
k88936 30b129fcfe ArtifactsPane 发布按钮文案摊平嵌套三元
- publishLabel 改为 if/else 三态赋值,去掉「正在发布/更新/首次发布」的嵌套三元
- 行为不变,仅满足项目禁止嵌套三元的约定
2026-10-07 10:53:18 +08:00
k88936 3d6795978c multipart 图片文件名按真实内容类型给扩展名
- 新增 multipart_image_file_name,JPEG/WebP/GIF/AVIF 不再统一叫 .png
- 服务端仍按 MIME part 判定,文件名只作为未来消费者可依赖的事实保持一致
- 补扩展名映射单测
2026-10-07 10:52:58 +08:00
k88936 3ecd4efcbb 读取发布图片前先按体积上限失败关闭
- read_draft_image 先看 metadata.len(),超过 8MB(对齐服务端单图上限)直接返回错误
- 避免草稿指向超大本地文件时先把宿主内存读满,再由服务端事后拒绝
- 补稀疏大文件定向测试
2026-10-07 10:51:01 +08:00
k88936 d860b84a02 「回到底部」胶囊改为基于列表可见底边定位
- styles.css 把消息列表改成 flex 列容器并显式 gap: 0——原 gap: 14px 对块级容器无效,改成 flex 后会与子项的 margin 叠成双倍间距
- 列表子项 flex: 0 0 auto 防止内容溢出一屏时被纵向压缩,列表仍是唯一滚动区
- 胶囊 margin-top: auto:内容不足一屏时吃掉剩余空间顶到可见底边,内容溢出一屏时归零、交由 sticky bottom-3 上拉贴底
- DirectProjectScrollToBottomCapsule 增加稳定类名 project-chat-scroll-to-bottom、去掉 mt-1,并更新组件说明
- ADR 第 3 节与备选方案 2 同步新的定位方式
2026-10-07 10:50:04 +08:00
k88936 c95ea8af85 短历史一屏以内时收起悬空的「回到底部」胶囊
- useConversationScroll 新增 syncBottomFromLayout:按真实几何复核 isNearBottom,为真即恢复跟随、收起胶囊并清掉「有新回复」
- 布局补偿、turns 内容变化与 ResizeObserver/MutationObserver 回调都先走一次复核,内容塌回一屏以内不再依赖滚动事件
- 补回归测试:列表内容塌回一屏以内并触发布局变化,没有任何滚动事件也应收起胶囊
- ADR 第 3 节记录贴底判定不能只认 onScroll
2026-10-07 10:49:56 +08:00
k88936 89d0f507e6 修复连续翻页时历史加载行忽隐忽现
- 加载行卸载加入 300ms 隐藏滞回:填充视口的自动加载连续翻页,两次之间只有一次 effect 回流,立即卸载会把加载行一帧内拆了又挂
- conversationScrollPolicy.ts 新增 HISTORY_LOADING_INDICATOR_HIDE_DELAY_MS,与显示延迟 150ms 配对
- useDelayedFlag 增加 hideDelayMs 参数,值转假后延迟再隐藏,转真仍立即显示
- 补回归测试:连续翻页之间小于隐藏延迟的空隙不卸载加载行,真正结束后照常卸载
- ADR 第 1 节记录隐藏滞回的动机与阈值
2026-10-07 10:49:41 +08:00
k88936 3832ca4fab 发布资料摘要给图片字节加长度前缀
- metadata_digest 逐张先写 u64 长度再写字节,分片边界进入摘要
- 否则「封面 [1,2]+截图 [3]」与「封面 [1]+截图 [2,3]」摘要相同,本地幂等账本会误判重放
- 补分片不变性断言
2026-10-07 10:48:16 +08:00
k88936 ab9789d11a 截图槽位空串归一成 null 保留顺序
- normalizeMetadata 不再 filter 掉空串槽位,改为归一成 null(消费草稿本地图)
- 否则后续槽位整体前移,与 .export/taonier.json 的截图顺序错位
- 更新定向测试:空串槽位保留为 null
2026-10-07 10:47:10 +08:00
k88936 99d5fd1eaa 抽取 jsdom 用例共享的内存 Storage
- 新增 tests/memoryStorage.ts 导出 createMemoryStorage,统一 length/key 语义
- jsdomLocalStorageSetup 全局兜底、appSurface/harness、chatPromptPolish 改为导入同一实现
- chatPromptPolish 断言由 Map.size 改为 Storage.length,语义不变
2026-10-07 10:46:21 +08:00
k88936 4cd7843134 AGC 作者预览切到 owner 媒体读路由
- resolve_preview_url 改走 /api/game-distribution/my-games/{gameId}/media/read-url,不再走素材库 /api/assets/read-url
- 新增 owner_media_read_url,复用 endpoint 的路径段转义并编码 objectKey
- 新增路由与编码单测,钉住不再回退素材库 ACL
2026-10-07 10:27:03 +08:00
kdletters fba012b42b 修复真实游戏链路里 CC 执行器的四处阻塞
过程条目 id 按内容块类型区分,同 id 不同内容时补唯一后缀,避免整轮被判过程历史保存失败
资产下载的 fake-IP 窄例外覆盖 RFC 5180 的 IPv6 段,修复双栈解析下平台图片被拒绝下载
给 CC 子进程下发 MCP_TOOL_TIMEOUT,避免分钟级付费生成被 60 秒默认超时取消
复用 Codex 的进程树归属与退出证明,让 CC 回合能写 executor_stopped 并完成交付封口
2026-10-07 08:17:34 +08:00
k88936 afbcc79978 陶泥儿产物按平台发行包上限预检
- build.rs 保留 512 MiB 读取安全线,另按 shared-contracts 的 GAME_DISTRIBUTION_MAX_PACKAGE_BYTES(200 MiB)做预检
- 构建收尾与发布读包两处都预检,超限给「精简资源后重新导出再发布」,不再等上传吃服务端 413
- 新增平台上限单测,并锁定读取安全线必须高于平台上限
2026-10-07 01:26:24 +08:00
k88936 d28b178c04 AGC 真实发布测试迁移到 multipart 媒体合同
- 删除平台素材直传代跑与 coverAssetId 种子,创建游戏/版本改 FormData(metadata + cover part)
- 断言改为创建响应与 frozenMetadata 的 coverObjectKey/screenshots
- 保留分片续传、复用 gameId、重复版本与版本回退等主链证据
2026-10-07 01:19:50 +08:00