Releases: Smileslove/UsageMeter
Releases · Smileslove/UsageMeter
Release list
UsageMeter v0.11.2
[0.11.2] - 2026-08-09
Added
- Upstream Model Probe: Gateway profiles now support model-list discovery and single-model availability probes against the upstream (persisted, capped at 200 models); probe requests bypass the forwarder so they never count toward usage or trip the circuit breaker
Changed
- Gateway & Proxy URL Shortening: Gateway profile ids use short random ids (
p+ 6 hex), handle ids are unified to 8-hex, and proxy URLs use the/umg/<tool>/s/<id>format — oldgateway-<hex>-<hex>and legacy URL formats remain parseable and route correctly - SSE Parser Consolidation: The three duplicated SSE streaming loops now share one
SseEventReaderdriver insse.rs - Reasoning Token Semantics: opencode / hermes token accounting now uniformly folds reasoning into output tokens with a single merge point
Fixed
- Gateway Double-Counting: Gateway records now reconcile with local session scans by message id, so the same physical request no longer produces two usage facts
- Codex Proxy Double-Counting: Gateway Codex records now join the fuzzy-matching pool, eliminating duplicate usage facts when the same request appears both via the gateway and in local Codex scans
- Streaming Idle Timeout: Streaming responses are now reaped after 300s of upstream silence (configurable, explicit 0 still disables), preventing leaked connections
- Legacy Idle Timeout Migration: Existing users whose settings defaulted to a 0s idle timeout are migrated to 300s (settingsVersion 3, persisted so the migration applies once across all load paths)
- Request Body Stall Timeout:
read_body_limitednow enforces a 60s per-chunk idle timeout (408), preventing requests that stall after declaring a Content-Length from hanging the upstream - Gateway Protocol Mismatch: Requests whose body does not match the profile's protocol now get a clear 400 instead of an opaque upstream error
- Startup DB Concurrency: Proxy startup database initialization is serialized to avoid concurrent-init races
新增
- 上游模型探测:网关 profile 支持对上游做模型列表发现与单模型可用性探测(持久化保存,上限 200 个模型);探测请求不经过转发器,因此不计入用量、不触发熔断
变更
- 网关与代理 URL 精简:Gateway profile id 改为短随机 id(
p+ 6 位 hex),handle id 统一为 8 位 hex,代理 URL 采用/umg/<tool>/s/<id>新格式——旧gateway-<hex>-<hex>与历史 URL 格式仍可解析并正确路由 - SSE 解析收敛:三套重复的 SSE 流式循环统一为
sse.rs中的SseEventReader公共驱动 - Reasoning Token 口径:opencode / hermes 的 token 统计统一将 reasoning 并入 output tokens,仅保留单一合并点
修复
- 网关重复计数:网关记录按 message id 与本地会话扫描对账,同一物理请求不再产生两条用量事实
- Codex 代理重复计数:网关 Codex 记录纳入模糊匹配池,消除同一请求同时出现在网关与本地 Codex 扫描时的重复用量事实
- 流式空闲超时:流式响应在上游静默 300 秒后被回收(可配置,显式 0 仍可关闭),避免连接泄漏
- 旧版空闲超时迁移:存量用户默认 0 秒空闲超时的设置自动迁移为 300 秒(settingsVersion 3,写盘固化使迁移在所有加载路径上一次生效)
- 请求体停滞超时:
read_body_limited逐 chunk 增加 60 秒空闲超时(408),防止声明 Content-Length 后断流的请求挂起上游 - 网关协议不匹配:请求体与 profile 协议不符时返回明确的 400 错误,而非晦涩的上游报错
- 启动期数据库并发:代理启动期数据库初始化改为串行执行,避免并发初始化竞态
UsageMeter v0.11.1
[0.11.1] - 2026-08-08
Added
- Tool Capability Catalog: Added a shared tool catalog and capability metadata model for consistent source and tool handling across the application
Changed
- Service Boundaries: Reorganized monitoring, unified usage aggregation, proxy reconciliation, settings, synchronization, and frontend API calls into focused service boundaries
Fixed
- Quota Refresh: Fixed configuration-source quota refreshes attempting to write through a read-only getter
新增
- 工具能力目录:新增统一的工具目录与能力元数据模型,确保应用内来源和工具处理保持一致
变更
- 服务边界:重组监控、统一用量聚合、代理对账、设置、同步以及前端 API 调用,拆分为职责更清晰的服务边界
修复
- 额度刷新:修复配置来源额度刷新通过只读 getter 写入的问题
UsageMeter v0.11.0
[0.11.0] - 2026-08-07
Added
- Local API Gateway: Added a dedicated gateway panel and automatic loopback routing for OpenAI Chat Completions, OpenAI Responses, Anthropic Messages, and Gemini GenerateContent. Each profile uses one stored upstream credential and one generated local client key, with streaming responses preserved end to end
- Reasonix Telemetry v2: Added Reasonix telemetry v2 parsing and residual-usage reconciliation in unified statistics
Changed
- Configuration Storage: Split stable user preferences from configurable entities, moving entity collections and proxy runtime documents into SQLite while retaining a compact preferences file
- Gateway Credentials: Moved gateway credentials from macOS-only Keychain references to local cross-platform configuration, with recovery prompts for legacy credentials that cannot be migrated on the current device
Fixed
- Gateway Routing: Fixed concurrent profile updates, restored deterministic single-upstream routing, and hardened legacy credential recovery
- Sync Recovery: Restored pending sync-queue recovery and authoritative session-snapshot reconciliation for local usage data
新增
- 本地 API 网关:新增独立网关面板与自动本地回环路由,支持 OpenAI Chat Completions、OpenAI Responses、Anthropic Messages 和 Gemini GenerateContent;每个配置使用一个本地保存的上游凭据与一个自动生成的客户端 Key,并保持响应全链路流式传输
- Reasonix Telemetry v2:新增 Reasonix telemetry v2 解析,并在统一统计中对残差用量进行对账合并
变更
- 配置存储:拆分稳定用户偏好与可配置实体;实体集合和代理运行文档迁移至 SQLite,同时保留精简偏好文件
- 网关凭据:将网关凭据从仅限 macOS 的 Keychain 引用迁移至跨平台本地配置,并在当前设备无法迁移旧凭据时提供恢复提示
修复
- 网关路由:修复配置并发更新,恢复确定性单上游路由,并增强旧凭据恢复流程
- 同步恢复:恢复待处理同步队列,并修复本地用量数据的权威会话快照对账
UsageMeter v0.10.0
[0.10.0] - 2026-07-29
Added
- cc-switch Compatibility: Added coexistence safeguards for cc-switch proxy takeover, including automatic yielding and recovery, source attribution recovery, and safe cleanup of stale local proxy endpoints from its provider database
- Number Display Units: Added a setting for international (
K/M/B) or Chinese (万/亿) number units, with locale-aware labels and automatic unit promotion after rounding
Changed
- Usage and Session Responsiveness: Reworked unified-usage materialization, cache invalidation, historical-day cache shards, session snapshot loading, and background synchronization to reduce recomputation and keep larger histories responsive
- Compact Session Experience: Refined recent-request cards and removed main-thread blocking work from settings and operational commands for smoother panel navigation
Fixed
- Usage Accuracy: Restored precise rolling-window boundaries and fixed Codex fuzzy deduplication so matching no longer depends on session IDs
- Local Scan and Takeover Recovery: Fixed OpenCode fallback-schema ingestion, empty-database compatibility detection, and recognition of legacy Codex takeover endpoints
- Quota and Overview Stability: Made same-millisecond subscription cache writes deterministic and eliminated summary-card flicker and layout shifts when switching time windows
新增
- cc-switch 兼容支持:新增与 cc-switch 代理接管共存的保护机制,包括自动礼让与恢复、来源归因恢复,以及安全清理其供应商库中残留的本地代理地址
- 数值显示单位:新增国际单位(
K/M/B)与中文单位(万/亿)设置,支持随语言变化的单位文案及四舍五入后的自动单位进位
变更
- 用量与会话响应速度:重构统一统计物化、缓存失效、历史日缓存分片、会话快照读取与后台同步,减少重复计算并提升大历史数据量下的响应速度
- 紧凑会话体验:优化最近请求卡片,并将设置页与运维命令中的阻塞工作移出主线程,使面板切换更流畅
修复
- 用量准确性:恢复滚动时间窗口的精确边界,并修复 Codex 模糊去重对 session ID 的错误依赖
- 本地扫描与接管恢复:修复 OpenCode 降级 schema 的用量写入、空数据库兼容性判断,以及旧版 Codex 接管地址的识别
- 额度与概览稳定性:使同毫秒订阅缓存写入结果确定,并消除切换时间窗口时汇总卡片的闪烁与布局跳动
UsageMeter v0.9.1
[0.9.1] - 2026-07-07
Fixed
- Codex Request Deduplication: Fixed duplicate counting and missing source attribution when the same Codex request appears in both local session data and proxy captures
- Claude Source Attribution: Fixed Claude-compatible bearer-token requests so source attribution still resolves when providers use
Authorization: Bearerinstead ofx-api-key - Update Dialog Polish: Refined the update dialog layout and dismissal flow for a cleaner, more reliable update experience
修复
- Codex 请求去重:修复同一条 Codex 请求同时出现在本地会话与代理采集时的重复计数与来源未归因问题
- Claude 来源归因:修复 Claude 兼容供应商使用
Authorization: Bearer而非x-api-key时的来源归因失效问题 - 更新弹窗细节:优化更新弹窗布局与关闭流程,提升更新交互的稳定性与一致性
UsageMeter v0.9.0
[0.9.0] - 2026-07-05
Added
- Qoder Local Usage Parsing: Expanded Qoder Work and Qoder CLI local session parsing with shared model display handling and unified usage source mapping
Changed
- Release Checks: Aligned CI and local lint checks with the current Rust toolchain and added frontend dependency security scanning
Fixed
- Proxy and Source Detection: Fixed duplicate proxy startup handling, IPv6 local proxy identity matching, OpenCode provider path detection, source merge false positives, and proxy fallback request IDs
- Subscription Quota Resolution: Fixed quota cache conflicts, source URL normalization, New API utilization clamping, and Copilot credential directory handling
- Local Statistics Stability: Hardened session scanning, reader cache lock recovery, sync gating, saturated numeric database conversion, and Qoder Work session ingestion
- UI and Formatting Correctness: Fixed session output totals, currency conversion, negative number formatting, model tooltip escaping, timer cleanup, update skip persistence, and remaining hardcoded source/category labels
- Settings and Update Persistence: Added atomic settings writes and update-state lock recovery to reduce partial-write and poisoned-lock failures
新增
- Qoder 本地用量解析:扩展 Qoder Work 与 Qoder CLI 本地会话解析,并统一模型展示处理与用量来源映射
变更
- 发布检查:对齐 CI 与本地 lint 使用的 Rust 工具链,并补充前端依赖安全扫描
修复
- 代理与来源识别:修复代理重复启动、本地 IPv6 代理身份匹配、OpenCode provider 路径识别、来源归并误判和代理回退请求 ID 问题
- 订阅额度解析:修复额度缓存冲突、来源 URL 规范化、New API 利用率钳制和 Copilot 凭据目录处理
- 本地统计稳定性:增强会话扫描、reader 缓存锁恢复、同步门控、数据库数值饱和转换和 Qoder Work 会话接入稳定性
- 界面与格式正确性:修复会话输出统计、货币换算、负数格式化、模型提示转义、定时器清理、跳过更新持久化和残留硬编码来源/分类文案
- 设置与更新持久化:新增设置原子写盘与更新状态锁恢复,降低半写入和锁污染导致的失败
UsageMeter v0.8.1
[0.8.1] - 2026-06-20
Added
- Reasonix Compatibility Refresh: Added support for Reasonix v2 local statistics and session storage, and adapted the scanner to Reasonix v1 Go storage layout changes
- Qoder Source Cleanup: Unified Qoder family labels and collapsed local source entries in sessions and cache management views
Changed
- Statistics Loading Pipeline: Reworked overview and statistics loading with two-phase fetching and multi-level caches to improve responsiveness on larger datasets
- Rolling Weekly Window: Updated the 7-day usage window to use a rolling 7-day range instead of a fixed calendar slice
Fixed
- Fork Session Token Deduplication: Fixed duplicate token counting for forked Codex, Claude Code, and OpenCode sessions
新增
- Reasonix 兼容性更新:新增对 Reasonix v2 本地统计与会话存储的支持,并适配 Reasonix v1 Go 存储结构变更
- Qoder 来源整理:统一 Qoder 系列标签,并在会话与缓存管理视图中折叠本地来源条目
变更
- 统计加载链路:重构概览与统计数据加载流程,采用两阶段获取与多级缓存,提升大数据量场景下的响应速度
- 滚动周时间窗:将 7 天用量窗口调整为滚动 7 天区间,而非固定自然周切片
修复
- 分叉会话 Token 去重:修复 Codex、Claude Code 和 OpenCode 分叉会话的 token 重复统计问题
UsageMeter v0.8.0
[0.8.0] - 2026-06-14
Added
- Gemini End-to-end Support: Added Gemini local session scanning, proxy collection, and subscription quota monitoring so UsageMeter can track Gemini usage alongside existing tools
- Expanded Local Tool Coverage: Added local usage support for GitHub Copilot CLI, Qoder CLI, Qoder Work, Qoder Work CN, Qoder IDE, Qoder IDE CN, OpenClaw, and Hermes Agent
- Night Owl Day Boundary: Added an optional 4 AM day boundary mode for night-owl workflows, including cache metadata migration support for rebuilt statistics
Changed
- Subscription Source Resolution: Reworked third-party quota lookup and query profiles with live relay auto-detection, expanding source-aware subscription resolution
- Usage Presentation Consistency: Normalized quota and model display across usage views, share surfaces, and survival cards for clearer multi-tool comparisons
Fixed
- Updater Dialog Details: Refined the updater dialog layout and fixed incorrect release date rendering in the update flow
- Limit Survival Card Spacing: Fixed extra bottom whitespace in the limit survival card idle state
新增
- Gemini 全链路支持:新增 Gemini 本地会话扫描、代理采集与订阅额度监控,使 UsageMeter 可以将 Gemini 与现有工具一起纳入追踪
- 本地工具覆盖扩展:新增 GitHub Copilot CLI、Qoder CLI、Qoder Work、Qoder Work CN、Qoder IDE、Qoder IDE CN、OpenClaw 和 Hermes Agent 的本地用量支持
- 夜猫子日界线:新增可选的凌晨 4 点日界线模式,适配夜猫子工作流,并支持统计重建时的缓存元数据迁移
变更
- 订阅来源解析:重构第三方额度查询与查询配置,并支持 live relay 自动识别,扩展基于来源的订阅额度解析能力
- 用量展示一致性:统一各使用量视图、分享界面与生存卡片中的配额和模型显示方式,使多工具对比更清晰
修复
- 更新弹窗细节:优化更新弹窗布局,并修复更新流程中的发布日期显示异常
- 限额生存卡片留白:修复限额生存卡片空闲态底部多余留白
UsageMeter v0.7.3
[0.7.3] - 2026-06-10
Added
- Limit Survival Forecast: Added an overview survival card with source-aware quota lookup for Claude and GPT subscriptions so remaining runway is visible directly from the dashboard
- Usage Share Posters: Added themed usage poster export from the statistics view for sharing current usage snapshots
- Recent Requests Panel: Added recent request activity in sessions so the latest requests are visible alongside session details
新增
- 限额生存预测:概览面板新增限额生存卡,并支持面向 Claude 与 GPT 订阅的来源额度查询,可直接在仪表盘查看剩余可持续时间
- 用量分享海报:统计视图新增主题化用量海报导出能力,便于分享当前用量快照
- 最近请求面板:会话视图新增最近请求活动展示,可在会话详情旁直接查看最新请求
Fixed
- macOS Tray Interaction: Fixed macOS menu bar interaction and unified app exit handling for more reliable tray behavior and quitting
修复
- macOS 菜单栏交互:修复 macOS 菜单栏交互并统一应用退出流程,使托盘行为和退出流程更稳定
UsageMeter v0.7.2
[0.7.2] - 2026-06-06
Added
- WSL Passive Scanning: Added WSL passive scanning with per-distribution toggles so UsageMeter can collect local usage data from supported WSL environments
- WSL UI Markers: Added WSL-aware labels in sessions and projects so WSL-sourced records are visible in the UI
- WSL OpenCode Coverage: Extended OpenCode local usage scanning to work inside WSL
新增
- WSL 被动扫描:新增 WSL 被动扫描,并支持按发行版独立开关,使 UsageMeter 可以从受支持的 WSL 环境采集本地用量数据
- WSL 界面标记:会话和项目现在会显示 WSL 感知标签,方便在界面中识别来自 WSL 的记录
- WSL OpenCode 覆盖:扩展 OpenCode 本地用量扫描,使其可在 WSL 内工作