Skip to content

Releases: bitterSmilezzz/dsh-model-selector

v0.4.3 — 已是当前模型提示改为不透明浮层

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 19 Oct 15:36

修复

  • 「已是当前模型,无需切换」提示改为不透明浮层:此前该提示用 --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-color alpha = 1(浅色 rgb(233,236,242) / 深色 rgb(97,102,107)),与文字对比度满足 AA。

安装

dsh plugin --profile web add @bittersmilezzz/dsh-model-selector

v0.4.2 — 清单兼容声明

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 18 Oct 05:24

清单兼容声明

  • engines.node: >=22.19.0
  • engines.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 — 思考等级条三段式布局

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 17 Oct 17:16

思考等级条三段式布局

  • 左“推理等级” / 中轨道 / 右“等级英文”,两段间距统一 8px
  • 档位读数固定槽位(min-width: 4em)并右对齐:文字贴住行右缘,轨道长度不随档位名变化
  • Medium / Xhigh 不截断;更长的本地化档位名仍可自然撑开槽位
  • 白色滑块 24px → 20px,轨道两端留白 12px → 10px

验证

  • 121 项测试、typecheck 全绿
  • mock profile 五档实测:轨道宽度恒定 161.5px、读数槽位恒定 44px、无 ellipsis

v0.4.0 — Codex 式思考等级条

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 17 Oct 14:30

思考等级条重做(参考 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

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 17 Oct 10:44

变更

  • 适配 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 首发)

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 14 Sep 07:45

变更

  • 包名迁移:dsh-model-selector → @bittersmilezzz/dsh-model-selector,以便发布到 npm
    registry(原短名在 npm 上已被其他作者占用)。同步更新的四处加载契约:package.json name、
    cordis.patch.yml 的 bundle name(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

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 12 Sep 07:53

推理强度滑杆与菜单可达性的大改版本。

新增

  • 推理强度滑杆重构:滑杆的绘制与拖动从 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/* 依赖线对齐 DSH 0.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

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 03 Sep 03:17

chore: 发版 0.1.16(新一轮优化(卸载守卫、passive scroll 节流、分组头 aria))

v0.1.15

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 03 Sep 01:26

依赖线对齐:@deepseek-ai/* 全量 ^0.1.2-alpha.5(dsh 0.1.2-alpha.5 配套);构建与测试全绿,无代码变更。

v0.1.14

Choose a tag to compare

@bitterSmilezzz bitterSmilezzz released this 02 Sep 15:37

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 全绿;伞校验通过