k88936
|
53e2889bbd
|
本机IO失败去掉detail载荷
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m20s
Project CI / Backend tests (pull_request) Failing after 21s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m10s
Project CI / Frontend tests (pull_request) Successful in 2m27s
Project CI / Repository checks (pull_request) Failing after 15s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m50s
Project CI / Native shell tests (pull_request) Successful in 6m25s
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
- Rust 错误枚举:clientSessionPersistFailed / runtimeSessionInstallFailed 改无字段变体,删除会带 AppData 路径的 payload 结构体
- auth_session:本机凭据/运行时会话 IO 失败改成写本地日志后返回无字段变体,不再把原始 error 放进载荷
- 前端:登录检查/发码/登录三处 catch 去掉 as 取 detail,改用本操作的固定文案
- ts-rs 重新生成 ClientAuthError 联合,删除两个已不存在的载荷绑定文件
- 补充 auth_error 用例:两个变体序列化为仅含 type 的无字段形状
|
2026-10-02 11:57:31 +08:00 |
|
k88936
|
5f76e3bb53
|
AGC认证未识别拒绝补可见提示
- AuthenticatedClient 三个 catch 的 default 分支在 rethrow 前补一行泛化提示,界面不再停在无解释状态
- 上报判据用例同步断言 Tauri 意外拒绝形状也会显示这条提示
|
2026-10-02 11:48:15 +08:00 |
|
k88936
|
7528ba0116
|
unhandledrejection桥接保留once语义
- 用 rawListeners 记录原始监听器,拆卸时把 once 包装按 process.once 装回,普通监听器仍按 process.on 装回
- 未被 window 消费时调用 once 包装包裹的原函数,避免脱离 emitter 直调包装
- 注释记录安装期间新增监听器排在恢复监听器之前的既有边界
|
2026-10-02 11:35:13 +08:00 |
|
k88936
|
da4645f55e
|
认证页面用例抽出unhandledrejection捕获helper
- 两处重复的桥接安装、reason 收集与拆卸收成 captureWindowRejections()
- 顺带修正系统变体用例里过期的载体 message 注释(现在 message 是载荷序列化)
|
2026-10-02 11:33:53 +08:00 |
|
k88936
|
7278023cb7
|
认证页面用例统一用throw表达拒绝
- 业务变体用例的 Promise.reject 改为 throw,与相邻用例风格一致、不与已 resolved 混淆
|
2026-10-02 11:31:50 +08:00 |
|
k88936
|
325ebda7eb
|
认证页面用例恢复重试按钮可用态断言
- 启动超时用例改回 getByRole + disabled=false,避免渲染但禁用的重试按钮也能通过
|
2026-10-02 11:31:34 +08:00 |
|
k88936
|
55d8667c07
|
AGC认证载体序列化用例对齐
- 载体用例断言 message 为载荷序列化;Tauri 缺陷抛真 Error 时是 {},但上报仍优先用其自身 message/stack
- 上报用例的 message 断言改为序列化结果,并新增真 Error 优先分支用例
|
2026-10-02 11:09:46 +08:00 |
|
k88936
|
ff5949b98d
|
修复AGC登录与发码系统失败残留忙碌文案
- handleSendCode/handleLoginSubmit 的 catch 在抛出前把系统失败原因写进 loginStatus,离开「正在发送验证码」「正在登录」
- 系统变体按类型化载荷拼出提示文案后再原样抛出,恢复改动前「显示 + 上报」的可见行为
- 本地运行时超时等非载体错误同样先写 loginStatus 再抛出
- appSurface 用例改为断言系统变体文案落到登录页且仍经 unhandledrejection 抛出
|
2026-10-02 02:56:08 +08:00 |
|
k88936
|
2954f7b769
|
修复AGC启动检查失败不给可见反馈的回退
- hydrateAuth 的 catch 恢复改动前的可见反馈:登录状态检查超时等非载体错误先写 authCheckError/loginStatus 再原样抛出
- 系统变体先按类型化载荷(reason/status/detail/serverMessage)拼出提示文案,再原样抛出交全局 unhandledrejection 上报
- appSurface 用例改为断言启动超时后登录页显示原因并保留「重试登录状态检查」
|
2026-10-02 02:56:00 +08:00 |
|
k88936
|
ba7c4a9bbf
|
AGC认证错误用例对齐类别变体与类型化reason
- 载体用例:authNetworkFailure 与 authResponseInvalid 改为内层 reason switch,覆盖全部 reason 与 default expectNever
- 网关、上报、页面用例改用 authNetworkFailure 等新变体名与类型化 reason 载荷
- 新增可枚举细分不读服务端文案的分流断言
|
2026-10-02 02:42:36 +08:00 |
|
k88936
|
3d6eade206
|
AGC认证错误用例对齐拍平变体
- 载体用例覆盖变体全集:无字段变体取固定文案,带载荷变体 as 后读 serverMessage/status/detail
- 上报判据新增 passwordLoginRejected:服务端 400 原文只展示、不写错误池
- 网关用例改用 authNetworkUnreachable / serverAddressNotHttps 等新变体名
|
2026-10-02 02:25:09 +08:00 |
|
k88936
|
e1628b2ccd
|
AGC 认证失败改用 ClientAuthErrorWrapper 薄包装
- clientActionError.ts 改名 clientAuthErrorWrapper.ts,类名同步为 ClientAuthErrorWrapper,error 字段标注 ClientAuthError
- invokeClientAuth 改为薄包装:不读变体 message、不塞 context,只把拒绝原样装成 JS Error
- 三处 catch 改用 error.error 分流,每个 case 继续用 as 取具名载荷
- captureClientError 从 error 字段取原始错误;上下文只认显式入参
- 载体、host、错误上报与 appSurface 用例同步新载体与新默认文案
|
2026-10-02 01:42:17 +08:00 |
|
k88936
|
e43efeb269
|
AGC 认证失败去掉手写载体类,直接用 ClientActionError + 生成判别联合
- 删除 clientAuthFailure.ts,invokeClientAuth 改为把拒绝装进已有 ClientActionError,cause 即 ts-rs 生成的 ClientAuthError
- 三处 catch 改为 instanceof ClientActionError 后取 error.cause 分流,每个 case 用 as 取具名载荷
- 认证载体用例改名 clientAuthErrorCarrier.test.ts,断言改为 ClientActionError.cause
- clientAuthHost 用例与 auth_session.rs 注释同步新载体
|
2026-10-02 01:27:18 +08:00 |
|
k88936
|
b0d7d403d0
|
AGC 认证命令包装去掉运行时形状嗅探
- invokeClientAuth 不再检查 type 是否存在:认证命令的拒绝按 ts-rs 映射直接转成 ClientAuthFailure
- requireInvoke 提前到 try 之外:认证桥未安装是我们自己的失败关闭错误,保持原样抛出
- Error.message 仍只取拒绝值里的可展示字符串,只做展示,不参与分流
- 测试:新增"桥未安装保持原样抛出"与"Tauri 意外形状也按映射包装"两条判据;authFailureReporting 的意外形状用例改为断言 source=auth + 命令名
|
2026-10-02 01:12:25 +08:00 |
|
k88936
|
06a4f9346f
|
unhandledrejection 测试桥只吞被 window 侧消费的拒绝
- 合成事件的 reason 改为访问器:有监听方读过就算有人接手;没人读则交回安装前的监听器(含 vitest 失败上报)
- 新增 unhandledRejectionBridge.test.ts 钉住两条路径:无人接手会交回、window 读过则不再交回
- 避免桥把无关的未处理拒绝静默吞掉
|
2026-10-01 21:15:03 +08:00 |
|
k88936
|
08b8d0d167
|
修正启动检查系统变体用例的负向断言竞态
- 先等系统变体经 unhandledrejection 抛出(并校验抛出物带 Rust 原文),再断言登录页没有该文案
- 原写法在首个 waitFor tick 就因 queryByText 返回 null 而通过,没真正验证拒绝落地后的文案
|
2026-10-01 21:12:45 +08:00 |
|
k88936
|
ce54c729e8
|
AGC 认证命令失败改为 JS 侧载体并只按变体分流
- 新增 ClientAuthFailure:payload 为 ts-rs 判别联合,context 固定 source=auth + 命令名,cause 为原始拒绝值
- clientAuth 的六个命令统一走 invokeClientAuth:结构化拒绝转成 ClientAuthFailure,非结构化拒绝原样抛出,不兜底文案
- 删除 clientAuthError.ts 的形状读取与 getClientAuthErrorMessage 文案回落层
- AuthenticatedClient 的两个 catch 内联 19 个变体的 switch:业务 / 会话变体原样展示载荷 message,系统变体原样抛出经 unhandledrejection 入池,default: expectNever 保证漏接变体编译失败
- hydrateAuth 失败先离开 loading 态;系统变体不再伪装成 unavailable 投影
- ClientAuthState 收窄为 authenticated / unauthenticated,ClientAuthRefreshResult 收窄为 refreshed / unauthenticated / stale
- platformSession 续期只保留 refreshed / unauthenticated / stale 三条路径
- check-config 的 App 调用扫描登记 invokeClientAuth,继续静态证明命令名可达
- 测试:新增 clientAuthFailure 载体与编译期穷尽用例、jsdom unhandledrejection 桥;删除 clientAuthError.test.ts;clientAuthHost / authFailureReporting / authSurface 跟改新口径
- 共享记忆记录 check-config 扫描形态新增 invokeClientAuth
|
2026-10-01 20:49:48 +08:00 |
|
k88936
|
f435d48399
|
AGC 认证错误改为每个变体一个具名载荷类型
- auth_error.rs:枚举改为 newtype 变体,每个变体持有一个同名 `#[ts(export)]` 载荷结构体
- auth_session.rs:41 处构造点改为 `ClientAuthError::X(X { .. })` 并导入载荷类型
- 重新生成 services/generated:ClientAuthError.ts 变成 `{ type } & 具名类型`,新增 19 个载荷类型文件
- tests/clientAuthError.test.ts:新增编译期用例,switch (error.type) 分支里错误窄化成具名载荷类型
|
2026-10-01 18:08:18 +08:00 |
|
k88936
|
b561db9249
|
删除认证失败上报的派生分类层,改为调用方按具体变体分流
- 删除 clientAuthErrorKind / clientAuthErrorNotice,clientAuthError.ts 只留 isClientAuthError 形状读取
- 删除 resolveClientAuthFailure 与 ClientAuthFailureResolution,AuthenticatedClient 直接 switch 具体变体名
- 同步重写相关单测与 ADR 第 3 节前端分流描述
|
2026-10-01 17:55:54 +08:00 |
|
k88936
|
c2a27aed2a
|
新增认证失败上报判据的端到端测试
- 新测试 mock 模块级 @tauri-apps/api/core invoke,从而能观察 report_client_error 是否被调用
- 覆盖:手机号或密码错误、发码限流不写错误池;网络不可达带 auth/login 上报一次
- 已用变异验证:把分流改成一律上报时,两条业务用例会失败
|
2026-10-01 17:41:45 +08:00 |
|
k88936
|
c5153a7ed2
|
去掉认证网络失败文案里的 network-error 机器前缀
- AUTH_NETWORK_ERROR / AUTH_NETWORK_TIMEOUT 不再带 network-error: 前缀,用户看到的就是完整中文提示
- 前端按 type 分流后不再解析该前缀,没有任何 Rust/TS 消费方依赖它
- auth.suite.ts 与 clientAuthHost.test.ts 的对应 fixture/断言同步更新
|
2026-10-01 16:46:46 +08:00 |
|
k88936
|
b202c70271
|
退役词表:DirectProject 域不再使用"拒单"
- direct_turn_error.rs 模块文档把"拒单载荷"改写为"入队失败载荷",与 2026-09-24 ADR 的词表一致
- agentRuntimeModel.test.ts 的用例名与注释同步改成"入队失败"
|
2026-10-01 16:42:43 +08:00 |
|
k88936
|
454fbd5e91
|
Merge remote-tracking branch 'origin/master' into fix/wrong-report
|
2026-10-01 16:09:14 +08:00 |
|
k88936
|
8b50db9893
|
修复登录失败分流把空文案的业务变体误判为需上报
- resolveClientAuthFailure 改用 clientAuthErrorKind 判分流,不再用 clientAuthErrorNotice 是否为 null 当判据
- 空文案的 input/session 变体改为给兜底提示、不进错误池,保持"预期拒绝永不进池"的约束
- clientAuthErrorNotice 文档注明 null 同时表示 fault 与空文案,不能当分流判据
- clientAuthHost.test.ts 增加空文案业务变体的分流用例
|
2026-10-01 16:05:47 +08:00 |
|
k88936
|
b61fa52e8f
|
AGC 登录失败按类型化变体分流:业务拒绝不再进错误池
- AuthenticatedClient 登录/发码 catch 改用 resolveClientAuthFailure:input/session 变体只给提示,fault 变体与未识别拒绝包成 ClientActionError 交给错误池
- clientAuth.ts 新增 resolveClientAuthFailure,判定只看结构化 type,不做文案匹配
- 删除 errorReporting.ts 的 shouldCaptureClientError,不再存在叶子自行判定要不要上报的口径
- clientAuthHost.test.ts 新增分流用例,auth.suite.ts 的登录失败用例改为结构化拒绝并断言提示文案
|
2026-10-01 15:33:47 +08:00 |
|
lhk229
|
55375b1406
|
清理测试编译warning (#509)
Project CI / AI game creator shell Rust crates (push) Successful in 1m18s
Project CI / AI game creator shell Rust smoke (push) Successful in 1m30s
Project CI / Backend tests (push) Successful in 3m58s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 10m12s
Project CI / Native shell tests (push) Successful in 5m49s
Project CI / Frontend tests (push) Successful in 2m18s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 9m50s
Project CI / AI game creator shell web tests (push) Failing after 2m11s
Project CI / Repository checks (push) Successful in 2m55s
Reviewed-on: https://git.genarrative.world/git/GenarrativeAI/Genarrative/pulls/509
Co-authored-by: Linghong <ink29535@proton.me>
Co-committed-by: Linghong <ink29535@proton.me>
|
2026-10-01 15:29:23 +08:00 |
|
k88936
|
5013f4385f
|
AGC 前端错误分流基元:ClientActionError 与认证变体分类
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m50s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m9s
Project CI / Backend tests (pull_request) Failing after 16s
Project CI / Frontend tests (pull_request) Successful in 2m3s
Project CI / Repository checks (pull_request) Failing after 14s
Project CI / AI game creator shell web tests (pull_request) Failing after 1m42s
Project CI / Native shell tests (pull_request) Successful in 5m41s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 10m10s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 11m9s
- 新增 clientActionError.ts:ClientActionError 承载 source/action/page 上下文与 cause
- 新增 clientAuthError.ts:isClientAuthError 形状读取 + clientAuthErrorKind 的 input/session/fault 分类 + clientAuthErrorNotice 文案
- captureClientError 解包 ClientActionError 的上下文,并优先使用 cause 的栈信息
- getClientAuthErrorMessage 认识结构化拒绝,非 Error 形状不再字符串化成 [object Object]
- 新增 clientAuthError.test.ts,并在 errorReporting.test.ts 用解包用例替换 shouldCaptureClientError 用例
|
2026-10-01 15:27:31 +08:00 |
|
suzmii
|
0bfc5768cc
|
修复AGC跨平台资源构建目标
让Linux no-bundle smoke不再误用Windows随包资源目标。
统一dev与release的Cargo目标和feature解析,补充跨平台回归测试。
同步随包资源staging技术方案中的实际构建目标约定。
|
2026-09-30 20:24:23 +08:00 |
|
suzmii
|
1dbbdcf329
|
修复AGC开发资源准备时序
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m28s
Project CI / Backend tests (pull_request) Failing after 18s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 1m57s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m1s
Project CI / Repository checks (pull_request) Failing after 27s
Project CI / Native shell tests (pull_request) Failing after 1m40s
Project CI / Frontend tests (pull_request) Successful in 2m6s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m52s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 7m15s
在启动Vite前完成随包资源staging,避免Windows监听目录导致rename返回EPERM。
同步更新开发入口生命周期测试。
|
2026-09-30 19:28:16 +08:00 |
|
suzmii
|
8be75e8e15
|
合并 origin/master(33 个提交):DirectProject 入队化与事件投影
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m30s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 1m54s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m57s
Project CI / Frontend tests (pull_request) Successful in 3m39s
Project CI / Backend tests (pull_request) Successful in 6m13s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 7m59s
Project CI / Repository checks (pull_request) Successful in 3m29s
Project CI / Native shell tests (pull_request) Successful in 8m0s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m58s
- 合并 origin/master(425fbcf63..9ee34809b),唯一冲突是共享决策日志两侧各插条目,取「两侧并存」
- 本轮 master 未触及随包资源声明、准备步骤与三份 tauri 配置,build.rs 只读校验保持不变
- 决策日志与踩坑记录同步两侧条目;docs/README.md 与项目索引按 master 收敛
- 构建期重新生成的 ts-rs 绑定经 prettier 归一后与 master 逐字节一致(合并未丢类型)
- 校验:cargo test --no-run 全 target 通过、AGC 应用 vitest 191 files / 1889 tests passed、check-package-layout、prepare-bundled-resources 18 passed、check-config、check:encoding、prettier、cargo fmt --check 全绿
|
2026-09-30 17:38:35 +08:00 |
|
suzmii
|
b5a143c04f
|
合并 origin/master:随包资源仍由准备步骤生成,Claude Agent SDK sidecar 按同一架构归位
- 合并 origin/master(140 个提交),解决 4 处冲突:build.rs 取只读校验分支、package.json 同时保留 bundled-resources:test 与 check:generated-bindings、决策日志与踩坑记录两侧条目并存
- master 的构建期 staging(stage_bundled_claude_agent、prune_stale_codex_components)不进构建脚本;sidecar 改由声明与准备步骤产出
- package-layout.json 新增 claudeAgent section(锁定版本、sidecar 入口、上游 SDK 与平台原生运行时目标表、复制跳过规则),layoutVersion 递增到 2
- prepare-bundled-resources.mjs 新增 sidecar 整目录原子替换与缓存 key,复制规则按 section 参数化,Windows 真机 24 个文件、复跑命中缓存零写入
- package_layout.rs 新增 sidecar 只读校验(入口与仓库源码逐字节一致、上游包版本、可执行位、白名单外文件)与声明钉住用例
- build.rs 调用 sidecar 校验并导出 AGC_CLAUDE_AGENT_SDK_VERSION;claude_code_cli.rs 的 sidecar 身份串改用声明版本
- resources/claude-agent 映射从基线 tauri.conf.json 移到 windows/macos 平台配置,check-config.mjs 增加「基线不得声明 resources/**」守卫
- 修正 package_layout 的 Windows 路径期望用例(期望值改与实现同形,原用例在 Windows 必红)
- 同步技术方案 §4.5/§4.9、共享决策日志与踩坑记录
|
2026-09-30 17:23:04 +08:00 |
|
k88936
|
0270cd601e
|
DirectProject 埋点成绩改由宿主结算,删掉候选/settle 两阶段与 analyticsAttemptId
- analytics/run.rs:删 Request::DirectCandidate / Request::Settle 与 settle();direct_finished 改收放行代次,终态再读一次 identity_generation,不同则整条不记,相同则直接落 Request::Terminal
- analytics/store.rs:删 pending_runs / pending_run_bytes 与两条候选分支(连带 16 条上限),run_request 不再需要字节预算参数
- analytics/gui.rs + main.rs:删 settle_direct_run_analytics 命令与注册
- 放行侧:kick_queue_dispatch 在读 claim 之后读一次平台会话代次并随整轮传下去;user_input 命令不再收 analyticsAttemptId,队列条目不再持有埋点句柄
- 渲染层:删 beginDirectRunAnalytics、句柄表与结算 effect、settle 调用与命令参数;删除 tests/directRunAnalytics.test.ts,appSurface 两处断言同步
- 判据口径随放行搬家:从“发送时与终态同代”改成“放行时与终态同代”,入队后放行前的账号切换不再丢弃成绩
- 验证:cargo test -- analytics::(45 passed,含新增的直写与代际变化两条)、cargo test -- agent::(949 passed)、analytics_real_file_write 用例、npx vitest run tests/appSurface.test.ts(194 passed)、相关 chat/direct 单测 139 passed、typecheck 通过
|
2026-09-30 16:25:05 +08:00 |
|
k88936
|
f121257cca
|
线程管理器归位 agent/thread_manager:去掉 Direct 前缀,按职责拆文件
- 四个 direct_* 文件移入 agent/thread_manager:wire.rs(运行态事件契约)、queue.rs(待发消息队列规则)、dispatch.rs(放行与占用)、mod.rs(管理器主体与对外入口)
- 类型去掉 Direct 前缀:ThreadEvent / ThreadManager / ThreadItem / ThreadFileChange / ThreadDeltaKind / ThreadRequestKind / PendingTurn / QueueRemovalReason / QueueRemovalOutcome / DispatchedTurn / TurnReservation / TurnIdentity / StaleTurnRelease / ConsumeResult / SubscriptionBootstrap / ActiveTurn / ActiveTurnSnapshot
- 对外函数改名:subscribe_thread / consume_thread / unsubscribe_thread / append_thread_event / enqueue_pending_turn / remove_pending_turn / claim_pending_turn / update_active_turn / list_active_turns / complete_turn / complete_turn_if_reserved / active_turn_id_at / read_turn_identity / stale_turn_for_release / thread_id_for_project
- 生成绑定跟着改名(DirectThreadEvent→ThreadEvent 等十个文件为 rename),前端八处 import 同步;Tauri 命令名与前端 IPC 契约不变
- 定向验证:cargo test agent::(945 passed,另两条并发用例为既有 flaky、重跑通过)、npx vitest run appSurface/directThreadChat/directHistoryPaging(247 passed)、typecheck 通过
|
2026-09-30 15:47:22 +08:00 |
|
k88936
|
888c249ffd
|
Merge branch 'master' into feat/msg-queue-to-rust
Project CI / AI game creator shell Rust smoke (pull_request) Failing after 1m16s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 1m16s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 1m16s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m49s
Project CI / Frontend tests (pull_request) Successful in 4m14s
Project CI / Repository checks (pull_request) Successful in 4m34s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m13s
Project CI / Backend tests (pull_request) Successful in 7m10s
Project CI / Native shell tests (pull_request) Successful in 7m58s
|
2026-09-30 14:37:25 +08:00 |
|
kdletters
|
fb130d1847
|
新增 AGC 模型 Agent 模式与 Claude Agent SDK sidecar
Project CI / AI game creator shell Rust lane 1/2 (push) Failing after 57s
Project CI / AI game creator shell Rust lane 2/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 / 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
Project CI / AI game creator shell Rust smoke (push) Has been cancelled
后台模型目录增加 codex/cc 执行模式绑定,旧目录缺省兼容 Codex
AGC 客户端按模型绑定路由 Codex app-server 或 Claude Agent SDK sidecar
随包携带 Node runtime、Claude Agent SDK 与匹配平台 Claude runtime
补充模型配置、客户端选择、运行时适配、MCP 取消和定向测试
同步 AGC 模型配置规范、里程碑计划与共享决策记录
|
2026-09-30 14:07:25 +08:00 |
|
k88936
|
131026795a
|
合并 origin/master:待发消息队列归宿主叠加 master 的 active-turns 广播与保活下沉
- direct_runtime/mod.rs:保留本分支「Thread Manager 是活动回合唯一事实源」(direct_active_turn_id_at),
丢掉 master 的 DirectTaonierActiveInvocationGuard 第二份进程内表;master 的美术背景路由改动全部保留
- direct_thread_manager.rs:双方都保留——本分支的待发队列 / 容量上限 / 残留回合兜底释放,
与 master 的 emit_direct_active_turns_changed 广播、unsubscribe、update_active_turn 返回「是否真的变了」
- useDirectProjectChatController.ts:保留本分支入队化逻辑,采纳 master 的 rawMessage 小重构与保活下沉
- direct_turn_dispatch.rs:会话保活改挂放行占用(DirectTurnReservation._session_keepalive),
随占用释放即停,等价承接 master 放在调用身份守卫里的保活意图
- 保留本分支对 direct-execution-production-fixture.mjs 的删除(--direct-codex-chat CLI 已退役,夹具无入口)
- 连带退役 scripts/run-agc-direct-execution-fixture.mjs 与 npm run check:agc-direct-execution-fixture(只服务该夹具)
- 文档同步:ADR / 09-24 实施计划 / decision-log 记录上述退役,09-16 与 09-18 里程碑、pitfalls 的夹具命令标注为已退役
|
2026-09-30 13:35:14 +08:00 |
|
k88936
|
e221543947
|
终止钮按 canStopTurn 显示:队列非空不再顶出终止按钮
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m24s
Project CI / Backend tests (pull_request) Failing after 14s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m8s
Project CI / Frontend tests (pull_request) Successful in 1m57s
Project CI / Repository checks (pull_request) Failing after 25s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m27s
Project CI / Native shell tests (pull_request) Successful in 5m47s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 8m38s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 8m57s
- `useDirectProjectTurnStatus` 新增派生判据 `canStopTurn`(`nativeRunning || commandInFlight`)与共享的
`canStopDirectProjectTurn`,写清它与 `displayBusy` 的分工:前者回答"终止这一脚踢给谁",后者回答"界面能不能声称空闲"
- composer 的发送钮 / 终止钮按 `canStopTurn` 换;`busy` 继续管模型 / 附件 / 语音这些与当前这轮冲突的控件
- `cancelTurn` 的受理判据改用同一个函数:显示与受理同源,不再出现"按钮在、点了说没有回合"
- `displayBusy` 保持三者并集不变(卡片仍要早于首个 token 显示"正在处理")
- 测试:`directProjectTurnStatus` 补 `canStopTurn` 用例;appSurface 补"只有待发消息、没有回合在跑时不显示终止钮"(撤掉修复会红)
|
2026-09-30 13:11:45 +08:00 |
|
k88936
|
e0ca5ad9b9
|
前端 bootstrap 用例补齐:在跑的那一轮与在队条目同时还原
- `directThreadChat.test.ts` 队列投影分组里新增一条:bootstrap 同时带 `turn.started` 锚点与两条 `queue.enqueued`
- 断言 `turnRunning` / `turnUserItemId` / `pendingTurns` 三者同时正确,而不是各测一半
- 只加用例,不改实现
|
2026-09-30 12:43:32 +08:00 |
|
k88936
|
f4558475a0
|
取消待发消息时清掉它的埋点句柄
- 控制器在 `remove_direct_project_pending_turn` 返回 `removed` 时删除该 `clientTurnId` 的埋点句柄
- 被取消的待发消息永远不会放行、也就不会有自己的 `turn.completed`,句柄留着只会泄漏
- 留着还会挤进"身份缺失"的兜底结算候选(挑认领表里最早那一条),把下一次结算算到没跑过的回合头上
- 补一条 appSurface 用例钉住这条不变式:回放没有身份的失败终态时,兜底结算只落到还能收口的那一条
|
2026-09-30 11:42:57 +08:00 |
|
k88936
|
3e8954548a
|
测试替身对齐宿主的按身份判定:alreadyDispatched 只认正在跑那一条
- hostQueue 记录被放行的 clientTurnId,cancel 只在身份一致时回 alreadyDispatched,其余回 notFound
- 与宿主 remove_pending_turn(按 active_turn.turn_id 比对)保持一致,避免复用该替身时掩盖 notFound 分支
|
2026-09-30 11:33:42 +08:00 |
|
k88936
|
4e8b269816
|
删掉 TurnAlreadyRunning:入队化后没有并发撞单的生产点
- 删 DirectTurnError::TurnAlreadyRunning 变体,以及 is_reportable / Display 的对应分支与专属用例
- 前端 directTurnEnqueueFailureNotice 删掉 turnAlreadyRunning 分支;ts-rs 绑定同步删除该变体
- 结构化载荷用例的样本换成 queueFull,本地说明用例的文案样本换成队列已满提示
|
2026-09-30 10:39:53 +08:00 |
|
k88936
|
0534e9c678
|
前端收口:待发消息队列改由事件投影驱动,退役本地队列机器
- 新增 conversation/directPendingTurns.ts:入队/移除两个纯函数,不判上限、不排期、不排序
- reducer 新增 queue.enqueued / queue.removed 分支,折成 pendingTurns 投影
- chip 文案派生搬到 pendingTurnChipLabel.ts,删除 chatComposerQueue.ts 整套本地队列实现
- controller 退役 queuedTurns / queueSequenceRef / completionPendingRef / busyBaselineTurnCountRef
与看门 counts effect;取消 chip 改调 remove_direct_project_pending_turn 按 typed 结果说话
- 埋点句柄按 clientTurnId 存表,回合终态按本轮开口条目身份结算
- turnBusy 改名 commandInFlight 并收窄成 IPC 在飞;忙态 = 原生在跑 ∨ IPC 在飞 ∨ 待发消息非空
- 提交改成等命令的入队结果:用户自己能改的入队失败保留草稿,其余按已交出处理
- 测试:队列投影单测、入队只发一次 IPC、IPC 在飞挡住第二次提交、满队保留草稿、取消已放行条目
- 文档:实施计划标注第 0–3 步落地并补第 3 步细则,ADR 的埋点与退役面口径改成落地后的写法
|
2026-09-30 10:20:37 +08:00 |
|
kdletters
|
1d6cbd4b67
|
外壳状态栏退役,状态改由浮层提示承载
Project CI / AI game creator shell Rust crates (push) Successful in 1m29s
Project CI / AI game creator shell Rust smoke (push) Successful in 1m57s
Project CI / Backend tests (push) Successful in 3m57s
Project CI / Frontend tests (push) Successful in 2m0s
Project CI / Native shell tests (push) Successful in 6m5s
Project CI / Repository checks (push) Failing after 42s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 8m49s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 8m54s
Project CI / AI game creator shell web tests (push) Successful in 1m40s
- 首页输入框下方与项目组页面头部那行状态栏退役:status 不再由页面渲染,统一由外壳浮层承载(WorkspaceLauncher 合成粘性状态与一次性提示,渲染 notice ?? statusNotice)
- 进行中进度与失败结论走粘性浮层(sticky: true,不自动收起,切页回来仍可见);成功与取消回显走一次性浮层(成功/取消 2.6 秒、失败 6 秒收起),一次性提示优先显示,收起后粘性状态继续显示
- 粘性状态只挂首页与项目组两个页面,进项目工作台、模板库、帮助页不再飘在界面上;运行/预览提示与取消回显不受该限制
- RunNoticeToast/RunNotice 更名为 LauncherNoticeToast/LauncherNotice,新增 sticky 与 neutral 色调,挂点改为 data-launcher-notice-toast,长文案容器限宽 min(680px, 100vw - 2rem) 并换行
- 收起回调只从 ref 读,不再写进 effect 依赖:此前外壳每次重渲染都会换一个内联箭头函数,把收起计时重新起算,长驻页面上的提示可能永远收不回去
- useHomeProjectCreation 三处取消(非空文件夹确认弹窗、打开项目选目录、新建项目选目录)改为清空状态并弹一次性浮层回显「已取消」,不再往页面上那行写文字
- 删除 HomeView 的 status prop 与状态行节点、ProjectsPage 的 status prop 与 .launcher-project-page-status 节点及对应 CSS 规则
- launcherNoticeToast 用例补粘性不收起、父组件重渲染不重新计时、取消回显短时收起;launcherNoticeShellWiring 用例补进行中状态与取消回显都只走浮层、首页不留那一行、粘性状态不进项目工作台
- appSurface/home.suite 三处取消断言改断浮层挂点;homeWebPreflight 与 designProjectRestore 的 hook 夹具补 showTransientNotice
- 技术方案与 decision-log 记录该口径与边界:首页带按钮的「已创建的工作区」提示仍留在页面上
|
2026-09-29 19:35:49 +08:00 |
|
kdletters
|
cb44081040
|
发布资料建议的项目上下文改为脱敏:素材只带文件名
Project CI / AI game creator shell Rust crates (push) Successful in 1m31s
Project CI / AI game creator shell Rust smoke (push) Successful in 1m59s
Project CI / Backend tests (push) Successful in 4m24s
Project CI / Frontend tests (push) Successful in 2m17s
Project CI / Native shell tests (push) Successful in 6m27s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 8m56s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 9m24s
Project CI / AI game creator shell web tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
- GameDistributionPublishPanel:buildPublishProjectContext 不再原样拼接 asset.localPath,新增 contextSafeAssetLabel(统一分隔符、取最后一段、限长 80),绝对路径(含用户目录)不再进入提示词;上下文整体仍截到 6,000 字符
- 新增用例「发布资料建议只带脱敏且有界的项目上下文」:40 个绝对路径素材 + 超长版本说明,断言长度在 5,000~6,000、含文件名、不含 C:\Users 与项目目录;13 tests passed
- 变异验证:改回 `asset.localPath` 原样拼接后该用例立即以 expected ... to not include 'C:\Users' 变红
- 游戏分发里程碑第 C2 条补记该客户端侧口径与剩余边界(GUI 与真实 Provider 仍待验收)
|
2026-09-29 00:27:07 +08:00 |
|
kdletters
|
f6ccabf425
|
补客户端更新"校验失败不得当成功"的回归用例
Project CI / AI game creator shell Rust crates (push) Failing after 1m15s
Project CI / AI game creator shell Rust smoke (push) Successful in 1m58s
Project CI / Frontend tests (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 1/2 (push) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
- appUpdate.test:新增「签名校验失败时拒绝安装、不重启进程,并保留待装更新供重试」——插件抛 signature verification failed 时断言错误原样上抛、restart_agc_app 未被调用、重试仍走安装链路并在成功后重启
- 变异验证:把 restartAppAfterUpdate() 挪到 await downloadAndInstall 之前,该用例立即以 expected "spy" to not be called with arguments: [ 'restart_agc_app' ] 变红;还原后 7 passed
- 客户端更新里程碑补记该覆盖与剩余边界(真机安装闭环与插件侧临时文件清理需真实设备与已发布包);pitfalls 记录"重启必须排在安装成功之后"
|
2026-09-29 00:02:17 +08:00 |
|
kdletters
|
3ea6c992bc
|
补齐 UI 编辑器整树渲染定位验收并收口六条验收
- tests/previewWorkspaceZoom.test.tsx 新增「树层按 root.offset.min 定位,原图与子节点随之一起移动」:断言树层 style.left/top 等于 root.offset.min 且根与子节点都挂在该层
- 变异验证:层偏移兜底改成 [0,0] 后只有该用例变红(1 failed / 9 passed)
- 里程碑第 2 条勾选,6 条验收全部有变异验证过的自动化证据(当前四套 77 passed);实施计划同步更新,剩余只有真机目视验收
|
2026-09-28 17:40:21 +08:00 |
|
kdletters
|
beaa6265da
|
补齐 UI 编辑器整树拖动的历史与保存落盘验收
- tests/uiEditorPage.test.ts 新增「整树拖动写回一个历史条目,保存后能原样读回」:断言 setTreeOffset 进历史、undo/redo 往返、save 落盘快照里的树偏移就是新值
- 变异验证:setTreeOffset 里 commit 换成 applyState(改状态不进历史)后只有该用例在 canUndo 处变红(1 failed / 37 passed)
- 里程碑记录第 2 条已覆盖的两句与仍缺的一句(渲染层随 root 平移的断言方式),并引用既有 pointerup/取消不写回的用例
|
2026-09-28 17:39:01 +08:00 |
|
kdletters
|
46cb3f1908
|
补齐 UI 编辑器 activeImageId 与联合适配两条验收断言
- tests/uiEditorPage.test.ts 新增「预览里选择节点不改变左侧选中的界面图」:断言 canvas.selectNode 只改节点选中、不改 hook 暴露的 activeImageId,Inspector 部件切换同理
- tests/previewWorkspaceZoom.test.tsx 新增「进入时按全部树的联合边界适配,选中节点不重新适配」:两棵树横跨 1600 单位时联合适配缩放必须小于单棵,选中态重渲染后缩放不变;夹具补齐第二棵树的界面图(否则不进联合边界)
- 变异验证:selectNode 里加 setActiveImageId 只红那条新用例(1 failed / 36 passed);allBounds 接 slice(0,1) 只红联合适配用例的第一处断言(1 failed / 8 passed)
- 里程碑勾选第 5、6 条验收,剩余未覆盖条目收敛到 1 条(拖动进 undo/redo 与保存恢复)
|
2026-09-28 17:36:50 +08:00 |
|
kdletters
|
e2964b5f31
|
补齐 UI 编辑器 root 无 resize 控制点的验收断言
- tests/uiEditorPreview.test.tsx 在同一条 handle 可见性用例里补 root 断言:选中 root 时不出现任何控制点,选中 child 时恰好 8 个
- 变异验证:去掉 handle 渲染条件里的 !isRoot && 后只有该断言变红(1 failed / 10 passed),改回后四套用例 73 passed
- 里程碑勾选第 3 条验收,剩余未覆盖条目从 4 条收敛到 3 条
|
2026-09-28 17:33:58 +08:00 |
|
kdletters
|
84e7aacf80
|
补齐 UI 编辑器三个独立开关的默认值与独立性验收
- tests/uiEditorPage.test.ts 新增「默认显示框线与原图、隐藏组件,且三个开关互相独立」:渲染真实页面后断言三个复选框初始值,并逐个切换确认互不影响
- 变异验证:把 view/ui-editor/index.tsx 的 showFrame 初值改为 false 后只有该用例变红,改回后四套用例 73 passed
- 里程碑勾选第 4 条验收;并把「预览选择不改 activeImageId」一条的执行方式改成走 hook 暴露的 activeImageId(左侧列表只有 CSS class 标记,无 aria)
|
2026-09-28 17:32:06 +08:00 |
|