Releases: zdx52/AIUsageMonitor
Release list
v1.10.0
📊 Command Code card: percentage + reset countdowns
- Monthly allowance now shows as a percentage (used %), aligned with the 5-hour / weekly meters
- Reset countdowns below each meter: 5-hour ("Xh Ym"), weekly ("Xd Xh"), monthly ("Xd Xh")
- Monthly reset sourced from billing period end (
currentPeriodEnd), fixed fractional-seconds parsing - Meter order: 5-hour → weekly → monthly
📊 Command Code 卡片:百分比 + 重置倒计时
- 月度额度改为百分比显示(已用 %),与 5 小时 / 每周进度条对齐
- 每个进度条下方新增重置倒计时:5 小时(X小时X分钟)、每周(X天X小时)、月度(X天X小时)
- 月度重置取账单周期结束(
currentPeriodEnd),修复毫秒时间戳解析 - 顺序:5小时 → 每周 → 月度
v1.9.0
✨ Command Code Usage Card
New menu bar card for Command Code GOAT (also Pro/Max) subscription usage:
- Monthly credit remaining vs. $70 cap with progress bar (used %), plus 5-hour and weekly rolling window meters with reset countdowns
- Current billing period total cost / request count / tokens
- Uses the same API key as the CLI — internal
/alpha/*endpoints (whoami, billing/credits, billing/subscriptions, usage/summary), no web scraping needed - Monthly usage >= 90% triggers a health warning
🎛️ Settings
- Added "Command Code 用量" toggle + API Key input (stored in Keychain)
📦 Install
- Download
AIUsageMonitor-v1.9.0.dmg - Mount it, drag
AIUsageMonitor.appinto Applications - First launch: right-click → Open (Gatekeeper)
- Configure API keys in Settings
Full changelog: v1.9.0 commits.
✨ Command Code 用量卡片
菜单栏新增 Command Code 订阅用量卡片(GOAT / Pro / Max 通用):
- 月度剩余额度 vs $70 上限进度条(已用百分比),5 小时和每周滚动窗口用量条(含重置倒计时)
- 本期总花费 / 请求数 / Tokens
- 与 CLI 共用同一把 API Key——内部
/alpha/*端点(whoami、billing/credits、billing/subscriptions、usage/summary),无需网页抓取 - 月度额度使用 >= 90% 触发健康告警
🎛️ 设置
- 新增「Command Code 用量」开关和 API Key 输入框(Keychain 存储)
📦 安装
- 下载
AIUsageMonitor-v1.9.0.dmg - 双击挂载,将
AIUsageMonitor.app拖入 Applications - 首次启动:右键 → 打开(Gatekeeper 限制)
- 在设置面板填 API Key
完整更新内容见 v1.9.0 commits。
v1.8.0
🌐 OpenRouter Usage Card (Re-added)
The menu bar now shows OpenRouter account usage alongside DeepSeek / Tavily / MiniMax / OpenCode GO:
- Balance via
GET /api/v1/credits— total credits, used, remaining (requires a Management Key) - Today's spend via the beta Analytics API (
POST /api/v1/analytics/query), grouped by day (UTC-aligned) - Used-percentage progress bar with orange/red quota warnings at 50% / 80% usage
- Health indicator turns orange when OpenRouter quota usage ≥ 75%
🎛️ Settings
- New "OpenRouter 用量" (show/hide) toggle
- New OpenRouter Management Key input in Settings (openrouter.ai → Settings → Keys → create a Management Key; regular API keys return 403)
📦 Install
- Download
AIUsageMonitor-v1.8.0.dmg - Mount it, drag
AIUsageMonitor.appinto Applications - First launch: right-click → Open (Gatekeeper)
- Configure API keys in Settings
Full changelog: v1.8.0 commits.
🌐 OpenRouter 用量卡片(重新加入)
菜单栏现在与 DeepSeek / Tavily / MiniMax / OpenCode GO 一起显示 OpenRouter 账户用量:
- 余额 — 通过
GET /api/v1/credits获取充值总额 / 已用 / 剩余(需 Management Key) - 当日花费 — 通过 beta Analytics API(
POST /api/v1/analytics/query)按天分组(UTC 日对齐) - 已用百分比进度条,额度使用 50% / 80% 时显示橙色 / 红色预警
- 用量占比 ≥ 75% 时菜单栏健康指示变橙色
🎛️ 设置
- 新增「OpenRouter 用量」显示开关
- 新增 OpenRouter Management Key 输入框(openrouter.ai → Settings → Keys → 创建 Management Key;普通 API Key 调用会返回 403)
📦 安装
- 下载
AIUsageMonitor-v1.8.0.dmg - 双击挂载,将
AIUsageMonitor.app拖入 Applications - 首次启动:右键 → 打开(Gatekeeper 限制)
- 在设置面板填 API Key
完整更新内容见 v1.8.0 commits。
v1.7.0 — MiniMax Token Plan card
✨ MiniMax Token Plan Card (China subscription monitoring)
Live display of MiniMax China subscription Token Plan usage:
- Per-model family (general / video) dual progress bars — 5h rolling window + weekly window (used percentage)
- Countdown "重置于 X 小时之后" in natural language (consistent with OpenCode style)
- Throttling status icon (highlighted when API rate-limited)
- Independent video model toggle (hidden by default, billed separately)
- Requires separate subscription Key (
eyJ...JWT format, NOT interchangeable with pay-as-you-go API Key)
🗑️ Removed OpenRouter dead code
- Deleted
OpenRouterData.swift,OpenRouterService.swift - Menu bar card, settings panel, toggle all cleaned up
- No functionality loss (OpenRouter was already unused dead code)
🐛 Other
- Unified
formatResetInMs/formatResetDurationhelper functions (no more per-card duplication) - OpenCode sort logic changed to descending by quota
- Bilingual README synced
📦 Install
- Download
AIUsageMonitor-v1.7.0.dmg - Mount it, drag
AIUsageMonitor.appinto Applications - First launch: right-click → Open (Gatekeeper restriction)
- Fill MiniMax subscription Key in Settings panel (
https://api.minimaxi.com/v1/token_plan/remains)
Full changelog: v1.7.0 commit history.
✨ MiniMax Token Plan 卡(中国区订阅用量)
实时显示 MiniMax 中国订阅的 Token Plan 用量:
- 每模型族(general / video)双进度条 — 5h 滚动窗口 + 周窗口(已用量百分比)
- 倒计时「重置于 X 小时之后」自然语言显示(与 OpenCode 风格一致)
- 限流状态图标(API 限流时高亮显示)
- 独立 video 模型开关(默认隐藏,独立计费)
- 需单独填订阅 Key(
eyJ...JWT 格式,与按量计费 API Key 不互通)
🗑️ 移除 OpenRouter 死代码
- 删除
OpenRouterData.swift、OpenRouterService.swift - 菜单栏卡片、设置面板、Toggle 全部清理
- 无功能损失(OpenRouter 此前已是未引用死代码)
🐛 其它
- 统一
formatResetInMs/formatResetDuration工具函数(不再每个卡片各搞一份) - OpenCode 排序逻辑改为按额度从大到小
- 双语 README 同步
📦 安装
- 下载
AIUsageMonitor-v1.7.0.dmg - 双击挂载,将
AIUsageMonitor.app拖入 Applications - 首次启动:右键 → 打开(Gatekeeper 限制)
- 设置面板填 MiniMax 订阅 Key(
https://api.minimaxi.com/v1/token_plan/remains)
完整更新内容见 v1.7.0 commit history。
v1.6.0
v1.6.0
- 📖 Novel Writing Web UI integrated — New "小说" (Novel) button next to the dashboard launches the built-in Flask web UI (port 8080) in a native window; the web/ app is now maintained in this repo
- 🚀 Auto service startup — Clicking the button detects and starts the novel web service (web/.venv) automatically; cleaned up on app exit
- 🎨 UI polish — Gradient book covers, overview hero with SVG word-count chart (hover details), quality summary card, character avatar cards, pill badges, macOS glassmorphism, evenly spaced menu bar buttons
v1.6.0
- 📖 集成小说创作 Web — 看板旁新增「小说」按钮,一键启动内置 Flask Web UI(8080 端口)并在原生窗口打开;web/ 目录随本项目维护
- 🚀 自动拉起服务 — 点击按钮自动检测并启动小说 Web 服务(web/.venv),退出应用时自动清理
- 🎨 界面精美升级 — 渐变封面卡片、总览页 hero + SVG 字数走势图(悬停详情)+ 质量总览、人物渐变头像卡片、世界观/架构/追踪页卡片化、pill 徽章、毛玻璃质感、菜单栏 5 按钮平均排布
v1.5.3
v1.5.2
v1.5.2
- 🧠 Hindsight native dashboard — Replaced embedded web proxy with Hindsight Control Plane (port 9999)
- 🗑️ Cleanup — Removed old hindsight-server.py and hindsight-dashboard.html resources
v1.5.2
- 🧠 Hindsight 原生看板 — 替换内嵌网页代理为 Hindsight 原生 Control Plane 看板(端口 9999)
- 🗑️ 清理 — 移除旧的 hindsight-server.py 和 hindsight-dashboard.html 资源文件
v1.5.1
v1.5.0
v1.5.0
🆕 Mental Model Tab
New tab in the Hindsight dashboard for browsing and viewing mental model details. Mental models are now displayed alongside memories in the dashboard, with dedicated list and detail views.
🔍 Semantic Search
Search now uses the backend /recall endpoint for semantic retrieval instead of client-side keyword filtering. Search terms are sent to the Hindsight memory service for proper vector-based retrieval, returning more relevant results.
🎨 Dashboard UI Redesign
- Top navigation bar injected natively by Swift (faster, more reliable)
- Unified dark background throughout the window
- Detail page with proper styling (content, tags, timestamp)
- Auto-retry on load failure with exponential backoff
- Smoother auto-refresh without interrupting current view
- Window resized to 1000x620 for better readability
v1.5.0
🆕 心智模型标签页
看板新增心智模型分页,支持浏览心智模型列表和查看详情。心智模型与记忆并列显示,有独立的列表视图和详情视图。
🔍 语义搜索
搜索改为后端 /recall 语义检索,取代之前的客户端关键词过滤。搜索词发送到 Hindsight 记忆服务进行向量检索,返回更相关的结果。
🎨 看板 UI 重构
- 顶栏由 Swift 原生注入(更快更稳定)
- 统一暗色背景
- 详情页样式优化(内容、标签、时间戳)
- 加载失败自动重试(指数退避)
- 自动刷新不打断当前浏览页面
- 窗口 resize 到 1000x620 显示更舒适
v1.4.10
v1.4.10
- 🐛 Fix status bar contamination — Remove leftover debug code that periodically appended DeepSeek balance to the menu bar title
- 🌡️ Fix GPU temperature on app autolaunch — Use absolute path for
smctempinstead of relying on PATH, fixing GPU temp display when launched via Finder/dock (vs terminal) - 🔧 Code cleanup — Consolidate
getCPUTemperature()/getGPUTemperature()into sharedrunSmctemp(arg:)
v1.4.10
- 🐛 修复状态栏内容被污染 — 移除 refreshAll() 中残留调试代码,该代码每次刷新时把 DeepSeek 余额拼接到菜单栏标题上
- 🌡️ 修复自启后 GPU 温度消失 — 使用绝对路径调用 smctemp 而非依赖 PATH 环境变量,修复 Finder/Dock 自启时 GPU 温度不显示的问题
- 🔧 代码精简 — 将
getCPUTemperature()/getGPUTemperature()合并为共用runSmctemp(arg:)方法