Commit Graph

5956 Commits

Author SHA1 Message Date
k88936 6d9125586a 文档(AGC模型): access 字段注释改为访问级别
- AdminAgcModel.access 与 AgcModel.access 的注释不再写成「会员档位」,避免与会员 plan 档位混淆
2026-10-05 12:01:43 +08:00
k88936 8bc48e9e61 修复(会员账期): 北京时间年份越界先收口再进历法换算
- beijing_local_micros 增加 ±292_278 年范围检查,避免 days_from_civil 内部 i32 乘法溢出
- 补充 10_000_000 年等溢出用例
2026-10-05 12:01:32 +08:00
k88936 0c9a16ba1a 修复(AGC模型): 未知权限档反序列化失败开放为 basic
- AgcModelAccess 将 Basic 放到最后一个变体并加 #[serde(other)],未知 access 不再让整份目录解析失败
- 补充未知 access 反序列化回退 Basic 的单测
2026-10-05 12:01:12 +08:00
k88936 d3f02d6bc9 修复(充值弹层): 泥点档位禁用范围收敛到泥点商品
- submittingProductId 现与会员下单共用,仅当提交的是泥点商品时才禁用整组泥点档位,避免会员提交期间跨页签耦合
2026-10-05 11:59:47 +08:00
k88936 f0dfddb910 修复(充值弹层): 未选中时左方向键回卷到最后一项
- resolveRovingIndex 的 currentIndex 允许为 -1,ArrowLeft 特判为 length-1,避免落到倒数第二项
2026-10-05 11:59:32 +08:00
k88936 5d2de88a40 修复(充值弹层): 当前档位缺失时禁用会员下单
- resolveMembershipPlanAction 在有效会员查不到当前档位时返回「套餐信息缺失」并禁用,避免误判为新客对所有档位开放购买
2026-10-05 11:59:12 +08:00
k88936 ff2bd5b57a 修复(用户详情): 会员状态按中文展示名渲染
- membershipDisplay 新增 formatMembershipStatus(normal→非会员、active→生效中,未知值原样返回)
- AdminUserDetailDialog 不再直接渲染后端 status token
2026-10-05 11:58:52 +08:00
k88936 589a2623a3 清理(后台假数据): 移除充值商品已退役的会员字段
- ProfileRechargeProductConfigAdminResponse 已无 tier/membershipPeriodPoints 等字段,假数据同步删除,避免掩盖前后端漂移
2026-10-05 11:57:48 +08:00
k88936 0a6c70a64f 修复(会员档位): 未知档位 code 回退展示原始值
- 列表与「最近保存」改用 formatMembershipPlan,未知 plan 不再渲染成空白
2026-10-05 11:57:39 +08:00
k88936 6e419d0d80 清理(后台工具): 删除无调用方的 parseNonNegativeIntegerOrZero
- 该函数与 parsePositiveIntegerOrZero 行为一致且无任何调用点,删除死代码
2026-10-05 11:57:28 +08:00
k88936 5a776f61ce 修复(充值商品): 保存前校验价格分与基础泥点为正整数
- AdminRechargeProductPage 改用严格 parsePositiveInteger 解析价格分与基础泥点
- 空串/非法输入直接提示表单错误,不再静默落库成 0 价或 0 泥点商品
2026-10-05 11:55:40 +08:00
k88936 48b6880955 修复(后台导航): 会员档位路由补入充值分组
- 将 membership-plans 加入 adminNavGroups 的 billing 分组,桌面端侧边栏不再漏掉「会员档位」入口
2026-10-05 11:55:29 +08:00
k88936 a48b7f8de8 Merge remote-tracking branch 'origin/master' into feat/pricing-plan
Project CI / Backend tests (pull_request) Failing after 48s
Project CI / Native shell tests (pull_request) Failing after 3m50s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 5m21s
Project CI / Frontend tests (pull_request) Failing after 47s
Project CI / AI game creator shell web tests (pull_request) Failing after 39s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m6s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 7m23s
Project CI / Repository checks (pull_request) Successful in 6m31s
# Conflicts:
#	docs/project-memory/shared-memory/decision-log.md
2026-10-05 10:50:30 +08:00
k88936 264f214fe5 docs(会员计费): 同步评审第 13–20 项的契约与实现口径
Project CI / Backend tests (pull_request) Failing after 28s
Project CI / Native shell tests (pull_request) Failing after 2m6s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 3m17s
Project CI / Frontend tests (pull_request) Failing after 45s
Project CI / Repository checks (pull_request) Failing after 18s
Project CI / AI game creator shell web tests (pull_request) Failing after 41s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 4m19s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 4m55s
- 后端架构文档:充点商品写入口收敛为 9 个字段,退役列保留且写死 0;首充赠送统一为 0
- 技术设计 §2.5/§5.7:补 ProfileMembershipStatusToken 与 5 个 token 枚举的 ts-rs 生成说明
- 技术设计 §11.4:AgcModelResolveError 增 NoModelForTier,模型解析错误统一走 typed AppError
- 决策记录:新增第 13–20 项收口条目,含影响范围与验证结论
2026-10-04 21:56:26 +08:00
k88936 14c147722a fix(会员结算): cycle_index==0 迁移行按 max(1) 归一,避免误判状态已变化
- frozen_membership_cycle_matches 比较双方都按 max(1) 归一(评审第 20 条)
- 存量 cycle_index 为 0 的会员行与投影的 Some(1) 快照现在判定一致,不再永久返回「会员状态已变化,请重新下单」
- 扩展 frozen_membership_cycle_identity_rejects_advanced_cycle 覆盖迁移行;已验证去掉 max(1) 时用例失败
2026-10-04 21:51:42 +08:00
k88936 284b656b59 fix(充值商品): 移除已退役的 bonus_points / duration_days 入参
- 后台 upsert 请求 DTO 与 SpacetimeDB procedure 入参移除 bonus_points、duration_days(评审第 19 条)
- 充点商品固定「¥1 = 10 泥点、无首充赠送」,module 落库统一写 0,保留退役列兼容存量 schema
- 删除 InvalidRechargeProductFields 校验与错误文案;api-server / spacetime-client 同步收敛
- admin-web 表单移除「首充赠送」输入与状态,列表改为只展示基础泥点
- scripts/admin-web-fake-api.mjs 假数据同步 bonusPoints: 0
2026-10-04 21:33:39 +08:00
k88936 dcaab089cc refactor(后台契约): AdminAgcModel.access 改 ProfileMembershipModelAccessToken
- shared-contracts 的 AdminAgcModel.access 由裸 String 改为 ProfileMembershipModelAccessToken,未知值在反序列化阶段被拒(评审第 18 条)
- module-runtime 补 AgcModelAccess <-> ProfileMembershipModelAccessToken 双向 From
- api-server 的 agc_models 去掉 AgcModelAccess::parse 兜底,改直接 From
- admin-web 的 AdminAgcModelAccess 改为复用 @genarrative/shared 生成类型
- 扩展 catalog_dto 测试断言缺省 Basic 与未知 access 反序列化失败
2026-10-04 20:58:21 +08:00
suzmii 6c95660588 Merge pull request '优化 AGC 工作台顶栏布局:一行到底、版本入口钉右分级、播放并入运行页签(Issue #613)' (#615) from fix/agc-toolbar-layout into master
Project CI / AI game creator shell Rust crates (push) Successful in 6m22s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 7m32s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 8m17s
Project CI / Backend tests (push) Successful in 9m12s
Project CI / Frontend tests (push) Successful in 4m13s
Project CI / AI game creator shell web tests (push) Successful in 4m34s
Project CI / Repository checks (push) Successful in 8m36s
Project CI / Native shell tests (push) Successful in 10m32s
Reviewed-on: #615
2026-10-04 20:04:30 +08:00
suzmii 29f7d157cd Merge pull request '作品管理与Phaser4客户端发布' (#565) from feat/game-works-management into master
Project CI / Native shell tests (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / AI game creator shell Rust lane 1/2 (push) Has been cancelled
Project CI / AI game creator shell Rust crates (push) Has been cancelled
Project CI / Backend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (push) Has been cancelled
Reviewed-on: #565
2026-10-04 20:03:38 +08:00
k88936 6424ad7e75 fix(LLM 代理): Chat Completions 透传类型化错误,保留权限码
- resolve_llm_router_client 返回 Result<_, AppError> 而非 String(评审第 17 条)
- load_owner_llm_catalog 的 503 + MODEL_ACCESS_UNAVAILABLE 不再被拍平成「模型目录暂不可用」
- resolve_requested_for 错误改走 agc_model_resolve_error,与 proxy_llm_responses / proxy_llm_messages 契约一致
- LlmConfig / LlmClient 构造失败按 500 返回;调用方直接 llm_error_response 透传
2026-10-04 19:56:16 +08:00
k88936 b97d559782 fix(会员账期): 极端锚点推进月份饱和而非 panic
- advance_beijing_months_clamped 去掉 beijing_local_micros 后的 expect,改为安全年份区间 + unwrap_or 按方向饱和(评审第 16 条)
- 目标年份超出 i64 微秒可表示范围(约 ±29 万年)时返回 i64::MAX / i64::MIN,避免历法乘法与 checked_* 溢出 panic
- 新增 advance_saturates_instead_of_panicking_on_extreme_anchors 覆盖 i64::MAX / i64::MIN / u32::MAX
2026-10-04 19:47:38 +08:00
suzmii 42364befb1 同步发布面板测试:删除已废弃的「按首版」提示断言
Project CI / AI game creator shell Rust crates (pull_request) Successful in 6m9s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 7m26s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 8m16s
Project CI / Backend tests (pull_request) Successful in 8m52s
Project CI / Frontend tests (pull_request) Successful in 2m58s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m59s
Project CI / Native shell tests (pull_request) Successful in 7m10s
Project CI / Repository checks (pull_request) Successful in 5m26s
- tests/gameDistributionPublishPanel.test.tsx:删除「已有绑定时进入更新模式,回填线上资料并按派生项目版本提交原 gameId」用例中对 /本次发布按首版 v1。/ 的断言(该文案随 5a651f3ea 删除 projectVersionHint 一并下线,属遗漏同步)
- 版本派生本身仍由同用例的「项目版本」只读值 1、提交参数 versionNumber=1 覆盖,断言能力未削弱
2026-10-04 19:43:27 +08:00
k88936 cf2a8820d9 fix(会员升级): 相等价差 / 点差也拒绝,堵住 0 元升级
- quote_runtime_profile_membership_upgrade 先把 target.price_cents / period_points 与 current 比较,<= 直接返回 InvalidQuoteInput(评审第 15 条)
- 保留 rank 递增校验;旧实现用 checked_sub 只拦下溢,相等会算出 0 元升级 / 0 补点
- inverted_catalog_price_and_points_are_rejected 扩展相等分支,已验证去掉 <= 时该用例失败
2026-10-04 19:41:09 +08:00
k88936 54d1df9d21 refactor(契约): 会员 token 枚举走 ts-rs 生成,前端不再手写联合类型
- shared-contracts 给 ProfileMembershipPlanToken/CycleKindToken/StatusToken/ModelAccessToken/ChangeKindToken 补 ts_rs::TS + ts(export),生成 5 个 .ts 到 packages/shared/src/contracts/generated/(评审第 14 条)
- packages/shared/src/contracts/runtime.ts 的 ProfileMembershipPlan/Status/CycleKind/ModelAccess 改为生成类型的别名并 re-export
- apps/admin-web/src/api/adminApiTypes.ts 删除本地手写联合类型,改为从 @genarrative/shared 导入 / re-export
- npm run check:generated-bindings、admin-web:typecheck、npm run typecheck 通过
2026-10-04 19:35:28 +08:00
k88936 3a955889f0 refactor(后台契约): 会员详情 plan/status/cycle_kind 收口为 token 枚举
- shared-contracts 新增 ProfileMembershipStatusToken(normal/active)
- AdminProfileMembershipPayload 的 plan/status/cycle_kind 由 String 改为 ProfileMembershipPlanToken/ProfileMembershipStatusToken/ProfileMembershipCycleKindToken,未知值在反序列化即被拒(评审第 13 条)
- module-runtime 补 RuntimeProfileMembershipStatus -> ProfileMembershipStatusToken 的 From 映射
- api-server 的 map_membership 改为直接 .into(),去掉 as_str().to_string()
2026-10-04 19:14:31 +08:00
suzmii 5a651f3eae 删除发布面板冗余提示文案
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m58s
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 7m47s
Project CI / Frontend tests (pull_request) Successful in 3m32s
Project CI / Backend tests (pull_request) Successful in 8m33s
Project CI / Repository checks (pull_request) Successful in 7m6s
Project CI / AI game creator shell web tests (pull_request) Failing after 3m42s
Project CI / Native shell tests (pull_request) Successful in 10m57s
- GameDistributionPublishPanel.tsx:删除「项目版本」下的说明段(projectVersionHint 派生逻辑与其 useMemo、以及渲染它的 hint span),面板不再写「发布将使用最新内部版本 v{N}…」「线上最近提交 vN 是平台侧事实…」
- GameDistributionPublishPanel.tsx:删除简介/分类的三态提示文案(「正在根据创作内容生成简介和分类…」/「AI 已根据创作内容生成…」/「已根据创作内容预填…」)及支撑它们的 metadataSuggestionPending、metadataSuggestionReady 两个 state 与请求完成后的置位,保留静默预填行为
- apps/ai-game-creator-shell/src/styles.css:删除随上述提示一起作废的样式(-7 行)
- tests/gameDistributionPublishPanel.test.tsx:同步删除对已废弃提示文案的断言(-15 行)
2026-10-04 18:45:56 +08:00
k88936 bd06e42690 refactor(error): profile 错误分类全面转 typed error,删除文案匹配
- module-runtime 新增 RuntimeProfileRewardCodeRedeemErrorCode(NotFound/Disabled/NotStarted/Expired/UsesExhausted/NotAllowedForUser/InvalidReward)与 RuntimeProfileProcedureRejectionCode(聚合会员 / 兑换码两类码)
- RuntimeProfileRewardCodeRedeemProcedureResult 末尾追加 error_code,spacetime-module 用 ProfileRewardCodeRedeemProcedureError 在拒绝点显式赋码,入参与钱包错误保持无码
- SpacetimeClientError::ProcedureRejected.code 改为 RuntimeProfileProcedureRejectionCode,Display 输出 [code] message,不再吞掉机器可读原因(评审第 12 条)
- api-server 的 map_runtime_profile_client_error 只读变体字段,AppError.code 取 code.as_str(),删除 is_runtime_profile_domain_error / is_runtime_profile_redeem_code_domain_error 两个中文文案匹配函数
- 重新生成 Rust bindings;同步技术设计 §5.8 与 decision-log
2026-10-04 18:40:54 +08:00
suzmii f418ecfee9 Merge branch 'master' into fix/agc-toolbar-layout
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 6m48s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m30s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m12s
Project CI / Frontend tests (pull_request) Successful in 3m20s
Project CI / Backend tests (pull_request) Successful in 7m47s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m42s
Project CI / Repository checks (pull_request) Successful in 7m5s
Project CI / Native shell tests (pull_request) Successful in 9m43s
2026-10-04 18:37:56 +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 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 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