diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 93fcd9fce724..0a49fc6be627 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -96,7 +96,7 @@ jobs: test: name: Test runs-on: ubuntu-24.04 - timeout-minutes: 10 + timeout-minutes: 15 steps: - name: Checkout uses: actions/checkout@v6 diff --git a/apps/server/src/provider/security/CommandCenterProviderIsolation.test.ts b/apps/server/src/provider/security/CommandCenterProviderIsolation.test.ts index 8569a539453f..a37d649bcf31 100644 --- a/apps/server/src/provider/security/CommandCenterProviderIsolation.test.ts +++ b/apps/server/src/provider/security/CommandCenterProviderIsolation.test.ts @@ -253,7 +253,10 @@ it.layer(NodeServices.layer)("CommandCenter provider runtime isolation", (it) => const makeLayout = Effect.fn("CommandCenterProviderIsolation.test.makeLayout")(function* () { const fileSystem = yield* FileSystem.FileSystem; const path = yield* Path.Path; - const baseDir = yield* fileSystem.makeTempDirectoryScoped({ prefix: "cc-isolation-" }); + const temporaryBaseDir = yield* fileSystem.makeTempDirectoryScoped({ + prefix: "cc-isolation-", + }); + const baseDir = yield* fileSystem.realPath(temporaryBaseDir); const worktreesDir = path.join(baseDir, "worktrees"); const repositoriesDir = path.join(baseDir, "repositories"); yield* fileSystem.makeDirectory(worktreesDir, { recursive: true }); diff --git a/apps/server/src/server.test.ts b/apps/server/src/server.test.ts index 7cdf9ba4a520..35003c8e3c84 100644 --- a/apps/server/src/server.test.ts +++ b/apps/server/src/server.test.ts @@ -3425,7 +3425,12 @@ it.layer(NodeServices.layer)("server router seam", (it) => { }).pipe(Effect.provide(NodeHttpServer.layerTest)), ); - for (const desktopOrigin of ["t3code://app", "t3code-dev://app"]) { + for (const desktopOrigin of [ + "commandcenter://app", + "commandcenter-dev://app", + "t3code://app", + "t3code-dev://app", + ]) { it.effect(`allows credentialed preflights from ${desktopOrigin} in development`, () => Effect.gen(function* () { yield* buildAppUnderTest({ diff --git a/apps/server/src/server.ts b/apps/server/src/server.ts index 51fa91a33bf8..711b50746695 100644 --- a/apps/server/src/server.ts +++ b/apps/server/src/server.ts @@ -412,6 +412,7 @@ const AutomationRecoveryCoordinatorLayerLive = AutomationRecoveryCoordinator.lay const RunLifecycleLayerLive = RunLifecycle.layer.pipe( Layer.provide(ProviderLayerLive), Layer.provide(OrchestrationProjectionSnapshotQueryLive), + Layer.provide(OrchestrationLayerLive), Layer.provide(PersistenceLayerLive), ); diff --git a/apps/web/vercel.ts b/apps/web/vercel.ts index 12a823a360e4..7f5a4420a121 100644 --- a/apps/web/vercel.ts +++ b/apps/web/vercel.ts @@ -1,27 +1,4 @@ -import { matchers, routes, type Transform, type VercelConfig } from "@vercel/config/v1"; - -const ROUTER_HOST = "app.t3.codes"; -const HOSTED_WEB_CHANNEL_COOKIE = "t3code_web_channel"; -const LATEST_ORIGIN = "https://latest.app.t3.codes"; -const NIGHTLY_ORIGIN = "https://nightly.app.t3.codes"; -const CLEAN_CHANNEL_QUERY_TRANSFORMS = [ - { - type: "request.query", - op: "delete", - target: { key: "channel" }, - }, -] satisfies Transform[]; - -function channelCookie(channel: "latest" | "nightly"): string { - return [ - `${HOSTED_WEB_CHANNEL_COOKIE}=${channel}`, - "Path=/", - "Max-Age=31536000", - "HttpOnly", - "Secure", - "SameSite=Lax", - ].join("; "); -} +import { routes, type VercelConfig } from "@vercel/config/v1"; export const config: VercelConfig = { buildCommand: @@ -30,37 +7,6 @@ export const config: VercelConfig = { deploymentEnabled: false, }, installCommand: - "npm install -g vite-plus && vp install --ignore-scripts --filter '@t3tools/scripts...' --filter '@t3tools/web...'", - routes: [ - { - src: "/__t3code/channel", - has: [matchers.query("channel", "nightly")], - transforms: CLEAN_CHANNEL_QUERY_TRANSFORMS, - headers: { - Location: "/", - "Set-Cookie": channelCookie("nightly"), - }, - status: 302, - }, - { - src: "/__t3code/channel", - transforms: CLEAN_CHANNEL_QUERY_TRANSFORMS, - headers: { - Location: "/", - "Set-Cookie": channelCookie("latest"), - }, - status: 302, - }, - { - src: "/(.*)", - has: [matchers.host(ROUTER_HOST), matchers.cookie(HOSTED_WEB_CHANNEL_COOKIE, "nightly")], - dest: `${NIGHTLY_ORIGIN}/$1`, - }, - { - src: "/(.*)", - has: [matchers.host(ROUTER_HOST)], - dest: `${LATEST_ORIGIN}/$1`, - }, - ], + "npm install -g vite-plus && vp install --filter '@t3tools/scripts...' --filter '@t3tools/web...'", rewrites: [routes.rewrite("/(.*)", "/index.html")], };