fix: 新版 Codex App 兼容适配(面板边界、顶部入口与注入卡顿缓解) - #2309
Yuimi-chaya wants to merge 2 commits into
Conversation
|
审查了。方向认可(新版宿主的面板边界与入口位置确实需要适配),但 当前版本不能直接合 —— 基线较旧, 会回退 main 的冲突(举证)
这些不是文本冲突,是语义分歧 —— 说明 你独有的价值:顶部 titlebar 入口
这是两套入口策略,不是同一件事的两版实现,所以不是「取舍」而是「是否要新增」——如果确实要加顶部入口,它应该作为 rail 入口之外的补充,而不是替换掉上面的定位/选中态逻辑。 另外两处
建议
我可以代为 rebase,但上面 6 处是设计取舍而非机械冲突 —— 我对你的意图只能反推,代解很可能静默丢掉一边的行为。这个仓库里已经发生过一次「基于旧基线静默回退修复」( 如果 rebase 后遇到具体冲突拿不准该保哪一侧,欢迎把冲突块贴出来,我逐条给建议。 |
|
这条审查中关于“回退 main”的举证已经过时,对应的不是当前 PR HEAD 该版本已合入
请以当前 HEAD 的最终 diff 为准重新核对,而不是据旧版本补丁判断这些上游功能被回退。 后续基于最新 |
eb274f2 to
78a0b1f
Compare
…cycle compatibility
|
感谢这版改动——标题栏入口是 main 上完全没有的能力( 但当前 HEAD 与 main 有两个阻断项,需要修改后才能合。 阻断项 1:
|
| 组 | 内容 | 建议 |
|---|---|---|
| A | 标题栏入口 + 顶部定位(50-navigation.js / 98-scan-schedule.js / titlebar CSS / titlebar-entry.test.ts) |
✅ 单独提 PR,大概率能很快合 |
| B | 面板边界 / 缩放 / ResizeObserver | ✅ 独立 |
| C | 看门狗主动探测(bridge.rs / launcher.rs / cdp_bridge.rs) |
|
| D | 模型白名单有界重试(70-model-catalog.js) |
可并入或独立小 PR |
| E | 上游回归的 AST 测试 | ❌ 建议删掉 |
与 #2313 的关系
同一作者,但必须保持两个独立 PR:#2313 改启动/重启生命周期(native_browser.rs / watcher.rs / commands.rs),本 PR 改注入层运行时健康检测。两者唯一交集是都动了 launcher 周边,但合成一个会让「启动生命周期」与「注入健康检查」的语义分歧纠缠在一起,回退粒度也变粗。
审计当时的处置建议有两处被实测推翻、一处性质被更正,记下来: - **推翻 #2303 的「并发验证阻断项」**:默认并发 5 次全过(未复现 PR 描述的失败); 32 线程加压下 main 与 PR 分支会挂**同一个**用例 (upstream_request_returns_when_provider_accepts_but_never_sends_headers, 墙钟断言 assert!(started.elapsed() < 1s))。是既有 flake,不是 PR 引入。 真正阻断项是分支落后 34 提交。 另更正「保留 compaction: bool 单一标记路线」这条约束——加入原生透传后 compaction 语义已分裂,多字段反而更清晰。 - **推翻 #2313 的「范围过大需拆分」**:冲突只有 1 处且是陈旧基线 (main 的 04ab629 把 recovery_material 改成 2 参),解完整树全绿 1395/75/331。 不该因冲突要求改设计。 - **补充 #2333 的真实回归**(审计未发现):实测 model_catalog 测试红, 默认模型被静默换成 modelList 第一条。附教训:审查贡献者 PR 时必须单独验 「PR 自带测试是否覆盖整个 workspace」,只信 PR 描述的测试命令会漏跨 target 回归。 - 补记 #2309 两个阻断项的实测证据(版本号撞车、Err(_) 抵消退避修复)。 执行结果:#2366 已合入(ea82bc74);#2337 / #2371 由已落地提交覆盖后关闭; #2333 / #2309 回复要求修改;#2313 / #2303 回复可合但需先 rebase。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
8d8d73b to
d5eff41
Compare
|
已 rebase 到 两个阻断项均已处理:
其余项目也已处理:
测试还发现上游浏览器绑定计数对新增控制路径子串的误判,已单独小提交补偿路径字面量并加确定性回归,与 #2313 中同一修正一致;两份 PR 的主体范围没有合并。 本地结果:core 1412 + launcher 14,共 1426 passed/0 failed/6 ignored;前端 352 passed,定向 96 passed,TypeScript、Vite、语法/组装/diff 检查通过。离线宿主 fixture 的 5 种宽度 × 3 档缩放、菜单/键盘、页面切换、扩展清理与回退检查通过。 正文已更新实际退避组合与验证结果,不再使用“未组合验证 #2337”的过时表述。没有关闭/重启/替换真实应用,未做 macOS 或真实宿主长期运行验收;忽略项未计为通过。 |
概要
适配新版 Codex App 的标题栏入口与应用内面板边界,并减少重复注入/模型白名单刷新给 renderer 带来的负担。基于
main的ab203409,保留上游图标栏、拓展接口、插件过滤与浅色主题修复,与 #2313 的启动/重启生命周期保持独立。入口与面板
aria-current,当前入口使用page。positionCodexPlusPage只读取缩放,不在每次 ResizeObserver 回调中写入 zoom。onCleanup且只调用一次。没有有效 main 几何时保留 rail/侧栏顶部兜底,并有测试覆盖。:has()。注入负担与退避
保留主动
/backend/status探测,但与已合入的5bb4f636持续健康退避规则统一组合,不采用“一次成功/异常就清零”的逻辑:observe_healthy;持续健康满 60 秒才重置退避。observe_unhealthy并按既有阈值/退避决定是否重注入。模型白名单刷新限定为有界重试,保留上游 app-server miss 熔断。移除已被上游 TypeScript 检查覆盖的旧模型导入声明 AST 断言。
另附上游浏览器绑定自检的最小路径修复与确定性回归:新增控制路径中的压缩标识符子串不再被误判为源码漂移。该修复与 #2313 中的同一小修正一致,不引入浏览器适配新方案或合并两个 PR 的生命周期逻辑。
验证
忽略项未计为通过。离线 fixture 不替代真实宿主物理拖动、macOS 或长时间运行验收;本 PR 缓解已识别的重复工作,不宣称解决所有应用未响应问题。本次未安装、替换或重启真实应用,未生成新的 setup/ZIP;已有警告不作无关清理。