Skip to content

Latest commit

 

History

History
340 lines (286 loc) · 98.2 KB

File metadata and controls

340 lines (286 loc) · 98.2 KB

Go CLI Porting Status

Manual parity tracker for the TypeScript CLI port. Update this file whenever a command is added or parity changes.

Reference:

Legend

  • ported: TS command exists and the flag/parameter surface is materially aligned with the old Go CLI
  • partial: TS feature exists but differs materially from the old Go CLI shape, flag surface, or invocation style. This includes feature parity delivered through framework-built global flags such as --help instead of matching Go subcommands exactly.
  • missing: no TS command/subcommand exists yet

Percentages and counts below are based on final leaf commands only. Command groups like db, functions, and completion are not counted as commands.

Summary

Metric Count Percent
Fully ported commands 11 / 94 11.7%
Partially ported commands 55 / 94 58.5%

Family Summary

Family Final commands ported partial missing Represented in TS
Quick Start 1 0 (0%) 0 (0%) 1 (100%) 0 (0%)
Project / Stack Lifecycle 9 2 (22.2%) 7 (77.8%) 0 (0%) 9 (100%)
Database 19 5 (26.3%) 0 (0%) 14 (73.7%) 5 (26.3%)
Code Generation 3 0 (0%) 0 (0%) 3 (100%) 0 (0%)
Functions 6 0 (0%) 0 (0%) 6 (100%) 0 (0%)
Storage 4 0 (0%) 0 (0%) 4 (100%) 0 (0%)
Management APIs 47 0 (0%) 47 (100%) 0 (0%) 47 (100%)
Additional Commands 5 4 (80%) 1 (20%) 0 (0%) 5 (100.0%)

Global Flags Overview

This tracker is command-focused, but root global flag drift is large enough to note separately.

Surface TS path Missing old flags/params Extra TS flags/params Notes
supabase global flags ../src/shared/cli/global-flags.ts --create-ticket, --debug, --dns-resolver, --experimental, --network-id, --output, --profile, --workdir, --yes --output-format Root flag parity is still far from the Go CLI, but the framework already provides global --help, and supabase completion <shell> is restored as a Go-style subcommand. The framework's --completions global flag remains available for next/ users.

TS-only Commands

These commands exist in the TS CLI today but have no direct top-level equivalent in the old Go CLI reference.

TS command TS path Notes
dev planned Reserved for a TS-native long-running local development workflow command that watches files and orchestrates subcommands. Track this as TS-only unless a direct Go equivalent emerges.
logs ../src/next/commands/logs/logs.command.ts Streams local stack logs. No top-level logs command exists in the old Go CLI reference.
api ../src/next/commands/platform/api.command.ts Low-level Management API client. It supersedes the old generated tree with explicit discovery via supabase api routes and execution via supabase api request <route> [--method <METHOD>].
stack ../src/next/cli/root.ts TS-only local runtime namespace exposing stack start, stack stop, stack status, stack list, and stack update. Top-level start, stop, and status remain aliases.
branches switch ../src/next/commands/branches/switch/switch.command.ts No direct Go equivalent. Updates local active-branch state so subsequent commands target the selected branch.

Quick Start

Old command TS status TS command path or missing Missing flags/params Extra TS flags/params Notes
bootstrap missing missing n/a n/a No next/ command yet. Ported to native TS in the legacy shell; the migration-push sub-step is delegated to the Go binary as a documented interim until db push is natively ported.

Project / Stack Lifecycle

Old command TS status TS command path or missing Missing flags/params Extra TS flags/params Notes
init ported ../src/next/commands/init/init.command.ts - - TS init now writes the Go-style supabase/config.toml scaffold, updates supabase/.gitignore only when invoked inside a git repo, supports --force, --interactive, and --use-orioledb, and shares the same native implementation with the legacy shell command.
link partial ../src/next/commands/link/link.command.ts --password, --skip-pooler - TS link supports --project-ref, interactive project selection, and zero-config linking. It stores linked remote metadata in repo-local .supabase/project.json, but it does not yet manage direct database-password or pooler-specific link flows.
unlink ported ../src/next/commands/unlink/unlink.command.ts - - TS unlink matches the current Go surface and removes the repo-local linked project metadata for the active checkout.
login ported ../src/next/commands/login/login.command.ts - - Flag surface matches the old CLI: --token, --name, --no-browser. TS also supports env-var and piped-stdin token input without adding new flags.
logout partial ../src/next/commands/logout/logout.command.ts - --yes TS adds --yes to skip the confirmation prompt in non-interactive / scripted contexts. No equivalent flag in the Go CLI, so this remains partial rather than fully ported.
start partial ../src/next/commands/start/start.command.ts --ignore-health-check, --sandbox; legacy --exclude names like gotrue, storage-api, postgres-meta, edge-runtime, logflare, supavisor, and kong are not aligned --stack, --service-version, --detach TS start supports foreground and detached modes, named managed stacks, pinned stack baselines, linked/local/per-run service version overrides, and exclusions for auth, postgrest, realtime, storage, imgproxy, mailpit, pgmeta, studio, analytics, vector, and pooler.
stop partial ../src/next/commands/stop/stop.command.ts --all, --project-id --stack Current TS stop only covers one project-scoped managed stack at a time. It supports --no-backup, can target non-default stack names with --stack, and preserves pinned stack metadata unless --no-backup is used.
status partial ../src/next/commands/status/status.command.ts --override-name --stack Current TS status shows a detailed running or stopped view for one project-scoped managed stack and reports whether pinned stack versions are up to date against the cached linked/default baseline.

| services | ported | ../src/next/commands/services/services.command.ts | --output remains a global legacy-shell concern rather than a next-only command flag | --output-format | TS restores the dedicated services command, prints the bundled local service image matrix, and best-effort compares linked remote versions without proxying to Go. |

Database

Old command TS status TS command path or missing Missing flags/params Extra TS flags/params Notes
db diff ported legacy/commands/db/diff/ n/a n/a Native TS port. Native pg-delta / migra diff via edge-runtime against a Go-seam-provisioned live shadow (db __shadow); --use-pgadmin / --use-pg-schema delegate to the Go binary.
db dump ported legacy/commands/db/dump/ n/a n/a Native TS port. Streams pg_dump/pg_dumpall via a Docker container (LegacyDockerRun); schema/data/role modes, --dry-run script print, IPv4 transaction-pooler fallback.
db lint ported legacy/commands/db/lint/ n/a n/a Native TS port. Runs plpgsql_check in a rolled-back transaction via LegacyDbConnection; emits Go-parity pretty JSON.
db pull ported legacy/commands/db/pull/ n/a n/a Native TS port. Native pg-delta / migra migration + --declarative pg-delta export; reconciles schema_migrations. The initial-migra pull dumps the remote schema natively (pg_dump) then appends the migra diff. Only --experimental (structured dump) still delegates to Go, pending a TS PostgreSQL DDL parser for format.WriteStructuredSchemas.
db push ported legacy/commands/db/push/ n/a n/a Native TS port. Connects local/linked/--db-url; pushes pending migrations, --include-seed seeds (seed_files hash tracking), --include-roles, [db.vault] secrets; --dry-run. encrypted: vault secrets + best-effort pg-delta catalog cache not ported (no output impact).
db reset ported legacy/commands/db/reset/ n/a n/a Remote path native (drop user schemas, vault upsert, MigrateAndSeed, --version/--last, --sql-paths seed override). Local path native: running check, recreate + migrate + seed via the hidden Go db __db-bootstrap seam, storage-gated bucket seeding (reuses seed buckets), git-branch Finished… line. Only the niche --experimental remote schema-files path still delegates to the Go binary (telemetry-disabled).
db start ported legacy/commands/db/start/ n/a n/a Native TS port. Validates config, checks "already running" (prints Go's line), else delegates the container bootstrap (create + health + initial schema/roles/migrations/seed + _current_branch) to the hidden Go db __db-bootstrap --mode start seam. No status table / cli_stack_started (those are supabase start). --from-backup supported.
inspect report ported legacy/commands/inspect/report/ n/a n/a Native TS port. Runs every inspect query via server-side COPY ... CSV, writes 14 CSVs under <output-dir>/<date>/, then renders a Go-parity Glamour rules summary (bounded csvq-subset evaluator; custom [experimental.inspect.rules] supported).
inspect db db-stats ported legacy/commands/inspect/db/db-stats/ n/a n/a Native TS port. Queries Postgres directly via LegacyDbConnection; renders Go-parity Glamour tables.
inspect db replication-slots ported legacy/commands/inspect/db/replication-slots/ n/a n/a Native TS port. Queries Postgres directly via LegacyDbConnection; renders Go-parity Glamour tables.
inspect db locks ported legacy/commands/inspect/db/locks/ n/a n/a Native TS port. Queries Postgres directly via LegacyDbConnection; renders Go-parity Glamour tables.
inspect db blocking ported legacy/commands/inspect/db/blocking/ n/a n/a Native TS port. Queries Postgres directly via LegacyDbConnection; renders Go-parity Glamour tables.
inspect db outliers ported legacy/commands/inspect/db/outliers/ n/a n/a Native TS port. Queries Postgres directly via LegacyDbConnection; renders Go-parity Glamour tables.
inspect db calls ported legacy/commands/inspect/db/calls/ n/a n/a Native TS port. Queries Postgres directly via LegacyDbConnection; renders Go-parity Glamour tables.
inspect db index-stats ported legacy/commands/inspect/db/index-stats/ n/a n/a Native TS port. Queries Postgres directly via LegacyDbConnection; renders Go-parity Glamour tables.
inspect db long-running-queries ported legacy/commands/inspect/db/long-running-queries/ n/a n/a Native TS port. Queries Postgres directly via LegacyDbConnection; renders Go-parity Glamour tables.
inspect db bloat ported legacy/commands/inspect/db/bloat/ n/a n/a Native TS port. Queries Postgres directly via LegacyDbConnection; renders Go-parity Glamour tables.
inspect db role-stats ported legacy/commands/inspect/db/role-stats/ n/a n/a Native TS port. Queries Postgres directly via LegacyDbConnection; renders Go-parity Glamour tables.
inspect db vacuum-stats ported legacy/commands/inspect/db/vacuum-stats/ n/a n/a Native TS port. Queries Postgres directly via LegacyDbConnection; renders Go-parity Glamour tables.
inspect db table-stats ported legacy/commands/inspect/db/table-stats/ n/a n/a Native TS port. Queries Postgres directly via LegacyDbConnection; renders Go-parity Glamour tables.
inspect db traffic-profile ported legacy/commands/inspect/db/traffic-profile/ n/a n/a Native TS port. Queries Postgres directly via LegacyDbConnection; renders Go-parity Glamour tables.
inspect db cache-hit ported legacy/commands/inspect/db/cache-hit/ n/a n/a Native TS port. Deprecated (use db-stats); routes to the active query.
inspect db index-usage ported legacy/commands/inspect/db/index-usage/ n/a n/a Native TS port. Deprecated (use index-stats); routes to the active query.
inspect db total-index-size ported legacy/commands/inspect/db/total-index-size/ n/a n/a Native TS port. Deprecated (use index-stats); routes to the active query.
inspect db index-sizes ported legacy/commands/inspect/db/index-sizes/ n/a n/a Native TS port. Deprecated (use index-stats); routes to the active query.
inspect db table-sizes ported legacy/commands/inspect/db/table-sizes/ n/a n/a Native TS port. Deprecated (use table-stats); routes to the active query.
inspect db table-index-sizes ported legacy/commands/inspect/db/table-index-sizes/ n/a n/a Native TS port. Deprecated (use table-stats); routes to the active query.
inspect db total-table-sizes ported legacy/commands/inspect/db/total-table-sizes/ n/a n/a Native TS port. Deprecated (use table-stats); routes to the active query.
inspect db unused-indexes ported legacy/commands/inspect/db/unused-indexes/ n/a n/a Native TS port. Deprecated (use index-stats); routes to the active query.
inspect db table-record-counts ported legacy/commands/inspect/db/table-record-counts/ n/a n/a Native TS port. Deprecated (use table-stats); routes to the active query.
inspect db seq-scans ported legacy/commands/inspect/db/seq-scans/ n/a n/a Native TS port. Deprecated (use index-stats); routes to the active query.
inspect db role-configs ported legacy/commands/inspect/db/role-configs/ n/a n/a Native TS port. Deprecated (use role-stats); routes to the active query.
inspect db role-connections ported legacy/commands/inspect/db/role-connections/ n/a n/a Native TS port. Deprecated (use role-stats); routes to the active query.
migration down ported legacy/commands/migration/down/ n/a n/a Native TS port. Revert prompt → drop user schemas → vault upsert → migrate&seed to the target version; defaults to --local. Skips Go's pgcache catalog write.
migration fetch ported legacy/commands/migration/fetch/ n/a n/a Native TS port. Reads schema_migrations and writes supabase/migrations/<version>_<name>.sql; overwrite prompt for a non-empty dir.
migration list ported legacy/commands/migration/list/ n/a n/a Native TS port. Merges remote schema_migrations with local files into a Glamour ASCII table (Local / Remote / Time-UTC columns); defaults to --linked.
migration new ported legacy/commands/migration/new/ n/a n/a Native TS port. Writes supabase/migrations/<timestamp>_<name>.sql (mode 0644) from piped stdin; no DB/API.
migration repair ported legacy/commands/migration/repair/ n/a n/a Native TS port. Transactional create-table + TRUNCATE/UPSERT/DELETE; applied mode reads local files; repair-all prompt; defaults to --linked.
migration squash missing missing n/a n/a No native TS implementation yet. Wrapped in legacy shell.
migration up ported legacy/commands/migration/up/ n/a n/a Native TS port. Computes pending migrations, upserts [db.vault], applies each transactionally; --include-all for out-of-order; defaults to --local. Does not seed (matches Go).
seed buckets ported legacy/commands/seed/buckets/ n/a n/a Native TS port. Local-only (Go's seed defines no --project-ref, so the ref is always empty): seeds [storage.buckets] + [storage.vector] against the local Storage service gateway; remote/analytics paths are unreachable and omitted. --linked/--local accepted for surface parity (both seed local). Vector graceful-skip WARNINGs ported.
test db ported legacy/commands/test/db/ n/a n/a Native TS port. --db-url/--local/--linked + variadic paths; runs supabase/pg_prove:3.36 via docker run; pgTAP enable/disable via @effect/sql-pg. --network-id override and [images] config override not modeled (documented divergences).
test new ported legacy/commands/test/new/ n/a n/a Native TS port. Writes supabase/tests/<name>_test.sql from the embedded pgtap template; --template (pgtap).

Code Generation

Old command TS status TS command path or missing Missing flags/params Extra TS flags/params Notes
gen bearer-jwt missing missing n/a n/a No native TS implementation yet. Wrapped in legacy shell.
gen signing-key missing missing n/a n/a No native TS implementation yet. Wrapped in legacy shell.
gen types missing missing n/a n/a No native TS implementation yet. Wrapped in legacy shell.

Functions

The old Go functions family mixed linked-project operations (list, deploy, download, delete) with local-development workflows (new, serve).

Current TS only exposes low-level Management API routes under api. This tracker does not count those routes as parity for the old functions command family, because there is still no dedicated TS functions CLI surface and no local Functions workflow equivalent.

Old command TS status New TS counterpart(s) Notes
functions delete missing missing Remote Management API routes exist under supabase api request ..., but there is no dedicated TS functions delete command surface. Wrapped in legacy shell.
functions deploy missing missing Remote Management API routes exist under supabase api request ..., but there is no dedicated TS functions deploy command surface. Wrapped in legacy shell.
functions download missing missing Remote Management API routes exist under supabase api request ..., but there is no dedicated TS functions download command surface. Wrapped in legacy shell.
functions list missing missing Remote Management API routes exist under supabase api request ..., but there is no dedicated TS functions list command surface. Wrapped in legacy shell.
functions new missing missing No TS local scaffold command yet. Wrapped in legacy shell.
functions serve missing missing No TS local Functions serving command yet. Wrapped in legacy shell.

Storage

The old Go storage family could target either the linked project or the local Storage API via --linked / --local.

Current TS only exposes low-level Management API routes under api. This tracker does not count those routes as parity for the old storage object-management CLI surface, especially because there is no TS equivalent for the old local Storage API workflow.

Old command TS status New TS counterpart(s) Notes
storage cp missing missing No TS object copy command in next/. Natively ported in the legacy shell (legacy/commands/storage/cp/) — --recursive, --local, --linked, --cache-control, --content-type, --jobs (Go has no --copy-metadata). Adds TS-only --output-format json|stream-json.
storage ls missing missing No TS object listing command in next/. Natively ported in the legacy shell (legacy/commands/storage/ls/) — --recursive, --local, --linked. Adds TS-only --output-format json|stream-json.
storage mv missing missing No TS object move command in next/. Natively ported in the legacy shell (legacy/commands/storage/mv/) — --recursive, --local, --linked. Adds TS-only --output-format json|stream-json.
storage rm missing missing No TS object remove command in next/. Natively ported in the legacy shell (legacy/commands/storage/rm/) — --recursive, --local, --linked; global --yes/SUPABASE_YES skips the confirmation. Adds TS-only --output-format json|stream-json.

Management APIs

The remaining old Go Management API surface has been replaced by the route-first api command.

That means parity is no longer 1:1 at the flag level, but capability coverage is broader than the old Go surface:

  • every current Management API OpenAPI route is exposed through supabase api request <route> [--method <METHOD>]
  • the metadata test in ../src/next/commands/platform/platform-metadata.unit.test.ts verifies that every exported SDK/OpenAPI operation is represented exactly once
  • because the public UX is intentionally different, these commands are tracked as partial rather than ported

Common input drift across all Management API mappings:

  • missing old command-specific flags/parameters: the old hand-written subcommand flags are generally replaced by the generic route-first input model
  • extra TS flags/parameters: --method, --params, --json, --body, --body-file, --upload, --fields, --schema, --dry-run, --yes

Representative mappings:

  • projects list -> supabase api request /v1/projects
  • projects create -> supabase api request /v1/projects --method POST
  • projects get -> supabase api request /v1/projects/{ref}
  • projects config auth get -> supabase api request /v1/projects/{ref}/config/auth
  • projects config auth update -> supabase api request /v1/projects/{ref}/config/auth --method PATCH
  • branches get -> supabase api request /v1/projects/{ref}/branches/{branch_id}
  • sso list -> supabase api request /v1/projects/{ref}/config/auth/sso/providers

These route-first equivalents are intentionally lower-level than the old Go command families. Hand-written UX such as supabase branches create and supabase branches list still exists separately where the CLI benefits from a dedicated workflow.

Additional Commands

Old command TS status TS command path or missing Missing flags/params Extra TS flags/params Notes
completion bash ported supabase completion bash - - Proxies verbatim to the Go binary so the emitted script is byte-identical to Cobra's output (CLI-1532). --no-descriptions added to match cobra's auto-registered flag (CLI-1858).
completion fish ported supabase completion fish - - Proxies verbatim to the Go binary so the emitted script is byte-identical to Cobra's output (CLI-1532). --no-descriptions added to match cobra's auto-registered flag (CLI-1858).
completion powershell ported supabase completion powershell - - Proxies verbatim to the Go binary so the emitted script is byte-identical to Cobra's output (CLI-1532). --no-descriptions added to match cobra's auto-registered flag (CLI-1858).
completion zsh ported supabase completion zsh - - Proxies verbatim to the Go binary so the emitted script is byte-identical to Cobra's output (CLI-1532). --no-descriptions added to match cobra's auto-registered flag (CLI-1858).
help partial supabase --help Go-style top-level help command shape - Feature parity exists via the framework-provided global --help flag instead of a dedicated help command.

Legacy Shell Wrapping Status

Phase 0 proxy wrappers in the legacy shell (src/legacy/). Each wrapped command forwards to the bundled Go binary via LegacyGoProxy. The migration command group also accepts Go's top-level migrations alias and forwards singular migration argv to Go.

Legend:

  • wrapped: Phase 0 proxy wrapper exists in the legacy shell
  • missing: no legacy shell command yet
Command Legacy status Legacy command path
orgs list ported ../src/legacy/commands/orgs/list/list.command.ts
orgs create ported ../src/legacy/commands/orgs/create/create.command.ts
projects list ported ../src/legacy/commands/projects/list/list.command.ts
projects create ported ../src/legacy/commands/projects/create/create.command.ts
projects delete ported ../src/legacy/commands/projects/delete/delete.command.ts
projects api-keys ported ../src/legacy/commands/projects/api-keys/api-keys.command.ts
branches list ported ../src/legacy/commands/branches/list/list.command.ts
branches create ported ../src/legacy/commands/branches/create/create.command.ts
branches get ported ../src/legacy/commands/branches/get/get.command.ts
branches update ported ../src/legacy/commands/branches/update/update.command.ts
branches pause ported ../src/legacy/commands/branches/pause/pause.command.ts
branches unpause ported ../src/legacy/commands/branches/unpause/unpause.command.ts
branches delete ported ../src/legacy/commands/branches/delete/delete.command.ts
branches disable ported ../src/legacy/commands/branches/disable/disable.command.ts
secrets list ported ../src/legacy/commands/secrets/list/list.command.ts
secrets set ported ../src/legacy/commands/secrets/set/set.command.ts
secrets unset ported ../src/legacy/commands/secrets/unset/unset.command.ts
config push ported ../src/legacy/commands/config/push/push.command.ts
backups list ported ../src/legacy/commands/backups/list/list.command.ts
backups restore ported ../src/legacy/commands/backups/restore/restore.command.ts
snippets list ported ../src/legacy/commands/snippets/list/list.command.ts
snippets download ported ../src/legacy/commands/snippets/download/download.command.ts
sso list ported ../src/legacy/commands/sso/list/list.command.ts
sso add ported ../src/legacy/commands/sso/add/add.command.ts
sso remove ported ../src/legacy/commands/sso/remove/remove.command.ts
sso update ported ../src/legacy/commands/sso/update/update.command.ts
sso show ported ../src/legacy/commands/sso/show/show.command.ts
sso info ported ../src/legacy/commands/sso/info/info.command.ts
domains create ported ../src/legacy/commands/domains/create/create.command.ts
domains get ported ../src/legacy/commands/domains/get/get.command.ts
domains reverify ported ../src/legacy/commands/domains/reverify/reverify.command.ts
domains activate ported ../src/legacy/commands/domains/activate/activate.command.ts
domains delete ported ../src/legacy/commands/domains/delete/delete.command.ts
vanity-subdomains get ported ../src/legacy/commands/vanity-subdomains/get/get.command.ts
vanity-subdomains check-availability ported ../src/legacy/commands/vanity-subdomains/check-availability/check-availability.command.ts
vanity-subdomains activate ported ../src/legacy/commands/vanity-subdomains/activate/activate.command.ts
vanity-subdomains delete ported ../src/legacy/commands/vanity-subdomains/delete/delete.command.ts
network-bans get ported ../src/legacy/commands/network-bans/get/get.command.ts
network-bans remove ported ../src/legacy/commands/network-bans/remove/remove.command.ts
network-restrictions get ported ../src/legacy/commands/network-restrictions/get/get.command.ts
network-restrictions update ported ../src/legacy/commands/network-restrictions/update/update.command.ts
encryption get-root-key ported ../src/legacy/commands/encryption/get-root-key/get-root-key.command.ts
encryption update-root-key ported ../src/legacy/commands/encryption/update-root-key/update-root-key.command.ts
ssl-enforcement get ported ../src/legacy/commands/ssl-enforcement/get/get.command.ts
ssl-enforcement update ported ../src/legacy/commands/ssl-enforcement/update/update.command.ts
postgres-config get ported ../src/legacy/commands/postgres-config/get/get.command.ts
postgres-config update ported ../src/legacy/commands/postgres-config/update/update.command.ts
postgres-config delete ported ../src/legacy/commands/postgres-config/delete/delete.command.ts
login ported ../src/legacy/commands/login/login.command.ts
logout ported ../src/legacy/commands/logout/logout.command.ts
link ported ../src/legacy/commands/link/link.command.ts
unlink ported ../src/legacy/commands/unlink/unlink.command.ts
bootstrap ported ../src/legacy/commands/bootstrap/bootstrap.command.ts (native; db push step delegated to the Go binary — interim)
init ported ../src/legacy/commands/init/init.command.ts
services ported ../src/legacy/commands/services/services.command.ts
start wrapped ../src/legacy/commands/start/start.command.ts
stop ported ../src/legacy/commands/stop/stop.command.ts — native; talks directly to Docker/Podman via subprocess, replicating Go's label-filter and container-naming scheme
status ported ../src/legacy/commands/status/status.command.ts — native; talks directly to Docker/Podman via subprocess, replicating Go's label-filter and container-naming scheme
telemetry enable ported ../src/legacy/commands/telemetry/enable/enable.command.ts
telemetry disable ported ../src/legacy/commands/telemetry/disable/disable.command.ts
telemetry status ported ../src/legacy/commands/telemetry/status/status.command.ts
migration list ported ../src/legacy/commands/migration/list/list.command.ts — native; merged Local/Remote/Time-UTC Glamour table
migration new ported ../src/legacy/commands/migration/new/new.command.ts — native; writes supabase/migrations/<timestamp>_<name>.sql from piped stdin
migration repair ported ../src/legacy/commands/migration/repair/repair.command.ts — native; transactional TRUNCATE/UPSERT/DELETE, repair-all prompt
migration squash wrapped ../src/legacy/commands/migration/squash/squash.command.ts
migration up ported ../src/legacy/commands/migration/up/up.command.ts — native; pending compute + vault upsert + per-file apply
migration down ported ../src/legacy/commands/migration/down/down.command.ts — native; drop + vault + migrate&seed to target version
migration fetch ported ../src/legacy/commands/migration/fetch/fetch.command.ts — native; writes history rows to supabase/migrations/
gen types ported ../src/legacy/commands/gen/types/types.command.ts
gen signing-key ported ../src/legacy/commands/gen/signing-key/signing-key.command.ts
gen bearer-jwt wrapped ../src/legacy/commands/gen/bearer-jwt/bearer-jwt.command.ts
gen keys wrapped ../src/legacy/commands/gen/keys/keys.command.ts
functions list wrapped ../src/legacy/commands/functions/list/list.command.ts
functions delete ported ../src/legacy/commands/functions/delete/delete.command.ts
functions download ported ../src/legacy/commands/functions/download/download.command.ts
functions deploy ported ../src/legacy/commands/functions/deploy/deploy.command.ts
functions new ported ../src/legacy/commands/functions/new/new.command.ts
functions serve ported ../src/legacy/commands/functions/serve/serve.command.ts
storage ls ported ../src/legacy/commands/storage/ls/ls.command.ts
storage cp ported ../src/legacy/commands/storage/cp/cp.command.ts
storage mv ported ../src/legacy/commands/storage/mv/mv.command.ts
storage rm ported ../src/legacy/commands/storage/rm/rm.command.ts
test db ported ../src/legacy/commands/test/db/db.command.ts
test new ported ../src/legacy/commands/test/new/new.command.ts
seed buckets ported ../src/legacy/commands/seed/buckets/buckets.command.ts
db diff ported ../src/legacy/commands/db/diff/diff.command.ts — native pg-delta / migra; --use-pgadmin / --use-pg-schema delegate to Go
db dump ported ../src/legacy/commands/db/dump/dump.command.ts
db push ported ../src/legacy/commands/db/push/push.command.ts
db pull ported ../src/legacy/commands/db/pull/pull.command.ts — native pg-delta / migra; --declarative (deprecated alias --use-pg-delta) + --diff-engine (migra|pg-delta); initial-migra pull dumps the schema natively (pg_dump) + appends the diff; only --experimental structured dump still delegates to Go (needs a TS DDL parser for WriteStructuredSchemas)
db reset ported ../src/legacy/commands/db/reset/reset.command.ts — includes Go-parity --sql-paths override for [db.seed].sql_paths
db lint ported ../src/legacy/commands/db/lint/lint.command.ts
db start ported ../src/legacy/commands/db/start/start.command.ts
db query ported ../src/legacy/commands/db/query/query.command.ts
db advisors ported ../src/legacy/commands/db/advisors/advisors.command.ts
db test wrapped ../src/legacy/commands/db/test/test.command.ts
db branch create wrapped ../src/legacy/commands/db/branch/create/create.command.ts
db branch delete wrapped ../src/legacy/commands/db/branch/delete/delete.command.ts
db branch list wrapped ../src/legacy/commands/db/branch/list/list.command.ts
db branch switch wrapped ../src/legacy/commands/db/branch/switch/switch.command.ts
db remote changes wrapped ../src/legacy/commands/db/remote/changes/changes.command.ts
db remote commit wrapped ../src/legacy/commands/db/remote/commit/commit.command.ts
db schema declarative sync ported ../src/legacy/commands/db/schema/declarative/sync/sync.command.ts
db schema declarative generate ported ../src/legacy/commands/db/schema/declarative/generate/generate.command.ts

Flag divergences from the Go reference:

  • projects api-keys has a TS-only --reveal flag (no Go equivalent). It sends reveal=true so the Management API returns the full secret keys (sb_secret_...) in full instead of redacting them, addressing issue #4775. Default behavior (omitted flag) matches Go exactly.
  • projects create has a TS-only --high-availability flag (no Go equivalent). It sets high_availability in the create request body. Default behavior (omitted flag) matches Go exactly.

Behavioral divergences from the Go reference:

  • services warns on a malformed linked project ref (matching Go's flags.LoadProjectRef validation message) but, unlike Go, does not then use that ref for the remote lookup. Go's cmd/services.go treats the validation failure as non-fatal and still calls listRemoteImages with the malformed value; TS skips the remote lookup instead, since the ref is embedded unescaped into the tenant gateway hostname and a malformed value could redirect the service-role key to an attacker-controlled host. Intentional TS-only hardening, not a parity bug — see services/SIDE_EFFECTS.md.