diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 90623ca..c612ee4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -161,10 +161,16 @@ jobs: "$month"*) ;; *) echo "::error::$version is not a release of this month ($month); see RELEASING.md"; exit 1 ;; esac + # A release candidate (a/b/rc) goes to TestPyPI; a dev release + # (2026.11.0.dev1) goes to PyPI as a pre-release, which pip and uv + # install only on request (--pre or an exact pin). candidate="" echo "$version" | grep -Eq '(a|b|rc)[0-9]+$' && candidate=yes + prerelease="" + echo "$version" | grep -Eq '((a|b|rc)[0-9]+|\.dev[0-9]+)$' && prerelease=yes echo "version=$version" >> "$GITHUB_OUTPUT" echo "candidate=$candidate" >> "$GITHUB_OUTPUT" + echo "prerelease=$prerelease" >> "$GITHUB_OUTPUT" - name: Build the wheel and sdist run: bash scripts/build-packages.sh --clean --check - name: Write the release notes @@ -183,7 +189,7 @@ jobs: uses: softprops/action-gh-release@3bb12739c298aeb8a4eeaf626c5b8d85266b0e65 # v2 with: body_path: notes.md - prerelease: ${{ steps.tag.outputs.candidate == 'yes' }} + prerelease: ${{ steps.tag.outputs.prerelease == 'yes' }} files: dist/robotframework_plugins-* - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: diff --git a/README.md b/README.md index 69608b3..7ef4e22 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Tiers and what they mean: [GOVERNANCE.md](GOVERNANCE.md). Full details per plugi The Python installer bundles these plugin versions: -| robotframework-plugins 2026.11.0 bundles | Version | Tier | +| robotframework-plugins 2026.11.0.dev1 bundles | Version | Tier | |---|---|---| | `rf-agentskills` | 4.0.0 | verified | | `rf-api` | 1.0.0 | verified | diff --git a/RELEASING.md b/RELEASING.md index 903dd87..80edd11 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -54,6 +54,8 @@ The installer version is the year and month of the release, then a patch number: A release candidate (`2026.11.0rc1`) goes through the same steps; it publishes to TestPyPI first, to check the flow. +A dev release (`2026.11.0.dev1`) also goes through the same steps, but publishes to PyPI, marked as a pre-release on GitHub. pip and uv install it only with `--pre` (`uv tool install --prerelease allow`) or an exact pin, so users of the latest release don't get it, while a tool that depends on unreleased API changes can pin it. The first one also reserves the `robotframework-plugins` name on PyPI. + ## What the version table says Each installer release bundles the active and deprecated plugins at their current versions. `build-catalog.py` writes that table into the README and `docs/catalog.md`, and `robotframework-plugins catalog --json` and `robotframework-plugins version` print it: diff --git a/docs/catalog.md b/docs/catalog.md index 29577b7..7a753a9 100644 --- a/docs/catalog.md +++ b/docs/catalog.md @@ -13,9 +13,9 @@ ## Installer -`pip install robotframework-plugins==2026.11.0` installs these plugin versions: +`pip install robotframework-plugins==2026.11.0.dev1` installs these plugin versions: -| robotframework-plugins 2026.11.0 bundles | Version | Tier | +| robotframework-plugins 2026.11.0.dev1 bundles | Version | Tier | |---|---|---| | `rf-agentskills` | 4.0.0 | verified | | `rf-api` | 1.0.0 | verified | diff --git a/installer/CHANGELOG.md b/installer/CHANGELOG.md index d2a698c..80ed0bf 100644 --- a/installer/CHANGELOG.md +++ b/installer/CHANGELOG.md @@ -2,6 +2,10 @@ The installer has calendar versions (`YYYY.M.PATCH`), independent of the plugins' own versions; each release states which plugin versions it bundles. Up to 0.8.0 it was published as `rf-agentskills`. See `RELEASING.md` at the repo root. +## 2026.11.0.dev1 — 2026-11-13 + +First upload to PyPI, as a pre-release: install it with `uv tool install --prerelease allow robotframework-plugins` or pin `robotframework-plugins==2026.11.0.dev1`. It has everything listed under 2026.11.0 below, including the Python API (`robotframework_plugins.bundle`) and `libraries[].skills` in the catalogue. Not yet included: the rf-desktop eval and validation-hook changes still under review (#4). + ## 2026.11.0 — 2026-11-09 ### Renamed diff --git a/installer/pyproject.toml b/installer/pyproject.toml index 67544f1..9f391b2 100644 --- a/installer/pyproject.toml +++ b/installer/pyproject.toml @@ -13,7 +13,7 @@ build-backend = "hatchling.build" [project] name = "robotframework-plugins" -version = "2026.11.0" +version = "2026.11.0.dev1" description = "Cross-agent installer for Robot Framework agent plugins (Claude Code, Copilot, Codex, Cursor, Goose, OpenCode, Claude Desktop)" readme = "README.md" license = { text = "Apache-2.0" } diff --git a/installer/src/robotframework_plugins/__init__.py b/installer/src/robotframework_plugins/__init__.py index c8ecfaa..8945e44 100644 --- a/installer/src/robotframework_plugins/__init__.py +++ b/installer/src/robotframework_plugins/__init__.py @@ -10,5 +10,5 @@ from __future__ import annotations -__version__ = "2026.11.0" +__version__ = "2026.11.0.dev1" __all__ = ("__version__",) diff --git a/uv.lock b/uv.lock index 93ee301..a513082 100644 --- a/uv.lock +++ b/uv.lock @@ -2672,7 +2672,7 @@ wheels = [ [[package]] name = "robotframework-plugins" -version = "2026.11.0" +version = "2026.11.0.dev1" source = { editable = "installer" } dependencies = [ { name = "pyyaml" },