Skip to content

v0.13.0

Latest

Choose a tag to compare

@github-actions github-actions released this 26 Jun 16:10

Added

  • The Data Quality page shows quarantined async-inbox rows (count and cost) when ingestion: :async is configured, so cost stuck outside the ledger is visible instead of silently missing from totals.

Changed

  • BREAKING: LlmCostTracker.track(tokens:) and stream.usage (inside track_stream) now raise ArgumentError on unrecognized token keys instead of dropping them, so a typo like outpt_tokens: surfaces immediately rather than undercounting the ledger.
  • OpenAI's image-generation, computer-use, and MCP tool calls no longer add $0 line items that marked a call's pricing partial. Their cost is already captured in the model's tokens, so these tool calls are no longer recorded as separate rows and the call reflects complete pricing.

Fixed

  • The mounted dashboard no longer returns 404 — the engine now registers its routes during Rails boot.
  • Async ingestion (config.ingestion = :async) no longer permanently loses cost data when a transient database error (deadlock, lock timeout, dropped connection) interrupts the worker mid-drain — affected inbox rows are retried instead of counting toward quarantine.
  • With config.cache_rollups, a failed rollup-cache update no longer fails or retries the async ingestion batch — calls land in the ledger, the failure is logged, and bin/rails llm_cost_tracker:rebuild_rollups recovers the cached totals.
  • The dashboard labels non-USD amounts with their currency code (e.g. 1.23 EUR) instead of always rendering $, on the pricing table and per-line call costs.