Skip to content

fix(release): select the prerelease versioning strategy - #1202

Merged
grdsdev merged 1 commit into
mainfrom
fix/release-please-prerelease-strategy
Aug 13, 2026
Merged

grdsdev merged 1 commit into
mainfrom
fix/release-please-prerelease-strategy

Conversation

@grdsdev

@grdsdev grdsdev commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

What

Adds "versioning": "prerelease" to release-please-config.json, and forces the next release to 2.55.1 via a Release-As: trailer.

Why

release-please's default versioning strategy never looks at prerelease/prerelease-type — those are only consumed by the prerelease versioning strategy, selected via "versioning": "prerelease". #1199 added the two fields but not the strategy selector, so they were silently no-ops.

#1201 is the proof: it computed a plain 3.0.0 instead of 3.0.0-beta.1.

#1201's 3.0.0 proposal is also spurious on its own terms — an earlier commit's message described the conventional-commits breaking-change footer in prose, and release-please's scan picked up the literal text as if it were a real breaking-change note. Nothing breaking has actually shipped. main doesn't allow force-pushes, so the commit text can't be edited out of history; the Release-As: 2.55.1 trailer here tells release-please to treat the pending commits as an ordinary patch instead, which clears them from the "unreleased" window. One side effect: CHANGELOG.md will carry a stray, garbled breaking-change bullet under 2.55.1 — harmless, just odd-looking.

Once this merges, #1201 should update to (or be superseded by) a 2.55.1 release PR. I'll close #1201 once that happens.

Context

release-please's default versioning strategy ignores `prerelease`
and `prerelease-type` entirely -- those fields are only read by the
`prerelease` versioning strategy, which only activates when
"versioning": "prerelease" is set. Without it, a major bump produces
a plain X.0.0 tag instead of X.0.0-beta.N. PR #1201 is live proof: it
computed 3.0.0, not 3.0.0-beta.1, despite the fields added in #1199.

That 3.0.0 proposal is itself spurious: an earlier commit described
the conventional-commits breaking-change footer in prose, and the
literal text was picked up by release-please's own scan even though
nothing breaking shipped. main is force-push protected, so history
can't be rewritten to remove it; folding it into an ordinary patch
release is the supported way to clear it.

Release-As: 2.55.1
@grdsdev
grdsdev requested a review from a team as a code owner August 12, 2026 21:20
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • New Features
    • Added support for prerelease versioning of the root package.

Walkthrough

The release configuration sets the root package versioning mode to prerelease. This supports beta prerelease releases for version 3.0.0.

Assessment against linked issues

Objective Addressed Explanation
Configure v3 beta prereleases [#1201]

Possibly related PRs


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@release-please-config.json`:
- Around line 5-7: Update the prerelease-type setting in the release
configuration from beta to beta.1, preserving the existing prerelease versioning
behavior so breaking releases generate versions such as 3.0.0-beta.1.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5df50b2a-0bc5-4a95-aa1d-6d8b0f156a2e

📥 Commits

Reviewing files that changed from the base of the PR and between f6687c5 and f81b548.

📒 Files selected for processing (1)
  • release-please-config.json

Comment on lines +5 to 7
"versioning": "prerelease",
"prerelease": true,
"prerelease-type": "beta",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

type="$(jq -r '.packages["."].["prerelease-type"]' release-please-config.json)"
test "$type" = "beta.1"

curl -fsSL \
  https://raw.githubusercontent.com/googleapis/release-please/v17.6.0/src/versioning-strategies/prerelease.ts |
  rg -n 'this\.prereleaseType|nextPrerelease ='

Repository: supabase/supabase-swift

Length of output: 161


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- release-please-config.json ---'
cat -n release-please-config.json

printf '%s\n' '--- release-please references ---'
rg -n --glob '!node_modules' --glob '!dist' 'release-please|prerelease-type|versioning|2\.55\.1|3\.0\.0' .github release-please-config.json package.json 2>/dev/null || true

printf '%s\n' '--- Release Please prerelease strategy source ---'
curl -fsSL https://raw.githubusercontent.com/googleapis/release-please/v17.6.0/src/versioning-strategies/prerelease.ts |
  sed -n '1,260p'

Repository: supabase/supabase-swift

Length of output: 8813


Set prerelease-type to beta.1

A breaking release from 2.55.1 produces 3.0.0-beta with the current value. Set it to beta.1 to produce 3.0.0-beta.1.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@release-please-config.json` around lines 5 - 7, Update the prerelease-type
setting in the release configuration from beta to beta.1, preserving the
existing prerelease versioning behavior so breaking releases generate versions
such as 3.0.0-beta.1.

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Capability matrix drift detected

The following capabilities are marked implemented in swift but have no registered symbols to verify:

  • auth.passkey.register_passkey (no symbols list — cannot confirm implementation exists)
  • auth.passkey.sign_in_with_passkey (no symbols list — cannot confirm implementation exists)
  • client.authentication_integration.third_party_auth (no symbols list — cannot confirm implementation exists)
  • client.authentication_integration.cross_client_token_sync (no symbols list — cannot confirm implementation exists)
  • client.authentication_integration.oauth_flow_type (no symbols list — cannot confirm implementation exists)
  • client.authentication_integration.session_url_detection (no symbols list — cannot confirm implementation exists)
  • client.session_management.custom_storage (no symbols list — cannot confirm implementation exists)
  • client.session_management.persist_session (no symbols list — cannot confirm implementation exists)
  • client.request_configuration.global_headers (no symbols list — cannot confirm implementation exists)
  • client.observability.trace_propagation (no symbols list — cannot confirm implementation exists)
  • database.query.select (no symbols list — cannot confirm implementation exists)
  • database.query.schema_selection (no symbols list — cannot confirm implementation exists)
  • database.query.rpc (no symbols list — cannot confirm implementation exists)
  • database.mutate.insert (no symbols list — cannot confirm implementation exists)
  • database.mutate.update (no symbols list — cannot confirm implementation exists)
  • database.mutate.upsert (no symbols list — cannot confirm implementation exists)
  • database.mutate.delete (no symbols list — cannot confirm implementation exists)
  • database.mutate.select_after_mutation (no symbols list — cannot confirm implementation exists)
  • database.using_filters.eq (no symbols list — cannot confirm implementation exists)
  • database.using_filters.neq (no symbols list — cannot confirm implementation exists)
  • database.using_filters.gt (no symbols list — cannot confirm implementation exists)
  • database.using_filters.gte (no symbols list — cannot confirm implementation exists)
  • database.using_filters.lt (no symbols list — cannot confirm implementation exists)
  • database.using_filters.lte (no symbols list — cannot confirm implementation exists)
  • database.using_filters.like (no symbols list — cannot confirm implementation exists)
  • database.using_filters.ilike (no symbols list — cannot confirm implementation exists)
  • database.using_filters.is (no symbols list — cannot confirm implementation exists)
  • database.using_filters.in (no symbols list — cannot confirm implementation exists)
  • database.using_filters.contains (no symbols list — cannot confirm implementation exists)
  • database.using_filters.contained_by (no symbols list — cannot confirm implementation exists)
  • database.using_filters.range_gt (no symbols list — cannot confirm implementation exists)
  • database.using_filters.range_gte (no symbols list — cannot confirm implementation exists)
  • database.using_filters.range_lt (no symbols list — cannot confirm implementation exists)
  • database.using_filters.range_lte (no symbols list — cannot confirm implementation exists)
  • database.using_filters.range_adjacent (no symbols list — cannot confirm implementation exists)
  • database.using_filters.overlaps (no symbols list — cannot confirm implementation exists)
  • database.using_filters.text_search (no symbols list — cannot confirm implementation exists)
  • database.using_filters.match (no symbols list — cannot confirm implementation exists)
  • database.using_filters.not (no symbols list — cannot confirm implementation exists)
  • database.using_filters.or (no symbols list — cannot confirm implementation exists)
  • database.using_filters.raw (no symbols list — cannot confirm implementation exists)
  • database.using_filters.regex (no symbols list — cannot confirm implementation exists)
  • database.using_filters.regex_icase (no symbols list — cannot confirm implementation exists)
  • database.using_filters.is_distinct (no symbols list — cannot confirm implementation exists)
  • database.using_filters.like_all (no symbols list — cannot confirm implementation exists)
  • database.using_filters.like_any (no symbols list — cannot confirm implementation exists)
  • database.using_filters.ilike_all (no symbols list — cannot confirm implementation exists)
  • database.using_filters.ilike_any (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.order (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.limit (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.range (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.single_row (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.strip_nulls (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.format_csv (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.format_geojson (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.max_affected_rows (no symbols list — cannot confirm implementation exists)
  • database.using_modifiers.request_cancellation (no symbols list — cannot confirm implementation exists)
  • database.configuration.auto_retry (no symbols list — cannot confirm implementation exists)
  • functions.invocation.invoke (no symbols list — cannot confirm implementation exists)
  • functions.invocation.set_auth_token (no symbols list — cannot confirm implementation exists)
  • functions.invocation.method_override (no symbols list — cannot confirm implementation exists)
  • functions.invocation.streaming_response (no symbols list — cannot confirm implementation exists)
  • functions.invocation.request_cancellation (no symbols list — cannot confirm implementation exists)
  • realtime.client.connect (no symbols list — cannot confirm implementation exists)
  • realtime.client.disconnect (no symbols list — cannot confirm implementation exists)
  • realtime.client.get_channels (no symbols list — cannot confirm implementation exists)
  • realtime.client.remove_channel (no symbols list — cannot confirm implementation exists)
  • realtime.client.remove_all_channels (no symbols list — cannot confirm implementation exists)
  • realtime.client.connection_state (no symbols list — cannot confirm implementation exists)
  • realtime.client.listen_heartbeats (no symbols list — cannot confirm implementation exists)
  • realtime.client.set_auth_token (no symbols list — cannot confirm implementation exists)
  • realtime.client.channel (no symbols list — cannot confirm implementation exists)
  • realtime.channel.subscribe (no symbols list — cannot confirm implementation exists)
  • realtime.channel.unsubscribe (no symbols list — cannot confirm implementation exists)
  • realtime.channel.broadcast (no symbols list — cannot confirm implementation exists)
  • realtime.channel.broadcast_http (no symbols list — cannot confirm implementation exists)
  • realtime.subscriptions.postgres_changes (no symbols list — cannot confirm implementation exists)
  • realtime.subscriptions.subscribe_presence (no symbols list — cannot confirm implementation exists)
  • realtime.subscriptions.private_channel (no symbols list — cannot confirm implementation exists)
  • realtime.subscriptions.broadcast_self (no symbols list — cannot confirm implementation exists)
  • realtime.subscriptions.broadcast_ack (no symbols list — cannot confirm implementation exists)
  • realtime.subscriptions.broadcast_replay (no symbols list — cannot confirm implementation exists)
  • realtime.presence.track (no symbols list — cannot confirm implementation exists)
  • realtime.presence.untrack (no symbols list — cannot confirm implementation exists)
  • realtime.presence.presence_key (no symbols list — cannot confirm implementation exists)
  • realtime.configuration.custom_websocket_transport (no symbols list — cannot confirm implementation exists)
  • realtime.configuration.reconnect_backoff (no symbols list — cannot confirm implementation exists)
  • realtime.configuration.heartbeat_interval (no symbols list — cannot confirm implementation exists)
  • realtime.configuration.access_token_callback (no symbols list — cannot confirm implementation exists)
  • realtime.configuration.deferred_disconnect (no symbols list — cannot confirm implementation exists)
  • realtime.configuration.custom_logger (no symbols list — cannot confirm implementation exists)
  • realtime.configuration.binary_protocol (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.get_bucket (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.list_file_buckets (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.update_bucket (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.delete_file_bucket (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.empty_bucket (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.access_bucket (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.upload (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.download (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.move (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.copy (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.remove (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.create_signed_url (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.create_signed_urls (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.create_signed_upload_url (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.upload_with_signed_url (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.update_file (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.file_exists (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.file_info (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.copy_cross_bucket (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.move_cross_bucket (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.upload_with_metadata (no symbols list — cannot confirm implementation exists)
  • storage.file_buckets.url_cache_nonce (no symbols list — cannot confirm implementation exists)

These may have been renamed, removed, or never registered. Please update the capability matrix.
See: https://github.com/supabase/sdk/blob/main/docs/capability-matrix.md

@coveralls

Copy link
Copy Markdown

Coverage Report for CI Build 31642088759

Coverage increased (+0.6%) to 84.582%

Details

  • Coverage increased (+0.6%) from the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • 7 coverage regressions across 1 file.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

7 previously-covered lines in 1 file lost coverage.

File Lines Losing Coverage Coverage
Sources/RealtimeV2/ConnectionManager.swift 7 88.94%

Coverage Stats

Coverage Status
Relevant Lines: 10462
Covered Lines: 8849
Line Coverage: 84.58%
Coverage Strength: 39.9 hits per line

💛 - Coveralls

@grdsdev
grdsdev merged commit 9212b0d into main Aug 13, 2026
47 of 56 checks passed
@grdsdev
grdsdev deleted the fix/release-please-prerelease-strategy branch August 13, 2026 09:01
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.

3 participants