chore: establish YCode replication baseline and TODO
This commit is contained in:
commit
6dc59f89ba
1118 files changed
+196002
No files matched your search
@@ -0,0 +1,92 @@
|
||||
# 模型设置 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 单独验收。
|
||||
|
||||
可复现:
|
||||
|
||||
```powershell
|
||||
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已取得,不能再把图标未知写成剩余阻碍。
|
||||
Reference in new issue
Block a user