diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 41161d22..4639b313 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "codex-usage-tracker", - "version": "0.19.0", + "version": "0.20.0", "description": "Unofficial local Codex usage dashboard and MCP diagnostics from local session logs.", "author": { "name": "Douglas Monsky" diff --git a/CHANGELOG.md b/CHANGELOG.md index ad503f93..c34db2a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +## 0.20.0 - 2026-07-16 + +- Reinvent the Threads tab around inline row expansion, progressively loading and virtualizing every call in the selected thread while preserving explicit investigator actions, deep links, responsive layouts, retry recovery, and aggregate-first privacy boundaries. - Complete the Simplified Chinese dashboard experience across React views, visualization metadata, tables, accessibility text, CLI help, and dashboard lifecycle messages while preserving user-provided data verbatim. - Improve the Overview token-flow chart at constrained desktop widths with a taller single-column layout, larger Sankey node gaps, and label-safe padding; keep virtualized evidence-table actions on one row. - Apply official long-context input, cached-input, and output price multipliers to concrete calls above 272K input tokens when the selected OpenAI service tier publishes long-context rates, while keeping aggregate summaries from being incorrectly thresholded. diff --git a/docs/development.md b/docs/development.md index 6b87048c..724848a5 100644 --- a/docs/development.md +++ b/docs/development.md @@ -174,8 +174,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.19.0 -python scripts/smoke_installed_package.py --docker --from-pypi --version 0.19.0 +python scripts/smoke_installed_package.py --from-pypi --version 0.20.0 +python scripts/smoke_installed_package.py --docker --from-pypi --version 0.20.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. diff --git a/docs/one-dot-oh-readiness.md b/docs/one-dot-oh-readiness.md index 7058f79b..e1a4781f 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.19.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.19.0`: `python -m venv /tmp/codex-usage-pypi-smoke && . /tmp/codex-usage-pypi-smoke/bin/activate && python -m pip install codex-usage-tracking==0.19.0 && codex-usage-tracker --version`. -- [x] Verify public pipx install path for `0.19.0`: `PIPX_HOME=/tmp/codex-usage-pipx-home PIPX_BIN_DIR=/tmp/codex-usage-pipx-bin pipx install codex-usage-tracking==0.19.0 && /tmp/codex-usage-pipx-bin/codex-usage-tracker --version`. +- [x] Verify the current public PyPI version is visible as `0.20.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.20.0`: `python -m venv /tmp/codex-usage-pypi-smoke && . /tmp/codex-usage-pypi-smoke/bin/activate && python -m pip install codex-usage-tracking==0.20.0 && codex-usage-tracker --version`. +- [x] Verify public pipx install path for `0.20.0`: `PIPX_HOME=/tmp/codex-usage-pipx-home PIPX_BIN_DIR=/tmp/codex-usage-pipx-bin pipx install codex-usage-tracking==0.20.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.19.0`. +- [x] Verify public PyPI package in Docker: `python scripts/smoke_installed_package.py --docker --from-pypi --version 0.20.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.19.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.20.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.19.0`. +- Public PyPI Docker coverage is proven by `scripts/smoke_installed_package.py --docker --from-pypi --version 0.20.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.19.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.19.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.20.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.20.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 d41f0c7a..cbd6d337 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "codex-usage-tracking" -version = "0.19.0" +version = "0.20.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 3152b5f7..ff0ba41b 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.19.0", + "codex-usage-tracking==0.20.0", ) -RUNTIME_VERSION = "0.19.0" +RUNTIME_VERSION = "0.20.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 9390c87c..2a4988c0 100644 --- a/src/codex_usage_tracker/__init__.py +++ b/src/codex_usage_tracker/__init__.py @@ -2,6 +2,6 @@ from codex_usage_tracker.core.models import UsageEvent -__version__ = "0.19.0" +__version__ = "0.20.0" __all__ = ["UsageEvent", "__version__"]