release: v0.2.0#5
Merged
Merged
Conversation
Readers hit ".prx" without knowing what it stands for or why it matters. Lead with the expansion (Portable Research eXchange) and the mission: sharable AI research with cryptographic attribution, private or public. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* docs(tui-guide): correct install command to prx-cli[tui] `pip install "prx[tui]"` installs the unrelated squatter stub on PyPI; our package is `prx-cli`. Aligns this file with README.md, PRXHUB.md, CHANGELOG.md, and the CLI's own error messages — all of which already say `prx-cli`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * test(prx-cli): add E2E integration tests for binary + publish flow Today a user installed our CLI and got `Hello from prx!` back from `prx publish`. Unit tests don't catch that class of regression because they invoke the Typer app in-process — they never see whether the installed binary is the real one or a Typer placeholder / squatter. This change adds a real end-to-end suite under `tests/e2e/` that shells out to `uv run prx` and asserts on stdout/stderr/returncode, plus the plumbing to exercise the full publish flow against a fake prxhub: - `prx --version` / `-V` now exist on the root command (so users can verify which install they're actually running — and so CI can assert we never ship `Hello from prx!`). - `tests/e2e/conftest.py` — fixtures: isolated HOME, real Ed25519 signing key, pytest-httpserver-backed fake hub with 3-step publish stubs, and a real .prx bundle built via `prx_spec.write_bundle`. - `tests/e2e/test_cli_binary.py` — 10 passing tests covering: entry point integrity, --version output, --help lists the real command set, `prx publish` happy path, missing signing key, missing file, and server 500 (all assert no stack trace leaks). - CI now runs `tests/e2e/` as a dedicated step on every PR. - `pytest-httpserver` added to the dev group. Also cleaned up 6 pre-existing unused-import lint errors on base so the new E2E CI step starts from a clean `ruff check`. Local run: 97 passed, 1 skipped in ~2.4s. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Justin Furniss <justin@securecoders.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bumps prx-cli from 0.1.0 → 0.2.0. Monorepo alignment with parallect
0.2.0 and prx-spec 0.2.0; prx-spec dependency pin lifted to >=0.2.0.
User-visible since 0.1.0:
- `prx --version` / `-V` flag (new)
- `prx publish --collection <slug>` flag with auto-create
- README rewrite, TUI install-hint fix
Quality:
- New E2E integration suite (tests/e2e/) drives the installed binary as
a subprocess against a fake prxhub — guards against "binary prints
a stub" regressions (which is how the squatter `prx` package on PyPI
bit a real user today).
- CI now runs E2E across the Python 3.10-3.13 matrix.
Verification:
- uv sync, ruff check — clean
- pytest tests/ — 97 passed, 1 skipped (2x run)
- uv build — wheel + sdist produced; metadata + entry-point verified
- Fresh venv install of dist/prx_cli-0.2.0-py3-none-any.whl:
`prx --version` → "prx 0.2.0"
`prx -V` → "prx 0.2.0"
(does NOT contain "Hello from prx")
Tag v0.2.0 after merge; release.yml publishes to PyPI via OIDC, cuts
the GitHub release, and dispatches to homebrew-tap.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bumps prx-cli from 0.1.0 → 0.2.0. Monorepo alignment with parallect 0.2.0 and prx-spec 0.2.0.
Changes
User-facing
prx --version/prx -Vflag — prints the installed version without running a subcommand. Also catches "am I actually running the real prx" cases.prx publish --collection <slug>flag, auto-creates collection if missing (PR feat(publish): --collection <slug> flag for direct-to-collection publishing #2)pip install "prx-cli[tui]"— theprxPyPI name is a third-party squatter stub)Dependencies
prx-specpin:>=0.1.0→>=0.2.0(picks up manifest v1.1)Quality / testing (PR #4)
tests/e2e/) drives the installedprxbinary as a subprocess against a fake prxhubuv run prx --versionexits 0 with real version string, asserts output does not contain "Hello from prx"--version/-Vflags printprx <__version__>--helplists all 19 real subcommandsprx publishhappy path + missing-key + missing-file + hub-500 error paths (clean exits, no leaked tracebacks)Verification (all on this branch, 2x check)
uv sync --all-extras --group dev— cleanuv run ruff check src/ tests/— cleanuv run pytest tests/ -q(1st run) — 97 passed, 1 skipped in 2.28suv run pytest tests/ -q(2nd run) — 97 passed, 1 skipped in 2.42suv run pytest tests/e2e -v— 10 passed, 1 skippeduv build— wheel + sdist produced, metadata +prx = prx.cli:appentry point verifiedprx --version→prx 0.2.0✓prx -V→prx 0.2.0✓Release process (on merge)
Tag
v0.2.0on the merge commit.release.ymltriggers on tag push and:pyproject.tomlversion matchpypi-releaseevent toparallect/homebrew-tapTest plan post-merge
pip install prx-cli==0.2.0outside the repo →prx --version→prx 0.2.0prx publish report.prxworks end-to-end🤖 Generated with Claude Code