Repository navigation
Release TUI with cargo-dist, publish SDK to PyPI, add MIT license - #53
Merged
Merged
Conversation
- Replace the hand-rolled release workflow with cargo-dist 0.33, which builds the TUI for 5 targets and attaches archives to a GitHub Release on version tags. dist-workspace.toml lives at the repo root and points at tui/ so the generated workflow can find the crate. - Add publish-python.yml, which builds the SDK with uv and publishes to pypi.org via trusted publishing (pypa/gh-action-pypi-publish). - Add the MIT license and PyPI metadata (readme, license, project URLs). sdk/LICENSE and sdk/README.md symlink to the root copies so setuptools includes them. - Un-ignore dist-workspace.toml, which the dist* pattern was hiding. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Covers pip/uv for the SDK, and prebuilt release binaries or cargo install --git for the TUI. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
setup-uv publishes only exact version tags, so @v10 does not resolve and the PyPI build job would fail on the first release tag. Co-Authored-By: Claude Opus 5.5 <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
release.ymlis now generated by cargo-dist 0.33. On a version tag it buildsexttyfor macOS (arm64, x86_64), Linux (arm64, x86_64) and Windows (x86_64), and attaches.tar.xz/.ziparchives plus checksums to a GitHub Release.dist-workspace.tomlsits at the repo root withmembers = ["cargo:tui"]so the workflow can find the crate. This replaces the old manual-run build and the Cloudflare R2 upload.publish-python.ymlbuilds the SDK withuv buildand publishes it withpypa/gh-action-pypi-publishusing trusted publishing, with no stored token. It runs in thepypienvironment, matching the pending publisher registered on PyPI.LICENSEat the root, plusreadme,license,license-filesand project URLs insdk/pyproject.toml.sdk/LICENSEandsdk/README.mdare symlinks to the root copies so setuptools includes them.tui/Cargo.tomlalso getslicense = "MIT", and dist now putsLICENSEandREADME.mdin every TUI archive..gitignore: un-ignoresdist-workspace.toml, which the existingdist*pattern was hiding, and ignores the root/targetwhere dist writes its output.Versioning
The TUI and the SDK are released together. One
v0.1.0tag starts both workflows: the crate is0.1.0, andsetuptools_scmderives SDK0.1.0from the tag. All previous tags and GitHub Releases have been deleted so the public release starts at 0.1.0.Testing
dist plan --tag=v0.1.0announcesextty 0.1.0with all 5 targets.dist generate --checkpasses, sorelease.ymlis in sync with the config.v0.1.0,uv build --package exttyproducedextty-0.1.0.tar.gzandextty-0.1.0-py3-none-any.whl. The metadata showsLicense-Expression: MIT, andtwine check --strictpasses on both files.cargo checkintui/passes.v0.1.0is pushed.🤖 Generated with Claude Code