v1.0.0 - Clear Focus
tokenuse 1.0.0, named Clear Focus, is the largest interface and product change since the project began. The desktop app has been rebuilt as a six-screen analytics application, the TUI has been tightened around three operator-focused views, and both now share one model registry and one cached query layer.
This release also draws a firmer line around what tokenuse is for. Insights, Agent Setup, and the advice engine have been removed. tokenuse now concentrates on the facts in local usage data: cost, tokens, calls, sessions, models, projects, tool activity, cache behaviour, and quota headroom.
Highlights
- The desktop app is now a sidebar application with Overview, Analytics, Tools, Models, Projects, and Config screens, plus direct links to every supported tool.
- Overview has compact KPI tiles, grouped utilisation modules with tool icons and threshold gauges, an activity chart, and bounded top-project and top-model tables.
- Analytics adds daily tool composition, hour-by-weekday activity, provider and tool shares, cache efficiency, and the full set of ranked usage tables.
- Dedicated tool pages work across every time range. Models shows all five ranges side by side, and Projects supports project to session to call drill-down.
- The TUI is now Overview, Deep Dive, and Usage. Its help, empty states, footer copy, sample-data startup, and model display have all had a release pass.
- A shared model registry replaces adapter-specific naming tables and folds dated ids, vendor paths, and router aliases into canonical models with provider and family metadata.
- Dashboard and page queries are cached by their full filter set, so the desktop's three-second poll no longer rebuilds unchanged aggregates.
tokenuse --samplestarts the TUI with bundled sample data. The desktop Config page has the same live/sample switch.
A tighter product
Earlier releases added an Insights area that generated recommendations by running local codex, claude, or gemini commands against usage summaries. There was also an Agent Setup page for auditing local agent configuration. Both features sat outside the job tokenuse does best, added a second layer of generated interpretation, and could produce confusing failures when one of those CLIs was unavailable or misconfigured.
Version 1.0.0 removes those features end to end:
- Insights and Agent Setup are gone from the desktop app and TUI.
- The advice engine no longer shells out to local AI CLIs.
- Advice commands, snapshots, frontend stores, Tauri fields, copy, tests, and configuration paths have been removed.
- Bundled advice prompts are no longer shipped or written to the config directory.
- The
agent-audit.jsonsnapshot is no longer created. - The former TUI
iandashortcuts are intentionally unbound.
The result is easier to reason about: tokenuse reads local usage records, normalizes them, prices them, and presents the result. It does not start another model to tell you what the numbers mean. Existing advice prompt files or agent-audit.json files on disk are harmless leftovers and can be deleted.
Desktop rebuilt
The desktop app is no longer a copy of the terminal layout. It now has its own information architecture, typography, responsive rules, charts, and interaction model while sharing the same Rust data layer as the TUI.
Navigation and shell
- The old tab strip has been replaced by a persistent sidebar rail.
- Overview, Analytics, Tools, Models, Projects, Config, Claude Code, Codex, Copilot, Cursor, and Gemini all have direct entries. There are no nested tool submenus.
- Direct tool rows reorder themselves from most to least active using rolling 24-hour call counts. Main screens and Config stay fixed.
- The sidebar collapses to an icon rail and remembers that choice for the desktop webview.
- Routing, keyboard navigation, page state, and period shortcuts are handled client-side, which makes page changes immediate and keeps the backend focused on data queries.
- Page headers now expose only the controls relevant to the current route. Routine feedback appears in a bottom-right toast instead of occupying permanent header space.
- The bottom status bar is reduced to live/sample source, currency, and route-specific shortcuts. The old always-visible archive status row is gone.
- Route transitions, gauge motion, and number animation respect reduced-motion settings.
- Inter and JetBrains Mono are bundled with the desktop package, so typography no longer depends on a system font or network request.
Overview and analytics
Overview is the daily read. Its KPI band covers cost, calls, sessions, cache hit rate, and input/output totals. Current limits are grouped by tool: each tool mark sits inside a threshold ring for its most constrained primary window, with exact remaining allowance and reset times beside it. Claude Extra Usage and Codex Spark model windows remain available on their tool pages rather than crowding the summary.
The activity panel combines spend bars with call cadence. Top Projects and Top Models sit underneath in bounded panels with sticky headings and their own scrollbars, so All Time data does not stretch the entire page.
Analytics is the deeper workspace. It includes:
- spend over time with call cadence;
- daily spend stacked by tool;
- an hour-by-weekday activity heatmap;
- provider and tool share charts;
- cache efficiency;
- ranked projects, project/tool pairs, sessions, models, tools, shell commands, and MCP servers.
Charts have explicit empty states and use the shared desktop color tokens. A failed initial snapshot now produces a visible error instead of a blank window.
Tools, models, and projects
The parent Tools screen keeps a rolling 24-hour console for every supported tool, including idle tools. Direct tool routes add period-aware KPI summaries, current limits, top projects, top models, and sessions. Tool marks are larger and unboxed so the data receives more of each row.
Models is a provider-grouped catalog built from canonical model identities. Every row keeps 24 Hours, 7 Days, 30 Days, This Month, and All Time visible together. The active period controls rank, cache rate, and the expandable per-tool breakdown. Rows support mouse, Enter, and Space interaction, and the narrow expander column no longer steals room from model names.
Projects now supports a full local drill-down. Select a project to see its sessions, select a session to see its calls, and open a call for its timestamp, prompt, model, token buckets, cache rates, tools, reasoning and web-search counts, and shell commands when the source recorded them.
Config, sample data, and Quick View
Config includes currency, local pricing and exchange-rate downloads, archive refresh and rebuild actions, report destination, open-at-login and Dock/taskbar behavior, limit sync, optional subscription quota sync, update checks where supported, and a clearly labeled Sample Data switch.
Switching to sample data changes the visible dataset without discarding the cached live snapshot. Background refresh can continue updating live data, and switching back returns to it.
The tray Quick View has been simplified. The always-visible activity graph is gone; the space now goes to compact 24-hour totals and the four most urgent current limits, including remaining percentage or credits and reset time. Closing the main window still leaves the app running in the tray.
TUI sharpened
The terminal app now has three main tabs:
- Overview for the summary and current activity;
- Deep Dive for ranked projects, sessions, tools, models, commands, and MCP servers;
- Usage for rolling 24-hour tool consoles and plan limits.
The help modal has been rebuilt as a two-column reference that fits the supported 120x40 minimum. Config and Session return hints now name Deep Dive correctly, and the Usage footer points to Overview and Deep Dive rather than removed pages. Empty tables and idle tool consoles render an explanatory row instead of a blank panel.
Passing --sample starts directly with the bundled sample dataset. If live data was available at startup it remains cached, so Shift-D can switch back without another ingest. The existing Shift-D behavior continues to work during a normal live start.
One model registry
Model identity now comes from src/models/registry.json. Every resolved model has a canonical id, display name, provider, and family. Resolution is shared by the TUI, desktop app, and visual reports.
The registry handles the awkward ids found in real tool logs:
- dated and pinned Claude ids fold into stable rows such as Fable 5 and Opus 4.8;
- GPT variant names retain their complete identity;
- vendor-prefixed Gemini ids normalize to the same model;
- Cursor
autoanddefaultbecome readable Cursor labels; - Copilot routers are attributed to the provider that serves them, including OpenAI (auto) and Anthropic (auto);
- unknown ids are prettified instead of being printed raw.
Provider and tool marks use vendored LobeHub SVG assets with attribution included in the desktop package. The app does not fetch icons or fonts at runtime.
Faster steady-state queries
The shared dashboard, Usage, Analytics, tool-page, and model-catalog queries are memoized by their complete filter set. A data-generation counter invalidates the cache whenever imported data changes.
This matters most in the desktop app. Its lightweight snapshot poll still runs every three seconds, but unchanged polls reuse existing aggregates instead of rebuilding the dashboard and leaking another set of display rows. Page-specific data is requested only by the page that needs it. Startup ingest caching and the existing 15-minute archive refresh remain unchanged.
Reports and documentation
Visual reports now resolve models through the same registry as the applications, so generated HTML, PDF, SVG, and PNG output no longer falls back to raw adapter ids. The documentation set has been updated for the six desktop screens, three TUI tabs, client-side desktop routing, query-cache contract, archive v3, model registry, sample-data controls, bounded lists, tray behavior, and tool-specific quota flows.
Upgrade notes
The local archive schema moves to version 3 on first open. The migration removes the advice tables but preserves calls, limits, source fingerprints, and the rest of the usage archive.
Older tokenuse binaries refuse to open a version 3 archive because they cannot safely interpret a newer schema. To downgrade after opening 1.0.0, delete archive.db and let the older version rebuild it from the source files still present on disk. Archive-only history whose original source has disappeared cannot be rebuilt, so back up the database first if that history matters.
No usage source paths or tool adapters are removed in this release. Claude Code, Cursor, Codex, Copilot, and Gemini remain supported, along with the existing opt-in Claude.ai, ChatGPT, and Copilot quota sync flows.
Notes
- Local usage analysis remains local. Network calls are limited to confirmed Config-page downloads, opt-in quota sync, Windows/Linux update checks, and maintainer refresh or release paths.
- The release tag should be
v1.0.0and must match the root Cargo package, desktop Cargo package, desktoppackage.json, and Tauri config versions. - Release assets include standalone TUI binaries, the notarized Apple Silicon macOS desktop DMG, Windows NSIS/MSI packages, and Linux AppImage/deb/rpm packages for supported architectures.
Full Changelog: https://github.com/russmckendrick/tokenuse/compare/v0.0.14...v1.0.0
Full Changelog: https://github.com/russmckendrick/tokenuse/compare/v0.0.14...v1.0.0