Releases: Rannist/balance-dsh
Releases · Rannist/balance-dsh
balance-dsh v2.2.2
Compare
Sorry, something went wrong.
No results found
balance-dsh v2.2.1
Compare
Sorry, something went wrong.
No results found
balance-dsh v2.2.0
Compare
Sorry, something went wrong.
No results found
balance-dsh v2.1.9
Compare
Sorry, something went wrong.
No results found
balance-dsh v2.1.8
Compare
Sorry, something went wrong.
No results found
balance-dsh v2.1.7
Compare
Sorry, something went wrong.
No results found
balance-dsh v2.1.6
Compare
Sorry, something went wrong.
No results found
由原来的聊天框底部显示会话消耗,修改为聊天框右侧小浮窗显示
balance-dsh v2.1.5
Compare
Sorry, something went wrong.
No results found
balance-dsh v2.1.4
Compare
Sorry, something went wrong.
No results found
修复了v2.1.2以下插件内更新并重启后回退的bug
balance-dsh v2.1.0
Compare
Sorry, something went wrong.
No results found
已修复/优化的问题
一、崩溃与稳定性
问题
症状
组件里存在条件调用的 hook
特定渲染顺序下抛 Rendered more hooks than during the previous render,整条余额行崩掉
事件分发没有逐个隔离
任何一个订阅者抛错,其余所有订阅(余额 / 今日 / 设置 / 模型 / 价格 / 白光)一起失效
顶层 require 未包住
依赖缺失时整个 factory 崩掉,5 个 slot 全不注册,界面静默消失且无日志
日历同步失败后把占位留在「已成功」集合里
那一年永远不再重试 ,网络恢复后也看不到调休数据
/balance 命令在会话未就绪时
formatUsage 首行就炸,连余额文本都拿不到
/balance-api 主干尾部没有 try/catch
任一异常 → reject → 零字节响应,客户端挂到超时,还可能升级成 unhandledRejection
节点断开时请求体读取永不 settle
await 它的 handler 一直挂着,连接和内存都不释放
版本依赖的折叠 API 没有 try/catch
会话半装载时 requestHeader() 抛错 → 整条 ?session= 500
二、计费与数字准确
问题
症状
设置文件没读完就允许保存
拿出厂默认值当底做合并再整份落盘 —— 用户改一个开关,轮询间隔 / 低余额阈值 / 扫描上限 / API Key 全被盖回出厂
读快照时丢掉 bySession
冷启动第一次 ?session= 拿空表当基线,今日总额塌成只剩当前会话一个桶 (实测 ¥16 → ¥3.2),且带「已定型」身份发出,看着像「打开时数字先小后大」
候选筛选把「没有时间戳的会话」整批滤掉
只要列表里有一部分带时间戳,at >= dayStart 就会丢掉 at === 0 那批 —— 今日金额系统性偏低
可疑空结果(有会话但今天一个都没筛出来)被缓存满 45 秒
一个可疑的 ¥0 硬撑 45 秒,重算也救不回来
增量缓存只按 TTL 判,不绑基线
快照回填 / 全量重算换了基线,1.5 秒内仍返回按旧基线算的整份总额,今日数字往回跳
增量结果(provisional)被当定型值命中缓存
客户端据此判定「已定型」,20 秒内不补拉,数字锁在不精确值上
?session= 复用的会话 id 没归一化
list() 给的是 session-<uuid>、客户端传裸 UUID,同一会话被算两份并写进快照
统计空日对象缺 7 个 web* 字段
0 + undefined = NaN → JSON 变 null → 客户端吃成 0,「网页工具」90 天汇总恒为 0
改设置后只清了统计缓存
今日金额还按旧价算出来的值撑最多 45 秒,同一个界面两个口径
余额接口每个请求 都真查官方余额
单次 419ms,多个 slot / 多窗口并发时重复查同一份余额
API Key 路径取 infos[0]
多钱包时取数组第一个,刷新几次数字反复跳动 ;官方账号路径改了、这条没跟上
「余额不足」用 total <= 0 推断
total_balance 只是充值余额,赠送单列 —— 「充值花光但赠送还有」被判成没钱
余额请求失败时清空数字
界面一闪成空,应该保留上一次的值
结算写失败仍然删掉旧快照
那一份数据直接蒸发,统计面板永远补不回来
跨天结算前的快照路径可能为空串
中间任何读路径都判成「没有快照」,冷启动一直算不出今日
统计窗口按「当前时刻 - 89 天」
第一行只算半天(见开头)
子代理分桶丢 era
见开头
三、子代理消费
原来只走一条枚举路径(官方 subagents 服务),它要求多个服务同时可用,任一缺失就 catch 成「没有子代理」——
于是面板上那两行永远不出现,也没有任何日志 。现在加了「按 parentSessionId 走会话列表建父子图」的第二条独立路径 ,
两条取并集,服务不可用时一样能算出来。
子代理消耗已计入上方合计,并在明细里单独列出「子代理 N 个 / 子代理 tokens / 子代理金额」。
枚举加了每轮上限(60 个会话)并逐个让出主线程,不会因为开了很多子代理把界面卡死。
四、性能
问题
处理
持久化读取缓存只按条数 淘汰(240 条 × 单份最大 134 MB 解压后)
增加 512 MB 字节预算,命中挪到队尾做真 LRU ,淘汰时一并清掉节流时间戳
统计面板并发请求各自全量扫 80 个会话
加单飞 ,并发共用同一次扫描
窗口不可见时仍在轮询位置和折叠状态
document.visibilityState !== "visible" 时跳过 —— 两者都会强制 layout,原来每秒 7 次整页重排
时段色带每渲染跑两次、每次 24 次小时采样
按时间戳做模块级 memo
useMemo 的兜底值是 [] 字面量
每次渲染都是新引用 → 依赖永远为真 → memo 完全失效 ,改成冻结常量
isPeakAt 每次都重建窗口/星期数组
按 config 用 WeakMap 缓存(2 万帧的会话约 4000 次调用)
五、设置
设置卡片卸载时最后 350ms 的改动会被静默丢弃 (原来只 clearTimeout,不发最后那一次)。改完立刻切页 = 白改,而界面刚刚还提示过「修改中…」。现在卸载时补发。
设置页的 NEW 徽标会提前消失 :version 取错了来源,恒为空串 → 「这是本版新功能」判定永远不成立 → 24 小时窗口没走完就不亮了。
设置还没加载完成时,服务端也会拒绝写入 (返回 503「设置还没加载完成,请稍后再试」),不再有抢跑覆盖的窗口。
写入口加了来源校验(要求 Content-Type: application/json 且同源),本地接口不再对任意网页的简单请求开放。
六、代码清理
删除从未生效的 CompactBalanceLine 整条链路(组件 + 模块级广播 + 17 行 CSS)。那个 slot 从未渲染成功,零消费者。
删除死参数、修正三处与实现不符的注释(含一处「锚点和输入卡片同宽」的失效假设)。
6 处用数组下标当 React key 的装饰元素改成常量 + 显式 key。