Repository navigation
Releases
v1.0.2 — 图标契约对齐与样式表加固
修一个会让胶囊退化成「巨型图标」的 bug —— 以及它为什么反复出现。
修了什么
- 内联 SVG 写死宽高(时段图标 14 / 刷新 13 / 计量 14)。只有
viewBox的 SVG 在
没有样式表时会撑满容器,那正是"巨型月亮"的放大器;现在最坏也只是"没排版但尺寸正常"。 - 样式表改为幂等 + 带键注入、不随 dispose 移除。官方客户端插件也是这个写法
(按data-plugin-css键querySelector,已存在就复用)—— 这样即使出现孤儿注册,
组件也仍拿得到样式。 - 图标线宽对齐官方契约:
ICON_REGULAR_STROKE = 1(原来用 1.5,比全应用任何图标都重)。
为什么它反复出现(这一段值得一读)
前两轮的修复其实是对的,但从未到达浏览器:profile 里
node_modules/dsh-usage-pill 是一份物理副本而不是符号链接,宿主一直在发那份旧拷贝 ——
刷新没用,重启也没用。
README 新增「开发提示」,写明排查三步:
ls -la ~/.dsh/profiles/<profile>/node_modules/dsh-usage-pill # 链接还是物理副本?
curl -s -N --max-time 4 http://127.0.0.1:19387/plugins/events # 拿 id + rev
curl -s "http://127.0.0.1:19387/plugins/<id>/client.js&rev=<rev>" # 抓宿主实际发出的字节换成符号链接后宿主会在下一次轮询自行重读,不必重启;而宿主半边(index.js)改完
必须重启 —— 两套读取路径要分清。
MIT © 李敖(oliblue)· 与 DeepSeek(deepseek-flash)协作完成
v1.0.1 — 修「组件在、样式没了」
修一个会让胶囊偶尔退化成「巨型图标 + 挤在一起的文字」的 bug。
现象
徽标偶尔变成一个撑满容器的大图标,文字也挤在一起 —— 即整张样式表没生效,但组件仍在渲染。
根因
slots.inject(key, cb) 返回 dispose 函数,我把它丢掉了,注入没有挂在插件 fiber 上。
插件被 dispose 时(切插件开关 / 客户端热更新 / 重挂载):
- 由
ctx.effect管理的<style>按预期被移除; - 而
slots.inject的注册泄漏下来继续渲染。
于是进入「组件在、样式没了」的状态:PeriodIcon 是个没有 width/height 的 <svg viewBox>,
尺寸全靠 CSS 的 .umPill svg{width:14px;height:14px},规则一失效就撑满容器;gap:6px 也没了,
¥11.44 · 余 ¥42.39 于是贴在一起。
干净加载时样式注入先于槽位注册,所以首次加载不可能出现;一旦发生,整页重载即可恢复。
修法
照官方每一个客户端插件的写法,把注入包进 ctx.effect:
ctx.effect(() => ctx.slots.inject('slot', () => ctx.slots.register({ ... }, C)), '标签')并加回归门禁:每个 slots.inject 都必须紧跟 ctx.effect(() => …)。
第一版门禁写成「往前 160 字符里出现过
ctx.effect(就算过」——变异测试(把修复回退,看门禁是否报错)
证明它完全抓不到回退:有多处注入时,漏包的那处仍能看到前一处留下的ctx.effect(。
改成紧贴判定后,变异测试确认能报错。
升级
已装过的重装即为更新:
dsh plugin --profile <profile> add github:oliblue-evan/dsh-usage-pill装完刷新页面(客户端 bundle 走热更新,宿主半边未改动,无需重启 DSH)。
v1.0.0 — 用量、费用与余额
输入框下方一枚胶囊,说清四件事:本会话花费 · 账户余额 · 当前峰谷 · 今日时段轴。
亮点
- 查余额不需要 API Key —— 已登录 DeepSeek 账号的用户走宿主自己的账号授权
(ctx.remote.account.getBalance),密钥全程不出现;只有「没登录、只有 API Key」的
用户才回落到宿主路由(带同源 / 跨站 / 非回环三重守卫)。据我所见,同类插件的真实
余额普遍要求你自行配置 API Key。 - 金额按每笔用量自身的时刻与模型计价 —— 不会被后来的峰谷切换或模型切换追溯改写。
拿不到宿主投影时退回「按当前价估算」并在面板里如实标注,绝不让估算冒充账单。 - 零运行时依赖 —— 宿主半边只用相对路径
import,避免link:安装下裸模块名解析失败
导致整个宿主半边起不来。
功能
| 区域 | 内容 |
|---|---|
| 徽标 | 时段图标(☀ 高峰 / 🌙 空闲)+ 当前花费 + 账户余额,三段各说一件事 |
| 面板 | 四桶明细(单价贴在各自行上)· 缓存已省 · 峰谷倒计时 · 今日时段轴 |
| 设置 | 注册在 plugins.bundle.config,5 个展示开关,即时生效、存在本地浏览器 |
| 插件页 | 标题/简介/图标按官方 locale/*.json + package.json.icon 约定提供 |
工程
- 48 项断言(
npm test),含价目表防漂移门禁、投影注册契约、打包契约(含iconOf全部规则) - 版式对齐宿主原生:胶囊与真圆显式退出全局超椭圆、开关照抄官方
Switch、
分隔点按官方 DOM 结构(包在 label 内)以保持 6px 间距 - 宿主的
dsh-usage-pill条目自带 patch 层,不手改 profile 的cordis.patch.yml
安装
dsh plugin --profile <profile> add github:oliblue-evan/dsh-usage-pill或用 plugin_manager(action: "install_bundle", target: "github:oliblue-evan/dsh-usage-pill")。
装完刷新页面即可;若插件页的标题/简介没显示,说明宿主侧包元数据快照是旧的,
整页刷新(Cmd+R)一次 —— 客户端 bundle 走热更新,与包元数据的取数时机不同步。
完整说明见 README。
MIT © 李敖(oliblue)· 与 DeepSeek(deepseek-flash)协作完成