Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
687b1b9
hello world
jgoux Feb 10, 2026
ebb0cd2
README
jgoux Feb 10, 2026
f4d633f
release channels
jgoux Feb 17, 2026
88efe85
release workflow
jgoux Feb 18, 2026
d84a2ae
small fixes
jgoux Feb 18, 2026
e143300
Merge pull request #2 from supabase/release-channels
jgoux Feb 18, 2026
2801680
sync version using a script
jgoux Feb 18, 2026
0067c4e
remove bin field for binary only packages
jgoux Feb 18, 2026
39f6a8a
Add QEMU in Linux runners to run the arm64 containers
jgoux Feb 18, 2026
44b6eff
fix windows (hopefully)
jgoux Feb 18, 2026
6001576
windows, why oh why
jgoux Feb 18, 2026
1b9b0d1
please windows, come on.
jgoux Feb 18, 2026
ea179dd
skip windows npm install test
jgoux Feb 18, 2026
854d672
split per OS
jgoux Feb 18, 2026
cc2c547
fix smoke tests
jgoux Feb 18, 2026
7708dda
Global architecture (#3)
jgoux Mar 11, 2026
98ad0d5
Use submodules for repository inspection (#4)
jgoux Mar 11, 2026
cbbeb62
move cli to apps/
jgoux Mar 11, 2026
3c7fe8d
update docs
jgoux Mar 11, 2026
9a35980
bump effect
jgoux Mar 11, 2026
5becc32
tracking progress
jgoux Mar 11, 2026
72bee4a
harmonize output
jgoux Mar 11, 2026
2c95a6c
projected state from stack and supa -> supabase renaming
jgoux Mar 11, 2026
73768e1
keys rework
jgoux Mar 11, 2026
0c09347
use native binary for auth
jgoux Mar 12, 2026
748b925
feat: support all local services (#5)
jgoux Mar 12, 2026
114a955
update docs
jgoux Mar 13, 2026
a0a51b8
feat: @supabase/api package and "platform" commands in the CLI (#6)
jgoux Mar 17, 2026
2eeeaa2
chore: update .gitignore to ignore .idea dir (#8)
Coly010 Mar 18, 2026
0321793
feat: Project Configuration & Multi-Stack Management (#7)
jgoux Mar 26, 2026
b182e7e
chore: migrate to pnpm (#10)
Coly010 Mar 26, 2026
b21b8da
chore: align catalog versions and update readme (#11)
Coly010 Mar 26, 2026
3f6aea1
feat(cli): add `logout` subcommand (#9)
Coly010 Mar 26, 2026
f7e735d
chore: harmonize tests and run them as part of CI (#12)
jgoux Mar 27, 2026
816b71e
fix: delete skill and usage (#14)
jgoux Mar 30, 2026
20cb38b
chore: integrate nx and custom plugins (#13)
Coly010 Mar 30, 2026
b928dbc
feat: posthog telemetry (#15)
jgoux Mar 31, 2026
bab2654
chore: update agents.md with task runner info (#17)
Coly010 Mar 31, 2026
27f027b
feat: evolve the project link state schema for branch-aware operation…
Coly010 Mar 31, 2026
7854c5a
chore: use check:all as reference for agents.md (#18)
Coly010 Apr 1, 2026
0687765
feat: add branches list command (#19)
Coly010 Apr 2, 2026
75ce998
chore: add CODEOWNERS (#22)
jgoux Apr 2, 2026
40ec804
chore: identify user after login for analytics (#20)
jgoux Apr 2, 2026
f1744a2
feat: add branches create command (#23)
Coly010 Apr 2, 2026
5906132
feat: add branches switch command (#24)
Coly010 Apr 7, 2026
c605c2c
test(branches): improve switch integration test coverage (#26)
Coly010 Apr 7, 2026
ae17407
refactor: API package and commands (#25)
jgoux Apr 8, 2026
56f55db
chore: dual-shell CLI scaffolding and channel-based releases (#29)
jgoux Apr 8, 2026
2dd4f84
chore: update docs for dual-build approach (#30)
Coly010 Apr 9, 2026
359e6cb
feat: wrap go binary in ts for legacy cli handling (#31)
Coly010 Apr 16, 2026
d5294d0
chore: ensure keys are replaced correctly in fixtures (#32)
Coly010 Apr 16, 2026
160c385
chore(e2e): strict request matching and richer parity assertions (CLI…
Coly010 Apr 17, 2026
588ed22
chore(e2e): testBehaviour/testParity API and scenario-based fixtures …
Coly010 Apr 17, 2026
885a07b
chore(e2e): normalize local server port in fixture host headers (#35)
Coly010 Apr 17, 2026
332e9f5
chore(e2e): tier 1 tests for projects and secrets commands (CLI-1375,…
Coly010 Apr 20, 2026
1bbbe43
fix(go-proxy): hold of parent signals (#37)
avallete Apr 20, 2026
3cea15b
chore(e2e): tier 1 tests for branches and migrations (CLI-1376, CLI-1…
Coly010 Apr 20, 2026
66bbe5b
chore(e2e): tier 1 tests for telemetry commands (CLI-1366) (#40)
Coly010 Apr 21, 2026
2cfca03
chore(e2e): tier 1 tests for organizations commands (CLI-1378) (#41)
Coly010 Apr 21, 2026
3769914
chore(e2e): tier 1 tests for functions (CLI-1373) (#42)
Coly010 Apr 21, 2026
4e4f922
chore(e2e): stub auth e2e tests blocked on Go CLI keyring opt-out (CL…
Coly010 Apr 21, 2026
fd7f979
chore(e2e): vitest sequencer to run alphabetically (#45)
Coly010 Apr 22, 2026
d740e5b
chore(e2e): add coverage for gen commands (#44)
Coly010 Apr 22, 2026
42eff42
chore(ci): run affected e2e tests on PRs, all e2e tests on main (#46)
Coly010 Apr 22, 2026
c52e53d
chore(ci): cache Go CLI binary to skip rebuild on cache hit (#48)
Coly010 Apr 22, 2026
c59942f
chore(e2e): tier 1 tests for network and security commands (CLI-1381)…
Coly010 Apr 22, 2026
e65b00e
chore(e2e): tier 1 tests for SSO commands (CLI-1379) (#49)
Coly010 Apr 22, 2026
e639a92
chore(e2e): tier 1 tests for project lifecycle commands (CLI-1367) (#50)
Coly010 Apr 22, 2026
8214fc5
chore(e2e): normalize ephemeral fixture values to reduce re-recording…
Coly010 Apr 23, 2026
7057603
chore: setup e2e brew release (#39)
avallete Apr 23, 2026
e363795
chore(e2e): tier 1 tests for storage commands (CLI-1374) (#52)
Coly010 Apr 23, 2026
cd5f8d1
chore(e2e): tier 1 tests for database core commands (CLI-1370) (#53)
Coly010 Apr 24, 2026
48deab2
chore(e2e): tier 1 tests for `domains` commands (CLI-1380) (#54)
juleswritescode Apr 24, 2026
e788efe
chore(e2e): tier 1 tests for database inspection commands (CLI-1371) …
Coly010 Apr 24, 2026
c54dcb7
chore: update repos (#57)
Coly010 Apr 27, 2026
5e18fdf
chore(e2e): tier 1 tests for config push command (CLI-1392) (#56)
juleswritescode Apr 27, 2026
240c339
chore(e2e): tier 1 tests for advanced platform features (CLI-1382) (#58)
Coly010 Apr 27, 2026
8b7207f
chore(e2e): tier 1 tests for local dev stack commands (CLI-1368) (#59)
Coly010 Apr 28, 2026
5d1f730
ci(e2e): shard cli-e2e tests across 3 matrix jobs (#61)
Coly010 Apr 28, 2026
07e0cef
feat: Adds `edge-runtime` in the local stack (#21)
jgoux May 4, 2026
c3f0aac
feat: `supabase functions new` (#62)
jgoux May 5, 2026
32385fd
chore(monorepo): move CLI sources under apps/cli-go/
Coly010 May 5, 2026
05b0b67
chore(monorepo): merge dx-lab/main into consolidated tree
Coly010 May 5, 2026
c94dc8a
chore(monorepo): post-merge fixups (paths, workflows, nx-go, readmes,…
Coly010 May 5, 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1 +1 @@
* @supabase/cli
* @supabase/cli
30 changes: 30 additions & 0 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Setup

description: Perform standard setup and install dependencies using pnpm

runs:
using: "composite"
steps:
- name: Install Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
with:
bun-version: latest

- name: Install Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version-file: .nvmrc
package-manager-cache: false

- name: Enable Corepack
shell: bash
run: npm install --global corepack && corepack enable

- name: Configure dependency cache
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
cache: pnpm

- name: Install dependencies
shell: bash
run: pnpm install --frozen-lockfile
Comment on lines +8 to +30
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question

Do we use pnpm / bun ? Seems like we use both I guess that's expected could use the context why we don't just use Bun everywhere.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude gave me this answer, just double checking it's correct:

Found the file you're looking at — it's .github/actions/setup/action.yml. Here's what's actually going on:

- Install Bun                  (oven-sh/setup-bun)
- Install Node.js              (actions/setup-node, .nvmrc)
- Enable Corepack              (provides pnpm@10.33.0 from "packageManager")
- Configure dependency cache   (cache: pnpm)
- Install dependencies         (pnpm install --frozen-lockfile)

The two tools play different roles, they're not redundant:

pnpm = package/workspace manager. The repo is a pnpm workspace (pnpm-workspace.yaml, pnpm-lock.yaml, packageManager: pnpm@10.33.0). It's pinned because:

  • It uses catalog: versions (e.g. "@swc-node/register": "catalog:" in the root package.json) — a pnpm workspace feature.
  • The lockfile committed to the repo is pnpm-lock.yaml; switching the installer would invalidate reproducibility and CI caching (cache: pnpm).
  • CLAUDE.md is explicit: "pnpm is the package manager. Use pnpm <script>. Do not use bun run or npm run."

Bun = TypeScript runtime for executing scripts/tests. It's not used to install deps. It's needed because:

  • Workspaces extend @tsconfig/bun/tsconfig.json and pull in @types/bun — code is written against Bun's runtime/types.
  • Root scripts shell out to it directly, e.g. "local-registry": "bun tools/release/local-registry.ts" and "cli-release": "bun tools/release/local-release.ts" — running .ts without a build step.
  • Tests use @effect/vitest with it.live, and the harness expects the Bun runtime to be present.

So: pnpm owns dependency graph + workspace plumbing + lockfile; Bun owns "execute TypeScript directly." Going bun-only would mean migrating the lockfile, dropping pnpm catalogs, and rewriting workspace tooling — a much bigger change than the consolidation PR is doing. It's a deliberate split, not an oversight.

Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ on:
repository_dispatch:
types:
- api-sync
workflow_dispatch: # allow manual triggering

# Add explicit permissions
Comment on lines -7 to -9
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question

Woudn't that turn it into something that run at any change to the go-cli source code is that what we want ?

It's meant to be a manual triggering as it get "manually triggered" by an automated action each time the /v1 api schema change is successfully deployed on staging.

workflow_dispatch:
paths:
- apps/cli-go/**
permissions:
contents: write
pull-requests: write
Expand All @@ -20,7 +20,7 @@ jobs:

- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
go-version-file: apps/cli-go/go.mod
cache: true

- name: Run codegen
Expand Down Expand Up @@ -70,3 +70,6 @@ jobs:
run: gh pr merge --auto --squash "${{ steps.cpr.outputs.pull-request-number }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
defaults:
run:
working-directory: apps/cli-go
22 changes: 16 additions & 6 deletions .github/workflows/ci.yml → .github/workflows/cli-go-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,16 @@ name: CI

on:
pull_request:
paths:
- apps/cli-go/**
merge_group:
paths:
- apps/cli-go/**
push:
branches:
- develop
paths:
- apps/cli-go/**

permissions:
contents: read
Expand All @@ -19,7 +25,7 @@ jobs:

- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
go-version-file: apps/cli-go/go.mod
cache: true

# Required by: internal/utils/credentials/keyring_test.go
Expand Down Expand Up @@ -56,7 +62,7 @@ jobs:

- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
go-version-file: apps/cli-go/go.mod
# Linter requires no cache
cache: false

Expand All @@ -73,7 +79,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
go-version-file: apps/cli-go/go.mod
cache: true
- run: go build main.go
- run: ./main init
Expand All @@ -90,13 +96,14 @@ jobs:

link:
name: Link
if: ${{ github.event_name == 'merge_group' || (github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork) }}
if: ${{ github.event_name == 'merge_group' || (github.event_name ==
'pull_request' && !github.event.pull_request.head.repo.fork) }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
go-version-file: apps/cli-go/go.mod
cache: true
- run: go build main.go
- run: ./main link
Expand All @@ -112,7 +119,7 @@ jobs:

- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
go-version-file: apps/cli-go/go.mod
cache: true

- run: go generate
Expand All @@ -122,3 +129,6 @@ jobs:
git diff
exit 1
fi
defaults:
run:
working-directory: apps/cli-go
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,16 @@ name: "CodeQL"

on:
pull_request:
paths:
- apps/cli-go/**
merge_group:
paths:
- apps/cli-go/**
push:
branches:
- develop
paths:
- apps/cli-go/**

jobs:
analyze:
Expand Down Expand Up @@ -72,12 +78,12 @@ jobs:
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality

# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- if: matrix.build-mode == 'manual'
shell: bash
run: |
Expand All @@ -92,3 +98,6 @@ jobs:
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
category: "/language:${{matrix.language}}"
defaults:
run:
working-directory: apps/cli-go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ on:
description: "org/image:tag"
required: true
type: string
paths:
- apps/cli-go/**

permissions:
contents: read
Expand Down Expand Up @@ -48,3 +50,6 @@ jobs:
dst: |
public.ecr.aws/supabase/${{ steps.strip.outputs.image }}
ghcr.io/supabase/${{ steps.strip.outputs.image }}
defaults:
run:
working-directory: apps/cli-go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ on:
#
# TODO: Make the cli start test run *after* we mirror images (if needed).
workflow_dispatch:

paths:
- apps/cli-go/**
permissions:
contents: read

Expand All @@ -29,7 +30,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
go-version-file: apps/cli-go/go.mod
cache: true
- id: list
run: |
Expand Down Expand Up @@ -58,3 +59,6 @@ jobs:
with:
image: ${{ matrix.src }}
secrets: inherit
defaults:
run:
working-directory: apps/cli-go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ name: Publish pg_prove

on:
workflow_dispatch:

paths:
- apps/cli-go/**
permissions:
contents: read

Expand Down Expand Up @@ -33,7 +34,7 @@ jobs:
strategy:
matrix:
include:
- runner: [self-hosted, X64]
- runner: [ self-hosted, X64 ]
arch: amd64
- runner: arm-runner
arch: arm64
Expand All @@ -58,7 +59,8 @@ jobs:
tags: ${{ needs.settings.outputs.image_tag }}_${{ matrix.arch }}
platforms: linux/${{ matrix.arch }}
cache-from: type=gha,scope=${{ github.ref_name }}-pg_prove-${{ matrix.arch }}
cache-to: type=gha,mode=max,scope=${{ github.ref_name }}-pg_prove-${{ matrix.arch }}
cache-to: type=gha,mode=max,scope=${{ github.ref_name }}-pg_prove-${{
matrix.arch }}

merge_manifest:
needs:
Expand Down Expand Up @@ -86,3 +88,6 @@ jobs:
with:
image: ${{ needs.settings.outputs.image_tag }}
secrets: inherit
defaults:
run:
working-directory: apps/cli-go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ name: Publish migra

on:
workflow_dispatch:

paths:
- apps/cli-go/**
permissions:
contents: read

Expand Down Expand Up @@ -33,7 +34,7 @@ jobs:
strategy:
matrix:
include:
- runner: [self-hosted, X64]
- runner: [ self-hosted, X64 ]
arch: amd64
- runner: arm-runner
arch: arm64
Expand All @@ -58,7 +59,8 @@ jobs:
tags: ${{ needs.settings.outputs.image_tag }}_${{ matrix.arch }}
platforms: linux/${{ matrix.arch }}
cache-from: type=gha,scope=${{ github.ref_name }}-migra-${{ matrix.arch }}
cache-to: type=gha,mode=max,scope=${{ github.ref_name }}-migra-${{ matrix.arch }}
cache-to: type=gha,mode=max,scope=${{ github.ref_name }}-migra-${{ matrix.arch
}}

merge_manifest:
needs:
Expand Down Expand Up @@ -86,3 +88,6 @@ jobs:
with:
image: ${{ needs.settings.outputs.image_tag }}
secrets: inherit
defaults:
run:
working-directory: apps/cli-go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ on:
description: "pkg version to tag (e.g. v1.2.2)"
required: true
type: string
paths:
- apps/cli-go/**

permissions:
contents: write
Expand Down Expand Up @@ -35,3 +37,6 @@ jobs:
fi
git tag "$TAG"
git push origin "$TAG"
defaults:
run:
working-directory: apps/cli-go
23 changes: 0 additions & 23 deletions .github/workflows/deploy-check.yml

This file was deleted.

27 changes: 0 additions & 27 deletions .github/workflows/deploy.yml

This file was deleted.

Loading
Loading