• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

supabase / cli / 30354737150
65%

Build:
DEFAULT BRANCH: develop
Ran 28 Jul 2026 11:27AM UTC
Jobs 1
Files 230
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

28 Jul 2026 11:17AM UTC coverage: 65.313% (+0.03%) from 65.288%
30354737150

push

github

web-flow
feat(cli): envelope-first plan-gate upgrade hints (#5943)

Paid-feature denials now read the management API's
`entitlement_required` error envelope straight off the failed response
and print the upgrade hint with zero extra API calls. Previously the
suggest path made 2 extra round-trips (project lookup + entitlements)
per gated failure, and only 9 commands were wired at all.

**Changed:**
- **Wired commands stop making extra API calls on denial**: the shared
suggest functions (Go `plan_gate.go`, TS `legacy-upgrade-suggest.ts`)
parse `{ error: { code: "entitlement_required", feature, upgrade_url }
}` first; the entitlements round-trip stays as the fallback for gates
that do not emit the envelope yet (v1 SSO carries no server-side gate at
all).
- **`domains create/get/activate/reverify` and `vanity-subdomains get`
newly show the hint**: envelope-only, no fallback, because the
`custom_domain` entitlement key is plan-level while the gate is a
per-project add-on, so the old round-trip would tell Free orgs to
upgrade on unrelated 404s.
- **`cli_upgrade_suggested` reports the server-authoritative feature**:
`feature_key` comes from the envelope (fixes a `branching_persistent`
denial being logged as `branching_limit`); `org_slug` is parsed from
`upgrade_url`.
- **Go mirror kept 1:1** per the legacy-shell parity doctrine;
`AGENTS.md` telemetry table and the affected `SIDE_EFFECTS.md` files
updated to match.

**Note:** the envelope's `upgrade_url` is server-built and printed
without a host check. This trusts the management API host the same way
every authenticated call already does; a host allowlist would silently
suppress valid hints on profiles whose dashboard URL differs from the
CLI default.

## To test
Requires a Free-org project ref (to hit the gates).

Tested locally against prod (`bun src/legacy/main.ts`, Free org):
- [x] `domains get --project-ref <free-ref> --agent no` prints "Upgrade
your plan: .../org/<slug>/billing" on stderr; `--debug` shows exact... (continued)

11288 of 17283 relevant lines covered (65.31%)

10.53 hits per line

Coverage Regressions

Lines Coverage ∆ File
2
85.71
-14.29% internal/hostnames/activate/activate.go
2
90.48
-9.52% internal/hostnames/create/create.go
2
85.71
-14.29% internal/hostnames/get/get.go
2
85.71
-14.29% internal/hostnames/reverify/reverify.go
2
88.24
-11.76% internal/vanity_subdomains/get/get.go
Jobs
ID Job ID Ran Files Coverage
1 30354737150.1 28 Jul 2026 11:27AM UTC 230
65.31
GitHub Action Run
Source Files on build 30354737150
  • Tree
  • List 230
  • Changed 6
  • Source Changed 0
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30354737150
  • 4b62e726 on github
  • Prev Build on develop (#30347747094)
  • Next Build on develop (#30371873088)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc