All notable changes to Costly are documented in this file.
The format is loosely based on Keep a Changelog, and the project follows Semantic Versioning once a first tagged release is cut. Until then, dates are the canonical ordering.
- Claude Code connector — attributes local Claude Code Max/Pro session cost by reading
~/.claude/projects/**/*.jsonltranscripts. Imputes list-price dollars from token counts (including cache tiers) so subscription users get per-project, per-model, per-day cost attribution that the Anthropic Admin API cannot surface. (claude_code_connector.py, docs/connectors/claude-code.md) - Overview page Cache Hit Rate KPI — 6-tile KPI grid now includes cache hit rate alongside spend, requests, tokens, and model mix. (
frontend-next/src/app/(dashboard)/overview/page.tsx) - AI Costs view — surfaces Claude Code traffic and cache-tier splits (cached-read vs cache-write-5m vs cache-write-1h vs input vs output) with dedicated KPIs. (
backend/app/routers/ai_costs.py,frontend-next/src/app/(dashboard)/ai-costs/page.tsx) - Demo AI costs endpoint —
/api/demo/ai-costsreturns realistic multi-provider AI spend so logged-out visitors on/demoland on a representative unified view. (backend/app/routers/public_demo.py,backend/app/services/demo.py) - Multi-platform
/setupguide — public setup page rewritten from Snowflake-only key-pair docs into an AI-first multi-platform guide with deep-links into the in-app "Add Platform" flow; Snowflake key-pair walkthrough kept as a collapsible section. (frontend-next/src/app/setup/page.tsx) - Claude Code in platforms UI — the in-app Platforms → Add flow now offers Claude Code as a selectable connector. (
frontend-next/src/app/(dashboard)/platforms/page.tsx) - Databricks SQL connector dependency — adds
databricks-sql-connectorto enable queryingsystem.billing.usageandsystem.billing.list_prices. (backend/requirements.txt) - 17-connector knowledge base — per-platform KBs under
docs/connectors/covering pricing model, data sources, SKU taxonomy, auth model, gotchas, and recommendations. Companion specs:connector-ground-truth.md,connector-roadmap-2026.md,dashboard-visualization-spec.md,chart-patterns.md,agent-chat-ux.md.
- Landing + navigation reposition — nav label "Docs" renamed to "Setup"; marketing copy moves away from Snowflake-only language toward "one agent for your AI, data, BI, CI, and cloud bills." (
frontend-next/src/app/page.tsx,frontend-next/src/app/setup/page.tsx) - Demo landing route —
/demonow lands on/overview(unified AI + data view) instead of the Snowflake-centric/dashboard. (frontend-next/src/app/demo/page.tsx) - Anthropic connector overhaul — migrated to the Admin API
usage_report/messages+cost_reportendpoints; adds cache tiers (ephemeral 5m / 1h / read),service_tier(standard / priority / batch), andcontext_window(0-200k/200k-1M). 56 tests. (backend/app/services/connectors/anthropic_connector.py) - OpenAI connector overhaul — now queries all eight Usage API buckets (completions, embeddings, moderations, images, audio_speeches, audio_transcriptions, vector_stores, code_interpreter_sessions) plus the Costs API. Fixes the legacy
/100cents-vs-dollars bug on the 2025-11 Costs API rollout. Adds cache, batch, and reasoning tier attribution. 104 tests. (backend/app/services/connectors/openai_connector.py) - Gemini / Vertex AI connector overhaul — rebuilt on the BigQuery billing export (
gcp_billing_export_resource_v1_*) as the invoice-authoritative source; preserves Cloud Monitoring + AI Studio as fallbacks. Adds SKU catalog, context-cache tier, thinking-mode tier, and per-region attribution. 117 tests. (backend/app/services/connectors/gemini_connector.py) - Snowflake connector overhaul — migrated to
ORGANIZATION_USAGE.USAGE_IN_CURRENCY_DAILY(already-billed USD) with fallback toACCOUNT_USAGE.METERING_DAILY_HISTORY; adds serverless credit lines (nine SKUs),QUERY_ATTRIBUTION_HISTORYfor per-query / per-user / per-role / per-query-tag attribution, customer pricing overrides for capacity / EDP contracts, and structured error types. 55 tests. (backend/app/services/connectors/snowflake_connector.py) - Databricks connector overhaul — migrated from the legacy Billable Usage API to
system.billing.usage+system.billing.list_pricessystem tables; adds per-job and per-workflow attribution. 92 tests. (backend/app/services/connectors/databricks_connector.py) - BigQuery connector overhaul — fixes multi-region handling, adds BigQuery Editions support (Standard / Enterprise / Enterprise Plus / On-Demand), corrects storage calculation, and parameterises SQL to prevent injection. 56 tests. (
backend/app/services/connectors/bigquery_connector.py) - Frontend Docker build —
NEXT_PUBLIC_API_URLis now baked at build time via a build-arg passed throughdocker-compose.yml, so relative/absolute API base URLs are deterministic across environments. (frontend-next/Dockerfile,docker-compose.yml) - Canonical frontend port — reverted to
3000:3000after a brief detour; production docs and compose file now agree. (docker-compose.yml)
- Demo no longer opens on Snowflake-only dashboard —
/demolanding URL aligned with the AI-first repositioning; legacy/dashboardretained for direct links. (frontend-next/src/app/demo/page.tsx) - Anthropic connector 403s on admin-scoped keys — old
/v1/organizations/usagepath upgraded to the documented Admin API report endpoints. (backend/app/services/connectors/anthropic_connector.py)
docker-compose.override.ymlis now gitignored — intended to be used per-host for volume mounts (e.g. mounting a developer's~/.claudeinto the backend container so the Claude Code connector can read local transcripts). (.gitignore)- Coverage artifacts (
backend/.coverage,htmlcov/) are now gitignored.