# 更新记录 用户文档见 [README](README.md)。这里只记录开发过程,条目按时间倒序。 ## v0.2.7(2026-10-13) - Magpie 模型改为两行显示:上游把「模型 · 路由来源」拼成一个显示名(如 `Qwen3.8-Flash · Qoder CN`),现拆成主行模型名 + 副行「网关 · 路由来源」。拆分后主行最长 24 字符,320px 面板可完整显示,不必加宽面板。供应商视图与收藏视图一致两行;其他供应商不受影响,仍单行。 - 网关标识取自该路由显示名的首段(尊重用户配置的网关名),不硬编码品牌词;命名格式不符时回退单行原名,不臆造副行。拆分仅作用于显示:模型 id、请求与存储键、搜索匹配的上游原名均不变。 - `isMagpieRoute` 收敛到 `magpie-display.ts` 单一来源,图标与两行显示共用同一判定。 - `npm run verify` 76 项测试通过。 ## v0.2.6(2026-10-13) - 修复收藏视图记忆失效:`rememberedFavView` 只写不读,面板关闭重开总会退回供应商列表;改为挂载时读取记忆值,收藏视图与供应商视图双向保持。 - 修复 Magpie 多协议入口图标缺失:图标判断原为精确匹配 `providerId === 'magpie'`,`magpie-responses` / `magpie-anthropic` 两个路由退化成首字母方块;改为 `magpie` 前缀归一,三个入口统一显示 Magpie 图标。 - 模型名过长时改为悬停显示完整名称:原生 `title` 在会重排的行上不可靠(悬停展开星标会挤窄文本、不断重置原生提示计时器,实测弹不出来),改用宿主 `Tooltip`(JS 驱动,不受重排影响);仅在该名字实际被省略号截断时提示,未截断不弹。 - `npm run verify` 69 项测试通过。 ## v0.2.0(2026-10-01) - 改名为 `@kewen/dsh-model-controls`,界面显示名为 DSH 模型控制器;插件 id `dsh-std-model-picker` 与本地偏好存储键不变,重装不影响收藏、思考强度与供应商排序。 - 设置页改用官方 `SettingsForm` / `SettingsValueField` / `SettingsFormModel`;移除早期版本里手写的原生折叠方框。 - 「已覆盖」误报修复:不再要求用户层写入空的备用地址。 - Magpie 显示身份改为自动识别(凭据引用 `MAGPIE_API_KEY` + 回环 `/v1` 接口),手填地址收进备用项。 - 补 MIT 许可、仓库地址与关键词;README 加入面板截图;通过 GitHub Release 分发安装包。 - 干净 profile 安装验证通过;`npm run verify` 59 项测试通过。 ## v0.1.1(2026-09-30) - 首次作为正式插件安装:包声明 `dsh.bundle.patch`,通过插件管理器安装,进入「已安装」列表并提供启停与卸载。 - 新增中英文显示名与描述元数据。 ## v0.1.0(2026-09-30) - 修复撤掉 Magpie 路由后仍显示 Magpie 图标与收藏来源的问题:显示身份改为按运行中的请求配置判断,并随每次页面加载重算。 - Magpie 图标改用 yetone/magpie 原始 SVG,取代早期从 `.icns` 提取的位图。 - 显示身份与真实请求身份分离:请求提供方、模型 ID、收藏与思考强度存储键均不变。 ## 私有期开发笔记(2026-09-26 起) 以下内容出自插件仍为本机私有工具的阶段,保留以备追溯,其中测试数量等数字已过时。 ### 本次迁移范围 保留当前模型切换、档位记忆、右对齐、官方半透明菜单材质和无入场动画的实现。此次只整理安装和构建,不更改颜色或交互。 垂直空间不足、拖动取消提交、过期错误提示、键盘焦点及部分供应商加载失败提示已在后续修复中处理。弹窗闪烁是否完全消失仍需实际使用确认。 ### 2026-09-26 迁移验证 - 本目录及全新临时目录均通过类型检查、构建与 8 项测试;两处生成的 client.js 完全一致。 - 无 DOM 的模块加载测试执行 factory 和 apply,验证宿主模块引用及模型插槽注册;此测试使用简化宿主,不代替真实桌面验证。 - 官方桌面重启后正常加载;实测 Pro / High → Flash / Low → Pro / High → Flash / Low,档位独立恢复。验证后恢复原 Pro / High,并将 Flash 恢复为原 High。 - 菜单截图确认右对齐和官方半透明外观;未用逐帧录制验证闪烁。 - 原沙箱目录与官方配置备份保留,未提交 Git。 ### 交互边界修复(2026-09-27) - 菜单默认在入口上方右对齐;空间不足时收缩高度,上方过窄时改在下方展开,保留列表滚动。 - 拖动取消、失去指针捕获、失焦、关闭面板或换模型均不提交拖动预览;正常松手只提交一次。 - 切换请求的错误提示只接受当前会话的最新请求结果。 - 打开菜单聚焦搜索;上下方向键进入并移动模型行,Escape 关闭并返回入口;键盘调整档位在松键或离焦时提交。 - 部分提供方加载失败时保留可用模型,并显示检查提供方配置的提示。 `npm run verify` 已通过 23 项测试。新增测试使用 jsdom、真实 React 和简化的宿主 MenuSurface,覆盖事件和焦点,不能替代宿主材质及真实窗口尺寸验收。官方桌面已实测打开聚焦、方向键导航和 Escape 返回;小窗口定位、拖动取消及请求竞态由自动化测试验证。颜色保持已验收值。 ### 供应商排序(2026-09-27) 首次打开时记住已加载供应商的顺序;宿主重新注册不再改变已有排列,新供应商追加到末尾。按供应商 ID 保存,重名不冲突,暂时不可用的供应商恢复后回到原位。 长按供应商图标 300 毫秒后拖动,细线显示插入位置,松手保存;靠近列表边缘自动滚动。普通点击仍切换供应商,排序不切换供应商或模型。收藏入口固定。Escape 取消排序并保留菜单;失去指针捕获、指针取消、窗口失焦、供应商列表变化或关闭菜单均取消预览。键盘聚焦供应商后可用 Alt + ↑/↓ 排序。 本次构建、类型检查及 34 项测试通过,包含顺序稳定、持久化后重新加载、误触拦截、取消、键盘及边缘滚动。测试使用简化宿主和模拟几何;长按手感和真实桌面视觉仍需重载后验收。 ### 后续交互与计算优化(2026-09-27) - 输入框进入锁定状态时关闭模型卡片、取消未提交的拖动或键盘预览,并拦截新的切换;解锁后由用户重新打开。 - 目录刷新保留正在浏览的供应商;该供应商消失时回退,实际当前模型换到其他供应商时仍跟随。 - 窗口失焦取消档位拖动,即使焦点仍在搜索框;再次操作可正常提交。 - 无模型、无供应商、无收藏、无搜索结果以及加载状态分别显示一条对应提示。 - 缓存供应商排序、收藏汇总及搜索结果,拖动时复用;非收藏视图不汇总收藏,边缘滚动已到尽头时不刷新拖动预览。 类型检查、构建及 42 项测试通过。新增边界和缓存更新由无头交互测试验证;本次未重启或操作官方桌面,仍需重载后的实际使用验收。外观保持已验收值。