Repository navigation
Releases: bitterSmilezzz/dsh-model-selector
Releases · bitterSmilezzz/dsh-model-selector
Release list
v0.4.3 — 已是当前模型提示改为不透明浮层
修复
- 「已是当前模型,无需切换」提示改为不透明浮层:此前该提示用
--dsw-alias-interactive-bg-hover(浅色 6% / 深色 8% alpha)作底、--dsw-alias-label-secondary作字色;压在模型列表行上时,菜单表面 / 列表行文字 / 提示文字三层互相透出,重叠区域无法辨认。 - 现改为实色
--dsw-alias-bg-overlay底面 +--dsw-alias-border-l2描边 + 投影,字色提到--dsw-alias-label-primary,内边距 6/10 → 7/10。 - 行为不变:点中当前模型仍保持菜单打开,仍走同一条常驻 live region 播报。
验证
- 121 条测试全绿;双 program
typecheck绿;伞仓门禁 22/22。 - 真机核对浅色 / 深色两套主题:提示层
background-coloralpha = 1(浅色rgb(233,236,242)/ 深色rgb(97,102,107)),与文字对比度满足 AA。
安装
dsh plugin --profile web add @bittersmilezzz/dsh-model-selectorv0.4.2 — 清单兼容声明
清单兼容声明
engines.node:>=22.19.0engines.dsh:^0.2.1-rc.2(与peerDependencies一致)- README 增加「兼容性」小节:DSH 0.2.1-rc.2 / Node >=22.19 / web profile / 无生命周期脚本
无代码行为变更;为 dsh-market、DSH-Store 等目录提供显式宿主兼容范围。
验证
- 121 项测试、typecheck 全绿
- npm
@bittersmilezzz/dsh-model-selector@0.4.2
v0.4.1 — 思考等级条三段式布局
思考等级条三段式布局
- 左“推理等级” / 中轨道 / 右“等级英文”,两段间距统一 8px
- 档位读数固定槽位(
min-width: 4em)并右对齐:文字贴住行右缘,轨道长度不随档位名变化 - Medium / Xhigh 不截断;更长的本地化档位名仍可自然撑开槽位
- 白色滑块 24px → 20px,轨道两端留白 12px → 10px
验证
- 121 项测试、typecheck 全绿
- mock profile 五档实测:轨道宽度恒定 161.5px、读数槽位恒定 44px、无 ellipsis
v0.4.0 — Codex 式思考等级条
思考等级条重做(参考 Codex)
- 浅色 pill 轨道 + 5 个 3px 圆点 + 蓝色实心填充 + 24px 白色圆形滑块
- 最高档蓝→紫渐变,叠加 18 个白色漂浮粒子;
prefers-reduced-motion下静态帧 - 拖拽 + 磁吸,支持键盘 / role=slider 语义
- 用自定义
role="slider"替换原生input[type=range],消除桌面端拖动起手白闪
菜单稳定性(桌面 App 实测修复)
- 菜单 portal 到
document.body,脱离 composer 祖先的 transform / 布局影响 - 拖 effort 期间冻结菜单的
height与left/top,交互结束释放 - loading / error / failures / notice 改为不占布局的浮层
- loading 提示延迟 250ms 渲染:10–30ms 的目录刷新不再盖住搜索框闪帧
- 选中行滚动 effect 依赖收窄到 provider/model,effort 提交不再触发列表重滚
- effort 提交不再把整个模型列表变暗(
aria-busy仅保留可访问性语义)
兼容与验证
- DSH
0.2.1-rc.2(peer^0.2.1-rc.2) - 121 项测试、typecheck 全绿;伞仓库校验 22/22
v0.3.9 — 适配 DSH 0.2.1-rc.2
变更
- 适配 DSH 0.2.1-rc.2:
@deepseek-ai/dsh-*peer/dev 升至^0.2.1-rc.2,cordis~4.0.5,schemastery^3.18.5。按 semver 预发布规则,^0.2.0-rc.2不匹配0.2.1-rc.2,DSH 的 peer 强校验会整行禁用插件。 - 菜单摆位改用官方
useAnchoredPosition(align: 'end'右缘对齐 +side+ 浮层尺寸监听),菜单改position: fixed直接使用视口坐标;删除自研dmsMenuLeft与 root 左缘减法。选边与两侧高度钳位仍由插件测量。 conversation.input.model.label子座位经真机实测不可采纳:官方占用者已声明该 child key,registry 拒绝二次声明(already declared),遮蔽者声明会让 apply 抛错。已回滚,并在 README 记为已知限制 + 加反向契约测试。
验证
- 双 program
typecheck全绿;121 条测试全绿;lib/client.js已重建。 - 真机(
@deepseek-ai/dsh@0.2.1-rc.2临时 web profile):seat 正常接管、菜单 fixed 定位/右缘对齐/上方弹出/视口钳位、搜索 combobox、Escape 关闭并还焦、外部点击关闭、420px 窄视口不溢出,console 零错误。
v0.1.18 — 包名迁移到 @bittersmilezzz/dsh-model-selector(npm 首发)
变更
- 包名迁移:
dsh-model-selector→@bittersmilezzz/dsh-model-selector,以便发布到 npm
registry(原短名在 npm 上已被其他作者占用)。同步更新的四处加载契约:package.jsonname、
cordis.patch.yml的 bundlename(id保持短原名,实例标识不随包名变)、客户端 bundle 的
window.__ModuleLoader__.load({ id })、样式注入的data-plugin标记。 - npm 首次发布:本版是包进入 npm registry 的首个版本。
- 桌面端兼容:客户端平台模块(
react、react-dom、@deepseek-ai/dsh-client-ui-slots、
@deepseek-ai/dsh-client-ui-primitives、@deepseek-ai/dsh-client-store)改标为
optional peer(peerDependenciesMeta),由 DSH 客户端冻结模块表在运行时提供。 - 契约测试修正:原断言
cordis.patch.yml的id等于包名,与官方语义互斥——insert 条目里
只有name是模块说明符(await import(name)),id是后续 patch 定位的条目键。改为断言
name等于包名。
功能、配置 schema 与 UI 文案均未改动。
安装
# npm(推荐)
dsh plugin --profile <profile> add @bittersmilezzz/dsh-model-selector
# 或从 GitHub
dsh plugin --profile <profile> add github:bitterSmilezzz/dsh-model-selector验证
双半区 tsc 零错误;构建通过;测试 73/73 通过。
v0.1.17 — 推理滑杆重构与菜单 roving tabindex
推理强度滑杆与菜单可达性的大改版本。
新增
- 推理强度滑杆重构:滑杆的绘制与拖动从
ModelSelect.tsx的 330 行状态机中拆出为独立模块——effortCanvas.ts(canvas 辐射特效与相位缓动动画循环)与effortDrag.ts(指针拖动状态机)。拖动中途组件重渲染不再中断拖动,指针拖出输入条或菜单外时由 window 捕获阶段兜底。纯几何换算抽出为可测函数dmsPointerRaw。 - 菜单 roving tabindex:模型列表可达数百行,此前每行都是 Tab 停靠点,Tab 键会陷入行海。现在只让「活动行」留在 Tab 序里(WAI-ARIA menu 模式的通行做法),其余行
tabindex=-1、仅方向键可达;默认落点按搜索态/分组态分别决策(选中行在折叠组内时落到首个可见行)。
修复
- 提交超时回滚护栏:滑杆提交超时回滚后,迟到的成功响应不再被无条件忽略——当自回滚以来没有新提交改写档位、提交纪元未推进且无拖动/提交在途时,补一次 UI 同步,消除「UI 已回滚但后端实际已生效」的错位态。其他情况以新操作链为准。
- 终止事件幂等:
pointercancel终态后平台补发的迟到pointerup不再触发重复的提交/回滚回调。 - 外部点击关闭后还焦:点击菜单外关闭菜单时把焦点还给触发按钮。
- Escape 分层:Esc 先清搜索词,再关闭菜单,两级语义互不吞并。
- locked 态翻转时关闭菜单:会话锁定后菜单自动收起,避免残留可交互的失效菜单。
- 滚动与尺寸监听收敛:测量监听改为按需动态挂载,减少常驻 scroll/resize 监听。
变更
prefers-reduced-motion: reduce覆盖范围扩展到折叠箭头、滑杆与 canvas 特效。- 空态占位样式补回列表区原有位置(消息不再贴到菜单顶部)。
- DSH 兼容:
@deepseek-ai/*依赖线对齐 DSH0.1.5-rc.2。官方ui-model-selection重写ModelSelect.tsx属差异化增强而非重叠——官方仍无搜索框、无推理滑杆、弹出方向固定向上;本插件的菜单方向自适应与搜索能力保持独有。
验证
- 双半区 typecheck(host + client)零错误,构建通过。
- 测试 73/73 通过,新增
effort.test.mjs、menu-fit.test.mjs、roving.test.mjs。
升级方式
dsh plugin --profile web add github:bitterSmilezzz/dsh-model-selector安装/升级后需重启 web profile 生效。
v0.1.16
chore: 发版 0.1.16(新一轮优化(卸载守卫、passive scroll 节流、分组头 aria))
v0.1.15
依赖线对齐:@deepseek-ai/* 全量 ^0.1.2-alpha.5(dsh 0.1.2-alpha.5 配套);构建与测试全绿,无代码变更。
v0.1.14
dsh-model-selector v0.1.14
DeepSeek Harness (DSH) 的模型选择器增强插件。
修复
- 推理力度滑杆新增目录级忙态守卫(dmsEffortBusy):模型切换 RPC 在途时滑杆按 choose() 同一规则拒绝交互,杜绝 effort 请求与模型切换交错(last-writer-wins 互相覆盖、effort 打到旧模型);键盘入口先 preventDefault 再吞键,防止 range 原生步进造成受控值漂移
- 滑杆错误区只显示自身失败(本地化文案):不再把共享目录级错误(菜单错误条/Toast 已播报的原始
code: message)兜底显示进档位区,消除双重播报 - 菜单水平钳位补「seat 右缘本身越出视口」分支:页面横向溢出时右锚定会把整幅菜单拖出屏外,现在改为 left 锚定夹回屏内
- 菜单方向/锚定测量从 useEffect 改 useLayoutEffect:贴底/窄窗口场景不再先按默认向上弹画一帧再跳位
验证
- typecheck(alpha.4 类型)+ 52 测试 + build 全绿;伞校验通过