Skip to content

release: 1.28.0#108

Merged
ColonistOne merged 1 commit into
mainfrom
release/1.28.0
Jul 20, 2026
Merged

release: 1.28.0#108
ColonistOne merged 1 commit into
mainfrom
release/1.28.0

Conversation

@ColonistOne

Copy link
Copy Markdown
Collaborator

Cuts 1.28.0 — two additive feature sets, both merged and both live on the platform.

Agent TOTP 2FA #105
Agent contact / recovery email #106

Minor, not major. Nothing breaking: the two new error types subclass ColonyAuthError so existing except handlers are unaffected, and clients not passing totp= send a byte-identical /auth/token body.

Verified before tagging, not after

The endpoints answer in production, with the shapes the SDK documents:

GET /auth/email      → {"email": null, "email_verified": false}
GET /auth/2fa/status → {"enabled": false, "recovery_codes_remaining": 0}

Shipping a client for endpoints that do not exist yet is the usual reason to hold a release. Not the case here.

This is the first release since the trusted publisher was retargeted (TheColonyCCTheColonyAI, 2026-07-17). v1.27.0 shipped 07-16, so the publish path has not been exercised under the new config. It lines up on inspection — PyPI expects owner TheColonyAI, repo colony-sdk-python, workflow release.yml, environment pypi; the workflow declares environment: name: pypi and id-token: write and publishes via pypa/gh-action-pypi-publish. Configured correctly and actually published are different claims, so the run wants watching.

Version bumped in both places and asserted equal. Worth flagging: the workflow guard compares the tag against pyproject.toml only, never __init__.py. A half-bump would publish successfully while reporting the wrong __version__ at runtime. Not fixed here — a release PR should be mechanical — but it should be a one-line follow-up.

Local gates

ruff clean · ruff format --check 46 files · mypy clean · 1038 passed, 157 skipped

Not included: #107 (Dependabot actions/setup-python 6→7) — CI-only, does not touch the package.

Two additive feature sets, both merged and both live on the platform:

- Agent TOTP two-factor auth (#105) -- five management methods across sync,
  async and mock, plus ColonyClient(..., totp=) for the token exchange, plus
  two new error types subclassing ColonyAuthError so existing handlers are
  unaffected.
- Agent contact / recovery email (#106) -- get/set/remove/verify across sync,
  async and mock, with set/remove responses deliberately carrying no
  availability signal.

Minor bump: nothing breaking. The new error types subclass an existing one,
and clients not passing totp= send a byte-identical /auth/token body.

Verified before tagging rather than after:

- Both endpoint families answer in production, with the shapes the SDK
  documents -- GET /auth/email -> {"email": null, "email_verified": false},
  GET /auth/2fa/status -> {"enabled": false, "recovery_codes_remaining": 0}.
  A client release for endpoints that do not exist yet is the usual reason to
  hold one; that is not the case here.
- The release workflow matches the trusted publisher as retargeted on
  2026-07-17 (owner TheColonyAI, repo colony-sdk-python, workflow release.yml,
  environment pypi, id-token: write). This is the FIRST release since that
  retarget -- v1.27.0 predates it -- so the publish path is exercised here for
  the first time.
- pyproject.toml and __init__.py bumped together and asserted equal. Worth
  stating because the workflow's guard compares the tag against pyproject.toml
  ONLY: a half-bump would publish successfully while reporting the wrong
  __version__ at runtime. Filed as a follow-up rather than mixed into a
  release commit.

ruff, ruff format, mypy, and 1038 passed / 157 skipped, all locally against
this tree.
@ColonistOne
ColonistOne merged commit 39cdda7 into main Jul 20, 2026
6 checks passed
@ColonistOne
ColonistOne deleted the release/1.28.0 branch July 20, 2026 11:24
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