Repository navigation
Releases: Woo3aN/dsh-peak-bar
Releases · Woo3aN/dsh-peak-bar
Release list
0.3.0
⚠️ pre-release ——0.x表示尚未稳定,接口、CSS 变量名与文件结构可能变动。
安装方式见 README,
也可以直接下载下面的 .zip 解压后添加本地目录。
首个公开版本:窗口标题栏居中的一枚小胶囊,显示 DeepSeek API 的峰谷时段、账户余额与今日已用。
新增
- 窗口标题栏正中的胶囊:注册进
shell.overlay,Windows 上也能和最小化/关闭按钮同一行。
实测居中(2115px 宽屏幕上中心在 49.9%)。 - 主区域详情面板:峰谷状态、距下次切换倒计时、余额、今日已用、两条来源与计费规则说明;
右上角的✕走layout.selectPanel(null)返回对话,没有 layout 服务时不渲染这个按钮。 - 读取失败不静默:从未读到数值时胶囊写一句短原因(
--必须有解释);已经有数值时保留旧值、
只有失败持续超过 2 分钟才挂「余额未刷新」标记。完整原因始终在悬停提示与详情面板里。 - 失败递退重试:15s → 30s → 60s(正常 60s 轮询);浏览器报告网络恢复(
online)
或窗口重新可见时立刻重试,成功后再回到 60s。 - 余额两条路:① 账号登录态
remote.account.getBalance();
② 账号路不可用时,Host 从 DSH 凭据服务解析DEEPSEEK_API_KEY,直连官方
GET https://api.deepseek.com/user/balance,密钥不出 Host。两条路都标注来源。 - 「今日已用」:按余额下降观测累计(充值/赠金不计入、也不抹除已记消费),按北京时间日分账。
账本由 Host 半原子写<DSH_HOME>/.dsh-peak-bar.json(临时文件 + rename),保留 14 天,
跨重启 / 跨端口 / 多窗口保留;文件损坏时当作空账本继续。 - Host 半(
index.js):本机路由与账本,带 loopback 信任栅栏;没有 HTTP 载体的 profile 仍能激活。 - 颜色默认跟随皮肤:所有颜色变量的默认值都是宿主语义 token(
--dsw-alias-*),
样式表内不含任何颜色字面值(有回归测试钉住)。动效时长与缓动用主题的
--ds-transition-duration/--ds-ease-in-out,并尊重prefers-reduced-motion。 - 完整 zh/en 本地化:倒计时单位与全部失败原因都走词典;插件卡片带 locale 元数据。
变更
- 包名与仓库名改为
dsh-peak-bar(原名dsh-rhine-statusbar)——破坏性变更。
胶囊的颜色早已与特定皮肤解耦、跟随任意皮肤,所以去掉rhine。同时改掉全部内部标识:
客户端模块 id、本机路由(/dsh-peak-bar/spend、/dsh-peak-bar/balance)、
CSS 变量与类名前缀(--dsh-peak-bar-*、dshPeakBar*)、账本文件名(.dsh-peak-bar.json)、
环境变量(DSH_PEAK_BAR_BALANCE_URL)。
升级须知:node_modules下旧包名目录不再被引用,需删掉dsh-rhine-statusbar并重新安装一次;
账本文件名随之改变,旧的.dsh-rhine-statusbar.json不会被读取
(如需保留「今日已用」历史,手动改名为.dsh-peak-bar.json)。 - 图标换成中性配色(不再使用莱茵生命皮肤的橙/棕)。
修复
- 点击胶囊打不开面板:
layout从未被注入,而代码却直接读props.ctx.layout——
cordis 拒绝读取未注入的服务(读取即抛错),错误从 React 的onClick里逃出去,
表现就是点了完全没反应。现在layout走自己的可选注入作用域(与remote.account同一套写法),
调用包在try/catch里,并且只在真的能打开时才在提示里写「点击查看详情」。 - 余额永远显示
--:账号返回是两层{ok, value},旧代码直接从外层取钱包。 remote.account不是remote的子属性:它是独立的 cordis 服务,旧代码只注入remote,
会抛cannot get property "remote.account"。- 胶囊丢失描边与底色:颜色变量曾声明在
html上,而主题把--dsw-alias-*挂在body上,
导致border求值成非法值;改为在使用处var(--dsh-peak-bar-x, 主题 token)惰性回退。 - 悬停时提示每秒闪一次:原生
title里含每秒变化的倒计时;倒计时只留在可见文字里。 - 悬停提示重复面板标题:原先是
峰谷 · 余额: 谷时 · 余额 ¥20.79 …,同一个词出现两次
还夹着半角冒号;现在按「每个数字只出现一次」拼装,并把「本次运行统计」的长括号收成一个词
((未持久化))。 - 胶囊被窗口右缘截断:失败原因动辄几十字,而它那个
span设了flex:none不会收缩。
现在胶囊只放短句,note改为可收缩省略(flex:0 1 auto),完整原因移到悬停提示与面板。 - 详情面板只占中间一栏:面板自己设了
max-width:520px;现在占满主区域(width/height:100%),
阅读宽度改加在正文(rows680px、段落72ch)上。 apply()抛错会让胶囊无声消失:现在注册一个显示失败原因的兜底条目
(该分支不依赖已注册的词典,自带 zh/en 两行并按活动语言选择)。- 节假日表到期后不再「自信作答」:超过覆盖范围(
2026-12-31)时面板提示峰谷判定可能不准。 - API key 路回传
is_available=false时,面板注明该余额被平台标记为不可用。 - 未配置 API key 时不再写成
API key 余额不可用(no-key),改成短语「未配置 API key」——
配置事实不该长得像报错。 - 皮肤自定义示例里的
var(--dsw-radius-sm)补上字面量兜底
(莱茵生命皮肤并未定义--dsw-radius-*,裸引用会整条失效)。
文档
npm test跑全部三套测试(此前漏了tests/host.test.mjs,改坏 Host 半边也不会报红);
files一并收录tests/与docs/,发布后测试可复现。- 补上实机截图(
docs/:标题栏整条、胶囊特写、详情面板),
并把「位置」一节写成可直接抄的覆盖写法。 - 截图脱敏:只重绘数值(余额、今日已用、倒计时),换成同一套示意值
12小时30分 / ¥42.00 / ¥1.25,排版、字体、配色、菜单与窗口按钮都是原样。 - 增补「致谢」一节;「已知限制」如实写明未覆盖的平台与节日表年份。
- 补
repository/bugs/homepage字段。
说明
- 只在 Windows 官方桌面客户端 + DSH 0.2.0-rc.2 实测过;macOS / Linux 与纯浏览器模式未测。
纯浏览器模式下没有标题栏,胶囊会浮在应用顶部居中。 - 「今日已用」是按余额差观测的推算值,不是平台账单:它看不到余额之外的花费
(例如赠金消耗与充值在观测口径下会互相抵消的部分),也不含其他厂商渠道的消费;
「余额上升」一律视为充值、不计为负消费。 - 请求里带的客户端版本是
'unknown':DSH 官方客户端在构建时内联DSH_CLIENT_VERSION,
第三方插件拿不到,只能兜底(实测可用)。 - 账本只在本机写文件、不联网;Host 路由不可用时退化为「本次运行统计」——
丢的是历史,不是功能。