8.2 KiB
模型设置 Select 恢复与验收
2026-10-16:供应商、模型、推理强度三个 Select 已替换旧简化 body portal。恢复原 Select/Input/Checkbox/Tooltip 的有限纯定义、CSS、SVG;表单 CRUD、createRequest/onCreateHandled、保存/测试策略保持现有宿主实现。本报告只声明下面列出的组件状态;不声明整个模型设置页或 WorkBuddy 云端目录已完整 1:1。
原版来源与身份
WorkBuddy 5.8.2,REA 6.5.0-visual.3。安装包根 SHA-256 035254bc76310ea46317433e4840602094543ef323d2d5c5aff7c131729de918。原版静态文件、图标、运行时窗口、输入和截图全部经 REA;没有直接原版 CDP/FS/evaluate。
| 证据 | 内容 |
|---|---|
ev_717fa5e846e64d67ac19c8925d121bff632c0d3aefb3603b10858559cabb2dcb |
固定运行脚本,.tmp/rea-runtime-scripts.json |
ev_25f013c9fd2ad66153046eec06e94fb6128bfacc1e87e57aa90db6bc419075ec |
精确选取 ModelsSettingsPanel JS/CSS |
ev_377c8790468b3c67dad8577aabb327f98d3140659f0fffdbabfcff5a40cc9e94 |
固定 CSS 与 token 来源 |
ev_53e6d36c2409b0548cc9bccc36ecbf68cbdec2b37069f50a0d85da2855516b92 |
REA 定向导出 renderer/assets/kimi-DiLyRSiJ.svg |
ev_7f4bada062e5643e7866e0dbe8a35f2ab5903421c94b5084ab710dbe77b3ab19 |
900×680 原供应商 dropdown 静态几何 |
ev_a6b221d6a364c9f2db118a9dde18b9a3bc4a7c051663a6a0ccafb99c33c76237 |
900×680 原模型 dropdown 静态几何 |
ev_62882f0ba55ecd91b735fe4af31a61363835f86138c4f5337058764a43c90001 |
原供应商 CUSTOM 查询,最终图为 frame-000.png |
ev_35a2e7ad47bdec37b656f994d095e5204d2269677c3bd426b5b3f19ac5986070 |
原供应商“腾讯”查询,最终图为 frame-000.png |
ev_54fe936186511f4cf8e8b4234589abd7354362d61975a7c77f701874d21c2ca6 |
原供应商无结果查询,最终图为 frame-000.png |
ev_ed745c60674e32c2ab72f9987e743eefdef172c88febd38aa8cd29cf3989a240 |
原清空查询恢复列表、minimax 模型查询;最终图分别 frame-000/001.png |
上述搜索采集使用 REA 新增的受限单行 text action。capture-css 顶层截图/layout 在 probe 前采集,因此搜索结果应读取 probe.frames 的图与 regions,不能误用顶层初始画面。原版添加窗口结束时已关闭,REA list 确认只剩原首页 target。关闭目标后的最终截图请求出现 protocol_error,故没有声称该次关闭截图成功;没有保存配置、测试上游或发送消息。
关键源 SHA-256:
src-DPDj7_qD.js:747e41d215375e1214c366213aea7e077d85421923029c61cbb6e9562be58de0。contexts-BMeWSUHk.js:5f35b7489b107e21ef452c8ee88a95265756f6fc444841eef869228bbc44768b。floating-ui.react-dom-BDD8Fyfd.js:94036e3ed41ddb907b010cedbdb628a57e26e0585e2a9be45c9cbecfdd6ec978。src-Bh3YZ35H.css:88dbdc1cd3f59d0e8b75824512a465a2be714bc7af481d790fe3a9484f85e01a。tokens-Df-i-zsO.css:13f2bf82c96e5167a7d7098e36950c6c22c475b3337dbb8bb29ad2fe79cde696。ModelsSettingsPanel-FfiX-Du7.css:cd80b01d04589227a3c2db5dbe67b6c83b019bef18d3dba68ae5486448651018。- Kimi SVG,129,220 B:
2615b35b9dc747f5a453ca300a2a7e8b39c1298c11f5249979768c018157e7b7。
Tencent/OpenRouter/Ollama PNG 来自固定 contexts 脚本的 data URI;其 SHA、字节数、offset 和所有纯定义位置记录于 .tmp/source-select-recovery/manifest.json。恢复脚本逐项校验源身份,再写 UI 文件;不会初始化原 bundle。
文件和宿主适配
新 src/renderer/src/components/source-select/:
SourceSelect.tsx:有类型的单选接口,display:contents scope;不引入定位盒。RecoveredSelectCore.tsx:原 Select、group/filter、OptionLabel、Input、Checkbox 等纯定义,保留激活延迟、条件 class、Enter/Space、搜索与清空规则。仅给触发按钮增加宿主 aria-label。RecoveredSelectTooltip.tsx:原 Tooltip、截断测量、延迟、arrow、hover/press guard、退出状态;React 19 ref 访问与 CSS scope portal 作宿主适配。SourceSelectPopover.tsx:原内联 absolute 策略、offset→flip→shift→size 顺序、焦点管理、150ms/减弱动效1ms退出状态;Escape 在捕获阶段消费,避免同时关闭表单。SourceFloatingPlatform.ts:保留原旧版裁切祖先判断,用宿主 platform 计算最终矩形。新版 DOM 库会持续排除静态祖先,造成模型框306px并伸入footer;源算法每层更新 lastStyle,保留 editor-body,使模型框216px。没有硬编码 popup 高度或给表单添加 position。SourceSelectIcons.tsx、SourceProviderGlyphs.tsx、SourceProviderIcon.tsx、provider-assets/:源 SVG 路径/变换、原 PNG/SVG 资产。source-select-recovered.css:原规则、顺序、media 条件与 token 依赖闭包,含 Tooltip 源码 style 引用的--wb-tooltip-z-index=10200。source-select.css:只处理 scope/display:contents 和图标 flex。
只在 ModelSettingsPanel.tsx 接 imports、替换 local Select、三个 callsite、provider label/row icon、既存非候选 modelId 注入;删除 model-settings.css 对应 model-ui dropdown 覆盖。根新增入口 intent hooks 未覆盖。没有修改 App/main/preload/store/package。
@floating-ui/react 0.27.20 由主上下文安装并固定,是 YCode 宿主依赖;原包精确版本未知,不声称版本相同。原 CSS/纯组件源码与宿主定位适配的来源和责任区分明确。
验证结果
scripts/verify-source-select.cjs 在独立 userData 的真实 900×680 Electron 原生窗口、软件合成/SwiftShader 环境运行真组件,加载生产 tokens.css/app.css。原版 UI 从未由此脚本操作。
30项通过,包括精确 popup/trigger 几何、内联归属、4组 DOM、真实 vendor mark、大小写过滤、清空、No options、禁止搜索创建项、第一次 Escape 只关 popup、模型列表裁切、Enter/Space 选择、disabled tabIndex、body portal/flip、当前非候选模型仅注入一次、<=6候选不展示搜索、Tooltip/arrow/zIndex,以及自定义 Input 测试不保存→保存→编辑→删除回调。
| 同一900×680状态 | 原版/当前精确矩形 |
|---|---|
| provider trigger | [154,136,592,32] |
| provider popup | [154,176,592,306] |
| model popup | [154,344,592,216] |
| model list | [163,393,580,166] |
| CUSTOM唯一结果 popup | [154,176,592,120] |
| 无结果 popup | [154,176,592,96] |
同状态整块 popup RGB 像素比对,无 mask、无容差:
| 状态 | 像素数 | 不同像素 | 最大通道差 |
|---|---|---|---|
| CUSTOM查询,含搜索框/文字/分组/原自定义SVG/列表/边框 | 71,040 | 0 | 0 |
| NO_SUCH_PROVIDER_1,无结果含搜索/文字/No options/边框 | 56,832 | 0 | 0 |
结果 .tmp/source-select-native-20261016/report.json(30/30)、pixels.json、原生PNG与 crop/diff。它是组件和有限状态像素验收;fixture CRUD 使用受控 callbacks,不冒充后端或 OMP 验收。真实 App 多窗口入口/持久化/OMP 由主上下文的 production product-flow 单独验收。
可复现:
node scripts/rea/recover-select-reference.mjs
npm run typecheck
npx electron scripts/verify-source-select.cjs
C:/Users/Administrator/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe scripts/compare-source-select-pixels.py
恢复输出:25项定义来源记录、16项 SVG 来源记录、4个资源、3个 CSS SHA。typecheck 两项目通过。主上下文负责最后统一 production build;本任务没有并发改写 out。
差异与未验证
原 runtime 16 providers、Tencent默认15模型;当前静态 domestic13 providers、默认8模型。保留当前实际静态目录,不填造额外源服务数据;因此默认全列表的大面积文字/数据不能声称像素全等。custom provider 的自由输入仍是真 Input;Select 搜索不会创建不存在模型,已有非候选值按照源客户端规则注入。
暗色、完整 hover/focus组合、长标题 Tooltip 的原版运行时截图、不同窗口/滚动组合、逐帧退出动效尚未全面对比。相关规则与 Tooltip 纯定义已恢复,宿主关键状态已测;源码恢复或本次两状态像素全等不替代其余状态验收。Kimi完整源SVG已取得,不能再把图标未知写成剩余阻碍。