繁體中文

新功能

Windows 面板縮放完整呈現,消弭底部空白且防範死結

Windows 上的經過縮放的面板能完整顯示所有內容,頁尾下方不再殘留空白條帶。控制器 _WindowsTrayController._apply_panel_zoom() 改由背景執行緒呼叫 window.usageApplyPanelZoom(),隨後僅將調整大小與位移交給 UI 執行緒,避開了 WebView2 的死結(deadlock,處理序互相等待而卡住)。函式 usageApplyPanelZoom() 接收自然高度並在套用 CSS zoom 前擴展 body,而 naturalContentHeight() 量測時會暫時移除該補償,確保縮放版面有足夠空間而不裁切卡片。

新功能

Windows 納入 Grok CLI 用量統計,日誌讀取失敗不影響既有紀錄

在 Windows 開啟今日用量面板查看費用、token(AI 計費與文字計量單位)總數與專案清單時,Grok CLI 紀錄會一併出現。控制器 _WindowsTrayController._load_entries() 在載入既有的 Claude 與 Codex 資料時,會一併呼叫 grok_loader.load_entries() 讀取記錄。若 Grok 日誌讀取失敗,對應的錯誤處理機制會保留已收集的 Claude 與 Codex 項目。

新功能

Token Saver 導入三項白話寫作規則,版號升級免除重複重寫

你請 Token Saver 把一段回覆縮短時,這 3 條規則會套用。在 i18n.json 的 terse_mode_instruction,以及其在 _DEFAULT_INSTRUCTION 中的獨立副本裡,5 種語言皆要求將名詞化還原為動詞、刪除只報幕不提供資訊的句子,並先放已知資訊,再放新資訊。同時 installer/session_hooks.py 的 TERSE_HOOK_VERSION 與 usage_terse_mode.py 的 __version__ 皆升至 1.3,讓 _installed_terse_version() 維持已安裝 sidecar(隨附輔助檔)最新,免於每個工作階段重寫。

English

FEATURE

Scaled Windows panels show full content without footer gaps or deadlocks

Scaled Windows panels now display all their content completely, eliminating the blank strip below the footer. _WindowsTrayController._apply_panel_zoom() now invokes window.usageApplyPanelZoom() from a background thread before delegating only resize and move work to the UI thread, avoiding a WebView2 deadlock. The usageApplyPanelZoom() function receives natural height and expands body before applying CSS zoom, while naturalContentHeight() temporarily removes that compensation during measurements so the scaled layout preserves ample space instead of clipping cards.

FEATURE

Windows tracks Grok CLI activity with fault-isolated log loaders

When you open today's usage panel on Windows to check costs, token totals, and the project list, Grok CLI records now appear too. Inside _WindowsTrayController._load_entries(), the controller calls grok_loader.load_entries() alongside the existing Claude and Codex loaders. If reading the Grok log fails, dedicated error handling preserves the Claude and Codex entries already collected.

FEATURE

Token Saver enforces three plain-language rules with versioned sidecars

When you ask Token Saver to shorten a reply, these three rules apply. Across all five languages, terse_mode_instruction in i18n.json and its standalone copies in usage_terse_mode.py's _DEFAULT_INSTRUCTION turn nominalizations back into verbs, cut sentences that announce without informing, and put known information before new information. Meanwhile, TERSE_HOOK_VERSION in installer/session_hooks.py and __version__ in usage_terse_mode.py both move to 1.3, so _installed_terse_version() keeps installed sidecars current instead of rewriting them on every session.

原始 CHANGELOG

Original changelogWindows 面板縮放完整呈現,消弭底部空白且防範死結
**Scaled Windows panels now show all their content, with no blank strip below the footer.** `_WindowsTrayController._apply_panel_zoom()` now calls `window.usageApplyPanelZoom()` from a background thread before passing only resize and move work to the UI thread, avoiding a WebView2 deadlock. `usageApplyPanelZoom()` receives the natural height, expands `body` before applying CSS `zoom`, and `naturalContentHeight()` temporarily removes that compensation while measuring, so the scaled layout has enough space instead of clipping cards.
Original changelogWindows 納入 Grok CLI 用量統計,日誌讀取失敗不影響既有紀錄
**Windows now counts Grok CLI activity in today's cost, token total, and project list.** `_WindowsTrayController._load_entries()` now calls `grok_loader.load_entries()` alongside the Claude and Codex loaders. If reading the Grok log fails, its matching error handling leaves the Claude and Codex entries already collected intact.
Original changelogToken Saver 導入三項白話寫作規則,版號升級免除重複重寫
**Token Saver now gives short replies three concrete rules for plainer language.** The `terse_mode_instruction` strings in `i18n.json` and their standalone copies in `usage_terse_mode.py`'s `_DEFAULT_INSTRUCTION` now turn nominalizations back into verbs, cut sentences that announce without informing, and put known information before new information, in all five languages. `TERSE_HOOK_VERSION` in `installer/session_hooks.py` and `__version__` in `usage_terse_mode.py` both move to 1.3, so `_installed_terse_version()` keeps installed sidecars current instead of rewriting them on every session.