Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
210 commits
Select commit Hold shift + click to select a range
30c37ec
fix(admin): Analytics Engine delivery stats IF() Double vs Null (#3252)
riderx Sep 3, 2026
c0721fa
chore(release): 12.266.5
github-actions[bot] Sep 3, 2026
f2e03ec
fix(frontend): show clear trial and plan status in the navbar (#3254)
riderx Sep 3, 2026
a5e2b7d
chore(release): 12.266.6
github-actions[bot] Sep 3, 2026
2ccc0ed
feat(observe): query API, CLI, and MCP for actionable metrics (#3245)
riderx Sep 3, 2026
4549e00
chore(release): 12.267.0
github-actions[bot] Sep 3, 2026
f32849a
chore(release): 8.47.0
github-actions[bot] Sep 3, 2026
33af134
chore(auto-sync): update supabase schema and generated types
github-actions[bot] Sep 3, 2026
2a78c2c
fix: remove 404 redirect (#3255)
riderx Sep 3, 2026
45de5f5
fix(files): fail open when deleted-bundle lookup errors (#3257)
riderx Sep 4, 2026
c7c9409
fix(updates): block soft-deleted bundles and unlink channel targets (…
riderx Sep 4, 2026
2596fc5
chore(release): 12.267.1
github-actions[bot] Sep 4, 2026
62dd028
Merge branch 'main' of https://github.com/Cap-go/capgo.app
github-actions[bot] Sep 4, 2026
7d363cd
fix(frontend): explain skipped organizations on CLI login page (#3256)
WcaleNieWolny Sep 7, 2026
a3d3285
chore(release): 12.267.2
github-actions[bot] Sep 7, 2026
1a983dd
feat(notifications): hosted APNs .p8 and FCM JSON upload in console (…
riderx Sep 7, 2026
b82bda0
chore(release): 12.268.0
github-actions[bot] Sep 7, 2026
d2338c5
chore(auto-sync): update supabase schema and generated types
github-actions[bot] Sep 7, 2026
d3e6f38
fix(frontend): say CLI login keys can be rotated later (#3272)
WcaleNieWolny Sep 7, 2026
4d99af4
chore(release): 12.268.1
github-actions[bot] Sep 7, 2026
ae779b8
fix(cli): strip periods from auto-generated GCP project display names…
riderx Sep 7, 2026
9a8d0fb
docs(cli): update generated docs
github-actions[bot] Sep 7, 2026
81f5763
chore(release): 8.47.1
github-actions[bot] Sep 7, 2026
fc2c303
feat(cli): accept handled native incompatibility without crash-warnin…
riderx Sep 8, 2026
61282c8
chore(deps): update dependency vue-tsc to v3.3.11 (#3268)
renovate[bot] Sep 8, 2026
1dfa580
chore(release): 12.269.0
github-actions[bot] Sep 8, 2026
8b49e17
chore(release): 8.48.0
github-actions[bot] Sep 8, 2026
7d17483
Merge branch 'main' of https://github.com/Cap-go/capgo.app
github-actions[bot] Sep 8, 2026
225fedb
feat(cli): add --no-cache flag for native build requests (#3264)
riderx Sep 8, 2026
9b00b66
chore(release): 12.269.1
github-actions[bot] Sep 8, 2026
2d0e358
chore(release): 8.48.1
github-actions[bot] Sep 8, 2026
2c12e25
Merge branch 'main' of https://github.com/Cap-go/capgo.app
github-actions[bot] Sep 8, 2026
f7d0e66
chore(release): 12.269.2
github-actions[bot] Sep 8, 2026
18f4717
chore(release): 8.48.2
github-actions[bot] Sep 8, 2026
9c975b2
fix(security): content-lock upload-complete app_versions bundles (#3098)
riderx Sep 8, 2026
6f4ddac
chore(release): 12.269.3
github-actions[bot] Sep 8, 2026
5d50664
chore(auto-sync): update supabase schema and generated types
github-actions[bot] Sep 8, 2026
7678f27
fix(build): forward CLI cache_enabled and appId to builder jobs (#3282)
riderx Sep 8, 2026
b868a68
chore(release): 12.269.4
github-actions[bot] Sep 8, 2026
228ae4d
feat(frontend): harden console CSP, SRI tooling, and input sanitizati…
riderx Sep 8, 2026
8bb74cd
chore(release): 12.270.0
github-actions[bot] Sep 8, 2026
610364e
fix(onboarding): deduplicate concurrent API key loads (#3274)
WcaleNieWolny Sep 9, 2026
d1f7c17
feat(onboarding): recommend WebNativeApp to hosted builders (#3237)
AdrienADV Sep 9, 2026
5ca2bd3
chore(release): 12.270.1
github-actions[bot] Sep 9, 2026
07611fb
Merge branch 'main' of https://github.com/Cap-go/capgo.app
github-actions[bot] Sep 9, 2026
089e14a
chore(release): 12.270.2
github-actions[bot] Sep 9, 2026
c97931b
fix(onboarding): populate imported app details immediately (#3286)
WcaleNieWolny Sep 9, 2026
b337f51
chore(release): 12.270.3
github-actions[bot] Sep 9, 2026
eb447c2
feat(cli): set up iOS provisioning for every target (#3232)
WcaleNieWolny Sep 9, 2026
5688e05
feat(frontend): tailor CLI AI prompts by onboarding intent (#3233)
WcaleNieWolny Sep 9, 2026
f083383
docs(cli): update generated docs
github-actions[bot] Sep 9, 2026
2b8e11e
chore(release): 8.49.0
github-actions[bot] Sep 9, 2026
1322290
Merge branch 'main' of https://github.com/Cap-go/capgo.app
github-actions[bot] Sep 9, 2026
53a59f7
chore(release): 8.49.1
github-actions[bot] Sep 9, 2026
a6d4f55
feat(cli): add --cache-key for native build compilation cache (#3288)
riderx Sep 9, 2026
4a40084
chore(release): 12.271.0
github-actions[bot] Sep 9, 2026
7f77838
chore(release): 8.50.0
github-actions[bot] Sep 9, 2026
e375aba
fix(replica): reconcile stale CHECK constraints blocking deploy (#3290)
riderx Sep 9, 2026
ea369e5
fix(cli): validate requestBuild cacheKey at SDK boundary (#3289)
riderx Sep 9, 2026
04ffb70
fix(replica): reword CHECK comment for typos CI (#3292)
TorichanCapgo Sep 9, 2026
a70de8b
feat(backend): target A/B tests by onboarding intent (#3287)
WcaleNieWolny Sep 9, 2026
f3d7d67
chore(release): 8.50.1
github-actions[bot] Sep 9, 2026
1aa85ef
Merge branch 'main' of https://github.com/Cap-go/capgo.app
github-actions[bot] Sep 9, 2026
33ef0cc
chore(release): 8.50.2
github-actions[bot] Sep 9, 2026
b3c558e
fix(cli): make build help easier to scan (#3293)
WcaleNieWolny Sep 9, 2026
64db401
docs(cli): update generated docs
github-actions[bot] Sep 9, 2026
53bc622
chore(release): 8.50.3
github-actions[bot] Sep 9, 2026
28ddacf
feat(api): support JWT authentication for app updates (#3294)
WcaleNieWolny Sep 9, 2026
387a845
chore(release): 12.272.0
github-actions[bot] Sep 9, 2026
21e02bc
refactor(onboarding): replace setup progress RPC (#3297)
WcaleNieWolny Sep 10, 2026
3d9084e
chore(release): 12.272.1
github-actions[bot] Sep 10, 2026
377d30b
chore(auto-sync): update supabase schema and generated types
github-actions[bot] Sep 10, 2026
8635298
fix(ci): make release retries safe under rapid merges (#3296)
WcaleNieWolny Sep 10, 2026
dbee78e
chore(release): 12.272.2
github-actions[bot] Sep 10, 2026
326249b
chore(release): 0.1.14
github-actions[bot] Sep 10, 2026
83ffd9e
fix(ci): stage notifications npm releases (#3302)
WcaleNieWolny Sep 11, 2026
0d5e2de
feat(onboarding): reuse intent-aware AI setup prompts (#3304)
WcaleNieWolny Sep 11, 2026
b384b4b
test(e2e-tui): update private suite pin (#3307)
WcaleNieWolny Sep 11, 2026
aa92f6e
chore(release): 12.273.0
github-actions[bot] Sep 11, 2026
c9fa43f
feat(onboarding): test guided channel creation (#3303)
WcaleNieWolny Sep 11, 2026
fd32764
feat(onboarding): record atomic step history (#3301)
WcaleNieWolny Sep 11, 2026
7570066
fix(ci): allow safe version workflow reruns (#3309)
WcaleNieWolny Sep 11, 2026
4c28ccc
chore(release): 12.274.0
github-actions[bot] Sep 11, 2026
d7a0318
fix(backend): rename safe compatibility event (#3310)
WcaleNieWolny Sep 11, 2026
b1a6195
chore(auto-sync): update supabase schema and generated types
github-actions[bot] Sep 11, 2026
1fc02bb
chore(release): 12.274.1
github-actions[bot] Sep 11, 2026
08105fc
feat(analytics): track onboarding step history changes (#3311)
WcaleNieWolny Sep 11, 2026
01f8671
chore(release): 12.275.0
github-actions[bot] Sep 11, 2026
af97de1
fix(files): retry Cloudflare internal errors on upload (#3314)
posthog-eu[bot] Sep 12, 2026
937d7a5
chore(ci): retrigger release after transient Cloudflare 503 (#3308)
WcaleNieWolny Sep 12, 2026
f836be3
fix(security): require org membership for app-scoped role_bindings (#…
TorichanCapgo Sep 12, 2026
472a758
feat(dashboard): Native tab active device KPI cards (#3263)
riderx Sep 12, 2026
086e485
fix(cli): retry onboarding bundle upload with monorepo root paths (#3…
riderx Sep 12, 2026
36673d0
fix(admin): show platform delivery latency with the same pairing as a…
riderx Sep 12, 2026
d002b51
chore(deps): update dependency ruby to v3.4.10 (#3267)
renovate[bot] Sep 12, 2026
7dc3d02
fix(api): validate channel disableAutoUpdate and accept metadata alia…
posthog-eu[bot] Sep 12, 2026
b465540
fix(cli): load capacitor.config.ts on TypeScript 7 (#3276)
blehstbl Sep 12, 2026
ab0a677
fix(frontend): drop exceptions from code injected into the page (#3278)
posthog-eu[bot] Sep 12, 2026
fd4bd7c
chore(release): 12.276.0
github-actions[bot] Sep 12, 2026
602fc28
chore(release): 8.51.0
github-actions[bot] Sep 12, 2026
e8cac35
feat(admin): show A/B test distribution (#3312)
WcaleNieWolny Sep 12, 2026
d27c153
chore(release): 12.277.0
github-actions[bot] Sep 12, 2026
e676d45
fix(frontend): prevent navbar billing pill overflow on mobile (#3315)
riderx Sep 13, 2026
b2d51e1
chore(release): 12.277.1
github-actions[bot] Sep 13, 2026
cd4de8a
fix(onboarding): preserve intent when resuming setup (#3316)
WcaleNieWolny Sep 13, 2026
bc132c1
chore(release): 12.277.2
github-actions[bot] Sep 13, 2026
88c5de2
fix(db): restamp unapplied migrations (#3319)
WcaleNieWolny Sep 13, 2026
efdb1b7
chore(release): 12.277.3
github-actions[bot] Sep 13, 2026
8745b1e
chore(auto-sync): update supabase schema and generated types
github-actions[bot] Sep 13, 2026
bd8b041
feat(builder): alert on fast build failures (#3320)
WcaleNieWolny Sep 13, 2026
663d7b8
chore(release): 12.278.0
github-actions[bot] Sep 13, 2026
d11a3ee
feat(admin): show Publish intent experiment outcomes (#3323)
WcaleNieWolny Sep 14, 2026
0696997
chore(release): 12.279.0
github-actions[bot] Sep 14, 2026
da5c229
feat(onboarding): track channel setup interactions (#3324)
WcaleNieWolny Sep 14, 2026
3f1f340
feat(admin): show v4+ CLI checklist coverage (#3325)
WcaleNieWolny Sep 14, 2026
7ea3992
fix(admin): recover overwritten onboarding intents (#3327)
WcaleNieWolny Sep 14, 2026
eff31d2
chore(release): 12.280.0
github-actions[bot] Sep 14, 2026
c45ee1e
fix(frontend): improve manage-2fa captcha and OTP send error UX (#3328)
riderx Sep 14, 2026
82f663c
feat(onboarding): version app setup todo lists (#3329)
WcaleNieWolny Sep 15, 2026
fe83ebf
chore(release): 12.281.0
github-actions[bot] Sep 15, 2026
26a2963
feat(admin): add channel animation experiment analytics (#3330)
WcaleNieWolny Sep 15, 2026
1900214
chore(auto-sync): update supabase schema and generated types
github-actions[bot] Sep 15, 2026
a089d42
chore(release): 12.282.0
github-actions[bot] Sep 15, 2026
d94f158
fix(admin): restore channel animation analytics (#3336)
WcaleNieWolny Sep 15, 2026
e16cbcd
feat(onboarding): introduce v2 CLI/MCP login checklist (#3335)
WcaleNieWolny Sep 15, 2026
e015ec2
chore(release): 12.283.0
github-actions[bot] Sep 15, 2026
40200c5
fix(deploy): allow JSON path operators in replica indexes (#3337)
WcaleNieWolny Sep 15, 2026
db476b1
chore(release): 12.283.1
github-actions[bot] Sep 15, 2026
bf7af8f
chore(api): force worker redeploy (#3339)
WcaleNieWolny Sep 15, 2026
279a715
chore(release): 12.283.2
github-actions[bot] Sep 15, 2026
cddc400
feat(admin): chart app-building tools for the development environment…
WcaleNieWolny Sep 16, 2026
dea881a
chore(release): 12.284.0
github-actions[bot] Sep 16, 2026
dfea491
fix(auth): preserve password reset verification parameters (#3346)
WcaleNieWolny Sep 16, 2026
1770d27
feat(admin): select onboarding checklist version, defaulting to v2 (#…
WcaleNieWolny Sep 16, 2026
3560df4
chore(release): 12.285.0
github-actions[bot] Sep 16, 2026
2f32e29
feat(admin): add intent breakdown by app-building tool to A/B tests (…
WcaleNieWolny Sep 16, 2026
134ee97
chore(release): 12.286.0
github-actions[bot] Sep 16, 2026
3cde3b0
fix(cli): offer existing channel reuse during init (#3349)
WcaleNieWolny Sep 16, 2026
a1f779d
docs(cli): update generated docs
github-actions[bot] Sep 16, 2026
584a040
chore(release): 8.51.1
github-actions[bot] Sep 16, 2026
6a4dcd5
fix(auth): prevent confirmation redirect flashing (#3351)
WcaleNieWolny Sep 16, 2026
d3ac421
feat(admin): compare monthly registrations by signup method (#3348)
WcaleNieWolny Sep 16, 2026
4a094c8
fix(admin): count persisted onboarding apps and experiment versions (…
WcaleNieWolny Sep 16, 2026
2c45d6f
fix(logging): preserve underlying PostgreSQL error causes (#3350)
WcaleNieWolny Sep 16, 2026
874d3a2
Update BOUNTY.md (#3355)
riderx Sep 16, 2026
5742afc
chore(release): 12.287.0
github-actions[bot] Sep 16, 2026
8b62704
feat(admin): add app-building question flow (#3354)
WcaleNieWolny Sep 16, 2026
35a6343
fix(cli): clarify channel access errors and align channel tables (#3353)
WcaleNieWolny Sep 16, 2026
3ef9f55
feat(admin): add rolling self-serve payment conversion cohorts (#3356)
WcaleNieWolny Sep 16, 2026
e20c513
docs(cli): update generated docs
github-actions[bot] Sep 16, 2026
7ef1639
chore(release): 12.288.0
github-actions[bot] Sep 16, 2026
b74f2c7
chore(release): 8.51.2
github-actions[bot] Sep 16, 2026
b63534b
fix(admin): use Supabase for monthly registration counts (#3357)
WcaleNieWolny Sep 16, 2026
72e20a2
chore(release): 12.288.1
github-actions[bot] Sep 16, 2026
42c412b
ci: add Cap 9 deprecated-API guard for capacitor-notifications (#3334)
riderx Sep 16, 2026
bedb0c9
chore(release): 0.1.15
github-actions[bot] Sep 16, 2026
c7d419f
feat(api): add public first-try, first-day, rollback, and zip vs delt…
riderx Sep 17, 2026
27c36ef
feat(cli): detect integration code in the background and track scan a…
WcaleNieWolny Sep 17, 2026
c8e4283
docs(cli): update generated docs
github-actions[bot] Sep 17, 2026
4212cb5
chore(release): 12.289.0
github-actions[bot] Sep 17, 2026
520a368
chore(release): 8.52.0
github-actions[bot] Sep 17, 2026
236e45c
fix(frontend): clarify channel delta download format and rollout conf…
riderx Sep 17, 2026
0c7c26f
chore(release): 12.289.1
github-actions[bot] Sep 17, 2026
e38975f
fix(frontend): show log action keys on hover instead of a name/key to…
riderx Sep 17, 2026
537c585
chore(release): 12.289.2
github-actions[bot] Sep 17, 2026
c28236a
feat(cli): detect installed updater in the background (#3364)
WcaleNieWolny Sep 17, 2026
c328a10
docs(cli): update generated docs
github-actions[bot] Sep 17, 2026
a8ca6fe
chore(release): 8.53.0
github-actions[bot] Sep 17, 2026
53aec57
fix(cli): CliUserError for app add when app ID is taken (#3300)
posthog-eu[bot] Sep 17, 2026
afdf688
chore(release): 8.53.1
github-actions[bot] Sep 17, 2026
d0406ae
fix(admin): stop famous-apps list ranking Capgo demos and unknown bra…
riderx Sep 17, 2026
1a60f36
feat(frontend): enhance rollout settings with cache TTL and auto-paus…
riderx Sep 17, 2026
4e3f645
fix(cli): allow background onboarding checks to finish before exit (#…
WcaleNieWolny Sep 17, 2026
68c8f03
docs(cli): update generated docs
github-actions[bot] Sep 17, 2026
5596f15
chore(release): 12.290.0
github-actions[bot] Sep 17, 2026
6a3c634
chore(release): 8.53.2
github-actions[bot] Sep 17, 2026
b0bcf95
feat(onboarding): test OTA checklist v3 with observed progress (#3359)
WcaleNieWolny Sep 17, 2026
010185a
chore(release): 12.291.0
github-actions[bot] Sep 17, 2026
e70046d
chore(auto-sync): update supabase schema and generated types
github-actions[bot] Sep 17, 2026
b2a4838
fix(auth): load CAPTCHA for confirmation email resend (#3374)
WcaleNieWolny Sep 17, 2026
56970ba
chore(release): 12.291.1
github-actions[bot] Sep 17, 2026
7381c98
fix(auth): make email verification progressive (#3378)
WcaleNieWolny Sep 19, 2026
314eaae
chore(release): 12.291.2
github-actions[bot] Sep 19, 2026
5468bd1
feat(cli): add account whoami command (#3380)
WcaleNieWolny Sep 19, 2026
9041b3b
docs(cli): update generated docs
github-actions[bot] Sep 19, 2026
f79080b
chore(release): 12.292.0
github-actions[bot] Sep 19, 2026
8a040d4
chore(release): 8.54.0
github-actions[bot] Sep 19, 2026
0bdeb17
chore(auto-sync): update supabase schema and generated types
github-actions[bot] Sep 19, 2026
5e5b3a2
feat(cli): show app onboarding todo list (#3379)
WcaleNieWolny Sep 19, 2026
215e549
docs(cli): update generated docs
github-actions[bot] Sep 19, 2026
c746ee4
chore(release): 8.55.0
github-actions[bot] Sep 19, 2026
a672a09
fix(onboarding): include intent in completed app Bento events (#3385)
WcaleNieWolny Sep 19, 2026
2fb2dc2
chore(release): 12.292.1
github-actions[bot] Sep 19, 2026
af3aec4
feat(onboarding): route 2nd+ app create to getting-started CLI steps
cursoragent Sep 19, 2026
86d3872
feat(onboarding): roll out OTA checklist v3 to all eligible apps (#3387)
WcaleNieWolny Sep 19, 2026
3461f36
feat(onboarding): check v3 OTA progress during AI setup (#3384)
WcaleNieWolny Sep 19, 2026
dee3a07
perf(cli): share project discovery for background onboarding checks (…
WcaleNieWolny Sep 19, 2026
4169a7b
merge(main): bring migration for published CLI contract; keep Michael…
cursoragent Sep 19, 2026
13faac5
fix(backend): restore main appOnboarding exports for published CLI co…
cursoragent Sep 19, 2026
8aa9a88
fix(onboarding): reconcile main AppOnboardingFlow with getting-starte…
cursoragent Sep 19, 2026
efc89b8
fix(onboarding): restore Michael AppOnboardingFlow and align merged t…
cursoragent Sep 19, 2026
38c3281
fix(ci): remove unused onboarding source and dead apikey export
cursoragent Sep 19, 2026
f6d0b23
fix(onboarding): restore appOnboarding exports and align with dropped…
cursoragent Sep 19, 2026
9691c00
test(onboarding): update getting-started panel assertion after RPC re…
cursoragent Sep 19, 2026
251ab98
chore(playwright): capture PR 3390 second-app getting-started screenshot
cursoragent Sep 19, 2026
3ce1692
fix(onboarding): make CLI steps version-aware and align setup Playwri…
cursoragent Sep 19, 2026
bbe0645
chore: remove unused APP_ONBOARDING_STEP_IDS re-export
cursoragent Sep 19, 2026
645d97b
fix(onboarding): restore WebNative publish-intent treatment UI in App…
cursoragent Sep 19, 2026
b6533e1
fix(onboarding): declare selectedIntent before onboardingAnalyticsVer…
cursoragent Sep 19, 2026
52330bf
fix(onboarding): hide create-org during WebNative recommendation and …
cursoragent Sep 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
204 changes: 188 additions & 16 deletions .github/workflows/build_and_deploy.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Build source code and deploy

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
group: ${{ github.workflow }}-${{ contains(github.ref_name, '-alpha.') && 'alpha' || 'production' }}
cancel-in-progress: false

on:
push:
Expand All @@ -24,6 +24,10 @@ jobs:
plugins: ${{ steps.scope.outputs.plugins }}
supabase: ${{ steps.scope.outputs.supabase }}
translation: ${{ steps.scope.outputs.translation }}
deploy_tag: ${{ steps.target.outputs.deploy_tag }}
deploy_sha: ${{ steps.target.outputs.deploy_sha }}
is_alpha: ${{ steps.target.outputs.is_alpha }}
requires_schema_types_sync: ${{ steps.scope.outputs.requires_schema_types_sync }}
steps:
- name: Checkout
uses: actions/checkout@v6
Expand All @@ -34,11 +38,20 @@ jobs:
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Resolve triggering deployment target
id: target
run: bun scripts/resolve-deploy-tag.ts --resolve "${{ github.ref_name }}" >> "$GITHUB_OUTPUT"
- name: Reject stale queued deployment
run: bun scripts/resolve-deploy-tag.ts --assert-current "${{ github.ref_name }}"
- name: Checkout deployment target
uses: actions/checkout@v6
with:
ref: ${{ steps.target.outputs.deploy_sha }}
fetch-depth: 0
filter: blob:none
- name: Resolve deploy scope
id: scope
env:
REF_NAME: ${{ github.ref_name }}
run: bun scripts/deploy-scope.ts "$REF_NAME" >> "$GITHUB_OUTPUT"
run: bun scripts/deploy-scope.ts "${{ steps.target.outputs.deploy_tag }}" >> "$GITHUB_OUTPUT"

# Tests already passed before tag was created, so just build and deploy
supabase_deploy:
Expand All @@ -56,13 +69,19 @@ jobs:
node-version: 24.x
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.changes.outputs.deploy_sha }}
fetch-depth: 0
- name: Setup bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Reject stale deployment retry
if: ${{ github.run_attempt > 1 }}
run: bun scripts/resolve-deploy-tag.ts --assert-current "${{ needs.changes.outputs.deploy_tag }}"
- name: Set environment variable
run: |
if [[ ${{ github.ref }} == *-alpha* ]]; then
if [ "${{ needs.changes.outputs.is_alpha }}" = "true" ]; then
echo "SUPA_ENV=ALPHA" >> $GITHUB_ENV
else
echo "SUPA_ENV=PROD" >> $GITHUB_ENV
Expand Down Expand Up @@ -116,7 +135,7 @@ jobs:

read_replica_schema:
needs: changes
if: ${{ needs.changes.result == 'success' && needs.changes.outputs.supabase == 'true' && !contains(github.ref_name, '-alpha') }}
if: ${{ needs.changes.result == 'success' && needs.changes.outputs.supabase == 'true' && needs.changes.outputs.is_alpha != 'true' }}
runs-on: ubuntu-latest
timeout-minutes: 40
name: Reconcile production read-replica schema
Expand All @@ -125,10 +144,16 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.changes.outputs.deploy_sha }}
fetch-depth: 0
- name: Setup bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Reject stale deployment retry
if: ${{ github.run_attempt > 1 }}
run: bun scripts/resolve-deploy-tag.ts --assert-current "${{ needs.changes.outputs.deploy_tag }}"
- name: Setup Google Cloud CLI
uses: google-github-actions/setup-gcloud@v2
- name: Install dependencies
Expand Down Expand Up @@ -156,6 +181,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.changes.outputs.deploy_sha }}
fetch-depth: 0
filter: blob:none
- uses: actions/setup-node@v6
Expand All @@ -165,11 +191,14 @@ jobs:
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Reject stale deployment retry
if: ${{ github.run_attempt > 1 }}
run: bun scripts/resolve-deploy-tag.ts --assert-current "${{ needs.changes.outputs.deploy_tag }}"
- name: Install dependencies
run: bun install
- name: Set environment variable
run: |
if [[ ${{ github.ref }} == *-alpha* ]]; then
if [ "${{ needs.changes.outputs.is_alpha }}" = "true" ]; then
echo "ENV=dev" >> $GITHUB_ENV
echo "CHANNEL=dev" >> $GITHUB_ENV
else
Expand Down Expand Up @@ -227,10 +256,11 @@ jobs:

---

🔗 **Full Changelog**: https://github.com/${{ github.repository }}/compare/${{ steps.changelog.outputs.from_tag || github.ref_name }}...${{ steps.changelog.outputs.to_tag || github.ref_name }}
🔗 **Full Changelog**: https://github.com/${{ github.repository }}/compare/${{ steps.changelog.outputs.from_tag || needs.changes.outputs.deploy_tag }}...${{ steps.changelog.outputs.to_tag || needs.changes.outputs.deploy_tag }}
make_latest: true
token: "${{ secrets.PERSONAL_ACCESS_TOKEN }}"
prerelease: ${{ contains(github.ref, '-alpha.') }}
tag_name: ${{ needs.changes.outputs.deploy_tag }}
prerelease: ${{ needs.changes.outputs.is_alpha == 'true' }}

deploy_api:
needs: [changes, supabase_deploy, read_replica_schema]
Expand All @@ -240,18 +270,24 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.changes.outputs.deploy_sha }}
fetch-depth: 0
- uses: actions/setup-node@v6
with:
node-version: 24
- name: Setup bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Reject stale deployment retry
if: ${{ github.run_attempt > 1 }}
run: bun scripts/resolve-deploy-tag.ts --assert-current "${{ needs.changes.outputs.deploy_tag }}"
- name: Install dependencies
run: bun install
- name: Set environment variable
run: |
if [[ ${{ github.ref }} == *-alpha* ]]; then
if [ "${{ needs.changes.outputs.is_alpha }}" = "true" ]; then
echo "ENV=dev" >> $GITHUB_ENV
else
echo "ENV=prod" >> $GITHUB_ENV
Expand All @@ -270,18 +306,24 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.changes.outputs.deploy_sha }}
fetch-depth: 0
- uses: actions/setup-node@v6
with:
node-version: 24
- name: Setup bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Reject stale deployment retry
if: ${{ github.run_attempt > 1 }}
run: bun scripts/resolve-deploy-tag.ts --assert-current "${{ needs.changes.outputs.deploy_tag }}"
- name: Install dependencies
run: bun install
- name: Set environment variable
run: |
if [[ ${{ github.ref }} == *-alpha* ]]; then
if [ "${{ needs.changes.outputs.is_alpha }}" = "true" ]; then
echo "ENV=dev" >> $GITHUB_ENV
else
echo "ENV=prod" >> $GITHUB_ENV
Expand All @@ -300,18 +342,24 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.changes.outputs.deploy_sha }}
fetch-depth: 0
- uses: actions/setup-node@v6
with:
node-version: 24
- name: Setup bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Reject stale deployment retry
if: ${{ github.run_attempt > 1 }}
run: bun scripts/resolve-deploy-tag.ts --assert-current "${{ needs.changes.outputs.deploy_tag }}"
- name: Install dependencies
run: bun install
- name: Set environment variable
run: |
if [[ ${{ github.ref }} == *-alpha* ]]; then
if [ "${{ needs.changes.outputs.is_alpha }}" = "true" ]; then
echo "ENV=dev" >> $GITHUB_ENV
else
echo "ENV=prod" >> $GITHUB_ENV
Expand Down Expand Up @@ -363,18 +411,24 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.changes.outputs.deploy_sha }}
fetch-depth: 0
- uses: actions/setup-node@v6
with:
node-version: 24
- name: Setup bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Reject stale deployment retry
if: ${{ github.run_attempt > 1 }}
run: bun scripts/resolve-deploy-tag.ts --assert-current "${{ needs.changes.outputs.deploy_tag }}"
- name: Install dependencies
run: bun install
- name: Set environment variable
run: |
if [[ ${{ github.ref }} == *-alpha* ]]; then
if [ "${{ needs.changes.outputs.is_alpha }}" = "true" ]; then
echo "ENV=dev" >> $GITHUB_ENV
else
echo "ENV=prod" >> $GITHUB_ENV
Expand All @@ -400,13 +454,19 @@ jobs:
node-version: 24.x
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.changes.outputs.deploy_sha }}
fetch-depth: 0
- name: Setup bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Reject stale deployment retry
if: ${{ github.run_attempt > 1 }}
run: bun scripts/resolve-deploy-tag.ts --assert-current "${{ needs.changes.outputs.deploy_tag }}"
- name: Set environment variable
run: |
if [[ ${{ github.ref }} == *-alpha* ]]; then
if [ "${{ needs.changes.outputs.is_alpha }}" = "true" ]; then
echo "BUILD_SCRIPT=build:dev" >> $GITHUB_ENV
else
echo "BUILD_SCRIPT=build" >> $GITHUB_ENV
Expand Down Expand Up @@ -446,13 +506,19 @@ jobs:
node-version: 24.x
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.changes.outputs.deploy_sha }}
fetch-depth: 0
- name: Setup bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Reject stale deployment retry
if: ${{ github.run_attempt > 1 }}
run: bun scripts/resolve-deploy-tag.ts --assert-current "${{ needs.changes.outputs.deploy_tag }}"
- name: Set environment variable
run: |
if [[ ${{ github.ref }} == *-alpha* ]]; then
if [ "${{ needs.changes.outputs.is_alpha }}" = "true" ]; then
echo "BUILD_SCRIPT=build:dev" >> $GITHUB_ENV
else
echo "BUILD_SCRIPT=build" >> $GITHUB_ENV
Expand All @@ -474,3 +540,109 @@ jobs:
BUILD_OUTPUT_UPLOAD_ENABLED: "true"
BUILD_OUTPUT_RETENTION_SECONDS: "604800"
run: bunx @capgo/cli@latest build request --platform android --path . --sync-android-version --ai-analytics

sync_schema_types:
needs: [changes, read_replica_schema, supabase_deploy]
if: ${{ needs.changes.result == 'success' && needs.changes.outputs.is_alpha != 'true' && needs.changes.outputs.requires_schema_types_sync == 'true' && needs.read_replica_schema.result == 'success' && needs.supabase_deploy.result == 'success' }}
runs-on: ubuntu-latest
timeout-minutes: 30
name: Sync production schema and generated types
permissions:
contents: write
steps:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24.x
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ needs.changes.outputs.deploy_sha }}
token: "${{ secrets.PERSONAL_ACCESS_TOKEN }}"
fetch-depth: 0
filter: blob:none
- name: Setup bun
run: bash scripts/setup-bun.sh
- name: Prepare production schema access
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_TOKEN }}
SUPABASE_PROJECT_ID_PROD: ${{ secrets.SUPABASE_PROJECT_ID_PROD }}
run: |
if [ -z "$SUPABASE_PROJECT_ID_PROD" ]; then
echo "SUPABASE_PROJECT_ID_PROD is required for schema/types sync" >&2
exit 1
fi

bunx supabase --version
bunx supabase link --project-ref "$SUPABASE_PROJECT_ID_PROD"
- name: Sync generated schema and types
env:
DEPLOY_TAG: ${{ needs.changes.outputs.deploy_tag }}
SCHEMA_TYPES_REMOTE_URL: https://x-access-token:${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/${{ github.repository }}.git
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_TOKEN }}
run: |
set -euo pipefail

generated_files=(
supabase/schemas/prod.sql
src/types/supabase.types.ts
supabase/functions/_backend/utils/supabase.types.ts
)
remote_repo="$SCHEMA_TYPES_REMOTE_URL"

git config --local user.name "github-actions[bot]"
git config --local user.email "github-actions[bot]@users.noreply.github.com"

for attempt in 1 2 3; do
echo "Schema/types publication attempt $attempt of 3"
git fetch --tags "$remote_repo" "+refs/heads/main:refs/remotes/schema-sync/main"
main_sha="$(git rev-parse refs/remotes/schema-sync/main)"

if ! bun scripts/resolve-deploy-tag.ts --assert-current "$DEPLOY_TAG"; then
echo "Schema/types sync deferred: $DEPLOY_TAG is no longer the current production tag."
exit 0
fi

pending_migrations="$(git diff --name-only "$DEPLOY_TAG" "$main_sha" -- supabase/migrations)"
if [ -n "$pending_migrations" ]; then
echo "Schema/types sync deferred: main contains migrations that are not present in $DEPLOY_TAG."
printf '%s\n' "$pending_migrations"
exit 0
fi

git checkout --detach "$main_sha"
bun install --frozen-lockfile
bun schemas
BRANCH=main bun types

if git diff --quiet -- "${generated_files[@]}"; then
echo "No schema/types drift detected."
exit 0
fi

echo "Schema/types drift detected; verifying regenerated types compile against current main."
if ! bun typecheck; then
echo "Schema/types sync deferred: production-generated types do not compile against current main." >&2
exit 0
fi

git add -- "${generated_files[@]}"
git commit -m "chore(auto-sync): update supabase schema and generated types"

git fetch --tags "$remote_repo"
if ! bun scripts/resolve-deploy-tag.ts --assert-current "$DEPLOY_TAG"; then
echo "Schema/types sync deferred: a newer production tag was published during generation."
exit 0
fi

status="$(bun scripts/publish-schema-types.ts main "$main_sha")"
if [ "$status" = "published" ]; then
echo "Schema/types commit published from main at $main_sha."
exit 0
fi

echo "Main moved during schema/types generation; regenerating from the new head."
done

echo "Schema/types publication could not obtain a stable main snapshot after 3 attempts." >&2
exit 1
Loading
Loading