k88936
|
8af4287bf3
|
落点校验的文档注释改成与实现一致
- server-rs/crates/api-server/src/tripo3d/validation.rs:validate_target 的注释此前写「项目资源与素材库二选一 / 不接受两个都给」,与实际实现(两个都接受、只要求至少一个)以及用例 target_accepts_both_locators_but_requires_at_least_one 矛盾,改为按实际口径描述
|
2026-09-24 17:43:43 +08:00 |
|
k88936
|
791011eacf
|
落点纵深防御的兜底字段名与归因口径对齐
- server-rs/crates/api-server/src/tripo3d/target.rs:两个落点都没给时的兜底报错由点 projectId 改为点 target,与 target_unavailable_field 对 both-missing 的归因一致,不再把错误指到一个调用方可能根本没传的键上
|
2026-09-24 17:43:36 +08:00 |
|
k88936
|
d927a8cfa7
|
后台保存定价的版本推进改为饱和加法
- server-rs/crates/api-server/src/state.rs:expected_updated_at_micros 来自后台请求体、只校验了必须给出,没有范围校验;expected + 1 在 i64::MAX 上会溢出(debug 下 panic、release 下回绕成 i64::MIN 并让版本推进失效),改用 saturating_add(与测试分支同一口径)
|
2026-09-24 17:43:32 +08:00 |
|
k88936
|
0b3c15ee7c
|
图生 3D 的源图对象键为空时按缺失处理
- server-rs/crates/api-server/src/tripo3d/image_source.rs:预检对 object_key 加非空判断,空串 / 纯空白与缺字段同义。此前 Some("") 能过预检,等任务已入队计费后才在下载源图时失败
|
2026-09-24 17:43:24 +08:00 |
|
k88936
|
643ffedfb6
|
provider 4xx 不再把原文错误体回给客户端
- server-rs/crates/api-server/src/tripo3d/errors.rs:400..=499 分支不再拼接 error.to_string()。TripoError::Api 的 Display 直接转述 provider 的 code/message/suggestion(HTTP 错误体原文,未做 URL 清洗),可能把带签名的地址等内部信息带进用户可见的任务错误;改为固定中文文案
|
2026-09-24 17:43:17 +08:00 |
|
k88936
|
72cdabbef3
|
定点引用查询补上调用方必须传本人 user_id 的说明
- server-rs/crates/api-server/src/editor_project.rs:resolve_editor_reference_record_by_id_for_owner 从 pub 收窄到 pub(crate) 后授权边界移到调用方,给函数补上「必须传已认证用户自己的 ID,本函数不做授权」的前置条件说明,避免后续 crate 内调用方传入客户端可控的 owner 造成越权读取
|
2026-09-24 17:43:13 +08:00 |
|
k88936
|
110354fad9
|
请求路径也拦住写歪的 Tripo 网关地址
- server-rs/crates/api-server/src/tripo3d/provider.rs:URL 判据(合法 URL + HTTP(S) + 有主机名)抽成 validate_tripo_base_url_syntax,启动期门禁与 tripo_settings 共用;非空但缺 scheme / 非 HTTP(S) / 无主机名的地址在请求前就映射 503,不再拖到 SDK 里变成一条指向连接失败的报错
- server-rs/crates/api-server/src/tripo3d/provider.rs:补请求期拒绝写歪地址的用例
|
2026-09-24 17:38:28 +08:00 |
|
k88936
|
62600fe881
|
请求路径也拦住越界的 TRIPO_RETRIES
- server-rs/crates/api-server/src/tripo3d/provider.rs:tripo_settings 显式校验 config.tripo_retries 不超过 TRIPO_MAX_RETRIES 并映射 503。TripoSettings::validate 只查空值与零超时,越界值会原样进 artifact_retries,把产物下载的挂起时间成倍拉长;注释里「第二道防线」的说法此前并不成立
- server-rs/crates/api-server/src/tripo3d/provider.rs:补越界拒绝 / 上限放行的用例
|
2026-09-24 17:36:55 +08:00 |
|
k88936
|
1600c107e0
|
修掉没测到 API Key 分支的用例
- server-rs/crates/api-server/src/tripo3d/provider.rs:missing_api_key_is_reported_as_unavailable 先补全 TRIPO_BASE_URL 再断言缺密钥。AppConfig::default() 的网关是空串,原用例一直停在「缺网关」分支上,API Key 校验删掉也能过
|
2026-09-24 17:35:45 +08:00 |
|
k88936
|
2877ede719
|
3D 面板的栅格覆盖不再依赖规则先后顺序
- src/index.css:`--model3d` 面板的 grid/width/gap 覆盖把 `--image` 一起写进选择器提高特异性。它与 `--image` 的声明特异性相同,此前只靠 `--model3d` 排在后面取胜,规则顺序一变就会退回两栏布局
|
2026-09-24 17:33:25 +08:00 |
|
k88936
|
0d2c81a3ce
|
画布导出的目录名单一来源
- src/components/image-editor/useImageCanvasAssetExportWorkflow.ts:images / media / 3d_models 三个目录名提成 EXPORT_FOLDER 常量,建目录、挑目录与按层分流共用同一份字面量(写错目录名不会编译报错,只会在 zip 里悄悄换目录)
|
2026-09-24 17:33:02 +08:00 |
|
k88936
|
9c2a9383fc
|
3D 两个生成模式也随失焦与关闭收起面板
- src/components/image-editor/ImageCanvasGenerationDialogModel.ts:hideGeneratedLayerComposerAfterBlur 与 closeGenerateComposerDialog 的模式清单补上 model3d-text-to-model / model3d-image-to-model,此前点空白画布或关闭操作都收不起 3D 面板(其它生成模式都能收起)
- src/components/image-editor/ImageCanvasGenerationDialogModel.test.ts:补两个 3D 模式的收起断言
|
2026-09-24 17:32:39 +08:00 |
|
k88936
|
946c101630
|
画布没接住任务状态时按失败收口
- src/components/image-editor/model3d-generation/useModel3dGenerationTask.ts:applyQueuedGeneration 返回 false 时不再静默复位成 idle(用户会以为没提交过、再点一次就是又一次已扣费的外部生成),改为写回失败态与明确文案
- src/components/image-editor/model3d-generation/Model3dGenerationSubmission.ts:新增 MODEL3D_QUEUE_HANDOFF_FAILED_MESSAGE,与「服务端没返回任务状态」区分开
- src/components/image-editor/model3d-generation/useModel3dGenerationTask.test.tsx:原「回到空闲态」用例改为断言失败态
|
2026-09-24 17:32:13 +08:00 |
|
k88936
|
3455b7a00f
|
3D 提交失败路径也刷新钱包余额
- src/components/image-editor/model3d-generation/useModel3dGenerationTask.ts:请求失败与「2xx 但没有任务状态」两条路径都调用 onWalletBalanceMayHaveChanged,与其它画布生成链路的 runEditorGenerationWithWalletRefresh 同一口径(超时或空 body 的 2xx 都可能已经扣费)
- src/components/image-editor/model3d-generation/useModel3dGenerationTask.test.tsx:补两条失败路径各刷新一次钱包的断言
|
2026-09-24 17:31:28 +08:00 |
|
k88936
|
5ba7a993de
|
3D 提交编排整段落在错误边界内
- src/components/image-editor/model3d-generation/useModel3dGenerationTask.ts:把取占位框、算结果标题与构造提交计划一并移进 try,注入的回调或老快照缺字段导致的抛错不再漏成未捕获 rejection,而是照常写回失败态与提示
- src/components/image-editor/model3d-generation/useModel3dGenerationTask.test.tsx:补「计划构造阶段抛错」的用例(缺 prompt 的老快照)
|
2026-09-24 17:30:53 +08:00 |
|
k88936
|
2350c56f2f
|
3D 失败提示只透出服务端给的文案
- src/components/image-editor/model3d-generation/Model3dGenerationSubmission.ts:resolveModel3dGenerationErrorMessage 只对 ApiClientError 原样透出 message;原生 SyntaxError(2xx 但 body 不是 JSON)与其它运行时 TypeError 的英文技术文案不再直接显示给用户
- src/components/image-editor/model3d-generation/Model3dGenerationSubmission.test.ts、useModel3dGenerationTask.test.tsx:用例改用 ApiClientError 构造服务端文案,并补非服务端错误退回兜底文案的断言
|
2026-09-24 17:30:01 +08:00 |
|
k88936
|
96b52ae7ee
|
提交计划把非图生模式显式判为不支持
- src/components/image-editor/model3d-generation/Model3dGenerationSubmission.ts:图生分支之后补显式模式判断,契约将来新增端点时直接失败关闭,而不是静默按文生请求发出、丢掉新端点的输入
|
2026-09-24 17:28:46 +08:00 |
|
k88936
|
8d17855133
|
提交计划去掉无人读取的 title 字段
- src/components/image-editor/model3d-generation/Model3dGenerationSubmission.ts:Model3dSubmissionPlanBase.title 没有任何消费方(调用方自己按 resolveModel3dResultTitle 重算),删除该字段与它的装配代码,避免把死数据当成权威标题
|
2026-09-24 17:28:29 +08:00 |
|
k88936
|
bc68a9e884
|
查看器未知失败原因退回兜底文案
- src/components/image-editor/model3d-preview/Model3dViewerModel.ts:default 分支保留 `never` 的编译期穷尽检查,但运行时(宿主与查看器版本错配)改回 fallbackText,不再把原始原因码当用户文案显示
|
2026-09-24 17:28:02 +08:00 |
|
k88936
|
7b8bbac098
|
报价缺价文案提成具名常量
- src/components/image-editor/model3d-generation/Model3dGenerationFormModel.ts:底价缺失与加价项缺失两句文案按模块既有约定提成 MODEL3D_PRICING_MISSING_BASE_PRICE_REASON 与 resolveModel3dPricingMissingAddOnReason,不再散落在计算路径里
|
2026-09-24 17:27:37 +08:00 |
|
k88936
|
fe44054aa2
|
退役模型版本在报价与提交路径上一起回落默认版本
- src/components/image-editor/model3d-generation/Model3dGenerationFormModel.ts:resolveModel3dModelVersion 改为走 normalizeModel3dModelVersion,老快照里契约中已不存在的版本不再直接进 MODEL3D_MODEL_TABLE 查表(原来会抛异常),报价与提交体也不会分裂成两个版本;此前该归一化函数只有测试在用
- src/components/image-editor/model3d-generation/Model3dGenerationFormModel.test.ts:补 resolveModel3dModelVersion 收到退役版本的用例
|
2026-09-24 17:27:17 +08:00 |
|
k88936
|
9840f17189
|
模型版本判据不再认下原型链上的键
- src/components/image-editor/model3d-generation/Model3dGenerationValidation.ts:isModel3dModelVersion 改用 Object.hasOwn,`toString` / `__proto__` 这类继承键不再被判成契约版本(之后查表会拿到 undefined)
- src/components/image-editor/model3d-generation/Model3dGenerationFormModel.test.ts:补原型链键回落默认版本的用例
|
2026-09-24 17:26:49 +08:00 |
|
k88936
|
3191ca9d89
|
3D 面板的重试代次改在点击时铸造
- src/components/image-editor/model3d-generation/Model3dGenerationModal.tsx:失败态下的代次刷新由渲染体里的常量改为点击时调用的 resolveSubmitDialog(),提交键不再随每次重渲染(含 StrictMode 双渲染)变化,渲染保持纯函数
|
2026-09-24 17:26:17 +08:00 |
|
k88936
|
cd5218535e
|
3D 面板参考图菜单的边界 refs 数组稳定下来
- src/components/image-editor/model3d-generation/Model3dGenerationModal.tsx:boundaryRefs 用 useMemo 缓存,避免每次渲染都新建数组导致浮层 dismiss effect 反复解绑/重挂 document 监听
|
2026-09-24 17:26:02 +08:00 |
|
k88936
|
89b8211b94
|
生成中禁用图生 3D 参考图的删除按钮
- src/components/image-editor/model3d-generation/Model3dGenerationForm.tsx:已选参考图槽位补 disabled={disabled},提交中不再能删掉这次请求用的参考图,与面板其余控件的禁用口径一致
|
2026-09-24 17:25:37 +08:00 |
|
k88936
|
fb0be97609
|
图生 3D 的素材库空确认不再清掉已选参考图
- src/components/image-editor/ImageCanvasGenerationDialogModel.ts:单槽对话框只在素材库确实选到了图时才做「替换」,空确认退回原行为(保留画布点选/上传的那张)。此前确认按钮不校验空选,空确认会把已有参考图直接清掉
- src/components/image-editor/projectAssetReferencePickerModel.test.ts:补空确认保留画布参考图的用例
|
2026-09-24 17:25:16 +08:00 |
|
k88936
|
5d68749534
|
查看器不再把 glTF 解析失败吞成「未知错误」
- packages/model3d-viewer/src/loader.ts:GLTFLoader 的 onError 回传 ErrorEvent,改为先取它的 message 再包成 Error 抛出,外层报错能带出真实解析原因,而不是退化成「未知错误」
|
2026-09-24 17:24:40 +08:00 |
|
k88936
|
61cfb8800d
|
查看器认得 ASCII FBX 的字节开头
- packages/model3d-viewer/src/loader.ts:字节魔数多认一种 ASCII FBX 开头(`; FBX`,Blender 等工具的默认导出),此前这批文件在没显式给 format 时会被判 unsupported-format,尽管 FBXLoader 能解析
- packages/model3d-viewer/src/loader.ts:BOM / 前导空白的跳过抽成 resolveModel3dViewerContentStart,JSON 与 ASCII FBX 两处判据共用
- packages/model3d-viewer/src/loader.test.ts:补 ASCII FBX(含前导空白)的字节判定用例
|
2026-09-24 17:24:28 +08:00 |
|
k88936
|
0c0819249d
|
查看器取景装配失败时释放 renderer 与模型资源
- packages/model3d-viewer/src/scene.ts:模型加载成功后的取景 / ResizeObserver / 渲染循环装配抽成 setupLoadedScene,由外层 try/catch 兜住;任何异常先 teardown 再抛出,避免调用方拿不到 scene 引用时漏掉 WebGL 上下文与模型 GPU 资源
|
2026-09-24 17:23:58 +08:00 |
|
k88936
|
55ce6d7129
|
取景距离抬到不会让轨道缩放范围颠倒的下限
- packages/model3d-viewer/src/framing.ts:computeModel3dViewerFitDistance 对调用方传入的距离加下限(radius × 0.2 / 8),避免 distance 过小时 maxDistance 小于 minDistance,取景与轨道钳制同时失效
- packages/model3d-viewer/src/framing.test.ts:补极小距离的下限用例
|
2026-09-24 17:23:31 +08:00 |
|
k88936
|
3624f454e2
|
取景视角限定在 (0, 180),非法值回落到默认视角
- packages/model3d-viewer/src/framing.ts:新增 normalizeFovDegrees,fovDegrees 只在 (0, 180) 内采用,>=180 时 tan(halfFovY) 非正会把 limitY/limitX 与 fallbackDistance 算成 0 或负数,污染取景距离与 near/far
- packages/model3d-viewer/src/framing.test.ts:补 180 / 360 / 0 / 负数 / NaN 回落到默认视角的用例
|
2026-09-24 17:23:19 +08:00 |
|
k88936
|
e5076eb27c
|
契约绑定生成脚本改用能命中的过滤器
- package.json:contracts:model3d:generate 的过滤器由 `model3d editor_canvas` 改为工作区文档写明的 `export_bindings`;ts-rs 生成的用例名是 `export_bindings_<类型名小写>`,`editor_canvas` 带下划线永远匹配不到 editor-canvas 两个绑定,此前脚本实际只重生成 model3d 一侧
|
2026-09-24 17:21:47 +08:00 |
|
k88936
|
62e6bfc52f
|
后台 3D 定价两栏底价输入改为描述表驱动
- apps/admin-web/src/pages/AdminEditorGenerationModel3dPricingSection.tsx:抽出 VERSION_PRICE_FIELDS 描述表,无贴图 / 带贴图两栏共用一段 JSX,字段键与展示名只有一处来源,避免两栏后续改动走偏
|
2026-09-24 17:20:42 +08:00 |
|
k88936
|
84c5129225
|
后台定价输入解析不再把小数与半截数字静默截断
- apps/admin-web/src/pages/adminEditorGenerationPricing.ts:parsePositiveInteger 改用 Number + Number.isInteger,`3.9`、`12abc` 这类输入收敛成 0 交给提交前校验,而不是截成 3 / 12
- apps/admin-web/src/pages/adminEditorGenerationPricing.test.ts:补小数与尾随非数字字符的用例
|
2026-09-24 17:20:12 +08:00 |
|
k88936
|
7adf560f15
|
后台定价校验:空 prices 不再跳过底价检查
- apps/admin-web/src/pages/adminEditorGenerationPricing.ts:分层计价分支改为仅当 prices 真的有档位时进入,`prices: {}` 不再让 modelPricing.price 逃过提交前校验
|
2026-09-24 17:19:58 +08:00 |
|
k88936
|
367fa2f5f1
|
后台 3D 定价校验不再因缺段或缺子表整页崩掉
- apps/admin-web/src/pages/adminEditorGenerationPricing.ts:提交前校验对 3D 端点段做存在性判断,缺段直接跳过该段
- apps/admin-web/src/pages/adminEditorGenerationPricing.ts:versionPrices / addOnPrices 取值补 `?? {}` 兜底,接口返回残缺时降级为「校验不出问题」,不再抛异常白屏
|
2026-09-24 17:19:48 +08:00 |
|
k88936
|
127e491ab0
|
修掉 AGC 工具栏守卫:二级菜单不裁剪的断言改钉共享工具栏规则
- apps/ai-game-creator-shell/tests/appSurface:`.game-resource-bottom-toolbar-strip` 的 `overflow: visible` 断言随宿主覆盖一起失效;改读 packages/image-canvas-react 的 `.genarrative-image-canvas__toolbar` 规则,断言「flex-wrap: wrap 且不声明任何 overflow 裁剪」——机制住在共享工具栏里,谁把横向滚动容器加回来,二级菜单就会被裁掉,这条先失败(已注入 overflow-x: auto 复验过会挂)
- apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasChrome.css:删掉已过期的「共享 chrome 是横向滚动条」注释,改成当前口径——换行与不裁剪由共享工具栏保证,这里只限宽
|
2026-09-24 16:24:57 +08:00 |
|
k88936
|
ff38eb0308
|
Merge remote-tracking branch 'origin/master' into feat/tribo3d-integeration
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m38s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m4s
Project CI / Backend tests (pull_request) Successful in 5m5s
Project CI / Native shell tests (pull_request) Successful in 6m21s
Project CI / Frontend tests (pull_request) Successful in 2m20s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 9m11s
Project CI / Repository checks (pull_request) Failing after 1m42s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 10m13s
Project CI / AI game creator shell web tests (pull_request) Failing after 1m29s
# Conflicts:
# docs/project-memory/shared-memory/decision-log.md
# docs/project-memory/shared-memory/pitfalls.md
|
2026-09-24 15:28:01 +08:00 |
|
k88936
|
42c3186e13
|
3D 生成面板开放模型版本选择,参数按模型能力门禁
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m35s
Project CI / Backend tests (pull_request) Failing after 14s
Project CI / AI game creator shell Rust smoke (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 1/2 (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
- Model3dGenerationValidation.ts(新):前端唯一一份参数校验,逐条复刻 platform-tripo 的 validate_generation_options 与 api-server 的 PricingParamView::validate(模型族能力、分件三个前置条件、face_limit_bounds、平台必显式项),并给出按契约联合类型做键的 MODEL3D_MODEL_TABLE 与禁用原因文案
- Model3dGenerationFormModel:模型版本改为用户可选,可选集只取当前端点有底价的版本;报价与请求体读同一个 resolveModel3dModelVersion;换版本或切档位时按新能力收敛档位与开关并开新一代次;v2.5 的贴图档位不带 textureQuality
- Model3dGenerationForm:新增模型版本选择器(照图片面板的浮层选项形态),档位与开关按模型能力禁用并给出 title 原因
- Model3dGenerationModal:定价只读一次,模型选项与报价共用同一份快照
- Model3dGenerationSubmission / useModel3dGenerationTask:提交计划改成 endpoint 判别联合,两个端点各一个收口函数
- editorProjectClient:删掉「endpoint + 联合提交体」的单函数,改为 submitModel3dTextToModelRequest / submitModel3dImageToModelRequest 一个端点一个函数;basePrices 两层键改成契约枚举
- ImageCanvasOptionChoice.tsx(新):把图片面板的浮层选项行抽成共享组件,3D 面板复用
- 测试:新增 Model3dGenerationValidation.test.ts(12 例),FormModel / Submission / Modal / useModel3dGenerationTask 补组合表与菜单用例,共 75 例通过
- 文档:实施计划与里程碑追加本轮口径与证据,decision-log 与 pitfalls 各记两条
|
2026-09-24 14:55:06 +08:00 |
|
k88936
|
cc095a7620
|
画布底部工具栏不再横向滚动,工具放不下就换行
- packages/image-canvas-react:共享工具栏去掉 overflow-x/scrollbar-width 的「滚动容器」语义与滚动条隐藏,改为 flex-wrap 换行,尾部工具不再被裁掉
- src/index.css:画布底部工具栏宽度上限 34rem 提到 42rem,13 个工具在桌面宽度下回到一行,窄屏按共享能力换行并居中
- apps/ai-game-creator-shell:资源画布底部工具栏删掉与共享默认重复的 overflow/flex-wrap 覆盖,只保留限宽
|
2026-09-24 14:30:34 +08:00 |
|
k88936
|
d1e11c705d
|
Tripo 配置改为启动期失败关闭,缺网关或密钥的进程拒绝启动
- api-server 新增启动期门禁:会提交或会执行 3D job 的角色(api / external-generation-worker / all)缺 TRIPO_BASE_URL 或 TRIPO_API_KEY、值为空白或网关不是合法 HTTP(S) 地址时直接拒绝启动;bgfilter-worker 与 external-generation-controller 不受影响
- 删除内置默认网关常量,AppConfig::default() 的 tripo_base_url 改为空串;请求路径不再把超时静默钳到 .max(1)、重试钳到 .min(10),坏值原样交给 TripoSettings 并映射 503,作为启动期之后的第二道防线
- 两个运行旋钮仍可缺省(沿用内置 60000 / 2),显式声明时零超时、非数字或重试超过 10 都判启动失败
- .env.example 与 deploy/env/api-server.env.example 补齐 TRIPO_* 必填说明;deploy/container/api-server.env.example 与 container-worker-smoke 生成 env 补占位值,避免容器压测与 Jenkins 分支预览起不来
- 文档:新增 ADR 0006 并登记 docs/README.md,同步外部生成 Worker 化方案、开发运维文档、CONTEXT.md、决策记录、踩坑记录与实施计划
|
2026-09-24 13:53:43 +08:00 |
|
lhk229
|
ec3a187dd7
|
处理编译大量warning问题 (#503)
Project CI / AI game creator shell Rust crates (push) Successful in 1m11s
Project CI / AI game creator shell Rust smoke (push) Successful in 1m34s
Project CI / Backend tests (push) Successful in 4m46s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 8m31s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 9m41s
Project CI / Frontend tests (push) Successful in 2m19s
Project CI / Native shell tests (push) Successful in 7m5s
Project CI / AI game creator shell web tests (push) Successful in 1m54s
Project CI / Repository checks (push) Successful in 2m36s
Reviewed-on: https://git.genarrative.world/git/GenarrativeAI/Genarrative/pulls/503
Co-authored-by: Linghong <ink29535@proton.me>
Co-committed-by: Linghong <ink29535@proton.me>
|
2026-09-24 13:01:31 +08:00 |
|
suzmii
|
dcb4f2a1c1
|
Merge pull request '修复 AGC DirectProject 运行中过程卡的读秒粒度与样式' (#508) from fix/recover-100ms into master
Project CI / AI game creator shell Rust smoke (push) Successful in 1m48s
Project CI / AI game creator shell Rust crates (push) Successful in 1m0s
Project CI / Backend tests (push) Successful in 4m59s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 8m33s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 10m30s
Project CI / Native shell tests (push) Successful in 6m29s
Project CI / Frontend tests (push) Successful in 2m46s
Project CI / AI game creator shell web tests (push) Successful in 1m59s
Project CI / Repository checks (push) Successful in 2m48s
Reviewed-on: #508
|
2026-09-24 11:57:11 +08:00 |
|
suzmii
|
e80279c174
|
修复 AGC DirectProject 运行中过程卡的读秒粒度与样式
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m8s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 53s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 8m21s
Project CI / Backend tests (pull_request) Successful in 4m12s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 10m2s
Project CI / Frontend tests (pull_request) Successful in 2m11s
Project CI / Repository checks (pull_request) Successful in 2m33s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m1s
Project CI / Native shell tests (pull_request) Successful in 6m27s
- apps/ai-game-creator-shell/src/view/project-development/chat/components/DirectProjectConversation/DirectProjectConversation.tsx 的 DirectTurnElapsed 改用对话侧共享时钟 useLiveNow(100ms),删掉组件自带的 1000ms setInterval 与 now state:耗时文案不足一分钟保留一位小数,秒级 tick 会让小数位一秒才动一格
- apps/ai-game-creator-shell/src/styles.css 重写 .project-chat-process-card:去掉旧面板遗留的 78px 最小高度与 9px 行距,收敛为单行状态条(padding 8px 12px)
- apps/ai-game-creator-shell/src/styles.css 状态点与扫光改走 --platform-accent(原先写死绿色),标题提到 --platform-text-strong,耗时改 --platform-text-base 并加 tabular-nums
- apps/ai-game-creator-shell/src/styles.css 删除两条永不命中的选择器(卡片渲染在消息列表外,规则却写着 …message-list > .project-chat-process-card)与已无 <p> 渲染的多行摘要样式
- apps/ai-game-creator-shell/src/styles.css 过程卡与最后一条消息之间补 12px 上间距,原先 margin 简写把它清零
- apps/ai-game-creator-shell/tests/directProjectProcessStatus.test.tsx 新增读秒粒度回归用例与「无运行中回合不订阅时钟」用例
- apps/ai-game-creator-shell/tests/appSurface/project-development.suite.ts 与 tests/AgentMessageContent.test.tsx 的选择器契约同步到现行 DOM 结构
- docs/project-memory/shared-memory/pitfalls.md 记录「刷新粒度必须与显示精度同格」这条复发坑
|
2026-09-24 11:47:32 +08:00 |
|
kdletters
|
87e52860a7
|
游戏发行入口改为平台同源路径
Project CI / AI game creator shell Rust crates (push) Successful in 1m26s
Project CI / AI game creator shell Rust smoke (push) Successful in 2m11s
Project CI / Backend tests (push) Successful in 5m12s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 8m26s
Project CI / Native shell tests (push) Successful in 6m31s
Project CI / Frontend tests (push) Successful in 2m20s
Project CI / Repository checks (push) Successful in 2m25s
Project CI / AI game creator shell web tests (push) Successful in 1m21s
Project CI / AI game creator shell Rust lane 1/2 (push) Has been cancelled
- 审核通过时由 api-server 按 gameId 派生 /games/{gameId}/ 相对路径写入公开投影,删除 AppConfig 的发行入口模板字段与读取逻辑
- 删除 deploy/env 两份示例中的 GENARRATIVE_GAME_DISTRIBUTION_RELEASE_ENTRY_TEMPLATE
- 三份 nginx 模板内联同源发行入口 location,把 /games/<gameId>/ 与子资源转发到发行网关并在边缘清空 Cookie
- SPA allowlist 补齐 components、design-system、games、games/detail、games/mine、games/play、games/publish
- 前端 normalizeGameEntryUrl 支持相对路径与同源发行路径,按当前 origin 解析并补尾斜杠,继续兼容历史绝对 URL
- 删除退役的独立来源模板 deploy/nginx/genarrative-release-origin.conf、门禁脚本 scripts/check-release-origin-config.mjs 与其 npm 脚本
- 游戏分发 e2e 脚本改为在公开投影上断言 entryUrl 等于 /games/{gameId}/
- 同步平台主规范、运维主规范、nginx README 与共享决策记录
|
2026-09-24 00:21:27 +08:00 |
|
kdletters
|
efbdf7031e
|
统一客户端维护态错误弹窗
Project CI / AI game creator shell Rust crates (push) Successful in 1m30s
Project CI / AI game creator shell Rust smoke (push) Successful in 1m57s
Project CI / Backend tests (push) Successful in 3m54s
Project CI / Frontend tests (push) Successful in 2m5s
Project CI / Native shell tests (push) Successful in 6m4s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 8m14s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 9m19s
Project CI / AI game creator shell web tests (push) Successful in 1m23s
Project CI / Repository checks (push) Successful in 1m55s
客户端维护响应统一识别并广播维护事件
AGC 与网页端根部展示维护大弹窗,收口发布、上传、资源换签和登录错误
补充维护态弹窗测试、类型检查与实施计划说明
|
2026-09-23 23:16:23 +08:00 |
|
kdletters
|
093f832ef9
|
优化后台游戏审核操作弹窗
Project CI / AI game creator shell Rust crates (push) Successful in 1m29s
Project CI / AI game creator shell Rust smoke (push) Successful in 2m2s
Project CI / Backend tests (push) Successful in 3m48s
Project CI / Frontend tests (push) Successful in 2m4s
Project CI / Native shell tests (push) Successful in 5m57s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 8m15s
Project CI / Repository checks (push) Successful in 2m10s
Project CI / AI game creator shell web tests (push) Successful in 1m35s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 9m38s
移除游戏审核页的发行地址提示
将拒绝理由与下架原因改为点击按钮后输入
补充审核与安全下架交互测试
|
2026-09-23 22:50:36 +08:00 |
|
kdletters
|
cc958f3678
|
后台新增游戏管理页与全量游戏列表接口
Project CI / AI game creator shell Rust crates (push) Successful in 1m23s
Project CI / AI game creator shell Rust smoke (push) Successful in 2m0s
Project CI / Backend tests (push) Successful in 5m45s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 8m51s
Project CI / Native shell tests (push) Successful in 7m25s
Project CI / Frontend tests (push) Successful in 2m33s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 10m6s
Project CI / Repository checks (push) Successful in 2m1s
Project CI / AI game creator shell web tests (push) Successful in 1m32s
- SpacetimeDB 新增 list_admin_game_distribution_games_and_return:一个事务内返回全量游戏、版本数与最近 20 个版本,作者名/头像读时联 user_account
- SpacetimeDB 新增 restore_game_distribution_game_and_return:恢复管理员暂停的游戏时重新激活最近一次由管理员暂停撤回的公开版本,作者自行下架的版本不会被恢复
- 后台新增 GET /admin/api/game-distribution/games 与 POST /admin/api/game-distribution/games/{gameId}/restore,并新增 game-management Tab 权限,待审队列仍只属于 editor-showcase
- admin-web 新增 #game-management「游戏管理」页:标题/作者/gameId/状态/版本数/游玩数表格,行内下架、恢复与版本历史弹层,复用现有后台表格与二次确认
- 同步生成 spacetime 绑定并更新后端架构数据契约文档
|
2026-09-23 21:46:40 +08:00 |
|
kdletters
|
cf19241544
|
游戏发行入口改为服务端按模板派生
- 后台审核页删除「发行入口」输入框与前端 HTTPS 校验,审核请求只提交结论与公开修订号
- api-server 新增 GENARRATIVE_GAME_DISTRIBUTION_RELEASE_ENTRY_TEMPLATE 模板配置,审核通过时读版本取 gameId 并派生该游戏独立来源地址
- 模板缺 {gameId}、生产未配置模板、gameId 非主机安全字符或派生结果非法时审核通过失败关闭,非生产未配置时回落本地回环发行网关
- 同步更新发行来源 nginx 模板与说明、两份 api-server 环境变量样例、平台与运维主规范、发行里程碑实施计划和决策记录
- 真实栈 e2e 脚本不再传 entryUrl,并断言审核结果里的入口为服务端派生值
|
2026-09-23 21:33:42 +08:00 |
|
kdletters
|
e0c324c0ac
|
修复游戏封面生成素材 ID 回传
Project CI / AI game creator shell Rust crates (push) Successful in 1m33s
Project CI / AI game creator shell Rust smoke (push) Successful in 2m2s
Project CI / Backend tests (push) Successful in 4m7s
Project CI / Frontend tests (push) Successful in 2m10s
Project CI / Native shell tests (push) Successful in 6m12s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 8m17s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 9m37s
Project CI / AI game creator shell web tests (push) Successful in 1m34s
Project CI / Repository checks (push) Successful in 2m1s
生成游戏封面请求补充 AGC 客户端来源标记,确保队列 worker 返回 result。
补充封面生成请求断言,锁定平台素材 ID 回填链路。
同步记录缺陷根因与修复约定。
|
2026-09-23 21:29:18 +08:00 |
|