Release 1.4.20 (2026-05-06)¶
Bug fixes¶
-
prepend .venv/bin to PATH in st-validate for CI compatibility GitHub Actions overrides the container WORKDIR to /__w/
/ , so the Docker image PATH entry for /workspace/.venv/bin never resolves. Detect repo_root/.venv/bin at startup and prepend it to PATH so tools installed by uv sync are reachable regardless of mount point. -
use explicit argument lists in command registry instead of string splitting The command registry stored commands as strings and used cmd.split() to produce argument lists for subprocess.run(). This broke pip-licenses because its --allow-only value contains spaces in license names (e.g. 'Apache-2.0 AND CNRI-Python') which split() treated as separate arguments. Changed all registry entries to explicit list[list[str]] and updated _run_commands to pass them directly to subprocess.run().
-
add missing type annotations in test files for mypy strict mode The command registry runs mypy on both src/ and tests/, but test files had untyped functions, untyped variables, and unnarrowed dict[str, object] accesses. Added type annotations, typing.cast for nested dict access, and moved runtime-only imports into TYPE_CHECKING blocks.
-
add ty as dev dependency and resolve ty type checker diagnostics Add ty (Astral's type checker) to the dev dependency group so the command registry's typecheck step can find it in CI. Fix all 14 pre-existing ty diagnostics in github_config.py (dict type narrowing via cast) and test files (return type annotations).
CI¶
- remove bespoke lint and typecheck jobs duplicated by ci-quality.yml
- remove all bespoke jobs, use reusable workflows for test, audit, and release
- trigger fresh workflow run after standard-actions fix
- trigger fresh CI run after standard-actions self-install fix
- trigger fresh CI run after dev container image rebuild
- trigger fresh CI run after standard-actions PATH fix
- trigger fresh CI run after standard-actions PATH fix for all jobs
- use Python container for common, standards, and release jobs Pass container-suffix and container-tag to quality, security, and release reusable workflows so non-matrix jobs (common, standards, version-bump) run in dev-python:3.12 instead of dev-base:latest. Required for the standard-tooling repo where uv sync needs Python to install st-validate from source.
Depends on standard-actions v1.5.10 (wphillipmoore/standard-actions#374).
Chores¶
- require Python 3.14 as minimum version Standard-tooling targets the leading edge — if you can't run the latest production Python, the tooling won't work. Bumps requires-python from >=3.12 to >=3.14.
Documentation¶
- add claude-plugin to primary-language spec
Features¶
- add claude-plugin to primary-language enum
- add claude-plugin version discovery, read, and write
Refactoring¶
- remove .venv/bin PATH logic from st-validate The PATH setup belongs in the calling environment (standard-actions workflows), not inside st-validate. The caller must prepend $GITHUB_WORKSPACE/.venv/bin to PATH before invoking st-validate so that both st-validate itself and the tools it spawns (ruff, mypy, pytest) are reachable.
Styling¶
- format test_version.py
- format github_config.py for ruff on Python 3.14
Testing¶
- add failing test for st-version claude-plugin show
- add bump test for claude-plugin
- verify claude-plugin skips lockfile maintenance
- verify error on missing version key in plugin.json