feat(phase-10): distribution + one-line install (v0.1.0) - #12
Open
ChristianOkokhere wants to merge 1 commit into
Open
feat(phase-10): distribution + one-line install (v0.1.0)#12ChristianOkokhere wants to merge 1 commit into
ChristianOkokhere wants to merge 1 commit into
Conversation
Bumps the version to **v0.1.0** and ships everything needed to publish the package and install it with one shell line on a clean macOS / Linux box. * `pyproject.toml` + `autocam/__init__.py` → 0.1.0. Dev status classifier → Alpha. * Removed the redundant `force-include` hatch rule that double- packed `system.md`; hatchling's default include of files inside the package dir already covers it. `uv build` now produces a warning-free wheel. * `.github/workflows/test.yml` — runs `ruff check`, `ruff format --check`, and `pytest` on Ubuntu + macOS for every PR + push to trunk / main. First CI workflow in the repo; closes the loose end from Phase 0. * `.github/workflows/publish.yml` — triggers on `v*.*.*` tag push. Builds wheel + sdist via `uv build`, smoke-installs the wheel into a throwaway venv and imports `autocam.__version__`, then publishes to PyPI via Trusted Publishing (OIDC, no stored token). Gated behind a `pypi` GitHub environment so a human approves each release. * `install.sh` — POSIX sh (no Bashisms): detects `uv`, installs it if missing, runs `uv tool install autocam`, and prints a next-step hint. Falls back to a PATH-fixup message if the command isn't on PATH after install. * `docs/release.md` — runbook for the one-time human steps (claim the PyPI name, configure the Trusted Publisher, create the `pypi` environment) and the every-release loop (bump → commit → tag → push). Documents the yank-don't-overwrite rule. * README — new `## Install` section with the three-tier ladder (`curl | sh` → `uv tool install` → `pipx install`) and a pointer to `docs/install.md` for the long form. Status line bumped to Alpha / v0.1.0. All 158 tests still pass; wheel installs cleanly; `create --version` prints `0.1.0`. PLAN.md: Phase 10 → DONE. v0.1.0 is the v1 release. Co-Authored-By: Claude Opus 4.7 <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
Version bumped to v0.1.0 and everything needed to publish + install lands in this PR.
What lands
0.1.0inpyproject.toml+autocam/__init__.py. Dev status classifier → Alpha.force-includerule that double-packedsystem.md.uv buildis now warning-free..github/workflows/test.yml— runsruff check,ruff format --check, andpyteston Ubuntu + macOS for every PR + push to trunk / main. Closes the loose end from Phase 0..github/workflows/publish.yml— triggers onv*.*.*tag push. Builds wheel + sdist viauv build, smoke-installs the wheel and verifies__version__, then publishes to PyPI via Trusted Publishing (OIDC). Gated behind apypiGitHub environment so a human approves each release.install.sh— POSIX sh: detectsuv, installs it if missing, runsuv tool install autocam, prints next-step hint. Falls back to a clear PATH-fixup message if the command isn't on PATH after install.docs/release.md— runbook for the one-time human steps (claim the PyPI name, configure the Trusted Publisher, create thepypienvironment) and the every-release loop (bump → commit → tag → push). Documents yank-don't-overwrite.## Installsection with the three-tier ladder (curl | sh→uv tool install→pipx install) and a pointer todocs/install.md. Status line → Alpha / v0.1.0.Verified locally
bash scripts/dev.sh→ 158 green.uv build→ warning-free wheel + sdist.create --versionprints0.1.0;create --helplistsapply / batch / export.system.md,knowledge/*.md) accessible from the installed wheel.Human-only release steps
These don't go in code — see
docs/release.md:autocamon https://pypi.org/manage/account/publishing/ as a pending publisher pointing to:ChristianOkokhereAutoCampublish.ymlpypipypienvironment on the repo (Settings → Environments).git tag -a v0.1.0 -m "v0.1.0" git push origin v0.1.0publishworkflow runs automatically. When it lands, the package shows up at https://pypi.org/project/autocam/.Then the one-liner works
curl -fsSL https://raw.githubusercontent.com/ChristianOkokhere/AutoCam/main/install.sh | sh(or
uv tool install autocam/pipx install autocam).Test plan
bash scripts/dev.shis green locally (158 pytest).testworkflow runs against this PR and goes green on both Ubuntu and macOS.uv buildsucceeds with no warnings.uv venv /tmp/v && VIRTUAL_ENV=/tmp/v uv pip install dist/autocam-0.1.0-py3-none-any.whl && /tmp/v/bin/create --version→0.1.0.uv tool install autocam==0.1.0 && create --versionon a clean machine returns0.1.0.What's still TBD
After v0.1.0 is live, the menu is in
docs/limitations.md:raw.developop-stack opsstruct.canvas+struct.composite(layer model):batch match(LLM-driven look-matching)?overlay,.envautoload,docs/tools.md/docs/recipes.md🤖 Generated with Claude Code