k88936
|
cb57e59ec4
|
图片预览文案按封面/截图语境区分
- IconPreview 增加可选 labels,缺省仍是小红书「图标」文案
- FormCard 的封面与截图预览各自传入封面/截图语义的 alt、title 与 aria
|
2026-10-07 14:16:44 +08:00 |
|
k88936
|
edaf8896e1
|
发布封面导入器收敛为单选
- 新增 COVER_IMPORTER_SETTINGS(maxItems: 1),FormCard 封面导入改用该设置,避免多选后静默丢弃其余图片
|
2026-10-07 14:16:15 +08:00 |
|
k88936
|
5bc52a3441
|
陶泥儿发布跨项目不再串状态
- useTaonierTab 增加 projectPathRef,在打包/订阅/发布各 await 之后与进度回调里比对当前项目,避免旧项目进度、结果与失败落进新项目面板
|
2026-10-07 14:14:18 +08:00 |
|
k88936
|
86649e50a7
|
重新构建时清除失败忽略指纹
- buildOnce 在 setFailure(null) 前 setDismissedFailure(''),显式重跑失败仍会重新弹出弹窗
|
2026-10-07 14:13:33 +08:00 |
|
k88936
|
8e3f0b8920
|
导出校验改用落盘后的权威表单
- packageAll 的本地校验改用 effectiveFormRef.current ?? form,避免 refresh/flush 后仍用陈旧闭包放行盘上的非法值
|
2026-10-07 14:13:16 +08:00 |
|
k88936
|
9a653c8382
|
陶泥儿导出收敛为单一发布入口并把线上值内联到字段
- 移除独立「打包」按钮与「发行包」卡片,发布入口不套卡片,内部先跑打包
- 线上值逐字段内联到对应输入框下方,退役 OnlineValuesCard
- 线上值进项目自动读取,失败按固定间隔静默自动重试,去掉「重新读取」手动入口
- 读取失败时提示正在自动重试,发布入口保持停住
- 同步陶泥儿面板测试与技术方案/实施计划文档
|
2026-10-07 14:09:26 +08:00 |
|
k88936
|
9512842050
|
发布图片读取改用 no-follow 句柄并限长读入
- read_publish_image 用 OpenOptions + O_NOFOLLOW 打开,按句柄 metadata 判上限后再 take 限长读取,关掉体积与符号链接 TOCTOU
|
2026-10-07 14:06:15 +08:00 |
|
k88936
|
3a67580956
|
项目校验脚本漂移比较忽略首尾空白
- resolve_project_verification_spec 对 actual/expected command 都做 trim,避免 package.json 脚本带首尾空格或换行时被误判成「脚本已变化」
|
2026-10-07 14:04:48 +08:00 |
|
k88936
|
2ab7717a2c
|
陶泥儿构建命令的项目根校验挪到 spawn_blocking
- run_build 不再在 Tokio worker 上做同步文件 IO 与 Windows ACL 修复,与同模块其它 IO 一致
|
2026-10-07 14:03:09 +08:00 |
|
k88936
|
ba9d70a5b6
|
陶泥儿产物读取改用 no-follow 打开
- read_package_bytes 用 OpenOptions + O_NOFOLLOW / FILE_FLAG_OPEN_REPARSE_POINT,关掉 symlink_metadata 检查后到打开之间被换成符号链接的 TOCTOU 窗口
|
2026-10-07 14:02:21 +08:00 |
|
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 |
|