繁體中文

問題修復

修復 macOS Sequoia 上的閃退死穴,選單語言不再混搭

這次解決了一個致命錯誤。前幾個版本的 .app 檔在最新的 macOS Sequoia 系統上,只要一打開就會立刻閃退,因為它被包裝後的檔案結構給搞糊塗了,找不到用來顯示多國語言的字典檔;現在它已經學會正確摸黑找到對的資料夾,順利開機。同時,我們把翻譯補得更完整了——以前你在英文、日文或韓文的系統裡點開「更換面板」選單時,裡面還是會硬生生夾雜中文的面板名稱,或者在找不到檔案時拋出中文的錯誤提示;現在這些文字都會乖乖跟著你的系統語言切換。另外,我們也把散落在各處的快取檔案統整到 ~/.claude/ 底下,順手清掉了你硬碟裡 1.1 MB 的孤兒檔案。就像是買回來的進口家電原本會因為電壓不對直接燒斷保險絲,而且說明書還是各國語言亂湊的;現在插上插座就能正常運作,而且說明書保證整本都是你熟悉的語言。

English

BUGFIX

Instant crashes on macOS Sequoia fixed, and menu languages are fully localized

We've squashed a fatal bug where the released .app would instantly crash on launch if you were running the latest macOS Sequoia. The app was getting completely confused by its own packaged file structure and couldn't find its translation dictionary; it has now learned the correct path through the dark to boot up smoothly. Meanwhile, we've filled in the missing translation gaps. Previously, if you used an English, Japanese, or Korean system, your "Switch Panel" menu would awkwardly feature Chinese panel names, and system errors would spit out Chinese text. Now, all these strings strictly respect your chosen system language. We also tidied up the pricing cache files, unifying them under the ~/.claude/ folder and sweeping away a 1.1 MB orphaned file from your hard drive. It's like buying an imported appliance that used to blow a fuse immediately due to the wrong voltage while packing a poorly translated, mixed-language manual; now you can plug it in safely, and the instruction book reads perfectly in your native tongue.

原始 CHANGELOG

Original changelog修復 macOS Sequoia 上的閃退死穴,選單語言不再混搭
**[P0] Released `.app` crashes on launch on macOS Sequoia / arm64** (thanks @cmhcm — [#6](https://github.com/aqua5230/usage/pull/6)): all three prior releases (v0.10.0 / v0.10.1 / v0.11.0) are affected. Root cause: in py2app builds `i18n.py` is compiled into `lib/python313.zip` but `i18n.json` lives in `Contents/Resources/`. The old `Path(__file__).with_name("i18n.json")` resolved to a path *through* the zipfile and raised `NotADirectoryError` on first read. Fix: new `i18n.packaged_resource_path()` helper prefers the `RESOURCEPATH` env var that py2app injects at launch (pointing at `Contents/Resources/`) and falls back to the source-adjacent path. All four packaged-resource callsites updated (`i18n.py` / `tui.py` / `main.py` / `menubar.py`). Source-mode runs are unaffected.
**Packaging metadata completed**: `pyproject.toml` `py-modules` adds the previously-missing `burn_rate` / `update_checker` / `tips_loader` / `usage_lang` / `usage_statusline_forwarder`, and `packages.find` `include` adds `panels*`. Non-editable installs now ship the full code.
**`.app` license metadata aligned**: `setup_app.py` `NSHumanReadableCopyright` updated from the stale `MIT License` to `Copyright © 2025-2026 lollapalooza. Licensed under AGPL-3.0-only.`, matching what `pyproject.toml` declares.
**`pricing_cache.json` path unified**: `analyzer/cost.py` now caches to `~/.claude/pricing_cache.json` (was repo root), matching `pricing.py`. A stray 1.1 MB orphan cache at repo root was removed.
**Panel names go through i18n**: `panels/__init__.py` exposes an `i18n_key` per panel and i18n.json gains the missing keys across all 5 languages. The "Switch Panel" menu no longer mixes Chinese names into en / ja / ko UIs.
**Status-file error messages go through i18n**: `usage_client.py`'s "status file not found" and "no quota data yet" hints now route through `_t()`, all 5 languages covered.
**Analytics CLI read order matches the main app**: `adapters/rate_limits.py` previously only read `~/.claude/tt-status.json`; it now follows the same `usage-status.json` → `usag-status.json` → `tt-status.json` fallback chain as `usage_client.py`.
**README documents the v0.11.0 update check + GitHub Releases as a network exception**: README.md / README.en.md both gain a new "update check" bullet and list the GitHub Releases API as the second of two network exceptions (the first remains the LiteLLM pricing table).