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

supabase / cli / 30298248778
65%
develop: 65%

Build:
Build:
LAST BUILD BRANCH: gh-readonly-queue/develop/pr-6014-14c7b44c0b8a7bd4f7804e0576a0c74f6ff45df4
DEFAULT BRANCH: develop
Ran 27 Jul 2026 07:29PM 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

27 Jul 2026 07:26PM UTC coverage: 65.288%. Remained the same
30298248778

push

github

web-flow
fix(cli): render SMS/MFA config templates instead of emitting the raw text/template escape (#5944)

## What changed

`supabase init` (and the `bootstrap` scratch-project path — both go
through the shared `renderProjectConfigTemplate` in
`apps/cli/src/shared/init/project-init.templates.ts`) wrote two broken
lines into the generated `supabase/config.toml`:

```toml
template = "Your code is {{ `{{ .Code }}` }}"
```

for both `[auth.sms]` and `[auth.mfa.phone]`. The Go CLI's template
source contains that `text/template` self-escape, but Go renders the
scaffold through `text/template` (`config.Eject`,
`pkg/config/config.go:555,572`), which resolves the backtick raw-string
action to the literal GoTrue template. The TS renderer copied the escape
verbatim and runs no template engine, so the raw escape landed in users'
configs — a functionally broken SMS/MFA OTP template (GoTrue would send
the literal text instead of substituting the code).

The fix pre-renders the two lines in the TS template constant:

```toml
template = "Your code is {{ .Code }}"
```

Verified byte-identical against the Go CLI's actual `config.Eject`
output (dumped via a throwaway Go test harness): these two lines were
the only divergence, and after the fix the full generated file matches
Go's eject byte-for-byte, including the trailing newline.

## Test changes

The existing byte-parity test compared the TS render against the **raw
Go template source**, so both sides carried the unresolved escape and
the test passed while the shipped output was broken. It now emulates
Go's eject-time rendering (`resolveGoTemplateEscapes`) before comparing,
so it would have caught this bug. Also added:

- a dedicated regression test asserting the two generated `template =`
lines are the rendered GoTrue templates, not raw Go escapes;
- a guard test that fails loudly if the Go scaffold ever gains a `{{ ...
}}` construct the suite does not model, so this class of parity drift
cannot silently return (raised by ... (continued)

11257 of 17242 relevant lines covered (65.29%)

10.5 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30298248778.1 27 Jul 2026 07:29PM UTC 230
65.29
GitHub Action Run
Source Files on build 30298248778
  • Tree
  • List 230
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #30298248778
  • fd0b5683 on github
  • Prev Build on develop (#30282166957)
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