繁體中文

新功能

離線估價更準確,測試版更新不再漏接,終端介面不崩潰

現在帶筆電出門沒網路時,系統估算花費會直接拿你上週剛抓過的價目表來算,不會再傻傻退回最古老的出廠價,讓成本估算大失真。如果你是愛用測試版的勇者,系統現在也看得懂「beta」這類後綴版號,有新版會正確跳出更新提示,不再報錯裝死。另外,用終端機查看對話紀錄時,就算有些紀錄沒有標示花費金額,畫面現在只會顯示「--」,不會再導致整個表格直接崩潰壞掉。就像出國沒網路時,你會拿出幾天前存的舊匯率表來換算,而不是硬用十年前的書本價格;而且就算清單裡某幾項商品沒貼標籤,結帳機台也不會整台當機了。

English

FEATURE

Accurate offline estimates, fixed beta updates, and crash-free terminal UI

When you're working offline without internet, the system now smartly estimates your costs using the real price list you fetched last week, instead of wildly falling back to ancient factory-default prices and skewing your budget. If you're an early adopter running beta versions, the update checker now understands version numbers ending in "beta", delivering update prompts correctly instead of throwing an error and playing dead. Also, when viewing your session history in the terminal, if a specific entry happens to lack cost data, it now gracefully displays "--" rather than crashing the entire table. It's like traveling abroad without data: you use the exchange rate you saved a few days ago instead of blindly relying on a ten-year-old guidebook; and if a couple of items on your grocery receipt are missing price tags, the whole cash register doesn't explode.

原始 CHANGELOG

Original changelog離線估價更準確,測試版更新不再漏接,終端介面不崩潰
**Pricing falls back to a stale cache when offline**: the fallback order in `pricing.py` is now fresh cache → network fetch → stale cache → hardcoded fallback. Previously a >7-day-old cache combined with no network dropped straight to the hardcoded prices, skewing cost estimates; the real (if stale) historical cache is now preferred.
**Update check now handles pre-release versions**: `update_checker._parse_version` now strips pre-release / build suffixes via regex, so `0.11.0-beta.1` / `0.11.0+build.5` no longer return `None` and no longer make `compare_versions` raise. Beta testers receive update prompts correctly. No new package dependencies were added.
**TUI session table no longer crashes on `cost_usd=None`**: widened `ui/tables.py:_fmt_cost` to `float | None` so entries written without a cost (a known path on the Codex side) now render as `--`, matching the popover-side behavior in `panels/web_panel.py`. Previously the `>=` comparison raised `TypeError` and broke the whole table.