Commit Graph

6087 Commits

Author SHA1 Message Date
suzmii cd07b7375a 修复 Repository checks 的 ESLint 报错:import 顺序按 simple-import-sort 归位
Project CI / Backend tests (pull_request) Failing after 22s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 7m33s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 5m30s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m14s
Project CI / Repository checks (pull_request) Failing after 34s
Project CI / Frontend tests (pull_request) Successful in 3m39s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m43s
Project CI / Native shell tests (pull_request) Successful in 9m12s
- CI「Repository checks」红在 lint:eslint:apps/ai-game-creator-shell/src/view/project-development/index.tsx 的 import 顺序未按 simple-import-sort 排序(type 导入与值导入混排)。
- 只调整该文件 import 顺序(1 行),无行为改动;已实跑 npm run lint:eslint(0 problems)、npx prettier --check、homeProjectNamingAsync + projectNamingGenerationTaskRow 15 passed、npm run agc:typecheck。
2026-10-04 18:35:55 +08:00
suzmii ab1045f72d Merge remote-tracking branch 'origin/master' into feat/game-works-management 2026-10-04 18:28:11 +08:00
suzmii 65514328f3 Merge pull request '修复:AGC 工具调用组折叠箭头展开时仍朝下(#617)' (#619) from fix/agc-tool-call-group-chevron into master
Project CI / AI game creator shell Rust crates (push) Successful in 5m29s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 7m33s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 8m17s
Project CI / Backend tests (push) Successful in 7m18s
Project CI / Frontend tests (push) Successful in 3m37s
Project CI / AI game creator shell web tests (push) Failing after 4m3s
Project CI / Repository checks (push) Successful in 7m12s
Project CI / Native shell tests (push) Successful in 9m5s
Reviewed-on: #619
2026-10-04 18:25:07 +08:00
suzmii e593236f9b 公开作品详情页不再显示占位作者名「创作者」,按作者 ID 补查真实昵称
Project CI / Backend tests (pull_request) Failing after 30s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m27s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 5m23s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 4m15s
Project CI / Repository checks (pull_request) Failing after 33s
Project CI / Frontend tests (pull_request) Successful in 3m59s
Project CI / AI game creator shell web tests (pull_request) Successful in 4m10s
Project CI / Native shell tests (pull_request) Successful in 8m37s
- useGameAuthorName.ts(新增):useGameAuthorDisplayName —— 回包名是占位词(「创作者」/「未知作者」)或空时,按 author.id 调 GET /api/auth/public-users/by-id/{id} 取 displayName;查询中返回 null(避免先闪占位词),查不到返回空串、不编造名字
- GameDetailPage.tsx:详情页用解析后的作者名装配展示对象(displayGame),替代直接用公开投影里的 author.name
- packages/shared/src/components/GameDetailDisplay/index.tsx:作者名为空时不渲染「由 X 制作」那一行;头像首字改用 Array.from(name)[0](避免 emoji 代理对被截断);作者行补 title 悬浮显示完整名字
2026-10-04 17:59:02 +08:00
suzmii 2e74092743 发布版本文案去诱导:卡面角标只写最新,面板写明发布固定取最新内部版本
- resourceProjectionModel.ts:publicationTag 注释改为「值是内部版本序数(versions.length),也就是发布时会提交的那个标签」,并注明卡面只渲染中性的「最新」角标,不再写「发布标签 v{N}」
- GameDistributionPublishPanel.tsx:「项目版本」说明注释写明发布提交的标签是 versions.length(最新内部版本序数),不读任何「选中版本」;画布上的选中/「当前版本」只影响当前版本素材与运行播放哪一版
- index.tsx / styles.css:版本卡角标由「最新 · 发布标签 v{N}」改为中性的「最新」,并换用卡面既有的中性 pill 样式
- gameDistributionPublishPanel.test.tsx:同步旧的角标/文案断言
2026-10-04 17:58:50 +08:00
k88936 e91c319aa8 fix(LLM): 「该档无可用模型」补专用变体并统一为 503
- AgcModelResolveError 新增 NoModelForTier,与「某模型不可用」/「档位不够」区分;code() 仍复用 MODEL_UNAVAILABLE
- 代理路径 resolve_requested_for(None, access) 不再折叠成 Unavailable,agc_model_resolve_error 把 NoModelForTier 映射到 503,与 /api/llm/models 列表端点一致(评审第 8 条)
- public_model_catalog 直接复用 agc_model_resolve_error(NoModelForTier),消除手写 503 + 字面量错误码
- 更新 model_access.rs 契约注释与 module-runtime / api-server 测试
2026-10-04 17:41:10 +08:00
suzmii 8ada23ea0e 修复:AGC 工具调用组折叠箭头展开时仍朝下
Project CI / AI game creator shell Rust crates (pull_request) Successful in 6m12s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 7m10s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 8m7s
Project CI / Backend tests (pull_request) Successful in 9m2s
Project CI / Frontend tests (pull_request) Successful in 2m54s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m55s
Project CI / Native shell tests (pull_request) Successful in 6m57s
Project CI / Repository checks (pull_request) Successful in 5m3s
- 删除 .agent-tool-call-group-head[aria-expanded='true'] .agent-tool-call-group-chevron 的 rotate(180deg),消除与共享 AgentProcessSummary wrapper 叠加的 360° 旋转
- 在 .agent-tool-call-group-chevron 上方补注释,写明换向唯一来源在共享 wrapper,避免再次重复旋转
2026-10-04 17:34:27 +08:00
suzmii 160b7e6cfa Merge remote-tracking branch 'origin/master' into fix/home-project-naming-async
Project CI / AI game creator shell Rust crates (pull_request) Successful in 6m11s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m33s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 8m34s
Project CI / Frontend tests (pull_request) Successful in 2m35s
Project CI / Backend tests (pull_request) Successful in 9m11s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m20s
Project CI / Repository checks (pull_request) Failing after 4m28s
Project CI / Native shell tests (pull_request) Successful in 8m8s
2026-10-04 17:25:27 +08:00
suzmii 3dcfbb1d10 合并 origin/master(33552d2ed):文档冲突两边条目都保留
- 冲突仅在 docs/project-memory/shared-memory/decision-log.md 与 pitfalls.md(双方都在文件顶部追加最新条目)。
- 解决方式:两边条目全部保留——本分支的 Issue 599 条目(AI 项目命名解耦 / 生成任务账本 taskType)在前,master 侧的新条目(#604 游戏游玩次数两条、#602 AGC 画布引用、AGC 渠道更新两条)原样保留,逐条核对无丢失。
2026-10-04 17:17:30 +08:00
suzmii 206c625a58 顶栏两端留给两枚大分组:排序分段收行尾,版本入口移到它左边
Project CI / Backend tests (pull_request) Failing after 18s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 3m14s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 5m11s
Project CI / Repository checks (pull_request) Failing after 25s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 6m4s
Project CI / Frontend tests (pull_request) Successful in 2m37s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m9s
Project CI / Native shell tests (pull_request) Successful in 5m32s
- index.tsx:把「依赖 / 类型」分段从动作区中部挪到动作行最后一个子元素,版本入口紧邻其左(版本不再是最右那一枚)
- styles.css:排序分段左边距的注释改成与左邻无关(现在左邻是版本入口)
- 用例:资源版本切换新增顶栏顺序断言(版本入口在排序分段之前、排序分段是动作行行尾);生成任务侧栏用例改判排序分段为动作行最后一个子元素
- 文档:PRD 两端分组条款、验收用例 S16 入口位置、决策记录、改动后对照图与 README 重拍
2026-10-04 17:14:26 +08:00
k88936 55bbf27e8f fix(充值弹窗): 当前档位改从未过滤目录解析
- 有效会员的当前档位被后台临时禁用时,filter 后的 membershipPlans 查不到,状态卡退化成「会员」、按钮变「开通会员」,可在有效会员上重复开通(评审第 5 条)
- 结算弹窗升级摘要的 currentPlan 同样取自过滤列表,禁用档位会丢「原套餐标准价」;改由父组件传入未过滤目录解析出的 currentPlan,并移除弹窗对 membership 的无用依赖(评审第 11 条)
- 新增回归:active 会员 + 当前档 disabled 时仍显示「当前 Plus · 年付」、Max 提供「补差升级」,摘要保留「原套餐标准年价」
2026-10-04 17:12:55 +08:00
k88936 a2f2503647 Merge pull request 'test/静默测试成功用例' (#614) from test/silent-is-gold into master
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 8m6s
Project CI / AI game creator shell Rust crates (push) Successful in 4m6s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 6m54s
Project CI / Frontend tests (push) Successful in 3m17s
Project CI / Backend tests (push) Successful in 7m49s
Project CI / AI game creator shell web tests (push) Successful in 3m13s
Project CI / Repository checks (push) Successful in 6m36s
Project CI / Native shell tests (push) Successful in 9m26s
Reviewed-on: #614
2026-10-04 17:02:12 +08:00
suzmii a554b0c7ca 把 AI 项目命名接进「生成任务」体系:账本 v2 任务类型、命名任务入队与推进、面板命名行
- 账本 v2:记录新增 taskType(asset-generation / project-naming,缺省 asset-generation,旧壳按素材任务读回),kind 改为可选;schema 升 agc-asset-generation-task.v2,读取同时接受 v1 与 v2。
- 新增 enqueue_local_project_naming_task / update_local_project_naming_task:命名任务入队时登记 live、终态写盘后摘除(写盘失败只回滚本轮插入),中断残留按命名口径收口为 failed(文案不含「目标素材」)。
- 首页命名链路改为推进这条任务:入队 → 命名中 → 已完成(已应用 AI 名称 / 建议名与现状一致 / 用户已手动改名而跳过)或失败(无可用名称 / 自动改名失败,均保留兜底名);账本只作展示旁路,推进失败只写诊断日志。
- 前端模型与面板支持命名行:按 taskType 把命名记录从素材任务分支剔除,命名行固定展示名「AI 项目命名」、只在终态显示结论、不渲染缩略图/提示词/定位动作;命令名写字面量以满足 check-config 静态枚举门禁。
- 工作台订阅账本变更事件做一次受控快照读取刷新命名行(不新增固定频率轮询);另修:命名行的 useLiveNow 收进独立组件,避免行种类变化导致 hooks 数量变化。
- 测试:homeProjectNamingAsync 12 例(新增入队→命名中→终态推进序列断言)、projectNamingGenerationTaskRow 3 例、appSurface 建项后命名行可见 + 事件刷新出终态结论 + 标题/列表同步;Rust asset_generation_task 22 例(含 naming_task_stays_in_flight_across_ledger_reads_until_terminal、legacy_v1_ledger_reads_back_*)。
- 文档:decision-log 改写为「生成任务体系里的后台任务」、pitfalls 新增 taskType/live 集合条目、实施计划专题补任务接入口径。
- 门禁:AGC 全量 1925 passed / 17 skipped;cargo 定向 22 + 6;npm run agc:typecheck(含 check:tests:types 与 check-config);cargo fmt --check;check:encoding;git diff --check。
2026-10-04 16:59:59 +08:00
suzmii aa4d178956 去掉与 master 重复的游戏评价页排布实现
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 5m57s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m42s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 4m50s
Project CI / Frontend tests (pull_request) Successful in 3m30s
Project CI / Backend tests (pull_request) Successful in 7m0s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m47s
Project CI / Native shell tests (pull_request) Successful in 7m59s
Project CI / Repository checks (pull_request) Successful in 6m43s
- AdminGameReviewsPage.tsx:删除我们新增的重复 tableClassName(master 已在同一组件上有一份,保留 master 那处),保证同名 JSX 属性只剩一处
- AdminGameReviewsPage.tsx:操作列 td 去掉 className="admin-game-reviews-actions-cell"(该 class 的唯一样式来源已随本提交删除,留着就是死代码)
- styles/admin.css:整段删除我们尾部新增的平行实现(.admin-game-reviews-table th:last-child 与 .admin-game-reviews-actions-cell .admin-action-row 的 width/nowrap/flex-end)
- 保留 master 的评价列表排布体系:.admin-game-reviews-table .admin-status、td:last-child .admin-action-row{flex-wrap:nowrap;justify-content:flex-start} 与 >button{flex-shrink:0}
- 自证:tableClassName="admin-game-reviews-table" 命中 1 处;admin-game-reviews-actions-cell 命中 0 处
2026-10-04 16:37:56 +08:00
k88936 a79b9e9f9c Merge branch 'master' into test/silent-is-gold
Project CI / AI game creator shell Rust crates (pull_request) Successful in 6m7s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m52s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 8m6s
Project CI / Backend tests (pull_request) Successful in 8m51s
Project CI / Frontend tests (pull_request) Successful in 2m49s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m14s
Project CI / Native shell tests (pull_request) Successful in 7m46s
Project CI / Repository checks (pull_request) Successful in 6m8s
2026-10-04 16:31:59 +08:00
suzmii ee6f1d43c9 Merge remote-tracking branch 'origin/master' into feat/game-works-management 2026-10-04 16:23:57 +08:00
suzmii 620ac52461 后台游戏审核页展示游戏名与作者,不再只显示 gameId
- AdminGameDistributionReviewPage.tsx:待审列表只回版本字段,新增 resolveGameMeta 用既有后台作品列表接口按 gameId 反查标题/作者,逐游戏去重并按会话缓存;单个游戏取不到只回落显示 gameId,不阻断审核列表
- 同文件:loadReviews 在拿到 entries 后并行补齐本页 distinct gameId 的元数据
- 同文件:游戏列由单个 gameId 文本改为「游戏名(主行)+ 作者名与 user_id(副行,截断显示,完整值放 title)」
- adminGameDistributionReview.css:以 .admin-game-review-game 网格布局替换 .admin-game-review-game-id,保留窄视口截断与 title 出口
- AdminGameDistributionReviewPage.test.tsx:补 listAdminGameDistributionGames 的 mock 与游戏列表 fixture,断言由 gameId 改为游戏名
2026-10-04 16:15:24 +08:00
suzmii 137898d182 游戏评价页操作列按内容取宽,避免按钮换行错行
- AdminGameReviewsPage.tsx:评价列表加 tableClassName="admin-game-reviews-table",操作列单元格加 admin-game-reviews-actions-cell(与游戏管理页操作列同口径)
- styles/admin.css:新增本页专属规则,操作列 width:1% + white-space:nowrap,动作行 flex-wrap:nowrap 并右对齐,避免「删除 / 查看详情 / 隐藏」被挤到第二行
- 选择器全部框在 .admin-game-reviews-table 内,不影响其它后台页面
2026-10-04 16:15:18 +08:00
k88936 9476290c4b refactor(LLM): 列表无可用模型时复用 AgcModelResolveError 的错误码
- public_model_catalog 里硬编码的 MODEL_UNAVAILABLE 与 AgcModelResolveError::Unavailable.code() 重复
- 改为直接取枚举 code(),与 MODEL_ACCESS_UNAVAILABLE 的既有做法一致,避免两处字符串漂移
2026-10-04 16:01:13 +08:00
k88936 1e90254d0a perf(泥点): 复用模块级 Intl.DateTimeFormat 格式化刷新时刻
- formatMudPointResetAt 原先每次调用都新建 Intl.DateTimeFormat,而它跑在多个渲染路径里
- locale / 时区 / 字段恒定,提升为模块级常量 MUD_POINT_RESET_FORMATTER 复用,输出不变
2026-10-04 15:57:22 +08:00
suzmii 9eb537c6ff 运行视图没有画面时自动补一次载入(进入项目/切项目的运行页空态)
- index.tsx:新增 autoRunPreviewProjectRef 记账,站在运行视图却没有可嵌入预览且可运行时自动补发一次 onPlay,同一个项目只补一次
- index.tsx:showRunView 先记账再发播放,避免点页签时被自动补发重复触发一次
- 用例:新增 runAutoLoadOnEnter(切项目自动补发一次、同项目不重复、点页签只发一次、有活体预览时不补发)
- 文档:PRD 顶栏条款、验收用例 S17 判据、decision-log 同步自动载入口径
2026-10-04 15:56:41 +08:00
k88936 b431eb6074 refactor(钱包 store): 抽出余额就绪态统一构造,消除重复 set
- applyWalletBalanceSnapshot 与刷新循环各自重复「resolve 视图 + 写 4 个 ready 字段」
- 抽出 readyWalletBalanceState 统一派生 totalPoints / status / error,两条路径不再有漂移风险
- 行为不变(注:本文件既有的 rejects a snapshot from another owner 用例在改动前后均失败,与本次无关)
2026-10-04 15:55:38 +08:00
k88936 9e13b83171 refactor(充值弹窗): 摊平套餐卡片里的嵌套三元价格行
- 原年付实付文案在模板字符串里再嵌一层 savingCents 三元,属于嵌套三元
- 把年付价格行提升为 annualPriceLine 常量,JSX 只保留 annual 单层分支,文案不变
2026-10-04 15:52:29 +08:00
k88936 b5a39f425e Merge remote-tracking branch 'origin/master' into test/silent-is-gold
Project CI / Backend tests (pull_request) Failing after 34s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 5m7s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m13s
Project CI / Repository checks (pull_request) Failing after 21s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 7m3s
Project CI / Frontend tests (pull_request) Successful in 2m30s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m4s
Project CI / Native shell tests (pull_request) Successful in 9m0s
2026-10-04 15:51:59 +08:00
k88936 84c30b680c 配置:CI 测试成功静默改用 cargo/node 原生 quiet
- .gitea/workflows/project-ci.yml:全局加 CARGO_TERM_QUIET=true,cargo test 成功只打点号、失败才列用例名。
- scripts/build-gitea-rust-cache.sh:预热脚本同步 CARGO_TERM_QUIET=true,与 workflow 的 Cargo 环境一致。
- package.json:agc:plugins:test 改用 node --test --test-reporter=dot。
- apps/ai-game-creator-shell/package.json:bundled-resources:test 改用 node --test --test-reporter=dot。
- scripts/check-native-shells.mjs:去掉每个 step 的成功进度标签,失败时才打印标签。
- scripts/project-ci-workflow.test.ts:移除 silent: true 守护用例。
- docs/project-memory/shared-memory/decision-log.md:移除本次静默决策条目。
- docs/project-memory/shared-memory/development-workflow.md:移除本次静默说明段落。
2026-10-04 15:49:34 +08:00
k88936 349af04034 refactor(充值弹窗): 摊平结算弹窗里的嵌套三元 listPriceCents
- 原写法 plan / annual 两层三元叠加,扩展条件时容易漏分支
- 改为按 annual 分支 + 可选链与 ?? 兜底,保持 plan 为空时取 0 的语义不变
2026-10-04 15:49:31 +08:00
k88936 87f3cd4462 test(AGC): 去掉 findBy 查询后多余的 not.toBeNull 断言
- findBy* 在超时后会直接抛错,末尾的 .not.toBeNull() 永远看不到 null
- 充值弹窗用例内的 dialog / 「可用总额」断言改为直接 await,保持意图清晰
2026-10-04 15:48:35 +08:00
k88936 5d375332c9 chore(格式): 合并 .prettierignore 中重复的 ts-rs 生成产物忽略项
- packages/shared/src/contracts/generated/ 原先重复出现两次,两条中文注释描述同一理由
- 合并为单条忽略项与合并后的注释,避免后续误删其中一条造成 prettier 二次改写生成绑定
2026-10-04 15:44:59 +08:00
suzmii 7c5bcc4fb0 内部版本登记后立即宣告清单失效,版本卡不再需要重开项目才出现
- 根因:版本追加只写盘、不发「清单已变」事件,而前端被当作「回合结束刷新」的那次调用实际发生在入队时(useDirectProjectChatController.ts:588-592 紧跟 startTurn 的 finally,await 的只是 enqueue_direct_codex_turn),于是 agent 追加版本后无人重读清单,新卡必须先重开项目才出现(旁证:resource-layouts/dependency.json 里 74 分钟缺该版本,直到重开项目才补齐)
- 修复:版本真正追加成功时才 emit_game_creator_manifest_invalidated(root, "direct-codex.version")(与素材工具桥同口径),订阅侧立刻重读清单
- 版本卡显示顺序:orderIndex(内部版本序数)+ compareResourceOrder,修正初始版本被排到最后(4 版读作 2/3/4/1 → 现为 1..N 单调);不带 orderIndex 的资源排序与坐标逐值不变
- 最新版本卡角标:`最新 · 发布标签 v{N}`(只给 versions 最后一条,N = versions.length = 发布面板取的标签)
- 发布面板文案:「本次发布标签 = 最新内部版本 v{N};agent 再改进一次后,下一次发布将是 v{N+1}」,并保留「平台线上号是平台侧事实、与本标签互不推导」
- 验证:vitest apps/ai-game-creator-shell/tests 1935 passed / 0 failed;cargo check(带编辑器 feature)通过;encoding / typecheck 通过;真机未验(环境重新拉起前无法核验,待补)
2026-10-04 15:13:31 +08:00
suzmii 2f6df57ce2 Merge remote-tracking branch 'origin/master' into feat/game-works-management
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m32s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 5m5s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 3m33s
Project CI / Frontend tests (pull_request) Successful in 3m39s
Project CI / Backend tests (pull_request) Successful in 6m49s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m39s
Project CI / Repository checks (pull_request) Successful in 6m43s
Project CI / Native shell tests (pull_request) Successful in 7m39s
# Conflicts:
#	docs/project-memory/shared-memory/decision-log.md
#	docs/【后端架构】server-rs与SpacetimeDB数据契约-2026-05-15.md
#	server-rs/crates/api-server/src/modules/game_distribution.rs
#	server-rs/crates/spacetime-client/src/active.rs
#	server-rs/crates/spacetime-module/src/game_distribution.rs
#	src/components/game-distribution/GameDistributionPages.test.tsx
2026-10-04 15:00:23 +08:00
lhk229 33552d2ed6 修复游戏评价操作列左对齐
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m48s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 5m58s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 4m7s
Project CI / Frontend tests (pull_request) Successful in 3m37s
Project CI / Backend tests (pull_request) Successful in 6m44s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m52s
Project CI / Native shell tests (pull_request) Successful in 7m24s
Project CI / Repository checks (pull_request) Successful in 6m52s
Project CI / AI game creator shell Rust crates (push) Successful in 2m47s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 5m25s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 4m47s
Project CI / Frontend tests (push) Successful in 3m44s
Project CI / Backend tests (push) Successful in 6m39s
Project CI / AI game creator shell web tests (push) Successful in 2m52s
Project CI / Repository checks (push) Successful in 6m24s
Project CI / Native shell tests (push) Successful in 7m25s
将评价列表操作按钮与操作列头左对齐
同步评价列表布局规范
2026-10-04 07:52:24 +01:00
suzmii 0e75d132a7 修正运行页刷新用例的 preview 类型:改用 GameCreationAppPreviewState
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m59s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 4m13s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 5m20s
Project CI / Backend tests (pull_request) Successful in 6m36s
Project CI / Frontend tests (pull_request) Successful in 3m15s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m16s
Project CI / Native shell tests (pull_request) Successful in 7m14s
Project CI / Repository checks (pull_request) Successful in 6m4s
- runPreviewRefresh 的 preview 形参从自造字面量类型改为契约类型,避免 status 被放宽成 string 与 view 的 props 冲突(tsconfig.tests.json 才会覆盖 tests/ 目录,此前只跑 tsc -p tsconfig.json 漏检)
- 已跑 npm run ai-game-creator-shell:typecheck(含 check:tests:types)与定向用例确认通过
2026-10-04 14:48:28 +08:00
lhk229 a1b80ffde9 修复后台游戏评价状态与操作按钮换行
Project CI / AI game creator shell Rust crates (pull_request) Successful in 3m12s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / Backend 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 CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
为游戏评价列表增加专属表格样式类
状态胶囊保持单行,操作按钮禁止换行和压缩
同步后台评价列表布局规范
2026-10-04 07:47:13 +01:00
suzmii 2bfc62f695 文档:同步 AGC 顶栏布局口径与改动后对照图
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m37s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 6m12s
Project CI / Native shell tests (pull_request) Failing after 1m47s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 4m28s
Project CI / AI game creator shell web tests (pull_request) Failing after 1m2s
Project CI / Frontend tests (pull_request) Successful in 2m34s
Project CI / Backend tests (pull_request) Successful in 6m8s
Project CI / Repository checks (pull_request) Successful in 4m20s
- PRD 顶栏条款改为一行到底 + 三档降级 + 运行页签即播放入口 + 运行画面刷新入口
- 验收用例 S17 改为「运行」页签入口语义,新增 S17a 刷新运行画面(含排障索引与验收记录表)
- decision-log 新增 2026-10-04 顶栏布局决策(档位判据、两处「吞掉溢出」的坑、验证范围)
- docs/README.md 索引新增改动后对照图;新增 docs/technical/assets/agc-toolbar-layout-after-20261004/(4 张真实 Chromium 实测截图)
2026-10-04 14:12:25 +08:00
suzmii b8849b8c01 优化 AGC 工作台顶栏布局:一行到底、版本入口钉右分级、播放并入运行页签
- 顶栏去掉两侧 flex-wrap、工具条改 overflow: hidden,空间不足按 data-layout 三档降级而不是换行
- 新增 workbenchToolbarModel(档位顺序与 1px 判据)与 useWorkbenchToolbarLayout(ResizeObserver 管宽度、MutationObserver 管内容,实测内容宽度写档位)
- 版本入口 margin-left: auto 钉在动作区最右,标识改「版本 N(原因 · 时间)」,窄档只留「版本 N」(序号复用资源画布版本卡编号口径)
- 新增 WorkbenchMoreActionsMenu:「打开项目目录 / 资源面板 / 整理画布」在 collapsed-actions 档收进「更多」下拉
- 删除独立「播放」按钮,运行页签前加 ▶ 图标,点页签即切视图并载入游戏资源
- 运行画面右下角新增「刷新运行画面」,LocalGamePreviewFrame 新增 reloadNonce 换 iframe 元素身份重新载入页面
- 用例:新增 workbenchToolbarLayout / runPreviewRefresh;改写 appSurface 顶栏与播放/刷新断言、版本标识断言与顶栏样式断言
2026-10-04 14:04:02 +08:00
k88936 8e304f2b22 配置:CI 测试固定 silent: true,统一静默成功用例输出
Project CI / Backend tests (pull_request) Failing after 35s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m37s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 6m43s
Project CI / Repository checks (pull_request) Failing after 26s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 4m46s
Project CI / Frontend tests (pull_request) Successful in 2m50s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m9s
Project CI / Native shell tests (pull_request) Successful in 5m44s
2026-10-04 13:38:51 +08:00
k88936 0b687651a2 Merge pull request 'Feat/pricing plan limit' (#603) from feat/pricing-plan-limit into feat/pricing-plan
Project CI / Backend tests (pull_request) Failing after 33s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m56s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 6m38s
Project CI / Native shell tests (pull_request) Failing after 1m34s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 3m52s
Project CI / Repository checks (pull_request) Failing after 34s
Project CI / Frontend tests (pull_request) Failing after 1m26s
Project CI / AI game creator shell web tests (pull_request) Failing after 1m13s
Reviewed-on: #603
2026-10-04 13:36:50 +08:00
k88936 620f6ca938 fix(AGC): 目录缺 unavailableModels 时不再崩溃
Project CI / Backend tests (pull_request) Failing after 1m26s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 3m5s
Project CI / Native shell tests (pull_request) Failing after 2m18s
Project CI / Frontend tests (pull_request) Failing after 1m7s
Project CI / Repository checks (pull_request) Failing after 1m15s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 5m3s
Project CI / AI game creator shell web tests (pull_request) Failing after 58s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
- applyCatalog 归一化 catalog.unavailableModels,修掉按 reason 取降级文案时对 undefined 解引用(此前 26 个用例挂在这)
- 用例跟进新降级文案;disabled 用例补上下线桶,断言「该模型已下线」专用文案
2026-10-04 13:29:32 +08:00
k88936 c391352ff4 fix(会员): 并发上限按有效档位解析,过期会员回落 Normal
- effective_profile_concurrent_job_limit 原先直接读 profile_membership.plan;该列到期后仍保留最近购买档位,过期 Max 会继续拿 128 不限并发哨兵
- 补 expires_at 有效性过滤,与 build_profile_membership_snapshot_from_row 的对外口径一致;缺会员行 / 已过期按 Normal
2026-10-04 13:29:32 +08:00
k88936 964948bed2 fix(会员): 模型权限读链路失败改报独立 503 错误码
- 新增 MODEL_ACCESS_UNAVAILABLE(503),与 403 档位不足 / 422 模型不可用区分,不再把付费账号静默降级成 Basic
- resolve_owner_agc_model_access 返回 Result 并由 load_owner_llm_catalog 透传;缺会员行 / 缺目录行仍由 module 内失败关闭并返回成功
- 入口注释列出三类错误码语义;补错误码映射单测
2026-10-04 13:29:32 +08:00
k88936 6ed5d8fe88 style(AGC): 锁定模型原因提示允许换行避免溢出
- 气泡 width:max-content + max-width:220px 配 white-space:nowrap,长文案会溢出气泡
- 改为 white-space:normal,在 220px 内换行
2026-10-04 13:29:32 +08:00
k88936 7de5b858ec fix(AGC): 不可用模型选项补回模型名到可访问名称
- role=option 的 aria-label 原只放降级原因,覆盖了可见模型名,读屏只报「订阅计划不支持」
- 改为 `${displayName}:${reasonLabel}`,名称与原因都可被朗读
2026-10-04 13:29:32 +08:00
k88936 b46c0be9ce perf(会员): 模型目录与账号权限档并发读取
- load_owner_llm_catalog 原串行等待目录与权限档两次 SpacetimeDB 往返,热路径延迟叠加
- 改为 tokio::join! 并发发起;目录错误仍由 catalog? 返回,权限档失败关闭语义不变
2026-10-04 13:29:32 +08:00
k88936 2e13334fd7 perf(会员): 在飞 running 计数下推到 owner_status 索引范围
- count_running_external_generation_jobs_for_owner 原先把 status 当 Rust 后置过滤,owner 的 pending 积压也会被物化
- 改为 (owner_user_id, status) 复合条件,直接走 btree 范围,语义不变
2026-10-04 13:29:32 +08:00
k88936 181d72064c fix(AGC): 默认模型解析复用档位可用校验
- resolve_requested_for 的默认分支原只校验 enabled,补回 access.allows 校验,避免默认模型解析与档位边界不一致
2026-10-04 13:29:32 +08:00
k88936 ce464168ce docs(会员): 标注外部生成认领的跨账号队头阻塞 TODO
- claim_external_generation_jobs_tx 的 take(limit) 只检查前 limit 行,被上限拦下/lease 终结的行仍占检查名额
- 记录触发条件(负载越高 limit 越小)与未决修法(改为成功认领才计数,仍是全局 FIFO),本次不修
2026-10-04 13:29:32 +08:00
k88936 93fc9f98ba feat(AGC): 模型选择器展示不可用模型与降级原因
- clientApi/llmModelCatalog 改用 @genarrative/shared 生成类型,自定义目录补 unavailableModels 空桶与 protocol
- 新增 modelAvailabilityCopy.ts:锁定项原因文案与按 reason 的降级提示
- ConversationModelSelect 渲染锁定项(不可点、可 focus、data-tooltip),降级提示按 reason 取值
- styles.css 补锁定项与 tooltip 样式(仅 hover / focus-visible)
- 新增 vitest 覆盖文案映射与锁定项渲染,vitest.config 纳入 features/project-workspace 用例
2026-10-04 13:29:32 +08:00
k88936 9437b71aee feat(AGC): 模型目录 wire 复用 shared-contracts DTO
- llm_catalog.rs 删掉手写 WireModelCatalog/WireModelSummary 与 map_catalog,直接反序列化 LlmModelsResponse
- 旧服务端缺 agentMode/protocol/unavailableModels 时按 Codex + OpenAI Responses + 空桶兼容
- 新增未知 reason 收口为 unknown 且 agentMode/protocol 解析为枚举的单测
2026-10-04 13:29:32 +08:00
k88936 f3f89efddd feat(shared): 转发 AGC 模型目录 ts-rs 绑定
- 新增 packages/shared/src/llm/modelCatalog.ts,re-export Rust 生成的目录 DTO 与枚举
- 根 index.ts 增加 export type * from './llm/modelCatalog',AGC 从 @genarrative/shared 根导入
2026-10-04 13:29:32 +08:00
k88936 e89420053a feat(会员): 模型列表返回可用与不可用分桶
- shared-contracts 新增 llm_catalog.rs:LlmModelsResponse/LlmModelSummary/LlmUnavailableModel/LlmModelUnavailableReason(plan_required/disabled/unknown),未停用优先于档位的 disabled 语义留给域层
- AgcAgentMode/AgcModelProtocol 从 module-runtime 迁入 shared-contracts(前后端 + ts-rs 单一真源),module-runtime re-export 保持路径可用
- 整个目录 DTO 与枚举走 ts-rs,生成到 packages/shared/src/contracts/generated,revision 标 number
- module-runtime 新增 AgcModelCatalog::unavailable_models_for(access):保持目录顺序,停用优先于档位不足,补单测
- api-server public_model_catalog 产出 models + unavailableModels 两桶,重写 model_catalog_tests
2026-10-04 13:29:29 +08:00