diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 740a4bb..0caa219 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "codex-usage-tracker", - "version": "0.7.0", + "version": "0.8.0", "description": "Unofficial local tracker for aggregate Codex token usage from local session logs.", "author": { "name": "Douglas Monsky" diff --git a/CHANGELOG.md b/CHANGELOG.md index ae902c1..ecc82c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ ## Unreleased +## 0.8.0 - 2026-06-20 + +- 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. + ## 0.7.0 - 2026-06-18 - Parse latest observed Codex usage snapshots from local rate-limit and token-count log events without persisting raw transcript text. diff --git a/docs/development.md b/docs/development.md index 0f279f2..f274396 100644 --- a/docs/development.md +++ b/docs/development.md @@ -38,7 +38,7 @@ fix/-short-description docs/-short-description chore/-short-description test/-short-description -release/0.7.0 +release/0.8.0 hotfix/0.3.3 ``` @@ -91,7 +91,7 @@ blocked Recommended milestones: ```text -0.7.0 +0.8.0 1.0-readiness 1.0.0 ``` @@ -146,8 +146,8 @@ python scripts/smoke_installed_package.py --docker To verify the public PyPI package instead of the local checkout: ```bash -python scripts/smoke_installed_package.py --from-pypi --version 0.7.0 -python scripts/smoke_installed_package.py --docker --from-pypi --version 0.7.0 +python scripts/smoke_installed_package.py --from-pypi --version 0.8.0 +python scripts/smoke_installed_package.py --docker --from-pypi --version 0.8.0 ``` `scripts/check_release.py` treats these public-package smoke commands as release-state claims. Keep their `--version` and `codex-usage-tracking==...` values aligned with `pyproject.toml`; the release gate fails when the docs claim a different public version. It also checks that install docs point at the real PyPI distribution, `codex-usage-tracking`, and keep the warning that `codex-usage-tracker` is a different PyPI package. @@ -286,8 +286,8 @@ After the release branch merges, tag from updated `main`, not from an unreviewed ```bash git switch main git pull --ff-only -git tag -a v0.7.0 -m "codex-usage-tracker 0.7.0" -git push origin v0.7.0 +git tag -a v0.8.0 -m "codex-usage-tracker 0.8.0" +git push origin v0.8.0 ``` Do not create or push release tags without maintainer approval. @@ -296,7 +296,7 @@ Do not create or push release tags without maintainer approval. Publishing uses GitHub Actions Trusted Publishing through `.github/workflows/publish.yml`; do not upload from a local machine and do not add PyPI or TestPyPI API tokens. -The first public package release, `0.3.0`, was published on June 8, 2026. Patch release `0.3.1` followed the same day to ship the live-dashboard skill launch fix. Patch release `0.3.2` made dashboard launch refresh the default and added runtime enablement for context loading. Minor release `0.4.0` added Python 3.14 support, release recovery docs, stricter privacy/support-bundle regression coverage, and large-history benchmark thresholds. Patch release `0.4.1` was published by workflow dispatch from `main`; it hardened the PyPI publish workflow and checked off completed 1.0 readiness gates. Minor release `0.5.0` added dashboard localization support and initial language catalogs. Minor release `0.6.0` is the performance and call-drilldown release with SQL-backed live API slices, materialized thread summaries, faster evidence loading, and dashboard runtime module refactors. Patch release `0.6.1` aligns the final README/package screenshots and companion plugin assets. Minor release `0.7.0` adds observed usage snapshots and the latest-observed dashboard card while keeping raw evidence on demand only. +The first public package release, `0.3.0`, was published on June 8, 2026. Patch release `0.3.1` followed the same day to ship the live-dashboard skill launch fix. Patch release `0.3.2` made dashboard launch refresh the default and added runtime enablement for context loading. Minor release `0.4.0` added Python 3.14 support, release recovery docs, stricter privacy/support-bundle regression coverage, and large-history benchmark thresholds. Patch release `0.4.1` was published by workflow dispatch from `main`; it hardened the PyPI publish workflow and checked off completed 1.0 readiness gates. Minor release `0.5.0` added dashboard localization support and initial language catalogs. Minor release `0.6.0` is the performance and call-drilldown release with SQL-backed live API slices, materialized thread summaries, faster evidence loading, and dashboard runtime module refactors. Patch release `0.6.1` aligns the final README/package screenshots and companion plugin assets. Minor release `0.7.0` adds observed usage snapshots and the latest-observed dashboard card while keeping raw evidence on demand only. Minor release `0.8.0` adds aggregate diagnostics, source-offset context seeking, and live dashboard loading hardening. - GitHub Release: `https://github.com/douglasmonsky/codex-usage-tracker/releases/tag/v0.3.0` - GitHub Release: `https://github.com/douglasmonsky/codex-usage-tracker/releases/tag/v0.3.1` diff --git a/docs/one-dot-oh-readiness.md b/docs/one-dot-oh-readiness.md index 20c4c3f..ffe5eac 100644 --- a/docs/one-dot-oh-readiness.md +++ b/docs/one-dot-oh-readiness.md @@ -24,12 +24,12 @@ Not guaranteed: ## 1. Public Install And Package Metadata -- [x] Verify the current public PyPI version is visible as `0.7.0`: `python -c "import json, urllib.request; print(json.load(urllib.request.urlopen('https://pypi.org/pypi/codex-usage-tracking/json'))['info']['version'])"`. -- [x] Verify public venv install for `0.7.0`: `python -m venv /tmp/codex-usage-pypi-smoke && . /tmp/codex-usage-pypi-smoke/bin/activate && python -m pip install codex-usage-tracking==0.7.0 && codex-usage-tracker --version`. -- [x] Verify public pipx install path for `0.7.0`: `PIPX_HOME=/tmp/codex-usage-pipx-home PIPX_BIN_DIR=/tmp/codex-usage-pipx-bin pipx install codex-usage-tracking==0.7.0 && /tmp/codex-usage-pipx-bin/codex-usage-tracker --version`. +- [x] Verify the current public PyPI version is visible as `0.8.0`: `python -c "import json, urllib.request; print(json.load(urllib.request.urlopen('https://pypi.org/pypi/codex-usage-tracking/json'))['info']['version'])"`. +- [x] Verify public venv install for `0.8.0`: `python -m venv /tmp/codex-usage-pypi-smoke && . /tmp/codex-usage-pypi-smoke/bin/activate && python -m pip install codex-usage-tracking==0.8.0 && codex-usage-tracker --version`. +- [x] Verify public pipx install path for `0.8.0`: `PIPX_HOME=/tmp/codex-usage-pipx-home PIPX_BIN_DIR=/tmp/codex-usage-pipx-bin pipx install codex-usage-tracking==0.8.0 && /tmp/codex-usage-pipx-bin/codex-usage-tracker --version`. - [x] Verify installed package resources from a built wheel: `python scripts/smoke_installed_package.py`. - [x] Verify installed package resources in Linux Docker: `python scripts/smoke_installed_package.py --docker`. -- [x] Verify public PyPI package in Docker: `python scripts/smoke_installed_package.py --docker --from-pypi --version 0.7.0`. +- [x] Verify public PyPI package in Docker: `python scripts/smoke_installed_package.py --docker --from-pypi --version 0.8.0`. - [x] Verify PyPI metadata names remain unchanged: `python scripts/check_release.py`. - [x] Add Python 3.14 as an official support target after CI, package classifiers, docs, and installed-package smoke coverage were added. Docker smoke coverage uses `python:3.14-slim` by default. Track this in issue #12. @@ -134,14 +134,14 @@ Not guaranteed: ## Evidence References -These references are the concrete proof behind completed checklist items. Public package smoke commands are version-specific to `0.7.0`; all repo tests use synthetic or aggregate-only data. +These references are the concrete proof behind completed checklist items. Public package smoke commands are version-specific to `0.8.0`; all repo tests use synthetic or aggregate-only data. ### Public Install And Package Metadata - Public PyPI version, public venv install, and public pipx install are proven by the exact public-install commands in section 1. - Built-wheel and installed-resource coverage is proven by `scripts/smoke_installed_package.py` and `tests/test_cli_release.py::test_installed_package_smoke_checks_help_for_stable_commands`. - Linux package-resource coverage is proven by `scripts/smoke_installed_package.py --docker`. -- Public PyPI Docker coverage is proven by `scripts/smoke_installed_package.py --docker --from-pypi --version 0.7.0`. +- Public PyPI Docker coverage is proven by `scripts/smoke_installed_package.py --docker --from-pypi --version 0.8.0`. - PyPI metadata, package/distribution names, package resources, source/wheel member names, Python 3.10-3.14 support metadata, CI workflow requirements, publish workflow safety text, and tracked secret patterns are proven by `scripts/check_release.py`, `scripts/check_release.py --dist`, and `tests/test_cli_release.py::test_release_check_script_passes`. ### Upgrade And Migration @@ -219,8 +219,8 @@ These references are the concrete proof behind completed checklist items. Public - Publish workflow package name, Trusted Publishing, TestPyPI/PyPI job presence, event guards, no push/PR publishing, no token/password publishing, and manual PyPI main/tag preflight are proven by `scripts/check_release.py::_check_publish_workflow`. - The GitHub `pypi` environment gate is proven by `gh api repos/douglasmonsky/codex-usage-tracker/environments/pypi`, which reports a `required_reviewers` protection rule and `can_admins_bypass=false`. - Dist filename and wheel/sdist member checks are proven by `python -m build`, `python -m twine check dist/*`, and `python scripts/check_release.py --dist`. -- TestPyPI publish process is proven by a workflow-dispatch run on `main`, followed by TestPyPI metadata and clean virtualenv install checks for `codex-usage-tracking==0.7.0`. -- PyPI publish process is proven by a workflow-dispatch run on `main`, protected `pypi` environment approval, PyPI metadata visibility, clean virtualenv install, temporary pipx install, and Docker public-package smoke for `codex-usage-tracking==0.7.0`. +- TestPyPI publish process is proven by a workflow-dispatch run on `main`, followed by TestPyPI metadata and clean virtualenv install checks for `codex-usage-tracking==0.8.0`. +- PyPI publish process is proven by a workflow-dispatch run on `main`, protected `pypi` environment approval, PyPI metadata visibility, clean virtualenv install, temporary pipx install, and Docker public-package smoke for `codex-usage-tracking==0.8.0`. - Release recovery documentation is proven by `scripts/check_release.py` required-file and docs checks. ### Known Limitations diff --git a/pyproject.toml b/pyproject.toml index 526d608..2af8282 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "codex-usage-tracking" -version = "0.7.0" +version = "0.8.0" description = "Unofficial local Codex plugin and dashboard for investigating aggregate token usage, costs, caching, and thread patterns." readme = "README.md" requires-python = ">=3.10" diff --git a/skills/codex-usage-tracker/scripts/run_mcp.py b/skills/codex-usage-tracker/scripts/run_mcp.py index 0d05a10..cd3f7e6 100644 --- a/skills/codex-usage-tracker/scripts/run_mcp.py +++ b/skills/codex-usage-tracker/scripts/run_mcp.py @@ -15,9 +15,9 @@ PACKAGE_SPEC = os.environ.get( "CODEX_USAGE_TRACKER_PACKAGE_SPEC", - "codex-usage-tracking==0.7.0", + "codex-usage-tracking==0.8.0", ) -RUNTIME_VERSION = "0.7.0" +RUNTIME_VERSION = "0.8.0" PACKAGE_SPEC_MARKER = ".codex-usage-tracker-package-spec" MODULE_CHECK = ( "import importlib.metadata; " diff --git a/src/codex_usage_tracker/__init__.py b/src/codex_usage_tracker/__init__.py index baa247b..fd1f3ea 100644 --- a/src/codex_usage_tracker/__init__.py +++ b/src/codex_usage_tracker/__init__.py @@ -2,6 +2,6 @@ from codex_usage_tracker.models import UsageEvent -__version__ = "0.7.0" +__version__ = "0.8.0" __all__ = ["UsageEvent", "__version__"]