Releases: douglasmonsky/codex-usage-tracker
codex-usage-tracker 0.10.1
Changes
- Adds lightweight action timing metadata to context evidence for parsed tool and command actions.
- Adds a synthetic README screenshot of the expanded Diagnostics Git Interactions panel.
- Packages the new diagnostics screenshot with installed plugin docs and keeps the MCP runtime launcher pinned to codex-usage-tracking==0.10.1.
Verification
codex-usage-tracker 0.10.0
codex-usage-tracker 0.10.0
0.10.0 - 2026-06-21
- Add Git/GitHub CLI diagnostic snapshots with safe operation labels, coarse categories, mutability buckets, and terminal token-count coverage.
- Add file-modification diagnostic snapshots for structured patch events, modified-path aggregates, extension counts, and largest modification events without storing patch text or raw paths.
- Add derived call timing fields for call start, duration, previous-call timestamp, and previous-call gap across dashboard rows, details, CSV/export actions, live API sorting, and thread aggregates.
- Surface
Duration,Prev gap,Longest duration, andLongest gapin the dashboard with localized labels and focused regression coverage. - Reconcile all diagnostics panels into one release so
overview,tool-output,commands,git-interactions,file-reads,file-modifications,read-productivity, andconcentrationcan refresh together from the live dashboard.
Verification
- PR #59 merged after green GitHub CI.
- Published to TestPyPI and PyPI through GitHub Actions Trusted Publishing.
- Public PyPI installed-package smoke passed for
codex-usage-tracking==0.10.0.
codex-usage-tracker 0.9.0
Summary
0.9.0 adds persisted aggregate diagnostic snapshots and polished Diagnostics dashboard panels for investigating tool output, commands, file reads, read productivity, and concentration without persisting raw prompts, assistant text, tool outputs, command text, patch text, or raw source-log paths.
Highlights
- Persist aggregate diagnostic snapshots with explicit on-demand refresh metadata and schema-versioned CLI/API contracts.
- Add Diagnostics panels for Overview, Tool Output, Commands, File Reads, Read Productivity, and Concentration.
- Add terminal token-count buckets, missing-count coverage, command roots, expandable command children, read-output token allocation, and read-to-modify correlation.
- Keep Diagnostics refresh isolated from normal live dashboard refresh so regular usage updates do not recompute or blink diagnostic panels.
- Add Playwright diagnostics smoke coverage and release documentation for the snapshot privacy boundary.
Validation
- Local release gate passed: ruff, mypy, pytest, coverage, compileall, dashboard JS syntax, check_release, git diff --check, build, twine, check_release --dist.
- Installed-package smoke passed locally and in Docker on Python 3.14.
- Diagnostics dashboard Playwright smoke passed on desktop and mobile.
- TestPyPI Trusted Publishing completed successfully and clean TestPyPI install verified codex-usage-tracker 0.9.0.
codex-usage-tracker 0.8.1
Patch release focused on Diagnostics table usability.
- Widens and pins the Diagnostics fact column so fact names remain readable during horizontal scrolling.
- Adds API-backed sortable headers for top-level Diagnostics fact tables, including cached input, output, cache ratio, largest call, latest call time, occurrence, call count, and fact name.
- Keeps the 0.8.x diagnostics model intact while improving scanability and table controls.
Validation before release:
- Ruff, mypy, pytest, coverage, compileall, dashboard JavaScript syntax checks, release readiness checks, build, twine check, and installed wheel smoke all passed.
- TestPyPI publish and TestPyPI install smoke passed before this GitHub release.
codex-usage-tracker 0.8.0
Summary
0.8.0 adds aggregate diagnostics for investigating usage facts and hardens dashboard loading/live refresh behavior.
Changes
- Add an aggregate Diagnostics dashboard for inspecting diagnostic facts, associated calls, token totals, and on-demand evidence without persisting raw transcript text.
- Add diagnostic fact extraction, reporting APIs, dashboard drilldowns, sortable associated-call tables, and load-more controls for larger diagnostic result sets.
- Add source byte offsets and context seek diagnostics so on-demand evidence loading can seek when offsets are valid and fall back safely when they are missing or stale.
- Harden dashboard startup so visiting Diagnostics before other views load no longer prevents Calls, Threads, or Insights from hydrating.
- Make Live refresh use the cached/indexed append path and fetch only newly visible leading rows instead of running the full manual refresh reset cycle.
Verification
- Local release gate passed: ruff, mypy, pytest, coverage, compileall, dashboard JS syntax, release checks, build, twine, dist checks, installed-package smoke, Docker smoke, and additional safe CLI smoke commands.
- PR CI passed on Python 3.10 through 3.14 plus package build.
- TestPyPI publish and install smoke passed.
- PyPI publish and public install smoke passed, including Docker.
codex-usage-tracker 0.7.0
Summary
0.7.0 adds observed Codex usage snapshots and dashboard wording/table refinements while keeping raw evidence explicit and on demand only.
Changes
- Parse latest observed Codex usage snapshots from local rate-limit and token-count log events without persisting raw transcript text.
- Store observed 5h and weekly usage snapshot fields in aggregate rows and expose a latest-observed usage summary for dashboard and API consumers.
- Add a dashboard card for latest observed 5h and weekly usage with wording that distinguishes local observations from authoritative account limits.
- Default the dashboard table experience to time-sorted Calls, replace the visible Signals column with Reasoning Output, and keep the Signals field out of the table for now.
- Ignore known non-token parser events so refreshes stay focused on usage-bearing records.
Validation
- Published to TestPyPI and PyPI through GitHub Actions Trusted Publishing from tag v0.7.0.
- Verified PyPI/TestPyPI package metadata for 0.7.0.
- Verified fresh venv, Docker, and temporary pipx installs report codex-usage-tracker 0.7.0.
codex-usage-tracker 0.6.0 TestPyPI candidate
Historical TestPyPI-only candidate for the 0.6 dashboard performance and call-drilldown release line.
This release is intentionally marked as a prerelease and is not the latest production release. It records the candidate that was built and published to TestPyPI from commit 49bd575049eed11c0175cf7de56156181604d26b on June 13, 2026. It was superseded by v0.6.1, which is the production PyPI release for the same 0.6 work.
Release scope
Compared with v0.5.0, this candidate was a large dashboard and diagnostics release:
106files changed.21,208insertions and9,211deletions.- Major dashboard runtime files were split from the previous large
dashboard.js/dashboard.cssbundle into focused modules for actions, analysis, call investigation, cells, data, details, events, filters, i18n, insights, live API handling, payload caching, status, tables, and tooltips. - New synthetic screenshots and packaged docs assets were added for the call investigator and refreshed dashboard previews.
Dashboard runtime and live API
- Added SQL-backed live dashboard API slices for status, calls, one-call drilldown, threads, thread calls, summary, and recommendations.
- Preserved the compatibility
/api/usageendpoint while moving the UI toward smaller endpoint-specific payloads. - Added progressive dashboard row hydration and session payload caching so large histories can render faster and return from drilldown views without a full reload whenever possible.
- Added localhost API timing diagnostics for
/api/usageand/api/context, gated as diagnostic metadata rather than raw transcript exposure. - Added a compact live status/header model so refresh status, pricing metadata, and credit-rate source details do not cause large layout shifts.
Call investigator and context diagnostics
- Added a dedicated call investigator view for
dashboard.html?view=call&record=<record_id>. - Added exact token accounting cards for input, cached input, uncached input, output/reasoning, estimated cost, Codex credits, and initiator metadata.
- Added derived cache/accounting delta cards comparing the selected call with adjacent chronological calls from the same resolved thread.
- Added diagnostic readouts for warm cache reuse, cold resume/stale cache, partial cache miss, uncached spikes, high context use, and post-compaction patterns.
- Reworked raw evidence loading around selected-turn local JSONL evidence, redaction, optional tool output, and explicit serialized evidence analysis.
- Removed low-value call/thread anchor diagnostics from the investigator to avoid an extra source-log scan per context load.
- Added tiktoken-backed visible context estimates when available, with conservative fallback estimates when tokenizer support is unavailable.
- Added source-file and aggregate identifier sections to the investigator so a call can be traced back to session, turn, source line, cwd, parent metadata, and context window without embedding raw transcript content in the static dashboard.
Performance and indexing
- Persisted call-origin metadata as categorical aggregate fields during indexing so user-vs-Codex initiation can be filtered and sorted without reopening source JSONL logs.
- Persisted archived-session scope, conservative thread keys, and per-thread previous/next call links as aggregate helper fields for faster dashboard filtering and investigator navigation.
- Added source-file refresh cursors so live refresh can skip unchanged logs, seek to appended JSONL bytes when safe, and replace aggregate rows for changed or truncated source logs.
- Materialized active and all-history thread summaries in SQLite so live thread APIs can read pre-aggregated totals instead of recalculating large histories on each request.
- Added
store_schema.py,store_sources.py,store_thread_summaries.py, and expanded SQL query helpers to separate schema ownership, source refresh state, thread summary materialization, and query construction. - Added source-log-aware synthetic benchmark coverage to verify normal dashboard payload assembly does not open generated source JSONL files.
Dashboard UX and table behavior
- Added row-click navigation to the call investigator while keeping table links stable and copyable.
- Added sortable initiated/source metadata, compact signal pucks, sticky table headers, frozen leading columns, and responsive horizontal table scrolling for narrow screens.
- Added compact billion-scale number formatting with exact values available through hover titles.
- Added faster tooltips for dense dashboard status and signal elements.
- Reduced call-detail sidebar prominence in favor of the dedicated investigator path.
- Updated Calls and Threads views to expose token categories as columns, including cached, uncached, and output token counts.
Localization
- Replaced placeholder non-English dashboard locale catalogs with translated UI catalogs.
- Expanded translation coverage for the investigator, evidence readout, diagnostics, status labels, table labels, filters, recommendations, and dashboard controls.
- Added regression coverage for core visible labels so missing or broken translation keys are easier to catch before publishing.
Packaging, docs, and release checks
- Bumped the package version to
0.6.0and pinned the packaged Codex plugin manifest tocodex-usage-tracking==0.6.0. - Updated README, dashboard guide, architecture docs, CLI reference, MCP docs, privacy notes, development docs, and 1.0 readiness notes for the 0.6 dashboard architecture.
- Added
docs/call-drilldown-performance-checklist.mdto preserve the performance-hardening milestones and verification expectations for the call investigator work. - Expanded
scripts/check_release.pyandscripts/smoke_installed_package.pyso release readiness catches bundled asset and packaged-resource issues earlier. - Added
twine checkto the normal CI package job path.
Test and validation coverage
New or expanded tests covered:
- Call initiator classification and aggregate persistence.
- Context/evidence redaction, serialized evidence estimates, compaction evidence, and deduped visible progress-message echoes.
- Dashboard payload structure, raw-context absence from generated HTML, route support for call investigator views, and dashboard JavaScript asset packaging.
- Dashboard server API slices for status, usage, calls, one-call drilldown, threads, thread calls, summary, recommendations, and context loading.
- i18n key coverage and translated visible-label checks.
- Parser handling for newer non-token event shapes and persisted call-origin metadata.
- Privacy redaction around evidence, tool output, and serialized local JSONL buckets.
- Schema migrations for new aggregate helper columns and source/thread summary tables.
Published artifacts
- TestPyPI: https://test.pypi.org/project/codex-usage-tracking/0.6.0/
- No production PyPI package was published for
0.6.0; production users should use0.6.1or newer.
Verification
The TestPyPI candidate was built from main at 49bd575049eed11c0175cf7de56156181604d26b by the Publish Python package workflow dispatch on June 13, 2026:
- Workflow run: https://github.com/douglasmonsky/codex-usage-tracker/actions/runs/27477999449
- Build distributions: passed.
- Ruff: passed.
- Type check: passed.
- Pytest: passed.
- Coverage: passed.
compileall: passed.- Dashboard JavaScript syntax checks: passed.
- Release readiness: passed.
- Whitespace check: passed.
- Wheel and sdist build: passed.
- Publish to TestPyPI: passed.
- Publish to PyPI: skipped.
Supersession note
0.6.0 should be treated as the release candidate for the 0.6 line. The production release is 0.6.1, which kept the 0.6 dashboard/call-investigator work and added the final README asset polish, packaged docs asset fixes, and production PyPI publication.
codex-usage-tracker 0.6.1
Production 0.6 release for the call-drilldown performance and dashboard polish work. This supersedes the 0.6.0 TestPyPI-only candidate; 0.6.1 is the production PyPI release.
Highlights:
- Ships the SQL-backed live dashboard/API slicing, materialized thread summaries, call investigator, payload caching, localization fixes, and dashboard runtime module refactor from the 0.6 branch.
- Polishes README landing screenshots with matched dashboard/investigator previews and a lower investigator evidence view.
- Restores companion plugin prompt screenshots and packages README/docs assets in the wheel.
- Keeps investigator toolbar links styled as buttons without underlines.
Published artifacts:
- PyPI: https://pypi.org/project/codex-usage-tracking/0.6.1/
- TestPyPI: https://test.pypi.org/project/codex-usage-tracking/0.6.1/
Verification:
- GitHub CI passed on Python 3.10-3.14.
- Trusted Publishing to TestPyPI and PyPI passed.
- Public PyPI install smoke passed locally and in Docker on python:3.14-slim.
codex-usage-tracker 0.5.0
0.5.0 - 2026-06-10
- Add the dashboard localization foundation, including starter locale catalogs, language metadata, local browser language selection,
--lang, andCODEX_USAGE_TRACKER_LANG. - Add Vietnamese dashboard localization and focused validation coverage for translated dashboard labels.
- Keep the README landing page focused on dashboard screenshots and companion usage workflows before detailed localization guidance.
- Stabilize the CI synthetic benchmark smoke so coverage instrumentation does not create false release failures.
- Pin the marketplace MCP runtime launcher to the exact
codex-usage-tracking==0.5.0package.
Published package: https://pypi.org/project/codex-usage-tracking/0.5.0/
TestPyPI validation: https://test.pypi.org/project/codex-usage-tracking/0.5.0/
codex-usage-tracker 0.4.1
Patch release for release-gate hardening and 1.0 readiness evidence.\n\nHighlights:\n- Hardened manual PyPI publishing so production uploads must run from main or a tag ref.\n- Added duplicate-version checks so TestPyPI/PyPI uploads are skipped when the exact distribution version already exists.\n- Marked the TestPyPI and PyPI readiness gates verified with workflow-run evidence.\n- Pinned the bundled MCP runtime launcher to codex-usage-tracking==0.4.1.\n\nPublished package: codex-usage-tracking==0.4.1 on PyPI and TestPyPI.