Skip to content

chore: prep 0.1.0 release#14

Merged
lesnik512 merged 5 commits into
mainfrom
chore/release-0.1.0-prep
May 31, 2026
Merged

chore: prep 0.1.0 release#14
lesnik512 merged 5 commits into
mainfrom
chore/release-0.1.0-prep

Conversation

@lesnik512

Copy link
Copy Markdown
Member

Summary

Repo-side prep for the `0.1.0` PyPI release. No production code or test changes.

  • Deletes `CHANGELOG.md`. Release notes live on GitHub Releases (one entry per tag), matching the modern-di convention in the same org.
  • Adds `.github/workflows/publish.yml`. Mirrors modern-di's publish workflow byte-for-byte. Triggered by `release: published`; runs the existing `just publish` recipe which sets the version from `$GITHUB_REF_NAME`, builds, and uploads to PyPI with the `PYPI_TOKEN` secret.
  • Trims `README.md`. Drops the "Highlights" bullets for unshipped features (Retry/RetryBudget/Bulkhead/Timeout/Observability/OpenTelemetry). Status banner explicitly names the unshipped categories so users know what's missing. Replaces the bare CHANGELOG link with nothing.
  • Removes the CHANGELOG bullet from `CONTRIBUTING.md` and renumbers the subsequent item.

`pyproject.toml`, `Justfile`, `ci.yml`, and the source tree are untouched.

After this PR merges, the maintainer:

  1. Verifies the PyPI name `httpware` is owned by `modern-python` (or free).
  2. Verifies `PYPI_TOKEN` is present in repo secrets.
  3. Creates a GitHub Release tagged `0.1.0`, which triggers `publish.yml` → `just publish` → PyPI.

Spec + plan: `docs/superpowers/specs/2026-05-31-release-0.1.0-prep-design.md`, `docs/superpowers/plans/2026-05-31-release-0.1.0-prep-plan.md`.

Test plan

  • No production code / test changes; `just test` shows 273 passed, 1 deselected, 100% line coverage (unchanged from `main`).
  • `just lint-ci` clean.
  • `tests/test_no_httpx2_leakage.py` still passes.
  • `grep -i changelog` returns no matches in any project file (except `docs/archive/` and the spec/plan describing the deletion).
  • `python -c "import yaml; yaml.safe_load(open('.github/workflows/publish.yml'))"` — workflow file parses; byte-identical to modern-di's.
  • CI green on all matrix entries.

🤖 Generated with Claude Code

lesnik512 and others added 5 commits May 31, 2026 23:37
Decisions:
- Delete CHANGELOG.md (modern-di convention; release notes on GitHub Releases).
- Add .github/workflows/publish.yml mirroring modern-di's release flow.
- Trim README.md to ship only what's actually shipped (drop the Retry/
  RetryBudget/Bulkhead/Timeout/Observability/OTel bullets until those
  Epics land). Status banner explicitly names the unshipped categories.
- pyproject.toml version stays "0"; publish recipe overrides with
  `uv version $GITHUB_REF_NAME`.
- Tag format: bare 0.1.0 (no v prefix), matching modern-di.

Out of scope: production code changes, mkdocs site (Epic 6), Trusted
Publishers / Sigstore release flow (Story 6-5).

Includes the manual post-merge sequence (PyPI name verification, secret
check, GitHub Release create) — those execute by the maintainer after
the prep PR merges.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
modern-di in the same org doesn't ship a CHANGELOG.md — release notes
live on GitHub Releases (one entry per tag). This commit removes the
file and the one CONTRIBUTING.md bullet that asked contributors to
update an `Unreleased` section.

README.md still has a stale CHANGELOG link; the README is fully
rewritten in a follow-up commit on this branch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Mirrors the modern-di publish workflow byte-for-byte. Triggered when a
GitHub Release is published; runs the existing `just publish` recipe
which extracts the version from $GITHUB_REF_NAME, builds, and uploads
to PyPI with the PYPI_TOKEN repo secret.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Removes the "Highlights" bullets for resilience middleware (Retry,
RetryBudget, Bulkhead, Timeout), the observability paragraph, and the
"first-class OpenTelemetry" line — none of those Epics have shipped.

Adds an explicit unshipped-categories list to the status banner so users
know what's missing before they install.

Replaces the bare CHANGELOG link with nothing (the file is gone; release
notes live on GitHub Releases).

The "What ships in 0.1.0" section enumerates the shipped public surface:
AsyncClient, transport-agnostic seam, middleware foundation,
PydanticDecoder + MsgspecDecoder, RecordedTransport, status-keyed
exception hierarchy.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@lesnik512 lesnik512 self-assigned this May 31, 2026
@lesnik512 lesnik512 merged commit d195992 into main May 31, 2026
5 checks passed
@lesnik512 lesnik512 deleted the chore/release-0.1.0-prep branch May 31, 2026 20:50
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