From fea24b1fe08d91c779b62e431f77f446ca798dfe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Nov 2026 05:39:48 +0000 Subject: [PATCH 1/2] chore(stack): bump edge-runtime to v1.78.0-r0 --- apps/cli/src/shared/services/Dockerfile | 2 +- packages/stack/src/Artifacts.ts | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/cli/src/shared/services/Dockerfile b/apps/cli/src/shared/services/Dockerfile index 32e0f9dc67..36fbb28d80 100644 --- a/apps/cli/src/shared/services/Dockerfile +++ b/apps/cli/src/shared/services/Dockerfile @@ -25,7 +25,7 @@ FROM supabase/studio:2026.11.02-sha-a05e7ec AS studio FROM darthsim/imgproxy:v3.26.0 AS imgproxy -FROM supabase/edge-runtime:v1.77.9 AS edgeruntime +FROM supabase/edge-runtime:v1.78.0 AS edgeruntime FROM timberio/vector:0.58.0-alpine AS vector diff --git a/packages/stack/src/Artifacts.ts b/packages/stack/src/Artifacts.ts index e5ec4eb9f3..6d9d1341de 100644 --- a/packages/stack/src/Artifacts.ts +++ b/packages/stack/src/Artifacts.ts @@ -541,23 +541,23 @@ const definitions: Readonly> = { functions: definition( "edge-runtime", { - upstreamVersion: "v1.77.9", + upstreamVersion: "v1.78.0", revision: 0, image: - "ghcr.io/supabase/cli/edge-runtime:v1.77.9-r0@sha256:1d2d920e96fe72bdff308f855a30a60a51baf4d9c3b396c16b36eb193daf6f61", - upstreamImage: "supabase/edge-runtime:v1.77.9", + "ghcr.io/supabase/cli/edge-runtime:v1.78.0-r0@sha256:6b3ed25e95a04a6e5b4530cc7783497d00a208dd91a41984812d25fb358f6681", + upstreamImage: "supabase/edge-runtime:v1.78.0", natives: { "darwin-arm64": { - archive: "d2d14cadc53254416c1ecc89dd0575efd4733cb72025ff97495d3a87980acf39", - manifest: "1d4ae4b525a5b6f5729e811664dbfdf60bb9bc453a5e71abf6947253c20563b0", + archive: "249f6852e06c5121f2a8697fcb9748273200b3392e3d884c0e9bb91f18101934", + manifest: "96bee225e1bcecc4ba3e0aeecf198753e9aa70ea38b6d040e5c7730e28071024", }, "linux-amd64": { - archive: "d61748740756c192d83b2d5e6960bc20e2eb748fd7aee7620bfd4bf5854013b6", - manifest: "a25c0f4e9bfaa1583314906e1cb0ce06b5ac0a78f349e2db5f08a1ed669ce85e", + archive: "57d46f134ef3c47f1d6052dbd24d11a59df40f29581843525bd235f37b95c26d", + manifest: "036dda29fda1dc331a4fca5587fad85e6048f416eeed3859bb9b04c4eec98b6a", }, "linux-arm64": { - archive: "5e247316b1965f84d8748de0da92e4c8d2af20d6d5e6dccdf5da35e7e0dfbff4", - manifest: "8e259a40d00950f311082b89517ebc04323d3c8106432c88f64e59f61c5c860e", + archive: "1b58ddc6d9eda6d6094f381386e0eff668391a757c2741019400a1c82ec66445", + manifest: "80e3bf9c2a0c93956ab4747adcc85f02316682d74bf02bfca37c3e5a571d5ed0", }, }, }, From 946433bc22fdf1800506217b3646cb0e274eda15 Mon Sep 17 00:00:00 2001 From: Julien Goux Date: Thu, 5 Nov 2026 08:54:24 +0100 Subject: [PATCH 2/2] test(cli): wait for the stalled sso request before advancing the clock --- .../src/commands/sso/list/list.integration.test.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/apps/cli/src/commands/sso/list/list.integration.test.ts b/apps/cli/src/commands/sso/list/list.integration.test.ts index d4db9de584..d15e9891db 100644 --- a/apps/cli/src/commands/sso/list/list.integration.test.ts +++ b/apps/cli/src/commands/sso/list/list.integration.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "@effect/vitest"; -import { Cause, Effect, Exit, Fiber, FileSystem, Option, Schema } from "effect"; +import { Cause, Effect, Exit, Fiber, FileSystem, Latch, Option, Schema } from "effect"; import * as HttpClientResponse from "effect/http/HttpClientResponse"; import { TestClock } from "effect/testing"; @@ -88,6 +88,7 @@ function setup(opts: SetupOpts = {}) { const status = opts.status ?? 200; const body = opts.body ?? { items: [PROVIDER_ITEM] }; const gate = opts.upgradeGate; + const providersStalled = Latch.makeUnsafe(false); const api = mockCommandPlatformApi({ network: opts.network, @@ -95,7 +96,7 @@ function setup(opts: SetupOpts = {}) { const url = request.url; if (url.includes("/config/auth/sso/providers")) { if (opts.stallProviders === true) { - return Effect.never; + return Effect.andThen(providersStalled.open, Effect.never); } return Effect.succeed(jsonResponse(request, status, body)); } @@ -155,7 +156,7 @@ function setup(opts: SetupOpts = {}) { outputFlag: opts.outputFlag === undefined ? Option.none() : Option.some(opts.outputFlag), }); - return { layer, out, api, analytics, telemetry, cache }; + return { layer, out, api, analytics, telemetry, cache, providersStalled }; } describe("sso list integration", () => { @@ -395,7 +396,7 @@ describe("sso list integration", () => { }); it.effect("fails a stalled list within two attempts and warns about the project status", () => { - const { layer, out, api } = setup({ + const { layer, out, api, providersStalled } = setup({ stallProviders: true, projectStatus: "INACTIVE", apiMaxRetries: Option.none(), @@ -404,7 +405,9 @@ describe("sso list integration", () => { const fiber = yield* Effect.forkChild( Effect.exit(ssoList({ remote: Option.none(), projectRef: Option.none() })), ); - for (let second = 0; second < 25; second++) { + // Request timeouts are scheduled only once the handler's real filesystem work is done. + yield* providersStalled.await; + for (let second = 0; second < 30 && fiber.pollUnsafe() === undefined; second++) { yield* TestClock.adjust("1 second"); } const exit = yield* Fiber.join(fiber);