Skip to content

feat(phase-10): distribution + one-line install (v0.1.0) - #12

Open
ChristianOkokhere wants to merge 1 commit into
docs/initial-readme-and-planfrom
feat/phase-10-distribution
Open

feat(phase-10): distribution + one-line install (v0.1.0)#12
ChristianOkokhere wants to merge 1 commit into
docs/initial-readme-and-planfrom
feat/phase-10-distribution

Conversation

@ChristianOkokhere

Copy link
Copy Markdown
Owner

Summary

Version bumped to v0.1.0 and everything needed to publish + install lands in this PR.

What lands

  • Version bump to 0.1.0 in pyproject.toml + autocam/__init__.py. Dev status classifier → Alpha.
  • Cleaned up the wheel: removed the redundant force-include rule that double-packed system.md. uv build is now warning-free.
  • .github/workflows/test.yml — runs ruff check, ruff format --check, and pytest on Ubuntu + macOS for every PR + push to trunk / main. 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 and verifies __version__, then publishes to PyPI via Trusted Publishing (OIDC). Gated behind a pypi GitHub environment so a human approves each release.
  • install.sh — POSIX sh: detects uv, installs it if missing, runs uv 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 the pypi environment) and the every-release loop (bump → commit → tag → push). Documents yank-don't-overwrite.
  • README — new ## Install section with the three-tier ladder (curl | shuv tool installpipx install) and a pointer to docs/install.md. Status line → Alpha / v0.1.0.

Verified locally

  • bash scripts/dev.sh → 158 green.
  • uv build → warning-free wheel + sdist.
  • Wheel installs into a throwaway venv; create --version prints 0.1.0; create --help lists apply / batch / export.
  • Package data (system.md, knowledge/*.md) accessible from the installed wheel.

Human-only release steps

These don't go in code — see docs/release.md:

  1. Claim autocam on https://pypi.org/manage/account/publishing/ as a pending publisher pointing to:
    • Owner: ChristianOkokhere
    • Repo: AutoCam
    • Workflow: publish.yml
    • Environment: pypi
  2. Create the pypi environment on the repo (Settings → Environments).
  3. After this PR merges:
    git tag -a v0.1.0 -m "v0.1.0"
    git push origin v0.1.0
  4. The publish workflow 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.sh is green locally (158 pytest).
  • On GitHub, the test workflow runs against this PR and goes green on both Ubuntu and macOS.
  • uv build succeeds with no warnings.
  • Local smoke: uv venv /tmp/v && VIRTUAL_ENV=/tmp/v uv pip install dist/autocam-0.1.0-py3-none-any.whl && /tmp/v/bin/create --version0.1.0.
  • After merging + tagging + the publish workflow finishes: uv tool install autocam==0.1.0 && create --version on a clean machine returns 0.1.0.

What's still TBD

After v0.1.0 is live, the menu is in docs/limitations.md:

  • 5b — raw.develop op-stack ops
  • 6b — AI masks (FastSAM / rembg / MediaPipe)
  • 7b — struct.canvas + struct.composite (layer model)
  • 8b — :batch match (LLM-driven look-matching)
  • 9b — history scrubbing, archival TIFF, modal ? overlay, .env autoload, docs/tools.md / docs/recipes.md

🤖 Generated with Claude Code

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant