chore(release): publish packages - #1721
Merged
Merged
Conversation
Contributor
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
## What Makes the example integration tests pass, which blocks the release pull request (#1642). That workflow is gated to `chore(release)` titles, so #1642 was the first time it ever ran: every earlier trigger was skipped (49 skipped runs, 0 completed). Six separate causes, one per platform group. ## 1. The wait matched the dialog instead of the list (linux, windows, ios) Those three failed at the same line: ``` The finder "Found 0 widgets with type "Checkbox" descending from widgets with type "ListTile" that are ancestors of widgets with text "E2E task 1785919389726467": []" (used in a call to "tap()") could not find any matching widgets. ``` After tapping **Create** the test waited for `find.text(createdTitle)`, which also matches an `EditableText` holding that title, which is what the dialog still has while it animates away. The wait returned about 100 ms after the tap, long before the insert round trip finished. It passes against a local stack because the insert lands inside that first frame; reproduced by putting a 500 ms delay in front of the local stack. The waits now use the tile, `find.widgetWithText(ListTile, title)`, which a dialog cannot satisfy. ## 2. The macOS apps could not open a socket (macos) ``` ClientException with SocketException: Connection failed (OS Error: Operation not permitted, errno = 1), address = ...trycloudflare.com ``` `flutter test -d macos` runs a real sandboxed app bundle, and `flutter create` grants it `com.apple.security.network.server` but not `com.apple.security.network.client`, so every outgoing connection is denied. The same would happen against `127.0.0.1`. The scaffolding step now adds the client entitlement. The other macOS checks are unaffected because `test.yml` runs `flutter test` on the Dart VM, with no bundle and so no sandbox. ## 3. The passkeys example could not build on Apple platforms (macos, ios) ``` GeneratedPluginRegistrant.swift:20:3: error: 'PasskeysPlugin' is only available in macOS 13.5 or newer ``` `passkeys_darwin` annotates its plugin `@available(macOS 13.5, iOS 16.0, *)`, while the scaffolding writes 10.15 and 13.0. Both deployment targets are now raised for that example. ## 4. The Android emulator ran without KVM (android) ``` ProbeKVM: This user doesn't have permissions to use KVM (/dev/kvm). WARNING | x86_64 emulation may not work without hardware acceleration! Disabling Linux hardware acceleration. ... cmd: Failure calling service input: Broken pipe (32) ``` It spent over twelve minutes booting under software emulation, then stopped responding, before any test ran. Added the udev rule from the `android-emulator-runner` readme; the emulator now boots in about 90 seconds. ## 5. web passed but the job never finished (web) Both suites reported `All tests passed`, then the step idled until the 45 minute job timeout. The runner script itself never exits: `_waitForPort` called `socket.close()`, which only shuts the sending side down, and since nothing reads that socket the resource keeps the process alive. `lsof` on the hung process shows the `CLOSED` socket still holding an fd. Only the web target probes a port, which is why only web hung. `socket.destroy()` releases it and the script exits. ## 6. The keyboard hid the task under test (android) Android is the only target with a soft keyboard. The create dialog opens it, and the dialog route then restores focus to the search field the test typed in earlier, so it never closes: ``` view: Size(411.4, 890.3) viewInsets.bottom: 312.4 visible area ends at 577.9 checkbox rect: LTRB(16.0, 589.8, 64.0, 637.8) -> behind the keyboard Warning: A call to tap() ... derived an Offset (40.0, 613.8) that would not hit test ``` The new task defaults to Low priority and so sorts last, leaving it outside the visible part of the shortened list: on a phone the taps missed, and on the 320x640 screen the CI emulator actually uses (`avdmanager` runs with no hardware profile, giving `androidboot.qemu.skin=320x640`) the tile was never even built. The test now searches for the task it is working on, so it is the only row on screen at any size, which is also how a user would find it again. Asserting that the row leaves the list after the rename, while the old title is still in the filter, additionally proves the write reached the server. Two rejected alternatives, both disproven by trying them: unfocusing in the app does nothing because focus restoration happens afterwards, and scrolling to the tile overshoots, since it only scrolls one way and pinned the list at the bottom after the rename. Separately, the new-task dialog overflowed by 27 pixels with the keyboard up and pushed its actions off screen, so its content is now scrollable. ## Also - Dropped `edited` from the trigger types. A bot rewriting the description fired it, and with `cancel-in-progress` that killed a running matrix and started it over; `coderabbitai` did exactly that mid-run here. - The jobs also run when a pull request carries the `integration tests` label, so the suite can be exercised outside a release. That is how this pull request verified itself. - Timeouts in the CRUD test now print what is on screen, which is what separated "the dialog stayed open" from "the row never arrived". - The simulator is wiped before the iOS run. Those tests hung waiting for the app's VM service on five of six runs, which is reported to come from stale simulator state. Honest status: mitigation for a flake, not a proven fix. ## Testing All six platforms and both examples green: https://github.com/supabase/supabase-flutter/actions/runs/31004067346 Locally, against a stack behind a delaying proxy: - CRUD and passkeys suites on web at 500 ms and 1000 ms latency. - CRUD suite on an emulator with CI's 320x640 screen, three consecutive passes, and on a pixel_6. - `melos format` and `melos analyze` clean from the repository root.
spydon
force-pushed
the
release/gotrue-2.27.2
branch
from
August 14, 2026 15:09
b1a1c17 to
0c9dcf7
Compare
- gotrue@2.27.2 - supabase@2.16.1 - supabase_flutter@2.17.2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release for the
gotrue2.27.x maintenance line, targetingrelease/gotrue-2.27.x. Ships the WasmSession.fromJsonfix merged in #1719.Versions
gotruesupabasesupabase_flutterThe two dependent bumps are required rather than incidental. The published
supabase2.16.0 pinsgotrue: 2.27.1exactly andsupabase_flutter2.17.1 pinssupabase: 2.16.0exactly, so publishinggotrueon its own would not reach anyone using the higher level packages. The release commit rewrites those pins to 2.27.2 and 2.16.1 respectively.The example integration tests needed #1643 backported
This branch is cut at the
gotrue-v2.27.1tag, which is commit #1642, and #1643 landed immediately after it. That is the commit that made these tests pass in the first place, so the branch sits at the last commit where they were still broken.The suite is gated on
startsWith(github.event.pull_request.title, 'chore(release)'), so it only runs on release pull requests. That is why #1719 skipped it and why this pull request is the first thing on the branch to trigger it, in the same way #1642 was the first trigger ever.The first run here failed on four platforms at three different lines, matching the causes #1643 describes:
linuxat line 76,find.text(createdTitle)matched the create dialog's own text field while it was still animating away, so the followingListTilelookup had nothing to descend from.macosat line 50, the seededBook flightsrow was below the fold.windowsat line 97, the renamed row still matched the old title.1862f74cis cherry picked here unchanged. Its parent is exactly this branch's base commit, so it applied without conflict.storage_client is deliberately excluded
#1719 was squash merged, so its single
fix(gotrue):commit also touchespackages/storage_client/lib/src/storage_client.dartand thesupabase_flutterexample's Gradle files. Left alone,melos versiontherefore also proposedstorage_client2.8.1.That bump was suppressed with
--ignore storage_client, because the only change to that package is an// ignore: use_super_parameterscomment added to keep the pipeline green. Publishing it would ship a no-op version whose changelog entry reads "FIX(gotrue): parse expires_in as num in Session.fromJson", and would consume 2.8.1 on a line wheremainis still at 2.8.0.Before publishing
release-tag.ymlonly triggers on pushes tomain, so merging this will not create the tags. They need to be pushed manually, or that workflow needs aworkflow_dispatchtrigger, beforerelease-publish.ymlcan be dispatched againstgotrue-v2.27.2.How this was generated
melos version --yes --ignore="storage_client" --no-git-tag-version, matching the flagsrelease-prepare.ymluses apart from the added filter, which the workflow has no input for.dart pub getresolves the workspace anddart analyze packages/gotrueis clean at these versions.