Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "codex-usage-tracker",
"version": "0.20.0",
"version": "0.21.0",
"description": "Unofficial local Codex usage dashboard and MCP diagnostics from local session logs.",
"author": {
"name": "Douglas Monsky"
Expand Down
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@

## Unreleased

## 0.21.0 - 2026-07-17

- Keep the macOS dashboard available at a stable, localhost-only URL with a
login LaunchAgent, explicit port-collision handling, health checks, and
install, status, and uninstall commands.
- Preserve responsive inline thread expansion while bounding initial work and
polishing progressive call loading, retry behavior, and row presentation.
- Preserve full-width Windows filesystem identifiers so distinct sources do
not collapse during aggregate usage ingestion.
- Ingest aggregate `response.completed` telemetry from local
`codex-completions*.jsonl` exporter files and conservatively reconcile exact
Fast/Standard service-tier evidence to canonical calls without retaining raw
Expand Down
4 changes: 2 additions & 2 deletions docs/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.20.0
python scripts/smoke_installed_package.py --docker --from-pypi --version 0.20.0
python scripts/smoke_installed_package.py --from-pypi --version 0.21.0
python scripts/smoke_installed_package.py --docker --from-pypi --version 0.21.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.
Expand Down
16 changes: 8 additions & 8 deletions docs/one-dot-oh-readiness.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ Not guaranteed:

## 1. Public Install And Package Metadata

- [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 the current public PyPI version is visible as `0.21.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.21.0`: `python -m venv /tmp/codex-usage-pypi-smoke && . /tmp/codex-usage-pypi-smoke/bin/activate && python -m pip install codex-usage-tracking==0.21.0 && codex-usage-tracker --version`.
- [x] Verify public pipx install path for `0.21.0`: `PIPX_HOME=/tmp/codex-usage-pipx-home PIPX_BIN_DIR=/tmp/codex-usage-pipx-bin pipx install codex-usage-tracking==0.21.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.20.0`.
- [x] Verify public PyPI package in Docker: `python scripts/smoke_installed_package.py --docker --from-pypi --version 0.21.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.

Expand Down Expand Up @@ -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.20.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.21.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.20.0`.
- Public PyPI Docker coverage is proven by `scripts/smoke_installed_package.py --docker --from-pypi --version 0.21.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
Expand Down Expand Up @@ -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.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`.
- 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.21.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.21.0`.
- Release recovery documentation is proven by `scripts/check_release.py` required-file and docs checks.

### Known Limitations
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "codex-usage-tracking"
version = "0.20.0"
version = "0.21.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"
Expand Down
4 changes: 2 additions & 2 deletions skills/codex-usage-tracker/scripts/run_mcp.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@

PACKAGE_SPEC = os.environ.get(
"CODEX_USAGE_TRACKER_PACKAGE_SPEC",
"codex-usage-tracking==0.20.0",
"codex-usage-tracking==0.21.0",
)
RUNTIME_VERSION = "0.20.0"
RUNTIME_VERSION = "0.21.0"
PACKAGE_SPEC_MARKER = ".codex-usage-tracker-package-spec"
MODULE_CHECK = (
"import importlib.metadata; "
Expand Down
2 changes: 1 addition & 1 deletion src/codex_usage_tracker/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

from codex_usage_tracker.core.models import UsageEvent

__version__ = "0.20.0"
__version__ = "0.21.0"

__all__ = ["UsageEvent", "__version__"]