Tunnel Agent 0.9.0
Installation
| Platform | Installer | Portable |
|---|---|---|
| Windows x64 | Setup.exe | .zip |
| Windows arm64 | Setup.exe | .zip |
| Linux x64 | .AppImage | — |
| Linux arm64 | .AppImage | — |
| macOS x64 (Intel) | .pkg | .zip |
| macOS arm64 (Apple Silicon) | .pkg | .zip |
Existing installations update automatically via Velopack.
Fixed
- Engine update toast localization (
MainWindowViewModel,Resources/Strings*.resx): the "<engine> <version> is ready to install." body of the CLIProxyAPI/Perplexity update toast was hardcoded in English while its title was translated. It now resolves through the newToast_EngineUpdateAvailable_Bodyformat string, translated for all fourteen supported languages.
Added
- Dashboard summary by provider or model (
DashboardViewModel,DashboardView.axaml,Resources/Strings*.resx): the usage summary table now has a sliding tab to group rows by provider or by model, reusing the same per-row metrics (calls, success/fail, rate, tokens, estimated cost, last request). The headline cards and chart remain provider-agnostic aggregates. AddedDashboardView_Summary_ByProvider,DashboardView_Summary_ByModelandDashboardView_Summary_Modeltranslations for all fourteen languages. - Dashboard/Home usage view and usage-backed requests (
DashboardView,DashboardViewModel,LogsViewModel,UsageChart,UsageService,UsageStore,UsageEvent,ModelPricing,MainWindow): added Home as the default sidebar section with usage range tabs, headline metrics, provider summary, an interactive hoverable usage chart, and CLIProxyAPI usage telemetry backed by SQLite persistence. Tunnel Agent enables CLIProxyAPI usage statistics, continuously drains the destructive/v0/management/usage-queue, deduplicates events by hash, estimates model token costs, parses cache/reasoning token details, and keeps persisted history across restarts. Dashboard and the Logs → Requests tab now use this telemetry store as their source of truth, while Logs → Proxy logs remains a raw log-file view with separate clear/delete actions and its own renamed auto-refresh setting; clearing usage history is available from Dashboard and Requests and deletes only stored usage events. - Dynamic model pricing with on-disk cache (
OpenRouterContextService,ModelPricing,DashboardViewModel,MainWindowViewModel): dashboard cost estimates resolve per-model prices from OpenRouter's live/v1/modelslist (input, output, cache-read and cache-write rates), falling back to a built-in table for models OpenRouter does not list. This avoids mispricing models newer than the table, which previously fell back to an older prefix match. The fetched model map is persisted toopenrouter-models.jsonunder the local data directory and seeded into memory on startup (instant, offline-capable), refreshing from the network only when the cache is missing or older than 24h. Agents configuration reuses the same cached map for context window, reasoning and image-modality metadata. - Per-provider cost accounting (
ModelPricing): cost estimation distinguishes cache-creation (write) from cache-read tokens and applies the correct token model per provider — Anthropic-style events billinputas cache-free with separate write/read rates, while OpenAI-style events use the aggregate-cached subtraction. - Dashboard/Home localization across all languages (
Resources/Strings*.resx,MainWindow.axaml,DashboardView.axaml,LogsView.axaml): the Home/Dashboard view and the clear-usage-history dialog now ship full translations (DashboardView_*,Sidebar_Home,Dialog_ClearUsageHistory_*) for all fourteen supported languages instead of only English and Spanish, and the clear-usage confirmation dialog uses its ownDialog_ClearUsageHistory_Cancelkey. The shared clear-usage-history tooltip (used on Home and the Logs → Requests tab) was renamed fromLogsView_ClearUsageHistoryTooltipto the view-neutralCommon_ClearUsageHistoryTooltipand translated for every language.