Repository navigation
Releases: JularDepick/dsh-wakatime-plugin
Releases · JularDepick/dsh-wakatime-plugin
Release list
v0.4.0-dsh-0.2.1-rc.1_2_3_4_5
Full Changelog: v0.3.0...v0.4.0
新增
- 单份 OAuth 访问令牌认证: 直接使用个人访问令牌(wakatime.com/oauth), 保存即覆盖, 清除即回退未配置, 不再需要选择凭证类型
- 单一本地战绩: 战绩不再按凭证分开存放, 更换凭证不影响历史累计, 也不会因为换凭证看起来归零
- 手动迁移旧数据: 检测到 0.3.0 旧版数据时插件只读运行并在上报记录标题下方显示一行红字入口, 点击后把旧的凭证列表与多份本地数据合并为一份(累计量求和, 待发送队列按心跳身份去重, 云端快照取最新; 旧的失败列表不继承, 迁移后为空), 迁移前保留旧文件备份, 便于回查; 不再在启动时自行改写旧数据文件
- 云端快照随账号: 更换凭证后旧账号的云端汇总立即作废并自动重新同步, 不会与本地战绩混算
- 未配置凭证也能查看本地战绩: 战绩工具与 Web 战绩表照常输出九项指标, 凭证只影响云端合并与上报
修复
- 两个 profile 同时运行时战绩可能不再增长: 后落盘一方的增量被当成基线吃掉, 现在两侧增量都会累计
- 另一个 profile 写入数据后, 本进程落盘可能删掉它刚新增的待发心跳: 现在只删除本进程真正出队或重试移出的条目
- 待发队列在磁盘上被压缩或按上限截断后, 内存里仍在的心跳写不回去: 现在按磁盘实际内容补齐
- 换凭证后旧账号的云端汇总在从未同步过的 profile 里仍参与取最大值: 现在作废动作一律落盘
- 正在推送中的一批心跳在卸载或进程退出时可能既没送达也从磁盘消失: 在途批次一律按未送达保存
- 手工改配置文件把上报间隔写到极大值时, 上报轮次退化成每毫秒一轮: 现在配置校验, 恢复与定时器三处都按上限截断
- 把界面语言写成不存在的值时工具文案静默回退中文: 现在按非法配置拒绝
- 配置文件归档成功但随后写盘失败时, 下次启动读不到凭证: 现在把归档文件改回原路径
- 文件锁的陈旧清理, 续期与释放可能误删别人刚建立的锁或把已释放的锁写回: 现在按持有令牌核对, 释放前等在途续期落定
- 上报记录里的服务端原文(400/404/422 与非 JSON 响应)直接显示英文: 现在按类别本地化
- 工具面凭证前缀出现英文标记: 现在本地化
- 凭证保存失败时提示出现两句整句拼接: 现在只保留一句
- 重试时任务已不在待重试列表被当成错误提示: 现在按中性提示
- 关闭上报总开关后新心跳被直接丢弃, 界面与文档未说明: 开关文案已写明语义
- 缓存命中 Token 之前从未真正进入 WakaTime: 改用官方统计字段名上报, 云端现在能看到这项指标
- 提示词字符在云端被重复累加: 改为按增量上报, 提示词事件数恢复为真实提示词条数
- 有效 TOKEN 消耗量低估: 改为官方计费口径(未命中输入 + 缓存读 + 缓存写 + 输出)
- 凭证失效时心跳会进入失败记录并可能被上限淘汰: 现在整批留在队列(移到队尾轮转, 不再让最旧一批被反复重取而饿死新心跳), 凭证恢复后继续推送
- 非权限原因的 403 也被当成凭证失效, 整批无限轮转: 现在按响应内容区分, 其余 403 计入可重试次数
- 升级后上报记录里满屏都是从 0.3.0 继承来的红色失败行: 迁移不再继承旧失败列表, 只保留批次级记录
- 更换凭证后仍显示上一个账号的名字或数据: 账号信息随凭证整体替换
- 本地数据文件损坏或结构不被识别时可能被清空: 现在先另存备份再按空数据起步
- 环境变量凭证生效时清除凭证看似成功: 现在明确提示需要移除环境变量
- 粘贴被截断的令牌时误提示 插件密钥不再支持: 现在按格式错误提示
- 凭证清除失败时显示了不相关的错误文案
- 更早版本的独立快照文件(stats.json / heartbeats.json)在并入后不被归档, 每次启动重复归零: 现在并入即归档, 历史战绩与待发队列得以保留
- 结构版本高于当前支持值的数据文件被当成损坏件归档清空: 现在只读运行, 不写盘也不挪走, 保留回退余地
- 队列落盘超限时丢弃的是最旧且尚未上报的心跳: 超限先做相邻合并, 只有失败任务与上报记录按上限截断
- 配置文件迁移或归档失败仍会覆盖原文件: 现在中止写入, 不再毁掉旧备份
- 插件卸载时的归仓落盘未等待完成, 写入失败会静默丢失最后一段统计: 现在等待完成并在失败时告警
- 云端同步失败时最长可能重试数分钟, 界面一直等待: 同步请求的重试次数上限压到与凭证校验一致
- 心跳推送失败会在单次请求内最多重发 5 轮, 放大重复上报: 推送请求的重试次数上限压到 1 次, 失败整批回队由下一轮推送
- 配置文件写入失败被静默吞掉, 界面仍显示已保存: 写入失败转为告警日志并回失败
- 手动重试在本轮推送正忙时仍返回成功, 按钮看起来生效却没发出去: 现在按忙态提示
- 手动重试可能长时间挂住: 等待在途推送结算的总时长加上限
优化
- 状态, 战绩与上报记录在读取时合并其它 profile 写入的增量, 双进程运行时看到的是合计值(仅用于展示, 不回写数据)
- 上报记录支持显示尝试次数, 重试按钮在提交期间禁用, 避免重复点击
- 同步失败区分 未配置凭证 与 网络或服务端异常, 失败原因按类别本地化
- 配置项的写入接口增加来源与内容类型校验, 只接受同源页面发起的 JSON 请求
- 数位分隔档位切换条支持方向键操作, 表格与输入框补齐无障碍名称
- 凭证来自环境变量时不再显示无效的清除入口
- 心跳上报与云端同步遇到 429 与服务端错误时按指数退避重试, 连续限流不再直接落到失败列表
- 上报记录不再二次翻转顺序, 刷新过程中的旧请求不会再盖掉新状态
- 数字配置项支持清空输入框, 非法值失焦或回车后回滚为服务端值, 编辑期间不会被后台刷新覆盖
- 多个配置项同时改动时草稿不再被相互覆盖
- 运行期配置改为先落盘再改内存, 保存失败时界面不会显示未持久化的值
- 凭证保存失败不再把服务端原始错误串回给浏览器, 改为固定错误码加日志留痕
- 文件锁在持锁期间定期续期, 长时间写入不会被判定为陈旧锁; 原子写入的临时文件在改名失败时清理
- 账号名解析超时时一并中止底层请求, 不再让已无用的请求继续占用连接
- 迁移入口在其它进程已迁移过时按无操作成功返回, 不再显示迁移失败
兼容性
- 凭证类型: 不再支持插件密钥, 只保存过插件密钥的用户需要改用个人 OAuth 访问令牌, 本地战绩保留
- 已移除: 多凭证列表与切换, 凭证缓存清单, 战绩显示策略配置项, 插件密钥环境变量, 以及对应的界面与接口; 旧
cordis.yml中的残留项不会被拒绝但不再生效 - 升级: 0.4.0 与 0.3.0 不能共用同一数据目录同时运行, 升级后不要回退; 升级前请备份
~/.dsh/plugins/wakatime, 迁移时会自动留下旧结构备份 - 迁移前请先确认: 检测到旧版数据后插件本次运行不写盘, 期间新产生的统计只在内存里, 请尽快在界面上点击迁移
- 令牌权限: 个人访问令牌需要包含
write_heartbeats才能上报, 缺该权限时上报会被服务端拒绝(队列不会丢, 补齐权限后继续推送) - dsh 版本: 实测区间上界由 0.2.1-rc.3 推进到 0.2.1-rc.5, 现为
>=0.2.1-rc.1 <=0.2.1-rc.5, 下界与 0.3.0 相同 - 配置默认值不变: 战绩表边框默认开启, 数位分隔默认按千位分组
- 数据目录: 迁移与异常归档的文件统一带版本与时间戳后缀(
<文件名>.<标签>.<时间戳>.bak), 标签为 v2 / legacy / corrupt / unknown
v0.3.0-dsh-0.2.1-rc.1_2_3
Full Changelog: v0.2.2...v0.3.0
新增
- 凭证同权: 插件密钥与 OAuth 访问令牌地位相同, 都能上报与读取; 类型按前缀自动识别, 粘贴即存, 无需选择是哪种凭证
- 多凭证管理: 可保存多份凭证并随时切换, 配置视图提供切换, 移除与一次清除全部; 当前凭证与当前账号分两行展示
- 每份凭证一份本地数据: 战绩累计, 云端快照, 待发送队列与上报记录各自独立, 切换凭证即切换展示, 互不混算
- 凭证缓存清单: 配置视图可查看每份凭证的模糊凭证(首尾各 8 个字符, 中间固定 8 个星号), 类型, 账号, 最后更新时刻与它自己的战绩, 并在清单里直接切换或移除
- 多 profile 同时使用: 同一用户下多个 dsh profile 共用本地数据时, 双方的战绩与设置都会合并, 不再互相覆盖; 模型思考时长这类只在本地统计的指标不会丢失, 平均输出速度不再出现异常大的值
- 配置页两列分组布局(上报, 上报字段, 展示, 诊断), 窄窗口自动回落单列
- 数位分隔符可选千位(每 3 位)或万位(每 4 位)分组, 属纯展示项
- 上报记录新增详情列: 每次上报的类别计数与项目/分支, 失败行在前面附失败原因
修复
- 同一账号保存多份凭证时, 汇总视图把同一份云端总量重复计入, 显示的战绩偏高
- 移除凭证时可能连带删除正在使用的本地数据, 导致该账号战绩清零
- 配置修改后主视图的数据与文案不刷新, 需要手动重开标签页
- 未缓存账号名时每次查看状态都会请求账号接口, 离线时界面长时间无响应
- 中文界面下把服务端的英文错误原文直接显示在提示条上
- 标签页左右留白溢出, 以及档位切换条在浅色主题下滑块不可见
优化
- 界面术语统一为凭证, 缓存区标题与提示同步更新, 不再出现密钥与实际含义不符的说法
- 凭证获取说明改为官方实际路径: 插件密钥在账号设置页, 个人 OAuth 令牌在
wakatime.com/oauth, 自用无需创建应用; 需要自定义权限时再建应用并在授权时声明所需范围 - 新增凭证时的校验更宽容: 只能写入的插件密钥不再被判为无效, 令牌在缺少账号读取权限时改用战绩数据确认可用性
- 上报记录可看到其它进程写入的记录与失败任务; 其它进程的失败任务只读展示, 重试入口只出现在本条记录所属的进程
兼容性
- dsh 版本: 改为实测区间
>=0.2.1-rc.1 <=0.2.1-rc.3, 同一份产物覆盖 0.2.1-rc.1, 0.2.1-rc.2 与 0.2.1-rc.3 - 破坏性变更: 本版本不再支持 dsh 0.2.0-rc.2(上一版本仍支持), 且区间之外的一律拒绝安装与启动, 包括 0.2.1 正式版与 0.3.x; 仍在 0.2.0-rc.2 上的用户不要升级到本版本
- 从 v0.2.2 升级: 旧版单字段凭证在首次启动时自动迁移为凭证列表, 历史战绩按凭证归属延续, 无需手工搬迁; 本地数据在首次写入时自动整理, 旧文件仍可读取
v0.2.2-dsh-0.2.0-rc.2+0.2.1-rc.1+0.2.1-rc.2
Full Changelog: v0.2.1...v0.2.2
兼容性
- dsh 版本: 支持列表扩展为实测过的 0.2.0-rc.2, 0.2.1-rc.1 与 0.2.1-rc.2,三者共用同一份产物;未实测的 dsh 版本不在列表内,安装或启动会被拒绝
- 从 v0.2.1 升级: 无任何操作要求,配置, API Key 与本地数据文件原样延续
- 适用性判定: 0.2.1-rc.2 与 0.2.1-rc.1 的发布包除版本号字段外逐字节一致,已按发布包类型声明逐文件比对确认
v0.2.1-dsh 0.2.0-rc.2+0.2.1-rc.1
Full Changelog: v0.2.0...v0.2.1
新增
- 账号数据隔离: 每个 API Key 各自一份本地数据(战绩累计, 云端快照, 待发送队列与上报记录),换 Key 不再把上一个账号的数据算到新账号;未配置 API Key 期间采集的数据由此后首个配置的 Key 认领
- 推送失败重试与失败记录: 发送失败的心跳自动回到队尾重试,单条最多 3 次;尝试耗尽或遇到 400/401/403/404/422 终态失败时转入上报记录而不再静默丢弃;上报记录新增「操作」列,失败行可点击重新排队并立即推送一轮,已重试的行显示「已重试」状态
- 队列超限保护: 待发送队列达到上限时按相邻两条合并(保留较早那条的身份与时间,计数相加),优先保住上报量而不是直接丢弃最早的心跳
- API Key 缓存管理: 配置视图新增「API Key 缓存」明细,列出每个 Key 的模糊标识(保留首尾各 8 个字符,其余以
*代替), 状态标签(当前密钥 / 使用中 / 30 天未登录), 最后更新时刻与该 Key 自己的战绩,并可移除 30 天未登录的缓存(按钮上二次确认,3 秒超时回归) - 战绩显示策略: 配置视图可用档位切换条在「全部密钥战绩」与「当前密钥战绩」之间切换,默认全部
- 战绩指标扩充: 新增缓存命中 TOKEN 总量与平均输出速度(单位
token/s);模型思考总时长按hh:MM:ss展示(小时不足两位补前导零,超过两位不再补零且不设上限);提示词口径统一为字符总量并附 Token 估算 - 战绩表边框开关: 配置视图可开关战绩表满格边框,开启时表格自画圆角外框,单元格只画内部横竖线
- 动态批量上报: 积压不足 20 条时逐条发送,达到 20 条后按积压量的十分之一合并成一次批量请求(单批不超过 WakaTime 的 25 条上限),每条心跳保留自己的时间戳
修复
- 启动竞态丢数: 启动载入完成前的推送与数据切换会与初始载入竞争,期间产生的战绩可能丢失
- 换 Key 时的归属错误: 切换账号数据前没有等待在途推送结算,旧账号的心跳可能改用新 Key 上报
- 请求悬挂: 插件本地接口的数据异常时请求一直不返回,现在统一返回错误状态
优化
- 战绩数值更贴近官方口径: 提示词长度, Token 用量与模型思考时长优先取 dsh 自身提供的数据,取不到时才回退本地估算,升级后若历史累计量与新版数值口径略有差异属预期
- 战绩表视觉: 档位切换条改为滑块式并带 160ms 过渡,表格字号由单一旋钮整体缩放,表头与行高, 圆角与分隔线按官方 trajectory 对齐
兼容性
- dsh 版本: 同一份产物同时支持 dsh 0.2.0-rc.2 与 0.2.1-rc.1,包清单以
engines.dsh声明>=0.2.0-rc.2 <0.3.0-0,宿主包对等依赖同时覆盖两个版本 - 从 v0.2.0 升级: 配置与 API Key 延续使用;旧的
stats.json与heartbeats.json在首次启动时自动并入当前 API Key 的数据桶,原文件保留但不再写入;本地数据文件变为buckets.json - 配置兼容: 新增配置项都有默认值(
tableBorders默认开启,statsScope默认all),旧cordis.yml无需改动
v0.2.0-dsh-0.2.0-rc.2
Full Changelog: v0.1.3...v0.2.0
新增
- 标签页配置视图:右上角「配置」按钮在主视图与配置视图之间切换,配置视图承载 API Key 变更与上报参数,按 ESC 收起;主视图工具条左侧常驻只读账号状态(状态标签与账号名)
- 战绩累计量本地保留:LLM 思考总时长与提示词 Token 估算跨 dsh 重启继续累加,不再因重启归零;累计量快照与配置文件同目录,删除该快照即可从零开始
修复
- 账号名显示:已登录仍显示 Anonymous User 的问题修复,按公开用户名、姓名、显示名、邮箱、id 依次取值并剔除官方匿名占位,旧缓存为占位时自动重新解析并回写
- 上报标识:上报请求补发 User-Agent 与机器名,修复 WakaTime 报表中 Editor 与 Operating System 显示 Unknown、机器维度(Machines)无法归类
- 项目与分支识别:会话工作目录位于仓库子目录或 git worktree 时也能正确定位项目与分支
优化
- 配置改动即时生效:去掉保存按钮,开关与数字输入改动直接写入(数字字段失焦或回车才写入,避免中间值生效)
- 上报记录:按时间最近优先展示
- 云端同步:同步结果在 5 分钟窗口内复用,切换标签页与刷新页面不再重复请求云端;手动同步始终强制刷新,更换或清除 API Key 后自动失效
- 标签页版式:以 dsh web 官方界面为基准重布局,内容直接铺在标签页下不再自建卡片,战绩为独立三列表格(指标/数值/说明),分区之间用分隔线区分;标签页内容随宿主宽度变化自适应,窄宽度下信息列换行而不是截断,左右内边距为 60px
兼容性
- 与 v0.1.3 兼容:已有配置、WakaTime API Key 与本地战绩数据延续使用
- 适用 dsh 0.2.0-rc.2 环境
v0.1.3-dsh-0.2.0-rc.2
Full Changelog: v0.1.2...v0.1.3
v0.1.2-dsh-0.1.7-rc.2
Full Changelog: v0.1.1...v0.1.2
v0.1.1-dsh-0.1.5-rc.1
Full Changelog: v0.1.0...v0.1.1
新增
- 云端同步: 配置 API Key 后自动拉取 WakaTime 云端最近 7 天的 AI 汇总,提示词字符、输出 Token、API 有效消耗与本地战绩对应指标取最大值合并展示;支持手动刷新,同步状态(同步时间/失败/未同步)显示于战绩卡头部
- 清除 API Key: 已配置时可一键清除本地 API Key(3 秒内二次点击确认),清除后回退未登录状态
修复
- 登录用户名显示: 优先展示公开用户名,不再回退显示匿名默认名 Anonymous User
- 界面硬编码中文清理: 上报记录表头、思考时长单位、工具输出错误提示等文案改为字典键,英文界面不再出现中文残留
优化
- 标签页布局: 云端同步并入战绩卡(移除独立云端卡),同步状态与按钮移至战绩卡头部;登录与 Key 管理区整合清除入口
- UI 结构与样式: 开关/数字输入行改为 label 关联控件(点击文本可切换/聚焦)、控件补充键盘焦点指示、战绩网格改为响应式折行、上报记录表行 hover 高亮
兼容性
- 与 v0.1.0 完全兼容,无破坏性变更;已有配置与本地战绩数据延续使用
- 适用 dsh 0.1.5-rc.1 环境(依赖升级至 0.1.5-rc.1 系列,内部采集机制调整,用户可见功能不变)