Commit Graph

6087 Commits

Author SHA1 Message Date
k88936 5dc0654426 重构(AGC模型文案): 合并原因到文案的重复映射
- 两个 helper 原先各维护一份 reason switch,新增 reason 时容易漏改一处
- 抽成单个 REASON_COPY 表,unknown 作为未知/缺失原因的兜底,两个 helper 共用
2026-10-05 13:50:16 +08:00
k88936 4f3faa04b5 修复(后台兑换码): 管理拒绝补机器可读错误码走 400
Project CI / Backend tests (pull_request) Failing after 53s
Project CI / Native shell tests (pull_request) Failing after 3m51s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 5m25s
Project CI / Frontend tests (pull_request) Failing after 48s
Project CI / AI game creator shell web tests (pull_request) Failing after 43s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m17s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 7m6s
Project CI / Repository checks (pull_request) Successful in 4m37s
- module-runtime 新增 RuntimeProfileRedeemCodeAdminErrorCode(not_found / invalid_field / allowed_users_required),后台兑换码增改与列表 procedure 结果末尾追加 error_code
- module 侧用 ProfileRedeemCodeAdminProcedureError 在拒绝点赋码,字段校验统一 invalid_field、私有码缺用户 allowed_users_required
- spacetime-client 后台 mapper 有码走 ProcedureRejected,api-server 由此返回 400 而不是 502
- 重新生成 SpacetimeDB 绑定;补 client 与 api-server 单测;同步设计文档 §5.8 与决策日志
2026-10-05 12:35:55 +08:00
k88936 cc0c07223c 重构(会员契约): 充值中心会员状态改用强类型 token
- ProfileMembershipResponse.status 由裸 String 改为 ProfileMembershipStatusToken,与前端 ProfileMembershipStatus 对齐
- BFF 直接用 From<RuntimeProfileMembershipStatus> 转换,测试改用具名枚举
2026-10-05 12:22:28 +08:00
k88936 4bd080eff5 修复(LLM目录契约): 响应枚举未知取值前向兼容
- LlmModelsResponse 内 agentMode / protocol 遇到未知 token 回退 Codex / 由 agentMode 推导默认协议,不再让旧客户端整份反序列化失败
- 输入校验仍走严格 parse;补未知 token 用例
2026-10-05 12:19:15 +08:00
k88936 c7150b590c 修复(LLM目录契约): protocol 缺省改为按 agent_mode 推导
- LlmModelSummary/LlmUnavailableModel 反序列化缺失 protocol 时取 agent_mode 的默认协议,不再一律 openai_responses
- 补 cc / anthropic 别名 / 显式 protocol 用例;同步生成绑定注释
2026-10-05 12:18:05 +08:00
k88936 7579213bea 清理(AGC模型): 删除无档位校验的遗留 resolver
- 移除 AgcModelCatalog::resolve / resolve_requested,统一走带会员档位的 resolve_requested_for
- validate 内联默认项检查,测试改用 resolve_requested_for
2026-10-05 12:15:58 +08:00
k88936 af419e82c7 文档(泥点钱包): 统一三池合计的展示口径为可用总额
- mudPoints 文档不再声明合计「不代表可用额度」,与钱包入口/充值弹层的「可用总额」文案对齐
2026-10-05 12:14:53 +08:00
k88936 985b8718b8 清理(泥点定价): 移除硬编码的「¥1 = 10 泥点」文案
- 充值商品页描述去掉固定比例,不再把定价规则写死在 UI
- 同步去掉公共充值弹层与测试里同口径的注释
2026-10-05 12:14:20 +08:00
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
kdletters a377ece48e 修复 Mac release 构建的 Git 心跳
Project CI / AI game creator shell Rust crates (pull_request) Successful in 5m49s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m35s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 7m19s
Project CI / Backend tests (pull_request) Successful in 8m31s
Project CI / Frontend tests (pull_request) Successful in 3m30s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m6s
Project CI / Repository checks (pull_request) Successful in 5m21s
Project CI / Native shell tests (pull_request) Successful in 7m3s
为 macOS Jenkins Checkout 增加 SSH 保活与 fetch 心跳。\n增加 fetch 超时诊断并补充生产运维门禁。\n更新 Mac 构建运维说明。
2026-10-05 11:47:55 +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
suzmii 67d06bc168 独立评审收口 #599:命名行事件时序、命名任务 update 门禁、失败关闭与 legacy 用例
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 8m1s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 5m35s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m21s
Project CI / Frontend tests (pull_request) Successful in 3m36s
Project CI / Backend tests (pull_request) Successful in 7m48s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m12s
Project CI / Repository checks (pull_request) Successful in 7m2s
Project CI / Native shell tests (pull_request) Successful in 8m41s
- P2-2:命名行的账本订阅与恢复读合并为同一次 effect 的「先订阅、后读、只读一次」(与素材队列先订阅后派发同口径),并在「生成任务」面板打开且**确有在途命名行**时补读一次兜底——多读会改变既有生成任务链路可观测的轮询计数,因此不给没有命名任务的项目加读。新增 2 条 appSurface 用例(错过终态事件仍到终态 / 面板打开补读),并做了「改前红」验证:退回「先读后订阅 + 面板不补读」两条即红。
- P2-3:update_local_project_naming_task 补 project.rename 权限门禁(与 enqueue 同口径)、校验记录 project_id 与项目一致、终态只接受同状态幂等重放(completed→failed 一律 Err 且不写盘);新增 3 条 Rust 用例。
- P2-4:新增失败关闭与 schema 分支用例——超长项目名条件改名 Err 且 manifest/revision 不变、不支持 schemaVersion Err、缺 schemaVersion 按 v1 接受。
- P3-1:legacy v1 兼容用例改为断言兼容性质(字段原样保留),不再引用 phase 文案常量。
- 文档:pitfalls 补「兼容是单向的(旧构建读含命名记录的账本会整份失败,含影响面/触发条件/潜在低成本正向兼容方向)」与「先订阅后读快照」「update 门禁与终态语义」三条边界;decision-log 同步边界与数字。
- 门禁:AGC 全量 1964 passed / 17 skipped(appSurface 200 passed / 9 skipped);cargo asset_generation_task 27 passed、conditional_project_rename_tests 7 passed;agc:typecheck、lint:eslint(0 problems)、check:encoding、check:spacetime-schema、cargo fmt --check、git diff --check 全过。
2026-10-05 00:55:29 +08:00
suzmii 7d205c8da0 去掉长期文档里的阶段性措辞
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 8m3s
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 6m39s
Project CI / Frontend tests (pull_request) Successful in 2m22s
Project CI / Backend tests (pull_request) Successful in 7m58s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m51s
Project CI / Repository checks (pull_request) Successful in 7m7s
Project CI / Native shell tests (pull_request) Successful in 9m28s
- 功能说明「边界与非目标」的生成期契约条目:删掉「本里程碑阶段二,同一 PR 落位」这类开发过程话,保留可长期成立的口径
2026-10-05 00:01:59 +08:00
suzmii 0aed0faa9a 运行画面点选:生成期契约落进 AGC 玩法 Skill(阶段二)
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
- agc-web-game-development/SKILL.md 新增「运行画面点选契约」:发布只读引擎句柄、Phaser 图片用 Image 标签装载、素材渲染对象标注 manifest 身份、素材进 dist 走与 localPath 对齐的稳定路径
- game-quality-checklist.md 与 agc-game-production-workflow/SKILL.md 只补指针,不在副本里复制契约
- skill-pack:sync 更新 manifest version=2026-08-26.38 与 agc-web-game-development、agc-game-production-workflow 的 sha256(未新增 skill 文件、未改 Rust)
- 文档:功能说明边界补生成期契约来源;里程碑把「生成期契约另立里程碑」改为同一 PR 阶段二;实施计划新增「阶段二进展」
2026-10-04 23:54:37 +08:00
suzmii d550d882d4 合并 master 6c9566058:保留 v2 账本/命名任务与 master 侧改动
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m17s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 5m44s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 7m26s
Project CI / Frontend tests (pull_request) Successful in 2m58s
Project CI / Backend tests (pull_request) Successful in 7m24s
Project CI / Repository checks (pull_request) Successful in 6m23s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m47s
Project CI / Native shell tests (pull_request) Successful in 9m34s
- 冲突仅在 docs/project-memory/shared-memory/decision-log.md 与 pitfalls.md(双方都在顶部追加条目):两边条目全部保留——本分支的 Issue 599 条目(AI 项目命名解耦 / 生成任务账本 taskType + live 集合)在前,master 侧新增条目(发布版本标签派生、随包 plugins feature 档位、.worktrees 下 Vite 忽略规则、并发 dev 栈、Windows 阻塞模态用例)原样保留,逐条核对无丢失。
- 其余文件(desktop.rs、check-config.mjs、view/project-development/index.tsx、src-tauri 多处、admin-web、game distribution 等)均为自动合并,无冲突。
- 合并后自证:v2 账本常量/命令注册/命名任务命令名/条件改名空 expected 校验/entrySettled 顺序/命名行与事件刷新/三个测试文件的关键断言全部在位(脚本逐条核对 ALL_OK)。
2026-10-04 23:37:57 +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
suzmii b2307a5c5c Merge remote-tracking branch 'origin/master' into feat/agc-runtime-picking-engines
Project CI / AI game creator shell Rust crates (pull_request) Successful in 6m10s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 7m28s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 8m15s
Project CI / Backend tests (pull_request) Successful in 8m43s
Project CI / Frontend tests (pull_request) Successful in 2m47s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m27s
Project CI / Native shell tests (pull_request) Successful in 8m14s
Project CI / Repository checks (pull_request) Successful in 6m38s
# Conflicts:
#	docs/project-memory/shared-memory/pitfalls.md
2026-10-04 21:47:51 +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
suzmii df76a665d4 补运行画面点选验收证据与里程碑勾选
- 功能说明的验收证据表填入自动化与真实浏览器实测结果
- 里程碑验收标准按证据逐条勾选并补未覆盖项
- 实施计划补四个提交的落盘记录
2026-10-04 21:02:50 +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 f729203c6c 补运行画面点选的行为规范、踩坑与实施记录
- 功能说明新增运行画面素材点选的行为合同、退化条款与边界(贴图地址不可得、只认显式句柄)
- PRD 补点选素材条款与更新时间摘要
- 踩坑记录新增 Phaser 命中顺序与默认 XHR 装载两条
- 新增本里程碑与实施计划文档
2026-10-04 20:50:44 +08:00
suzmii ab518ea574 AGC 起步工程与新建脚手架发布点选所需引擎句柄
- 新建项目默认脚本创建 Phaser 实例后发布只读句柄
- Phaser 与 three.js 两个起步模板及空白三维场景模板同样发布句柄
- Phaser 脚手架与模板改用 Image 标签装载图片,让贴图保留原始素材地址
2026-10-04 20:50:33 +08:00
suzmii 6264fed6b4 运行画面点选结果收敛到 manifest 现有素材 id
- 新增匹配纯函数:显式 id、精确路径后缀、文件名、序列帧地址四档,未知值一律丢弃
- 恰好命中一个素材且标签由文件名派生时,芯片名归一化为资源显示名
- 点选处理改为调用该纯函数,派发载荷字段与顺序不变
- 新增匹配与标签归一化的单元用例
2026-10-04 20:50:26 +08:00
suzmii 6c6850352e AGC 运行画面点选新增 Phaser 4 与 three.js 引擎档
- 预览桥脚本从 preview.rs 的 Rust 字符串常量搬到 resources/preview/local-preview-fit.js,改由 include_str! 引用,尺寸上报与 DOM 点选行为逐字不变
- 抽出共享命中解析,DOM 档语义保持原样
- 新增 canvas 引擎档:只认玩法发布的只读句柄,实现 Phaser 4 与 three.js 两条适配与几何兜底
- 素材身份显式标注优先于贴图地址推断,取不到时退化为不带素材的区域引用,不伪造 id
- 新增引擎档用例,直接加载随包桥脚本文件断言消息载荷
- 随包桥脚本加入 prettier 排除,保持逐字内容
2026-10-04 20:45:48 +08:00
suzmii 9755b381c1 Merge branch 'master' into fix/agc-titlebar-project-label
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 8m11s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 7m3s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m29s
Project CI / Frontend tests (pull_request) Successful in 3m45s
Project CI / Backend tests (pull_request) Successful in 8m5s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m25s
Project CI / Repository checks (pull_request) Successful in 6m1s
Project CI / Native shell tests (pull_request) Successful in 7m41s
2026-10-04 20:05:42 +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 c9df6edc63 修复:AGC 窗口标题栏项目标签改认当前项目(#618)
Project CI / AI game creator shell Rust crates (pull_request) Successful in 4m40s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 7m15s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 8m17s
Project CI / Frontend tests (pull_request) Successful in 2m51s
Project CI / Backend tests (pull_request) Successful in 7m38s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m58s
Project CI / Repository checks (pull_request) Successful in 6m18s
Project CI / Native shell tests (pull_request) Has been cancelled
- 窗口标题栏标签主文案恒为当前项目名:WindowChromeActiveProjectRuns 新增 currentProjectName,由 WorkspaceLauncher 发布当前项目清单名,WindowChrome 透传给标题栏入口
- 正在运行的项目降级为圆点、运行中数量徽标与展开菜单:ActiveProjectRunsPanel 主文案不再取开始时间最晚的在跑项目
- 展开菜单里当前项目那一行沿用清单项目名,meta 首位标「当前」,aria-current 保留
- 运行快照读取失败不再整块替换标签:圆点转告警色,结论落在菜单内一行;既无在跑项目又无当前项目名时保留原来的纯提示
- 新增 .launcher-runs-panel-dot.is-warning 与 .launcher-runs-titlebar-menu-note 样式
- 用例:directActiveTurns 新增三条回归(别的项目在跑时标签仍是当前项目、当前项目自己跑时列表带「当前」、读取失败不顶掉当前项目名),WindowChrome 新增当前项目优先级用例,并把「只显示最后开始的项目」用例改名为「不在项目内时…」
- 文档:修正主规范 2026-09-15 段的标题栏条目、里程碑与实施计划文末修订,decision-log 追加 2026-10-04 决策
2026-10-04 18:57:20 +08:00
suzmii 93deb694b0 Merge remote-tracking branch 'origin/master' into fix/home-project-naming-async
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 8m30s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 5m18s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m25s
Project CI / Frontend tests (pull_request) Successful in 2m33s
Project CI / Backend tests (pull_request) Successful in 7m46s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m33s
Project CI / Repository checks (pull_request) Successful in 7m33s
Project CI / Native shell tests (pull_request) Successful in 10m6s
2026-10-04 18:56:12 +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