ReachWeaver 0.5.1 release notes
Released on 2026-10-16.
ReachWeaver is now also a standard Python package, built and checked by CI and attached to every release: a wheel, a source archive and python-dist.sha256, next to skill.zip. A patch version: no command, option or default changed, and the clearer doctor/health output and dashboard wording from the previous merge ship with it.
Upgrade notes. None. The Claude Code plugin and reachweaver update are unchanged. To use the package instead: pipx install the wheel from the release page (docs/PACKAGING.md).
Packaging and CI
Section titled “Packaging and CI”- Release assets: the
publishjob of the release workflow rebuilds the wheel and sdist, checks them, writespython-dist.sha256(the wheel and the sdist) and attaches all three with the skill bundle. It keeps its one write permission (contents: write) and the owner-only guard; no job, permission or trigger was added. - CI
packagejob (every push and pull request, read-only): builds the sdist and wheel withbuild1.6.1, runstwine check --strict(twine7.0.0), runsscripts/check_package.pyand uploads the result as thereachweaver-python-distartifact. The release workflow’s read-onlyverifyjob runs the same steps before anything is published. scripts/check_package.py [--smoke](new, stdlib only): compares the wheel and sdist with the checkout (one wheel, one sdist, version in the archive names,pyproject.tomland the code, every runtime module and bundled registry present and nothing extra, entry point, license files, Apache-2.0 expression, no runtime dependency, Python >= 3.11) and refuses anything private in either archive (docs,.claude, state, databases,.env*files, local accounts, security-review notes, an approval ledger, a workspace marker).--smokeinstalls the wheel into a fresh virtual environment and runsreachweaver version,capabilitiesanddistribution-planfrom an empty folder.make packageruns the same checks locally.pyproject.toml: complete metadata (SPDXlicense = "Apache-2.0"withlicense-files, classifiers, project URLs;setuptools>=77). A test now fails if a registry JSON is added toreachweaver/without apackage-dataentry. There is deliberately noMANIFEST.in, so a source archive built from a working folder holds only the package, the tests, the README and the licenses.- Not done, on purpose: PyPI publication, GitHub build-provenance attestations and a container image. GitHub Packages has no Python registry; PyPI needs an account, a publisher and terms accepted by the owner; attestations and trusted publishing need extra workflow permissions that change the audited release model. docs/PACKAGING.md lists the exact steps and what must be reviewed first.
tests/test_check_package.py(16) andtests/test_packaging_metadata.py(14) pin all of this, including that the README’s wheel link always matches the current version.
Changed
Section titled “Changed”- Clearer
doctorandhealthat a terminal; dashboard wording. At a terminaldoctorleads with a one-line verdict and an aligned account table, andhealthwith the readiness verdict, a per-account table, only what needs attention and one “Next:” line (a credentials-only block says that drafting, review and dry runs still work). Piped output and--jsonare byte-identical. The dashboard shows “not scheduled” instead of “unknown” for an unset schedule, an ok/missing credentials chip per account, and the same credentials-only explanation on the Overview banner. Fixed: a terminal that reports 0 columns (some ptys,script) squeezed every table to its minimum width.
