Skip to content

Commit d20402c

Browse files
aaditagrawaladambuchweitzjuliusmarmingecodexMarve10s
authored
sync: merge upstream v0.0.27 (79 commits) with legacy commit inclusion (#99)
* fix: maintain reasoning selections for multiple providers (pingdotgg#2760) * [codex] Bump Effect to beta.73 and migrate compatibility APIs (pingdotgg#2840) Co-authored-by: codex <codex@users.noreply.github.com> * Add Claude Opus 4.8 support (pingdotgg#2849) * Migrate TypeScript checks to Effect TSGo (pingdotgg#2851) * Extract collection performance refactors from mobile stack (pingdotgg#2854) Co-authored-by: codex <codex@users.noreply.github.com> * Extract independent web cleanup from mobile stack (pingdotgg#2855) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> * Ensure Electron runtime is installed in release workflow (pingdotgg#2861) * T3 Code Mobile [WIP] (pingdotgg#2013) Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Julius Marminge <julius@macmini.local> Co-authored-by: Yash Singh <saiansh2525@gmail.com> * chore: add vendored reference repo subtree sync tooling (pingdotgg#2902) Co-authored-by: codex <codex@users.noreply.github.com> * Use HttpApi for Environment APIs & standardize authn/authz (pingdotgg#2858) Co-authored-by: codex <codex@users.noreply.github.com> * chore: add Alchemy reference repo subtree (pingdotgg#2918) Co-authored-by: codex <codex@users.noreply.github.com> * fix(desktop): Include standard Linux AppImage icons for Niri/Noctalia (pingdotgg#2915) * Probe Cursor models via list_available_models (pingdotgg#2428) Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Julius Marminge <julius@mac.lan> * Migrate workspace to Vite+ and pnpm (pingdotgg#2899) Co-authored-by: Julius Marminge <julius@mac.lan> Co-authored-by: Cursor Agent <cursoragent@cursor.com> * test(web): CI stability - prebundle react-dom client for browser tests (pingdotgg#2928) * fix(ssh): Surface redacted stdout for failed commands (pingdotgg#2920) * fix(desktop): Preserve SSH HTTP auth status (pingdotgg#2923) Co-authored-by: Julius Marminge <jmarminge@gmail.com> * fix: build web before desktop release packaging (pingdotgg#2934) Co-authored-by: Julius Marminge <julius@mac.lan> * ci: let setup-vp install dependencies (pingdotgg#2936) Co-authored-by: Julius Marminge <julius@mac.lan> * fix(release): surface desktop packaging subprocess output (pingdotgg#2937) Co-authored-by: Julius Marminge <julius@mac.lan> * chore: setup eas ci (pingdotgg#2911) Co-authored-by: Julius Marminge <julius@mac.lan> * fix(release): use workspace electron-builder for desktop packaging (pingdotgg#2938) Co-authored-by: Julius Marminge <julius@mac.lan> * [codex] remove duplicated pnpm root config (pingdotgg#2939) Co-authored-by: Julius Marminge <julius@mac.lan> * fix(release): install dependency closures in partial jobs (pingdotgg#2941) Co-authored-by: Julius Marminge <julius@mac.lan> * [codex] split ci workflow jobs (pingdotgg#2940) Co-authored-by: Julius Marminge <julius@mac.lan> * [codex] fix mobile native static analysis source discovery (pingdotgg#2942) Co-authored-by: Julius Marminge <julius@mac.lan> * fix(release): preserve desktop artifact arch (pingdotgg#2943) Co-authored-by: Julius Marminge <julius@mac.lan> * [codex] Fix desktop packaging patched dependencies (pingdotgg#2944) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Filter staged desktop patched dependencies (pingdotgg#2945) Co-authored-by: codex <codex@users.noreply.github.com> * fix(release): install hosted web workspace closure (pingdotgg#2949) * fix(cli): bundle patched diff parser dependency (pingdotgg#2957) Co-authored-by: Julius Marminge <julius@mac.lan> * Prevent settings layout shifts with scrollbar gutters (pingdotgg#2960) * [codex] fix release finalize install (pingdotgg#2961) Co-authored-by: Julius Marminge <julius@mac.lan> * fix(source-control): handle self-hosted GitLab, multi-account GitHub auth & azure devops web url (pingdotgg#2480) Co-authored-by: Julius Marminge <julius@mac.lan> * [codex] Avoid shell for Node executable spawns (pingdotgg#2952) Co-authored-by: Julius Marminge <julius@mac.lan> * [codex] Avoid shell for Windows environment probe (pingdotgg#2951) Co-authored-by: Julius Marminge <julius@mac.lan> * fix(composer): support spaces in file mentions (pingdotgg#2625) * [codex] Avoid shell for system executables (pingdotgg#2950) Co-authored-by: Julius Marminge <julius@mac.lan> * feat(relay): Add managed relay tunnels and APN service (pingdotgg#2837) Co-authored-by: codex <codex@users.noreply.github.com> * Restructure documentation into topical folders (pingdotgg#2963) * move * dont fail if env-file is unspecified * fallback to None when RELAY_DOMAIN is unset * implicit install from vp * forward args directly * bump alchemy to fix absolute drizzle schema out * bump alchemy to fix drizzle schema out attempt 2 * Migrate tests to vite-plus test APIs (pingdotgg#2964) * remove `vp staged` * publish deploy status on relay deploy workflow * Use pnpm for server publish workflow (pingdotgg#2966) * Rename function for publishing arguments to vp pm (pingdotgg#2967) * Remove duplicate 'publish' argument in CLI script * Refactor recoverable Effect fallbacks to orElseSucceed (pingdotgg#2968) * document vp instead of mise * link * cleanup * tip * we support cursor, duhhh * include @latest * fix(cloud): use Electron fetch for proxying Clerk IPC requests (pingdotgg#2973) * fix: handle Claude Agent SDK 0.3.x system messages to stop runtime-warning flood (pingdotgg#2872) Co-authored-by: Julius Marminge <julius0216@outlook.com> * "claude system message" instead of "runtime warning" when using 4.8 from claude code (pingdotgg#2972) * fix(desktop): stop looping macOS TCC permission prompts (pingdotgg#2745) Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> * Annotate relay error spans with schema fields (pingdotgg#2976) * [codex] Enrich relay authorization diagnostics (pingdotgg#2977) Co-authored-by: codex <codex@users.noreply.github.com> * [codex] Extract infrastructure, telemetry, and test tooling (pingdotgg#2994) Co-authored-by: codex <codex@users.noreply.github.com> * feat(grok): add Grok CLI provider via ACP (pingdotgg#2809) Co-authored-by: Julius Marminge <julius0216@outlook.com> * [codex] Fix main CI Effect test runtimes (pingdotgg#3008) Co-authored-by: codex <codex@users.noreply.github.com> * Add Claude Fable 5 model (pingdotgg#3009) Co-authored-by: codex <codex@users.noreply.github.com> * chore(release): prepare v0.0.26 * [codex] Rebrand T3 Cloud as T3 Connect (pingdotgg#3011) Co-authored-by: codex <codex@users.noreply.github.com> * Fix Clerk browser test mock (pingdotgg#3013) Co-authored-by: codex <codex@users.noreply.github.com> * chore(release): prepare v0.0.27 * Bundle DM Sans and JetBrains Mono fonts instead of Google Fonts (pingdotgg#3014) Co-authored-by: ss <ss@barekey.dev> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> * Mute icons in labeled controls and suppress popup focus rings (pingdotgg#3015) Co-authored-by: ss <ss@barekey.dev> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> * Polish dialog/alert surfaces and unauthenticated provider banner (pingdotgg#3016) Co-authored-by: ss <ss@barekey.dev> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> * fix(marketing) : marketing showing wrong icons on linux (pingdotgg#2696) Co-authored-by: Julius Marminge <julius0216@outlook.com> * Misc markdown styling improvements (pingdotgg#3017) Co-authored-by: ss <ss@barekey.dev> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: cursor[bot] <206951365+cursor[bot]@users.noreply.github.com> --------- Co-authored-by: Adam Buchweitz <312235+adambuchweitz@users.noreply.github.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Ibrahim Elkamali <126423069+Marve10s@users.noreply.github.com> Co-authored-by: Theo Browne <me@t3.gg> Co-authored-by: Julius Marminge <julius@macmini.local> Co-authored-by: Yash Singh <saiansh2525@gmail.com> Co-authored-by: Mike Olson <mwolson@member.fsf.org> Co-authored-by: Julius Marminge <julius@mac.lan> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Julius Marminge <jmarminge@gmail.com> Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com> Co-authored-by: Abdul Azeez <abdulazeez44@gmail.com> Co-authored-by: Peter Hozák <peter.hozak@gmail.com> Co-authored-by: Ishan <ishansachu1@gmail.com> Co-authored-by: Milosz Jankiewicz <25470423+Jaaneek@users.noreply.github.com> Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: ss <ss@barekey.dev> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Ruzbyte <104939854+ruzbyte@users.noreply.github.com> Co-authored-by: cursor[bot] <206951365+cursor[bot]@users.noreply.github.com> Co-authored-by: aaditagrawal <tech@aaditagrawal.com>
1 parent 23b9994 commit d20402c

4,585 files changed

Lines changed: 1038084 additions & 18637 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Optional: T3 Connect source builds
2+
# Leave these unset to disable optional T3 Connect features in local source builds.
3+
# Release builds inject their public values at build time. Do not add server-side
4+
# secrets to this file.
5+
6+
# Get these from the Clerk Dashboard under API keys, JWT templates, and OAuth applications.
7+
# T3CODE_CLERK_PUBLISHABLE_KEY=pk_test_...
8+
# T3CODE_CLERK_JWT_TEMPLATE=t3-relay
9+
# T3CODE_CLERK_CLI_OAUTH_CLIENT_ID=oauthapp_...
10+
11+
# Get this from your relay deployment. `infra/relay` deploys update it automatically.
12+
# T3CODE_RELAY_URL=https://relay.example.com
13+
14+
# Public, ingest-only mobile OpenTelemetry configuration.
15+
# T3CODE_MOBILE_OTLP_TRACES_URL=https://api.axiom.co/v1/traces
16+
# T3CODE_MOBILE_OTLP_TRACES_DATASET=t3-code-mobile-traces-dev
17+
# T3CODE_MOBILE_OTLP_TRACES_TOKEN=xaat-...

.github/workflows/ci.yml

Lines changed: 130 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,10 @@ on:
77
- main
88

99
jobs:
10-
quality:
11-
name: Format, Lint, Typecheck, Test, Browser Test, Build
10+
check:
11+
name: Check
1212
runs-on: ubuntu-24.04
13-
# 45 (was 30): the Playwright browser cache starts cold, so the first
14-
# successful run must do a full ~20m chromium install (apt deps + 167MB
15-
# download) before it can populate the cache. Subsequent runs hit the cache
16-
# and finish well under 30m.
17-
timeout-minutes: 45
13+
timeout-minutes: 30
1814
env:
1915
# The default Electron binary source (GitHub releases) was returning a
2016
# partial/empty archive on the runner, leaving node_modules/electron
@@ -25,108 +21,158 @@ jobs:
2521
- name: Checkout
2622
uses: actions/checkout@v6
2723

28-
- name: Setup Bun
29-
uses: oven-sh/setup-bun@v2
30-
with:
31-
bun-version-file: package.json
32-
33-
- name: Setup Node
34-
uses: actions/setup-node@v6
24+
- name: Setup Vite+
25+
uses: voidzero-dev/setup-vp@v1
3526
with:
3627
node-version-file: package.json
28+
cache: true
29+
run-install: true
3730

38-
- name: Cache Bun and Turbo
31+
- name: Cache Electron binary
3932
uses: actions/cache@v5
4033
with:
41-
path: |
42-
~/.bun/install/cache
43-
.turbo
44-
key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}-${{ hashFiles('turbo.json') }}
34+
path: ~/.cache/electron
35+
key: ${{ runner.os }}-electron-${{ hashFiles('pnpm-lock.yaml') }}
4536
restore-keys: |
46-
${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}-
37+
${{ runner.os }}-electron-
4738
48-
- name: Cache Playwright browsers
49-
uses: actions/cache@v5
39+
# Best-effort: the Electron archive intermittently extracts incompletely
40+
# on GitHub-hosted runners; the desktop build below only needs the JS
41+
# pipeline, not the binary.
42+
- name: Ensure Electron runtime is installed
43+
continue-on-error: true
44+
run: vp run --filter @t3tools/desktop ensure:electron
45+
46+
- name: Check
47+
run: vp check
48+
49+
- name: Typecheck
50+
run: vpr typecheck
51+
52+
- name: Build desktop pipeline
53+
run: vp run build:desktop
54+
55+
- name: Verify preload bundle output
56+
run: |
57+
test -f apps/desktop/dist-electron/preload.cjs
58+
grep -nE "desktopBridge|getLocalEnvironmentBootstrap|PICK_FOLDER_CHANNEL|wsUrl" apps/desktop/dist-electron/preload.cjs
59+
60+
test:
61+
name: Test
62+
runs-on: ubuntu-24.04
63+
timeout-minutes: 30
64+
env:
65+
ELECTRON_MIRROR: https://npmmirror.com/mirrors/electron/
66+
steps:
67+
- name: Checkout
68+
uses: actions/checkout@v6
69+
70+
- name: Setup Vite+
71+
uses: voidzero-dev/setup-vp@v1
5072
with:
51-
path: ~/.cache/ms-playwright
52-
key: ${{ runner.os }}-playwright-${{ hashFiles('bun.lock') }}
53-
restore-keys: |
54-
${{ runner.os }}-playwright-
73+
node-version-file: package.json
74+
cache: true
75+
run-install: true
5576

5677
- name: Cache Electron binary
5778
uses: actions/cache@v5
5879
with:
5980
path: ~/.cache/electron
60-
key: ${{ runner.os }}-electron-${{ hashFiles('bun.lock') }}
81+
key: ${{ runner.os }}-electron-${{ hashFiles('pnpm-lock.yaml') }}
6182
restore-keys: |
6283
${{ runner.os }}-electron-
6384
64-
- name: Install dependencies
65-
run: bun install --frozen-lockfile
66-
67-
# apps/desktop tests need Electron's prebuilt binary. On this runner the
68-
# downloaded archive extracts incompletely (a partial dist/ with no
69-
# executable), regardless of download source, so the binary install is
70-
# best-effort here and the desktop test step below is non-blocking. Give
71-
# the install a couple of tries (helps when the cache above is warm) but
72-
# never fail the job on it.
73-
- name: Install Electron binary (best-effort)
85+
- name: Ensure Electron runtime is installed
7486
continue-on-error: true
75-
working-directory: apps/desktop
76-
run: |
77-
for attempt in 1 2 3; do
78-
if node -e "require('electron')" >/dev/null 2>&1; then
79-
echo "Electron binary present."
80-
break
81-
fi
82-
echo "Electron binary missing (attempt $attempt/3); reinstalling…"
83-
node node_modules/electron/install.js || true
84-
done
85-
86-
- name: Format
87-
run: bun run fmt:check
88-
89-
- name: Lint
90-
run: bun run lint
91-
92-
- name: Typecheck
93-
run: bun run typecheck
87+
run: vp run --filter @t3tools/desktop ensure:electron
9488

9589
- name: Test
96-
run: bunx turbo run test --filter='!@t3tools/desktop'
90+
run: vp run -r --filter '!@t3tools/desktop' test
9791

98-
# Non-blocking: Electron's binary cannot currently be installed on the
99-
# runner (see the best-effort step above), so these would always fail for
100-
# environmental reasons. They still run and report; re-make this blocking
101-
# once Electron installs cleanly in CI.
92+
# Non-blocking: Electron's binary cannot currently be installed reliably
93+
# on GitHub-hosted runners (see the best-effort step above), so these
94+
# would fail for environmental reasons. They still run and report;
95+
# re-make this blocking once Electron installs cleanly in CI.
10296
- name: Desktop tests (non-blocking — Electron unavailable on CI)
10397
continue-on-error: true
104-
run: bunx turbo run test --filter='@t3tools/desktop'
105-
106-
# The Playwright browser download intermittently stalls on the runner
107-
# (the chromium archive finishes, then a follow-up fetch hangs for the
108-
# whole job). Cap the step so a stall can't hang the job, and keep it (and
109-
# the browser test) non-blocking so a flaky download doesn't fail CI. They
110-
# still run and report when the network cooperates; the browser cache
111-
# above keeps successful runs fast.
98+
run: vp run --filter @t3tools/desktop test
99+
100+
test_browser:
101+
name: Test Browser
102+
runs-on: ubuntu-24.04
103+
timeout-minutes: 30
104+
steps:
105+
- name: Checkout
106+
uses: actions/checkout@v6
107+
108+
- name: Setup Vite+
109+
uses: voidzero-dev/setup-vp@v1
110+
with:
111+
node-version-file: package.json
112+
cache: true
113+
run-install: true
114+
115+
- name: Cache Playwright browsers
116+
uses: actions/cache@v5
117+
with:
118+
path: ~/.cache/ms-playwright
119+
key: ${{ runner.os }}-playwright-${{ hashFiles('pnpm-lock.yaml') }}
120+
restore-keys: |
121+
${{ runner.os }}-playwright-
122+
123+
# The Playwright browser download intermittently stalls on GitHub-hosted
124+
# runners. Cap the step so a stall can't hang the job, and keep it (and
125+
# the browser tests) non-blocking so a flaky download doesn't fail CI.
126+
# They still run and report when the network cooperates; the browser
127+
# cache above keeps successful runs fast.
112128
- name: Install browser test runtime
113129
continue-on-error: true
114130
timeout-minutes: 12
115-
run: |
116-
cd apps/web
117-
bunx playwright install --with-deps chromium
131+
run: vp run --filter @t3tools/web test:browser:install
118132

119-
- name: Browser test
133+
- name: Browser test / Chat view
120134
continue-on-error: true
121-
run: bun run --cwd apps/web test:browser
135+
working-directory: apps/web
136+
run: vp test run --mode browser --browser=chromium src/components/ChatView.browser.tsx
122137

123-
- name: Build desktop pipeline
124-
run: bun run build:desktop
138+
- name: Browser test / Chat markdown
139+
continue-on-error: true
140+
working-directory: apps/web
141+
run: vp test run --mode browser --browser=chromium src/components/ChatMarkdown.browser.tsx
125142

126-
- name: Verify preload bundle output
143+
- name: Browser test / Components
144+
continue-on-error: true
145+
working-directory: apps/web
127146
run: |
128-
test -f apps/desktop/dist-electron/preload.cjs
129-
grep -nE "desktopBridge|getLocalEnvironmentBootstrap|PICK_FOLDER_CHANNEL|wsUrl" apps/desktop/dist-electron/preload.cjs
147+
vp test run --mode browser --browser=chromium \
148+
src/components/GitActionsControl.browser.tsx \
149+
src/components/KeybindingsToast.browser.tsx \
150+
src/components/ThreadTerminalDrawer.browser.tsx \
151+
src/components/chat/MessagesTimeline.browser.tsx \
152+
src/components/chat/ProviderModelPicker.browser.tsx \
153+
src/components/chat/CompactComposerControlsMenu.browser.tsx \
154+
src/components/settings/SettingsPanels.browser.tsx
155+
156+
mobile_native_static_analysis:
157+
name: Mobile Native Static Analysis
158+
runs-on: macos-26
159+
timeout-minutes: 20
160+
steps:
161+
- name: Checkout
162+
uses: actions/checkout@v6
163+
164+
- name: Setup Vite+
165+
uses: voidzero-dev/setup-vp@v1
166+
with:
167+
node-version-file: package.json
168+
cache: true
169+
run-install: true
170+
171+
- name: Install mobile native static analysis tools
172+
run: brew bundle install --file apps/mobile/Brewfile
173+
174+
- name: Lint mobile native sources
175+
run: vp run lint:mobile
130176

131177
release_smoke:
132178
name: Release Smoke
@@ -136,28 +182,12 @@ jobs:
136182
- name: Checkout
137183
uses: actions/checkout@v6
138184

139-
- name: Setup Bun
140-
uses: oven-sh/setup-bun@v2
141-
with:
142-
bun-version-file: package.json
143-
144-
- name: Setup Node
145-
uses: actions/setup-node@v6
185+
- name: Setup Vite+
186+
uses: voidzero-dev/setup-vp@v1
146187
with:
147188
node-version-file: package.json
148-
149-
- name: Cache Bun and Turbo
150-
uses: actions/cache@v5
151-
with:
152-
path: |
153-
~/.bun/install/cache
154-
.turbo
155-
key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}-${{ hashFiles('turbo.json') }}
156-
restore-keys: |
157-
${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}-
158-
159-
- name: Install dependencies
160-
run: bun install --frozen-lockfile
189+
cache: true
190+
run-install: true
161191

162192
- name: Exercise release-only workflow steps
163-
run: bun run scripts/release-smoke.ts
193+
run: node scripts/release-smoke.ts

.github/workflows/deploy-relay.yml

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
name: Deploy T3 Connect relay
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
permissions:
9+
contents: read
10+
id-token: none
11+
statuses: write
12+
13+
concurrency:
14+
group: relay-production
15+
cancel-in-progress: false
16+
17+
jobs:
18+
deploy_relay:
19+
name: Deploy production relay
20+
runs-on: blacksmith-8vcpu-ubuntu-2404
21+
timeout-minutes: 15
22+
environment:
23+
name: production
24+
env:
25+
CLOUDFLARE_ACCOUNT_ID: ${{ vars.CLOUDFLARE_ACCOUNT_ID }}
26+
PLANETSCALE_ORGANIZATION: ${{ vars.PLANETSCALE_ORGANIZATION }}
27+
AXIOM_ORG_ID: ${{ vars.AXIOM_ORG_ID }}
28+
RELAY_DOMAIN: ${{ vars.RELAY_DOMAIN }}
29+
RELAY_API_ZONE_NAME: ${{ vars.RELAY_API_ZONE_NAME }}
30+
RELAY_TUNNEL_ZONE_NAME: ${{ vars.RELAY_TUNNEL_ZONE_NAME }}
31+
CLERK_PUBLISHABLE_KEY: ${{ vars.CLERK_PUBLISHABLE_KEY }}
32+
CLERK_JWT_AUDIENCE: ${{ vars.CLERK_JWT_AUDIENCE }}
33+
APNS_ENVIRONMENT: ${{ vars.APNS_ENVIRONMENT }}
34+
APNS_TEAM_ID: ${{ vars.APNS_TEAM_ID }}
35+
APNS_KEY_ID: ${{ vars.APNS_KEY_ID }}
36+
APNS_BUNDLE_ID: ${{ vars.APNS_BUNDLE_ID }}
37+
ALCHEMY_TELEMETRY_DISABLED: "1"
38+
steps:
39+
- name: Checkout
40+
uses: actions/checkout@v6
41+
42+
- name: Setup Vite+
43+
uses: voidzero-dev/setup-vp@v1
44+
with:
45+
node-version-file: package.json
46+
cache: true
47+
run-install: true
48+
49+
- name: Deploy production relay stage
50+
id: deploy
51+
run: vp run --filter t3code-relay deploy --stage prod --yes --github-output
52+
env:
53+
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
54+
PLANETSCALE_API_TOKEN_ID: ${{ secrets.PLANETSCALE_API_TOKEN_ID }}
55+
PLANETSCALE_API_TOKEN: ${{ secrets.PLANETSCALE_API_TOKEN }}
56+
AXIOM_TOKEN: ${{ secrets.AXIOM_TOKEN }}
57+
CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY }}
58+
APNS_PRIVATE_KEY: ${{ secrets.APNS_PRIVATE_KEY }}
59+
60+
- name: Publish relay deploy commit status
61+
uses: actions/github-script@v8
62+
with:
63+
script: |
64+
const result = "${{ steps.deploy.outputs.result }}";
65+
const changed = "${{ steps.deploy.outputs.changed }}" === "true";
66+
const description = changed
67+
? "Relay production deploy applied infrastructure changes."
68+
: result === "noop"
69+
? "Relay production deploy was a no-op."
70+
: `Relay production deploy completed with result: ${result}.`;
71+
72+
await github.rest.repos.createCommitStatus({
73+
owner: context.repo.owner,
74+
repo: context.repo.repo,
75+
sha: context.sha,
76+
state: "success",
77+
context: "Relay deploy / production",
78+
description,
79+
target_url: `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`,
80+
});

0 commit comments

Comments
 (0)