All releases

v1.2.2 - Constellation

v1.2.2LatestView on GitHub ->

tokenuse 1.2.2, named Constellation, adds a dedicated relationship explorer to the desktop app. The new Graph page turns the local usage archive into an explorable map of projects, AI tools, and canonical models, with optional Core tool and MCP server layers when more detail is useful. It is built for answering practical questions — which projects drive a tool, where a model is used, and what capabilities sit behind that work — without exposing prompts, files, commands, or individual sessions.

Highlights

  • Two useful lenses: Projects connects projects to the desktop tools and models they use; AI stack starts from tools and models and shows the projects driving their usage.
  • Three relationship weights: Calls is the default, with Spend and Tokens available as one-click alternatives. Node size, edge strength, ranking, and the inspector all follow the selected measure.
  • Optional capability layers: Core tools and MCP servers can be added independently, keeping the default graph readable while making deeper tool-use patterns available on demand.
  • Interactive 3D workspace: orbit, zoom, pan, node drag, search, fit-to-view, reset, selection highlighting, and a persistent relationship inspector are all part of the main canvas.
  • Direct drill-ins: selected project, model, and desktop-tool nodes open their existing detail pages. Returning restores the graph lens, metric, layers, selection, and camera for the current app session.
  • Honest bounds: large graphs are capped deterministically and disclose the number of omitted entities and relationships instead of implying that a pruned view is complete.

Relationship graph

Graph sits directly after Analytics in the desktop sidebar and uses the existing period, tool, and project filters. It fetches only when that filter key or the graph metric changes, so the graph payload stays out of the three-second desktop snapshot poll.

The two lenses show different exact relationships from the same filtered data:

  • Projects shows project → desktop tool and project → model relationships. Optional Core tool and MCP server nodes attach to projects.
  • AI stack shows desktop tool → model and desktop tool → project relationships. Optional capability nodes attach to tools.

Every node and edge carries calls, distinct sessions, activity tokens, formatted cost, numeric USD cost for scaling, and last activity. Project identities and labels use the same normalization as the rest of the app, and model ids pass through the canonical model registry, so the map reconciles with existing dashboards and drill-ins. Calls contribute once to project, tool, and model totals; calls with several capability occurrences split attributed cost and tokens across those occurrences while retaining the occurrence counts used elsewhere in the dashboard.

To keep dense datasets usable, the payload is bounded to 30 projects, 24 models, every active desktop tool, 12 Core tools, and 12 MCP servers. Per project, the six strongest model relationships and five strongest capability relationships survive, ranked by the selected metric. Node totals still represent the complete filtered dataset even when visible neighbours are pruned, and no relationship is returned without both endpoints.

Interaction and presentation

The graph is a local WebGL scene built with 3d-force-graph and Three.js around a deterministic seeded D3 force layout. Type-specific depth planes, collision avoidance, and square-root/log-like scaling keep small relationships visible beside outliers. Initial framing happens on the first settled frame, avoiding a delayed zoom after the page appears.

Projects, desktop tools, models, Core tools, and MCP servers have distinct token-coloured forms. Project and tool nodes reuse the desktop's own icon language with contrast-aware dark marks; known model providers carry their provider SVG, while unknown models use a question mark. All marks are rasterised synchronously at high resolution so custom icons do not flash or become blocky as textures load.

Labels stay deliberately sparse until a node is hovered, searched, or selected. Focusing a node dims unrelated entities, strengthens its immediate connections, and leaves only the selected neighbourhood labelled; full names remain available in tooltips and the inspector. Relationship lines blend toward the existing border tokens when subdued, so they remain legible on the dark canvas.

Keyboard users can focus the canvas, move through nodes with the arrow keys, jump with Home/End, and use Enter or Space to focus the selected node. The live region and inspector expose the same selection details without relying on the 3D scene. Reduced-motion mode settles the graph before display and removes camera animation. At compact widths, the inspector moves below the canvas without introducing page-level horizontal scrolling.

Sample data and privacy

Sample Data mode includes a privacy-safe graph fixture covering both lenses, model and capability relationships, pruning metadata, and drill-in affordances. The graph is always derived locally from the resident normalized calls: it adds no graph database, telemetry, remote service, or network request. Individual sessions, prompts, files, languages, activity categories, and shell commands are intentionally not graph nodes.

Documentation

The README now reflects the complete current surface: the full TUI shortcut set; the status, overview, doctor, report, and mcp CLI commands; the desktop Coach, Scrollback, and Graph screens; the By Activity panel; and the current configuration-directory files. The design system, desktop usage guide, architecture/query-cache notes, and screen inventory now document the graph vocabulary and behaviour as well.

Upgrade notes

  • No archive or configuration migration is required. Graph data is derived on demand from the existing normalized call collection.
  • Local usage analysis remains local. Network use stays 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.2.2 and must match the root Cargo package, desktop Cargo package, desktop package.json, and Tauri config versions.

Full Changelog: https://github.com/russmckendrick/tokenuse/compare/v1.2.1...v1.2.2

Full Changelog: https://github.com/russmckendrick/tokenuse/compare/v1.2.1...v1.2.2