Commit Graph

3098 Commits

Author SHA1 Message Date
k88936 ecb84f1e70 修复:展开折叠块时把新展开的正文露出来
- 新增纯函数 toggleRevealDelta:折叠头冻结与露出正文合成一次 scrollTop 位移
- 正文底边超出视口只补超出量,正文比视口还高才对齐正文顶边,收起不额外滚动
- 补齐用例:纯函数六例与 freezeToggleHead 两条真机行为

Co-authored-by: Junie <junie@jetbrains.com>
2026-10-02 18:18:26 +08:00
k88936 bee23a0a25 重构:文本判据债改名 SuperErrorEnumFromStringTyped 并写清上游改造 TODO
- turn_error.rs 把 DomainFact 改名为故意扎眼的 SuperErrorEnumFromStringTyped,标记"从字符串读出的 typed 失败事实表"这笔待清债
- TODO 从"产生层还没有 typed 出口"改为明确指向上游改造:让产生层直接产出 typed 变体/结构化子错误、判定层改 match,之后整张表与 classify_direct_codex_error 一起删
- enum 注释写明这个名字是债标记:禁止把它改漂亮,只允许按 TODO 删掉整张表
- 只改名与注释,不改任何判定逻辑
2026-10-02 18:10:39 +08:00
k88936 394b8de9d2 重构:DirectProject 回合错误去前缀、拆分 wire 模块、终态改判别联合
- 三条错误表去冗余前缀:DirectTurnError→TurnError、DirectTurnEnqueueError→EnqueueError、DirectTurnFailure→TurnFailure、DirectTurnDeadline→Deadline、DirectCodexFailureStage→FailureStage、DirectCodexNativeKind→NativeKind、DirectModelCallKind→ModelCallKind
- 用户条目去前缀:DirectCodexUserItem→UserItem 等六个类型;agent/direct_turn_error.rs 移到 codex_app_server/turn_error.rs
- thread_manager/wire.rs 拆为 wire/{mod,clock,items,turn,failure,tests}.rs;direct_turn_failure.rs 的失败载荷并入 wire/failure.rs
- 宿主侧回合终态从 struct TurnTerminal 改为 enum TurnCompletion{Completed,Interrupted,Aborted,Failed},从 wire 移到 thread_manager/turn_completion.rs,status 由变体反推
- 过期回合释放兜底改走 TurnCompletion::Aborted.event
- 同步生成绑定、前端调用点与测试;修正终态单测里过时的 TransportClosed 断言
- 对 src-tauri 全量 cargo fmt,满足 pre-commit 的 rustfmt 门禁
2026-10-02 18:10:17 +08:00
k88936 65b90ed43e 测试:覆盖更早历史自动加载、前插锚点与回到底部胶囊
- 新增与实现同目录的 5 组用例:阈值与加载门、锚点读取/还原、折叠头冻结与正文对齐、hook 状态机、组件层按钮移除与重试行
- 根 vitest.config.ts 补一条 include,同目录用例才进得了门禁
- 既有断言同步:消息列表类名加上 overflow-anchor 工具类,DirectProjectConversation 用例改用新的加载状态入参

Co-authored-by: Junie <junie@jetbrains.com>
2026-10-02 17:54:10 +08:00
k88936 0aa9dad3c7 功能:DirectProject 对话自动加载更早历史并支持回到底部
- 删掉常驻的「显示更早的对话」按钮,改由触顶与填充视口两条触发自动加载,失败即挂起并留内联重试行
- 新增 useConversationScroll:列表唯一滚动所有权(跟随最新、ResizeObserver 补偿、前插锚点冻结、胶囊显隐)
- 新增顶部加载行与底部居中 sticky 胶囊两个表现组件,文案与阈值取自 conversationScrollPolicy
- 列表追加 overflow-anchor:none 关掉原生锚定;「有新回复」按最后一轮终态内容指纹判定
- DirectProjectChatView 交出 messagesRef / shouldFollowLatestRef / handleScroll,只传加载状态与回调

Co-authored-by: Junie <junie@jetbrains.com>
2026-10-02 17:54:03 +08:00
k88936 1653a2be6e 功能:DirectProject 回合块标记 data-turn-key 供滚动锚点定位
- DirectProjectTurn 的正文块、执行过程折叠块与终态文案块写上 data-turn-key
- ToolCallGroup 与 AgentReasoning 新增可选 turnKey 透传,工具组与思考块也带回合身份
- 锚点按「回合 key + 块内序号 + 偏移」定位,不新增 DOM 包裹层

Co-authored-by: Junie <junie@jetbrains.com>
2026-10-02 17:53:53 +08:00
k88936 72ad9b8cdb 功能:DirectProject 聊天控制器暴露更早历史的加载态、失败态与重试入口
控制器新增 historyLoading / historyError 两个可渲染状态,与并发判据用的 ref 同步镜像。
loadEarlierHistory 失败时写入 historyError 并挂起自动加载,成功路径清掉失败记录。
新增 retryEarlierHistory:先解挂起再走同一条加载入口,供内联错误行的重试按钮调用。
加载失败不再写顶部状态行(状态行留给首屏读取失败等其它用途)。

Co-authored-by: Junie <junie@jetbrains.com>
2026-10-02 17:42:14 +08:00
k88936 f0ae0bd5d7 重构:抽出 DirectProject 对话滚动判据、锚点与折叠补偿纯函数
新增 conversationScrollPolicy.ts:滚动/自动加载阈值、加载门、胶囊文案与填充视口判据集中在一处。
新增 conversationScrollAnchor.ts:回合 key + 块序号 + 偏移的锚点读取与还原,供前插补偿使用。
新增 conversationToggleReveal.ts:折叠头解析、头部冻结与超长正文对齐,覆盖 details 与 aria-expanded 两种折叠。
新增 useDelayedFlag.ts:延迟显示开关位,避免本地读取瞬间返回时闪一下加载行。

Co-authored-by: Junie <junie@jetbrains.com>
2026-10-02 17:41:55 +08:00
k88936 3e9a059d16 Merge remote-tracking branch 'origin/master' into feat/typed-tool-error
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m49s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 4m32s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 4m32s
Project CI / Backend tests (pull_request) Successful in 4m34s
Project CI / Frontend tests (pull_request) Successful in 2m33s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m31s
Project CI / Native shell tests (pull_request) Successful in 5m36s
Project CI / Repository checks (pull_request) Successful in 3m9s
2026-10-02 16:56:45 +08:00
k88936 2a3e64a999 格式化 AGC 壳 Rust 源码(rustfmt)
- cargo fmt --all --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml
- 覆盖退役与合并期间改动的 27 个文件,恢复 check:rustfmt 门禁
2026-10-02 16:36:44 +08:00
k88936 5ffd7dcd0a 修正 AGC 退役后 prompt 边界门禁用例引用已删除源文件
- prompt_source_boundaries.rs 移除 src/agent/prompt.rs、runtime_actions/provider_request_builders.rs、runtime_actions/provider_tool_plan.rs、agent_native_tools.rs、context_compaction.rs、goal.rs、generation/run_lifecycle.rs、generation/role_briefs.rs、runtime_protocol/autonomous_completion.rs、runtime_driver/task_start.rs 等已随自建 Runtime 退役的条目
- prompt_source_boundaries.rs 的常量门禁与工具描述门禁同步移除 runtime_driver.rs、agent_native_tools.rs 条目
- runtime_prompt_bundle_build.rs 删除 provider_request_builders.rs、provider_tool_plan.rs、agent/prompt.rs 三个已退役文件的断言;「不得再内联 prompt 正文」由 src 全树 include_str! 扫描继续兜底
2026-10-02 16:36:35 +08:00
kdletters e1b304d390 自定义 Anthropic 端点改用 x-api-key 出示凭据
Project CI / AI game creator shell Rust crates (push) Successful in 1m56s
Project CI / AI game creator shell Rust lane 2/2 (push) Failing after 2m12s
Project CI / AI game creator shell Rust smoke (push) Successful in 2m26s
Project CI / AI game creator shell Rust lane 1/2 (push) Failing after 4m5s
Project CI / Frontend tests (push) Successful in 3m26s
Project CI / Backend tests (push) Successful in 5m20s
Project CI / Repository checks (push) Successful in 3m26s
Project CI / AI game creator shell web tests (push) Successful in 2m8s
Project CI / Native shell tests (push) Successful in 7m43s
- claude_code_cli:custom 模型(用户自带 key 的 Claude 兼容端点)下把 key 放到 ANTHROPIC_API_KEY,让 Claude Code 走 Anthropic 规范的 x-api-key 头;官方模型仍走平台会话的 ANTHROPIC_AUTH_TOKEN
- 依据:同一次 /v1/messages 请求,Router 只认 x-api-key 时返回 200,走 Authorization: Bearer 时会长时间不响应
2026-10-02 16:35:05 +08:00
k88936 4246052bff 合并 origin/master 到 feat/typed-tool-error
- 取 master 退役 DirectProject 工具调用与回合流账本(#560):删除 direct_tool_calls / direct_turn_stream,direct_events 的回合更新收敛为状态与活动,不再广播 game-creator-direct-turn-update
- 取 master 修复 AGC 文件列举被无关临时锁删除打断(#552)与素材导入 / 资源提交项目锁争用(#581)
- 保留本分支 typed 工具错误口径:逐工具错误枚举、派发边界携带原始 error、工具返回不再软失败
- 保留本分支退役 AGC 独立 Agent Runtime / CLI 执行面的删除,继续删掉 master 侧 runtime_actions 等测试与入口
- 补齐 master 新增的 with_conversation_write_contention 测试助手,项目写锁调用统一为 acquire_project_write_lock_with_wait
- 账户素材分页 offset 上限 500 的 schema、预检与行为对齐,越界 offset 返回 typed 错误并适配相关用例
- 错误事件结构体 message 保留调用方原文,脱敏只发生在落盘与应用日志边界
2026-10-02 16:18:50 +08:00
k88936 839051f532 退役AGC独立Agent Runtime与CLI执行面
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 1m50s
Project CI / Backend tests (pull_request) Failing after 24s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m47s
Project CI / Repository checks (pull_request) Failing after 21s
Project CI / Frontend tests (pull_request) Successful in 2m38s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 3m41s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m23s
Project CI / Native shell tests (pull_request) Successful in 6m20s
- 删除 agent/runtime_driver、runtime_protocol、runtime_tools、runtime_actions、runtime_state、runtime_adapter、context_compaction、collaboration、delegation、goal 等自建 Runtime 执行面及专属测试与 fixture
- CliCommand 收敛为 LlmStatus | EnvironmentCheck | PreviewServe,删除 --agent-run / --agent-task / --agent-goal-* / --agent-resume / --agent-context-compact 等 CLI 与 Tauri 命令白名单条目
- 外部 Runner 收缩为编辑器桥 RPC 与 runner.attach_gui_owner + GUI owner 参与锁 / watchdog,保留 --agent-runner
- 前端删除 AgentRuntime* / AgentGoal* 状态与命令调用链,移除 agent-runtime real-e2e / steer / smoke / llm-transient-fault 脚本与对应 CI job
- 内置工具错误收口为 typed error,抽取 agent/tool/error.rs 共享错误供各工具复用
- 新增 agent/redaction.rs、runtime_models.rs、json_sidecar.rs、task_lock.rs、process_identity.rs、art_manifest.rs、design_session.rs、direct_events.rs
- 同步更新 ADR、decision-log、Runtime V1.1、App 实施计划、本地开发运维、pitfalls 与 CI 脚本
2026-10-02 15:23:12 +08:00
k88936 c9b4813e68 移除已无消费者的 toolOutputTokenLimit 配置
- main.rs/config.rs/cli.rs 删除字段、默认值、校验、patch 合并与 CLI 展示

- 默认配置 game-creator.config.json 删除该键,旧配置里多余的键会被 serde 忽略

- 前端 types/RuntimeConfigDialog 与界面测试同步移除

- 该配置在 context_compaction 删除后已无任何 prompt 构建消费者
2026-10-02 15:08:23 +08:00
k88936 b18b4935e4 Cocos 执行结果给模型前恢复长度上限
- code 执行 32000 字符、operation 结果 2MiB

- 成功回执保留原文但按字符数收口
2026-10-02 15:07:20 +08:00
k88936 0ffa5bb1cc 编辑器执行响应给模型前恢复 32k 长度上限
- 新增 DIRECT_TOOL_BRIDGE_EDITOR_RESPONSE_MAX_CHARS=32000

- Unity/Godot 成功回执改为保留原文但按字符数收口
2026-10-02 15:07:19 +08:00
k88936 87414fd248 远端告警给模型前恢复每条长度收口
- 新增 DIRECT_TOOL_BRIDGE_WARNING_MAX_CHARS=480 与 bounded_remote_warning(s) helper

- createOrDerive/PrepareGameArt/GenerateImage 三个完成回执的 warnings/sliceWarnings 逐条收口
2026-10-02 15:07:19 +08:00
k88936 264b99914f Merge remote-tracking branch 'origin/master' into fix/wrong-report
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m59s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 2m9s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m23s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 3m6s
Project CI / Frontend tests (pull_request) Successful in 3m31s
Project CI / Repository checks (pull_request) Successful in 3m34s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m57s
Project CI / Backend tests (pull_request) Successful in 6m48s
Project CI / Native shell tests (pull_request) Successful in 7m29s
# Conflicts:
#	docs/project-memory/shared-memory/pitfalls.md
2026-10-02 15:01:38 +08:00
k88936 e7adefb0a1 登记素材导入失败消息做长度收口,完整报告仍留在 typed 错误
- to_user_msg 对 ImportFailed/ImportPartial 先报成功/失败计数,再附有界 JSON 明细

- 新增 IMPORT_REPORT_MESSAGE_MAX_CHARS=4000 字符上限

- 补 TODO:应由工具选择性返回,或把完整报告重定向到文件/诊断日志
2026-10-02 14:58:37 +08:00
k88936 9c7cf2601c 工具入参对象校验升级为类型约束,解析器不再可能绕过 NotObject
- ToolArgumentsRejection::check 返回已确认的 &Map<String, Value>

- optional_text / required_text / page 改收 &Map,删掉 debug_assert 兜底

- 内部入参解析 helper 同步收 &Map;桥与 MCP 预检的 &Value 入口保持不变

- 更新直连工具桥与单测调用点
2026-10-02 14:57:44 +08:00
kdletters 13ce49599f 修复 AGC MCP 通知请求被拒导致 cc 执行器零工具
Project CI / AI game creator shell Rust lane 1/2 (push) Failing after 2m19s
Project CI / AI game creator shell Rust lane 2/2 (push) Failing after 2m30s
Project CI / AI game creator shell Rust smoke (push) Successful in 2m30s
Project CI / AI game creator shell Rust crates (push) Successful in 1m40s
Project CI / Backend tests (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
- direct_tools_mcp:HTTP 入口对没有 id 的 JSON-RPC 通知(notifications/initialized)返回 202 空体,不再按错误回 400
- 之前 Claude Code 的 MCP 握手被 400 打断,把 agc 服务器标记为 failed,模型请求里一个工具都没有(实测 tools=0,修复后 tools=60)
2026-10-02 14:55:44 +08:00
k88936 0dda4cd78e 编辑器执行错误去掉多余的 to_string
- editor_execute/error.rs EditorRejected 直接 clone 已拥有的 cause
2026-10-02 14:40:19 +08:00
k88936 dd115778e9 Cocos 执行错误去掉多余的 to_string
- cocos_execute/error.rs CodeInvalid 直接 clone 已拥有的 cause
2026-10-02 14:40:19 +08:00
k88936 8f07ff9379 浏览器试玩错误去掉多余的 to_string
- browser_playtest/error.rs PlaytestFailed 直接 clone 已拥有的 cause
2026-10-02 14:40:19 +08:00
k88936 bca9b97acd 统一错误事件返回值复用已脱敏的 message
- runtime_error.rs persist_agent_runtime_error 返回的 message 改用 safe_message

- 与 error 字段口径一致,返回值即使被序列化也不会泄露绝对路径/凭据
2026-10-02 14:40:11 +08:00
k88936 b1d16b5683 错误回显不再给字符串套 JSON 引号
- arguments.rs not_text_repr 对字符串直接回显原文

- 非字符串仍按 bounded_echo 序列化后截断
2026-10-02 14:39:59 +08:00
k88936 85d51a074e 内置工具分页 offset 加绝对上限,避免 nextOffset 溢出
- arguments.rs 新增 MAX_PAGE_OFFSET 常量

- page() 在 max_offset 为 None 时也按 MAX_PAGE_OFFSET 封顶,挡住 offset + page.len() 的溢出
2026-10-02 14:39:46 +08:00
k88936 29a21f480c Merge remote-tracking branch 'origin/master' into fix/wrong-report
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m47s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m35s
Project CI / Backend tests (pull_request) Successful in 5m5s
Project CI / Native shell tests (pull_request) Successful in 6m7s
Project CI / Frontend tests (pull_request) Successful in 2m19s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 10m55s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m55s
Project CI / Repository checks (pull_request) Successful in 2m32s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 12m54s
# Conflicts:
#	docs/project-memory/shared-memory/decision-log.md
#	docs/project-memory/shared-memory/pitfalls.md
2026-10-02 14:36:32 +08:00
kdletters 5dc595db58 Claude Code Direct 回合补 sidecar 静默与超时收口诊断
Project CI / AI game creator shell Rust crates (push) Successful in 1m29s
Project CI / AI game creator shell Rust smoke (push) Successful in 2m39s
Project CI / Backend tests (push) Failing after 3m28s
Project CI / Frontend tests (push) Successful in 1m51s
Project CI / AI game creator shell Rust lane 1/2 (push) Has been cancelled
Project CI / Native shell tests (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
Project CI / Repository checks (push) Has been cancelled
- claude_code_cli:sidecar stdout 静默 30 秒就写一条 agent.direct_codex.claude_sidecar_idle,记录已静默秒数
- claude_code_cli:超时收口先杀 sidecar 进程树,再给 stderr 一个 5 秒排空窗口,避免回合永远不肯收口
- claude_code_cli:超时详情过滤掉宿主主动断流后 sidecar 自己抛的 EPIPE 收尾噪声
- claude_code_cli:sidecar 返回 error 事件时同样杀进程树,不再留下孤儿 Claude Code 进程
2026-10-02 14:35:16 +08:00
kdletters 72165c3891 修复 Direct 诊断留痕的编译错误
- direct_runtime:分段 trace 改用 crate 级 app_log!,crate::append_application_log 在宿主并不存在
- thread_manager::dispatch:兜底收口与 panic hook 同样改用 app_log!
- thread_manager::dispatch:补上 emitter 取用 turn_id 后的 clone,修掉借用已移动值
2026-10-02 14:35:16 +08:00
k88936 1cc53ab8bd Merge pull request '统一 AGC launcher 页面高度,修复底部被裁' (#585) from style/agc-home-page-full-height into master
Project CI / AI game creator shell Rust lane 1/2 (push) Failing after 1m22s
Project CI / AI game creator shell Rust lane 2/2 (push) Failing after 2m4s
Project CI / AI game creator shell Rust crates (push) Successful in 1m22s
Project CI / AI game creator shell Rust smoke (push) Failing after 1m32s
Project CI / Frontend tests (push) Successful in 2m57s
Project CI / Native shell tests (push) Failing after 4m15s
Project CI / Repository checks (push) Successful in 4m3s
Project CI / AI game creator shell web tests (push) Successful in 2m31s
Project CI / Backend tests (push) Successful in 6m39s
Reviewed-on: #585
2026-10-02 14:15:35 +08:00
kdletters 863148e11c Claude Code Direct 回合补分段 trace
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 lane 2/2 (push) Has been cancelled
Project CI / AI game creator shell Rust smoke (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 / Native shell 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
- claude_code_cli:cc Direct 回合在执行器入口、MCP loopback 就绪、sidecar 启动、sidecar 返回、解析 stream 前各写一条 agent.direct_turn.trace
- direct_runtime:direct_turn_trace 提升为 pub(crate),让 Claude Code 执行器复用同一份分段留痕
2026-10-02 14:01:19 +08:00
k88936 50925d96eb 统一 AGC launcher 页面高度,修复帮助页底部被裁
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 2m29s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 2m31s
Project CI / AI game creator shell Rust smoke (pull_request) Failing after 3m2s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m49s
Project CI / Backend tests (pull_request) Failing after 19s
Project CI / Repository checks (pull_request) Failing after 30s
Project CI / Frontend tests (pull_request) Successful in 3m16s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m37s
Project CI / Native shell tests (pull_request) Failing after 5m2s
- styles.css:新增页面高度契约,.launcher-main 改纵向 flex 列、页面根节点 flex: 1 1 auto,帮助页自带滚动
- src/view/home/index.tsx:首页根节点去掉 h-screen 与 h-[calc(100vh-32px)],改用外壳分配高度的钩子类
- src/view/template-library/index.tsx:模板库去掉 JS 量父级高度与内联 height,改用外壳分配高度的钩子类
- decision-log.md、pitfalls.md:记录页面高度契约与自绘标题栏里自己算 100vh 的排障口径

Co-authored-by: Junie <junie@jetbrains.com>
2026-10-02 13:57:45 +08:00
kdletters 35af46dd94 Direct 回合在 begin 之后补分段 trace
Project CI / Backend 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 lane 2/2 (push) Has been cancelled
Project CI / AI game creator shell Rust smoke (push) Has been cancelled
Project CI / AI game creator shell Rust crates (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
Project CI / Frontend 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
新增 direct_turn_trace:按 stage 写应用日志,定位回合在 begin 与执行器之间停在哪一步
覆盖 session-ready / run-analytics-accepted / goal-analytics-accepted / system-prompt-ready / executor-dispatch
仅在 cfg(not(test)) 生效,不污染用例与本机 AppData
2026-10-02 13:56:52 +08:00
k88936 f756b52d8c Merge remote-tracking branch 'origin/master' into fix/wrong-report
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 2m23s
Project CI / Backend tests (pull_request) Failing after 19s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 1m48s
Project CI / AI game creator shell Rust smoke (pull_request) Failing after 2m14s
Project CI / Repository checks (pull_request) Failing after 36s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m49s
Project CI / Frontend tests (pull_request) Successful in 4m7s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m41s
Project CI / Native shell tests (pull_request) Failing after 5m46s
# Conflicts:
#	docs/project-memory/shared-memory/pitfalls.md
2026-10-02 13:56:47 +08:00
kdletters b8a659c12f Direct 回合兜底收口同时写项目侧脱敏诊断
Project CI / AI game creator shell Rust lane 1/2 (push) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (push) Has been cancelled
Project CI / AI game creator shell Rust smoke (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 / Native shell tests (push) Has been cancelled
Project CI / Frontend 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
TurnReservation 兜底收口时除应用日志外,再写一份 .agent/runtime/errors 脱敏诊断
诊断正文带 threadId 与 turnToken,便于与账本、运行日志对账
2026-10-02 13:54:50 +08:00
kdletters a6428228d1 Direct 回合 panic 转成可诊断的分类失败
Project CI / AI game creator shell Rust smoke (push) Failing after 2m4s
Project CI / AI game creator shell Rust lane 1/2 (push) Failing after 2m4s
Project CI / AI game creator shell Rust crates (push) Successful in 2m3s
Project CI / AI game creator shell Rust lane 2/2 (push) Failing after 2m17s
Project CI / Backend tests (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
dispatch 层用 AssertUnwindSafe/catch_unwind 接住回合体 panic,不再落到 HostDropped 兜底
panic 负载转成直接可读文本并写进脱敏诊断与应用日志,终态改为分类失败
补齐 futures::FutureExt 导入
2026-10-02 13:51:52 +08:00
k88936 27f7375b51 拒绝桥合成事件带上promise
- unhandledRejectionBridge:合成事件优先用 PromiseRejectionEvent(jsdom 没这个构造器时退回普通 Event),再把 reason / promise 都挂成实例访问器,jsdom 分支下 promise 也可读
- 判定调整为读 reason 或 promise 任一个都算 window 侧接手(原来只认 reason)
- 补一条用例:事件带 promise 且读 promise 也算被消费
2026-10-02 13:48:26 +08:00
kdletters a59d068c1d 给 Direct 回合的静默早退补上诊断留痕
TurnReservation 兜底收口时写应用日志,并用 thread::panicking 区分 panic 与 future 被丢弃/取消
新增 Direct 回合 panic hook:task-local 携带回合身份,panic 时记录位置与负载
两处均 cfg(not(test)),不污染用例与本机 AppData
2026-10-02 13:47:36 +08:00
k88936 a512786996 读body失败保留已确认状态码
- auth_session:拿到 status 后 response.text() 失败不再一律报网络不可达;非 2xx 按状态码走既有分类(serverMessage 为 None,如 503 → authServiceUnavailable),只有 2xx 响应没收完才归传输层故障
- 抽出 classify_unreadable_body 并补单测(503 / 会话 401 / 400 / 2xx)
- 决策记录追加该口径
2026-10-02 13:47:03 +08:00
k88936 836f8a7348 手机号登录401归phoneCodeLoginRejected
- auth_session:/api/auth/phone/login 的 401(只来自「用户不存在」)改判为 phoneCodeLoginRejected{serverMessage},不再冒充「验证码错误或过期」
- auth_error:退役顶层变体 smsCodeRejected(唯一产生点就是这个错配的 401 分支)
- 前端三个 catch 删掉 smsCodeRejected 分支;phoneCodeLoginRejected 文案统一为「验证码登录失败:<服务端原文>」,冒号改全角
- ts-rs 重新生成 ClientAuthError 联合;carrier 用例同步删掉 smsCodeRejected
- 文档:ADR + decision-log 记录 401 归属与 smsCodeRejected 退役
2026-10-02 13:35:40 +08:00
kdletters e3b4127440 统一 AGC 失败兜底口径:兜底只用专用错误码与专用文案
Project CI / AI game creator shell Rust crates (push) Successful in 1m52s
Project CI / AI game creator shell Rust smoke (push) Successful in 2m47s
Project CI / Backend tests (push) Failing after 4m0s
Project CI / Frontend tests (push) Successful in 1m59s
Project CI / Native shell tests (push) Successful in 6m19s
Project CI / Repository checks (push) Successful in 2m43s
Project CI / AI game creator shell web tests (push) Successful in 1m47s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 11m5s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 11m19s
新增 homeCreationFailure 统一创建失败出口:宿主机器码 / IPC 失联 / 专用未分类兜底三种文案,宿主原始文本改为 appendWebviewLog 落 application.log 而不上屏
首页创建失败不再无条件覆盖成「创建未完成,请重试」,也不再写死「首条需求投递失败」指认某一步;工作区已建好时保留该事实并提供「已创建的工作区」恢复说法
宿主预检按真实原因分流浏览器验证错误码(browser-missing / launch-timeout / launch-failed / cancelled / browser-cleanup-failed / browser-environment-failed / evidence-failed / input-invalid / page-check-failed),未识别落回专用 web-preflight-unclassified
依赖准备收据保留宿主返回的真实失败码,不再一律写成 web-scaffold-preparation-failed
直连回合失败分类器 else 改为专用 runtime-unclassified,并补 sidecar-turn-timeout / sidecar-launch-failed / app-server-launch-failed / claude-code-failed 四个有证据的具体码
Codex CLI 与 Claude sidecar 的进程启动失败保留真实 OS 错误,不再报成「不支持 app-server 子命令」或「Node runtime 不可用」
更新检查新增结果型入口 checkForAppUpdateResult,「关于」页检查失败显示真实原因而不是「当前已是最新版本」
首页无码预检兜底文案不再写「请检查 Node/npm 或浏览器」这类未证实的候选原因
同步 pitfalls 六条与团队约定:兜底码/兜底文案规则、五项修复的现象根因处理验证、测试夹具编译修复记录
验证:vitest homeCreationFailure/homeWebPreflight/appUpdate/appSurface 共 215 passed;cargo test environment_check:: 19 passed、agent::runtime_error:: 5 passed、direct_failure_diagnostic 4 passed、tests::configuration:: 45 passed;cargo fmt --check、tsc --noEmit、npm run typecheck、check:encoding、git diff --check 通过
2026-10-02 13:07:00 +08:00
kdletters 563f6a8e04 修复 AGC Rust 测试夹具未跟随执行器与协议正交拆分
补 select_game_creator_model 第 4 个协议参数(传 None,按执行器推导协议)
补四处 GameCreatorAppConfig 字面量的 selected_model_protocol: None
目的:HEAD 上测试模块编译失败(9 个错误),挡住预检与运行时分类的定向验证
验证:cargo test --features=cocos-editor-execute,unity-editor-execute,godot-editor-execute --bin genarrative-ai-game-creator-shell tests::configuration:: 45 passed
2026-10-02 13:07:00 +08:00
k88936 b0f9eb2292 拒绝桥交回原监听器时对齐Node的this
- unhandledRejectionBridge:交回原监听器改用 Reflect.apply 把 this 绑成 process,和 Node EventEmitter 一致,依赖 this 的原监听器不再拿到 undefined
- 补一条用例钉住 this 语义
2026-10-02 13:06:56 +08:00
k88936 3d4c42901c 认证超时用例断言精确到一条拒绝
- auth.suite:启动超时用例先断言恰好捕获 1 条拒绝,再断言它是含「检查登录状态超时」的 Error
- 原来的 some(...) 只看有没有命中,无关 unhandledrejection 会被这段捕获静默吞掉、测不出回归
2026-10-02 13:06:30 +08:00
k88936 74e7209c31 生成绑定JSDoc去掉Rust语法
- auth_error:服务端原文缺失说明从 None 改成 TS 读得懂的 null(PasswordLoginRejected / SendCodeRejected / PhoneCodeLoginRejected)
- auth_error:AuthResponseInvalid.server_message 的说明从 AuthResponseInvalidReason::ServerRejected 改成线上字面量 serverRejected
- ts-rs 重新生成 4 份载荷绑定
2026-10-02 13:05:40 +08:00
lhk229 98cb0d237e 修复固定试玩误判祖先指针穿透样式(#547) (#583)
Project CI / AI game creator shell Rust crates (push) Failing after 1m30s
Project CI / AI game creator shell Rust lane 2/2 (push) Failing after 2m8s
Project CI / AI game creator shell Rust smoke (push) Successful in 2m18s
Project CI / AI game creator shell Rust lane 1/2 (push) Failing after 3m38s
Project CI / Frontend tests (push) Successful in 2m58s
Project CI / Backend tests (push) Failing after 4m26s
Project CI / Repository checks (push) Successful in 3m4s
Project CI / AI game creator shell web tests (push) Successful in 1m47s
Project CI / Native shell tests (push) Successful in 6m21s
关联 #547。

固定试玩将任意祖先的 `pointer-events:none` 累计为按钮禁用,导致覆盖层穿透、按钮恢复 `auto` 的合法布局在实际点击前被拒绝。现在只检查目标控件自身的计算样式;未覆盖的继承 `none` 仍拒绝,原有命中、可见性、disabled、aria-disabled、inert 和真实输入校验保持有效。

复用现有浏览器夹具,补充双视口穿透布局回归及九种不可用控件拒绝场景,并同步场景指纹快照、技术方案和共享排障记录。

验证:
- 修复前真实 Chrome 在 desktop/mobile 均复现 start 被误判 disabled;修复后合法布局完整通过开始、主要操作和重开,sequence 从 0 到 3、最终 phase 为 ready。
- 浏览器模块单元测试:27 passed;14 个真实浏览器测试默认 ignored,其中本次显式执行并通过 4 个相关用例(新增 2 个,已有 2 个)。新增拒绝用例在双视口覆盖继承 none、目标 none、目标 none/子元素 auto、disabled、禁用 fieldset、aria-disabled、inert、隐藏和遮挡。
- rustfmt、编码检查、文档索引检查、git diff --check 通过;完成独立代码审查。

验证边界:未运行全量测试;当前工作区未找到现场游戏导出,尚未复核该游戏开始流程。generic 的 mobile 结果为移动视口下的真实鼠标输入,未进行真实触摸验收。

Reviewed-on: #583
Co-authored-by: Linghong <ink29535@proton.me>
Co-committed-by: Linghong <ink29535@proton.me>
2026-10-02 12:56:55 +08:00
k88936 e4b15d3bbf Merge remote-tracking branch 'origin/master' into fix/wrong-report
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m25s
Project CI / AI game creator shell Rust crates (pull_request) Failing after 53s
Project CI / Backend tests (pull_request) Failing after 21s
Project CI / Frontend tests (pull_request) Successful in 2m25s
Project CI / Repository checks (pull_request) Failing after 14s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m45s
Project CI / Native shell tests (pull_request) Successful in 5m48s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 10m34s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 11m18s
# Conflicts:
#	docs/project-memory/shared-memory/decision-log.md
#	docs/project-memory/shared-memory/pitfalls.md
2026-10-02 12:19:13 +08:00
k88936 e1e8725dab AuthClientInitFailed带构建失败原始错误
- 错误枚举:authClientInitFailed 从 unit 变体改成带 detail 的载荷变体,导出 AuthClientInitFailed 绑定
- auth_session:build_client 失败时把 reqwest 原始错误放进 detail,不再丢弃
- carrier 用例按带载荷变体 as 取 detail
- 前端维持固定文案,不把 detail 贴到界面上
2026-10-02 12:12:50 +08:00