Commit Graph
20957 Commits
Author SHA1 Message Date
Danny White 4215b6ca32 feat(studio): add cost estimates and validation feedback to pipeline review (#51641)
## Problem

The pipeline wizard in #49243 needs estimated costs and validation
feedback in review before creation.

## Solution

Add the megabranch’s inline cost estimate and validation feedback to
preview-enabled creation. Initial-sync costs follow the selected tables;
ongoing pipeline and streaming rates remain visible. Missing estimates
do not block creation. Validation feedback distinguishes critical issues
from warnings.

Preview off and editing keep the existing layout. The Start action,
warning confirmation and final cost dialog stay unchanged; no wizard
routing is added. Stacked on #51635.

## Review instructions

1. Open the [Pipelines
preview](https://studio-staging-git-dnywh-featpipeline-review-costs-supabase.vercel.app/dashboard/project/_/database/pipelines),
select a test project with Pipelines enabled, enable **Pipeline creation
wizard** in Feature Previews and click **Add pipeline**. Select a
publication and confirm **Estimated costs** follows Data review.
2. Compare **All tables**, **No tables** and selected-table initial
sync. Confirm initial-sync totals follow the selection, while hourly
pipeline and streaming rates stay visible. With **No tables**, initial
sync should cost zero. Check desktop and phone widths.
3. Enter valid-format but incorrect destination credentials and click
**Start pipeline**. Confirm critical validation issues appear inline and
creation stops. Correct the credentials and retry. If warnings are
returned, confirm the review explains they may affect replication and
the existing **Start pipeline anyway** confirmation still applies.
Cancel before final creation.
4. Turn the preview off and reopen **Add pipeline**. Confirm there is no
inline cost review. With the preview on, edit an existing pipeline and
confirm its original layout remains.
2026-10-15 11:31:13 +11:00
Danny White f20277377b feat(studio): add pipeline data and custom settings review (#51635)
## Problem

The pipeline wizard in #49243 needs publication, initial sync and custom
settings reviewed before creation.

## Solution

Extend the preview-enabled review from #51633 with Data, custom
connection settings and configured BigQuery table layouts. Values update
as fields change. Unchanged advanced defaults and unconfigured table
layouts are omitted; an explicit maximum staleness of zero is shown.

Preview off and editing keep their existing layout. Validation and
creation behaviour stay the same; no wizard routing is added. Stacked on
#51633.

| This PR: Simple Case | This PR: Extreme Case | Reference: Final Wizard
|
| --- | --- | --- |
| <img width="1244" height="1994" alt="CleanShot 2026-10-14 at 11 22
16@2x"
src="https://github.com/user-attachments/assets/5c2c9ea4-7b2b-4f0b-8ebe-0cfc2ac27059"
/> | <img width="1226" height="3568" alt="CleanShot 2026-10-14 at 12 02
16@2x"
src="https://github.com/user-attachments/assets/dc556d4a-5130-4b6c-80b5-8644603d9a55"
/> | <img width="1486" height="2364" alt="CleanShot 2026-10-14 at 10 50
30@2x"
src="https://github.com/user-attachments/assets/982b7d23-9449-4841-b002-9e30fbbabfe9"
/> |

## Review instructions

1. Open the [Pipelines
preview](https://studio-staging-git-dnywh-featpipeline-data-review-supabase.vercel.app/dashboard/project/_/database/pipelines),
select a test project with Pipelines enabled, enable **Pipeline creation
wizard** in Feature Previews and click **Add pipeline**. Confirm
**Data** review follows the destination review.
2. Select a publication. Confirm its name, table count and initial-sync
choice appear as read-only fields. Choose selected tables to include or
exclude and confirm their schema-qualified names appear. Change
publication and confirm old tables are not shown.
3. Under Data’s **Advanced settings**, change batch wait time, table
sync workers or initial sync connections. Confirm only custom values
appear in review. Restore defaults and confirm those rows disappear. For
BigQuery, configure partitioning or clustering and confirm the table
name and wrapping layout summary appear in the main column under **Table
layout**; unconfigured layouts should be omitted.
4. Change BigQuery connection pool size or maximum staleness and confirm
they appear within **Connection**. If available, check DuckLake pool
size and Snowflake role too. Check desktop and phone widths, then cancel
and discard changes; no credentials or creation are needed.
5. Turn the preview off and reopen **Add pipeline**: confirm no review.
With the preview on, edit an existing pipeline and confirm no review
there either.
2026-10-15 11:17:34 +11:00
Danny White 17a7d2a00f feat(studio): add destination review for preview pipeline creation (#51633)
## Problem

The pipeline wizard in #49243 needs a review of destination details
before creation.

## Solution

Add `PipelineDestinationReview` after Data in preview-enabled creation.
It uses the megabranch’s Destination and Connection sections,
destination logo, read-only fields and field descriptions. Values update
as fields change. Credentials are omitted. Custom DuckLake catalog URLs
and ClickHouse endpoints are masked as whole fields, with an eye toggle;
changing a URL masks it again.

Preview off and editing keep the existing layout. Validation and
creation behaviour stay the same; no wizard routing is added.
Publication, advanced settings and cost review will follow in later
slices.

| This PR | Reference: Final Wizard |
| --- | --- |
| <img width="1254" height="1308" alt="CleanShot 2026-10-14 at 11 01
05@2x"
src="https://github.com/user-attachments/assets/e792ed7f-d4f4-4557-b338-8a120c8663b5"
/> | <img width="1486" height="2364" alt="CleanShot 2026-10-14 at 10 50
30@2x"
src="https://github.com/user-attachments/assets/982b7d23-9449-4841-b002-9e30fbbabfe9"
/> |

## Review instructions

1. Open the [Pipelines
preview](https://studio-staging-git-dnywh-featpipeline-destinati-25606b-supabase.vercel.app/dashboard/project/_/database/pipelines),
select a test project with Pipelines enabled and go to **Database →
Pipelines**. Enable **Pipeline creation wizard** in Feature Previews,
then click **Add pipeline**. Confirm the review follows **Data**, with
**Destination** and **Connection** sections.
2. With BigQuery selected, enter a pipeline name, project ID and dataset
ID. Confirm the review updates with those values in read-only fields,
includes field descriptions and the destination logo/region, and omits
the service-account key. Check desktop and phone widths.
3. If available, select DuckLake with a custom catalog. Enter a catalog
URL and data path. Confirm the whole URL is hidden in review, use the
eye toggle to reveal/hide it, then change the URL and confirm it is
hidden again. For Supabase DuckLake, confirm the bucket is shown
instead. Snowflake shows account/database/schema without its private
key; ClickHouse shows database/engine and a masked endpoint without its
password.
4. Cancel and discard changes; no pipeline creation is needed. Turn the
preview off and reopen **Add pipeline**: confirm there is no review
section. With the preview on, edit an existing pipeline and confirm
there is no review section there either.
2026-10-15 10:44:23 +11:00
Sam Meech-WardandJon Meyers f56efc3a79 blog: How we made the Supabase Select 2026 badge (#51422)
## Problem

The Supabase Select 2026 badge needs a write-up: how it came together,
and what attendees and people watching from home are already building
with it.

## Solution

- New post:
`apps/www/_blog/2026-10-07-how-we-made-the-supabase-select-2026-badge.mdx`
(the date is a placeholder until we set the publish date)
- Images in
`apps/www/public/images/blog/how-we-made-the-supabase-select-2026-badge/`,
resized and compressed
- Adds Sam Meech-Ward to `apps/www/lib/authors.json`

## Review instructions

1. Open the Vercel preview at
`/blog/how-we-made-the-supabase-select-2026-badge`.
2. Read through the post and check the images and links.

---------

Co-authored-by: Jon Meyers <13792200+dijonmusters@users.noreply.github.com>
2026-10-14 15:53:46 -06:00
Sahil Jagtap 135d8f00c3 fix(studio): match composite primary keys as tuples when deleting rows (#51575)
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

## What kind of change does this PR introduce?

Bug fix

## What is the current behavior?

Fixes #51574

Deleting several selected rows from a table with a composite primary key
builds one `IN` list per key column:

```sql
delete from public.user_roles where user_id in (1,2) and role_id in ('admin','viewer');
```

That matches the cartesian product of the selected values, so rows the
user never selected are deleted too. In the example above, selecting
`(1, 'admin')` and `(2, 'viewer')` also deletes `(1, 'viewer')` and `(2,
'admin')`.

## What is the new behavior?

When there is more than one primary-key column, the delete uses the
tuple `IN` filter that pg-meta already supports:

```sql
delete from public.user_roles where (user_id, role_id) in ((1, 'admin'), (2, 'viewer'));
```

Single-column primary keys keep the same SQL as before. The batched
operation queue uses the same helper for its delete operations, so it is
covered as well.

Added unit tests for both the single and composite cases.

## Additional context

This is silent data loss on join tables, which are the most common place
for composite keys and for multi-row deletes.
2026-10-14 19:24:36 +00:00
Charis cfdc81e1fe test(studio): raise timeout for NewScopedTokenSheet tests (#51755)
## Summary

- The `NewScopedTokenSheet` tests were flaky on master. The 5s default
timeout was hit intermittently, most visibly in the "falls back to
Custom when a row diverges from the preset" test, plus some sibling
tests.
- Observed in unit-test runs on master. Reproduced locally by running
the file under heavy CPU load, where tests took 4.5-5s versus ~1s on an
idle machine.
- Fix: file-level `vi.setConfig({ testTimeout: 15_000 })`. This only
affects this file because vitest isolates test files.

## Testing

- Ran the file 5 times under the same CPU load. All 21 tests passed each
time.
2026-10-14 14:30:41 -04:00
Ikki Nishihara cba8bc0b30 fix(studio): clarify system role grouping and deletion actions (#51526)
## Problem

The Database Roles page groups `postgres` and the reserved
`supabase_privileged_role` alongside custom roles, while labeling the
other section as "Roles managed by Supabase." The `postgres` actions
menu also offers an enabled Delete action.

Fixes #51525.

## Solution

- Rename the sections to "Supabase service roles" and "Project database
roles," and explain that the latter includes the `postgres`
administrator and custom roles.
- Include `supabase_privileged_role` among the protected service roles.
- Disable Delete for the existing `SYSTEM_ROLES` list, using
`DropdownMenuItemTooltip` to explain the restriction. Keep the
`postgres` permission editor available.
- Add component regressions for grouping, system-role menus, permission
editing, and custom-role deletion confirmation.

## Validation

- Studio unit suite: 732 files passed; 8,343 tests passed and one
expected failure.
- `pnpm --filter studio typecheck` passed.
- `SKIP_ASSET_UPLOAD=1 pnpm build --filter=studio` passed.
- ESLint for changed files, the Studio lint ratchet, monorepo Prettier,
and Studio knip passed.
- Playwright smoke verification of the production Studio build with
synthetic API responses: grouping, disabled Delete and tooltip, keyboard
interaction, permission editing/cancellation, read-only service roles,
search, and custom-role deletion confirmation/cancellation.

## Review instructions

1. Open Database → Roles. Check the two section names and the
administrator description. If present, `supabase_privileged_role`
belongs to the protected service section.
2. Open the `postgres` actions menu. Delete is disabled, and hovering it
explains why.
3. Expand `postgres`. Its existing editable permission switches remain
enabled for a user who can edit roles.
4. Open a custom role's actions menu. Delete still opens the
confirmation dialog; cancel the dialog.
5. Run `pnpm --filter studio exec vitest run
tests/components/Database/Roles.test.tsx`.

## Checklist

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [ ] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
— not applicable; this changes Studio UI and tests.
2026-10-14 13:57:01 -04:00
claude[bot]andClaude 4c7014745c feat(studio): add custom OIDC option to third-party auth providers (#51612)
<!-- claude-slack-attribution -->
_Requested by **Stojan Dimitrovski** · [Slack
thread](https://supabase.slack.com/archives/C022071RB2L/p1791475016175969?thread_ts=1791475016.175969&cid=C022071RB2L)_

## Problem

The Management API accepts any OIDC issuer for third-party auth (`POST
/v1/projects/{ref}/config/auth/third-party-auth` with
`oidc_issuer_url`), but the Dashboard only offers Firebase, Clerk,
WorkOS, Auth0 and Amazon Cognito. Users with another OIDC provider have
no way to register it from the Dashboard.

Studio also hides any issuer it does not recognize: `IntegrationCard`
returns `null` for the `custom` type, so an issuer added through the API
never shows up in the list and cannot be deleted from the Dashboard.

## Solution

- Add a "Custom OIDC" item to the Add provider menu on the Third-Party
Auth page.
- New `CreateCustomOidcDialog` with a single required Issuer URL field.
It reuses `useCreateThirdPartyAuthIntegrationMutation`, so query
invalidation and the error toast behave like the other providers. The
URL is sent as typed after trimming whitespace.
- New `isValidOidcIssuerUrl` helper in `ThirdPartyAuthForm.utils.ts`:
the value must be an `https://` URL with a host, no query string, no
fragment, and no embedded credentials.
- The dialog copy is kept short: a one-line description and a single
helper line noting that signing keys are found at the issuer's
`/.well-known/openid-configuration`.
- `IntegrationCard` now renders custom issuers (badge-check icon,
"Custom OIDC" label, Issuer URL, Delete integration) instead of hiding
them. Delete uses the existing flow and permission check.
- The `custom` label changes from "Custom" to "Custom OIDC".
- New docs page
`apps/docs/content/guides/auth/third-party/custom-oidc.mdx` (served at
`/docs/guides/auth/third-party/custom-oidc`). It covers the Dashboard
flow, the Management API alternative, the `role` claim, client setup,
and RLS. It is linked from the third-party auth overview and added to
the docs sidebar. This supersedes the draft docs PR #51611.

Not included: UI for `jwks_url` and `custom_jwks`. The page and menu
keep the same feature gate (`authentication:third_party_auth`) and the
same permission checks as the other providers.

Before: the Add provider menu lists five providers. An issuer that is
not one of them is registered only through the API and does not appear
in the Dashboard.

After: the menu has a sixth item, Custom OIDC. It opens a dialog that
takes an issuer URL, rejects non-HTTPS values with an inline message,
and registers the issuer. The new provider appears in the list and can
be deleted from there.

## Review instructions

1. Open a project's Authentication > Third-Party Auth page and open Add
provider. Check for the new Custom OIDC item.
2. Enter `http://example.com` and submit. The field shows an inline
error and no request is sent.
3. Enter a valid HTTPS issuer URL that serves an OIDC discovery document
and submit. A success toast appears and the provider shows in the list
as Custom OIDC with its Issuer URL.
4. Enter an issuer the API rejects. The API error shows in the existing
error toast and the dialog stays open.
5. Delete the provider with Delete integration and confirm it disappears
from the list.
6. Read the new docs page and check that its Dashboard steps match the
UI.

Local checks:

- `vitest --run components/interfaces/Auth/ThirdPartyAuthForm`: 20 tests
pass (validation helper unit tests plus dialog component tests with
MSW).
- `tsc --noEmit` in `apps/studio`: no new errors.
- ESLint on the directory: no warnings in the new or changed code.
- Prettier is clean on the changed files, including the docs page. The
typos check is clean on the docs page and overview.

I did not run the dialog in a browser against a real project, so there
are no screenshots. The docs app was not built or rendered locally.

## Checklist

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)

🤖 Generated with [Claude
Code](https://claude.ai/code/session_011HY2zckzPLcvXd28JPSqBe)

https://claude.ai/code/session_011HY2zckzPLcvXd28JPSqBe


---
_Generated by [Claude
Code](https://claude.ai/code/session_011HY2zckzPLcvXd28JPSqBe)_

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-14 19:01:08 +02:00
Wen Bo Xie 626f0d412a docs(branching): explain what a new branch inherits and what each push runs (#51753)
## Problem

Users ask whether the GitHub integration applies migrations and syncs
`config.toml` to a branch on its own or whether they need a GitHub
Action for it but there's no docs clarifying that.

The branching guides also does not have when a new branch inherits from
its base project, where a dashboard branch gets its schema, what the
`configure`, `migrate`, and `deploy` steps read from the repository, and
what the workflow step statuses mean.

## Solution

Added the missing facts to the four pages that already cover each topic,
with no new pages and no moved headings.

- Overview: a "What a new branch starts with" section listing the copied
settings, the placeholder Auth secrets, the webhook default, and where
each branch kind gets its schema.
- GitHub integration: a "What runs on each push" subsection that answers
the FDBKIN-11978 question directly, the `config.toml` sections the
configure step applies and the protected-branch rule, two migrate edge
cases and the `[db.migrations]` switch, and a new "Edge Functions"
subsection on copy-from-base and checksum skips.
- Dashboard: "Where a dashboard branch gets its schema".
- Troubleshooting: the step status table and two new causes under
"Config.toml not applying".

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-14 15:56:15 +00:00
Kody Jackson 21934397ca feat(changelog) - add structured data to entries (#51496)
## Problem

The current entries at `/changelog` have no [structured
metadata](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data)
about any of the pages, which can be important for LLM-indexing.

## Solution

Adds:
- a `techArticle` and `breadcrumb` schema items to the changelog
entries.
- adds `CollectionPage` and `Breadcrumb` schemas to `/changelog` itself

## Preview links

### Changelog entries


https://zone-www-dot-com-git-kody-devrel-696-changelog-4b1bb5-supabase.vercel.app/changelog/status-page-migration

Validates fine at
https://validator.schema.org/#url=https%3A%2F%2Fzone-www-dot-com-git-kody-devrel-696-changelog-4b1bb5-supabase.vercel.app%2Fchangelog%2Fstatus-page-migration

<img width="1095" height="492" alt="Screenshot 2026-10-09 at 2 35 30 PM"
src="https://github.com/user-attachments/assets/6d8d4890-5eb7-458b-addb-935c25e2df2b"
/>

### Changelog listing


https://zone-www-dot-com-git-kody-devrel-696-changelog-4b1bb5-supabase.vercel.app/changelog

Validation at
[schema.org](https://validator.schema.org/#url=https%3A%2F%2Fzone-www-dot-com-git-kody-devrel-696-changelog-4b1bb5-supabase.vercel.app%2Fchangelog).

<img width="1101" height="751" alt="image"
src="https://github.com/user-attachments/assets/305a25d3-06ea-46c9-990e-6cdc4ae771cf"
/>
2026-10-14 10:44:06 -05:00
Wen Bo Xie d46e226af8 docs(cli): update local stack guides for CLI v2.120.0 and v2.121.0 behavior (#51751)
## Problem

The two `supabase stack` guides describe behavior the CLI changed in
v2.120.0 (Oct 6) and v2.121.0 (deploy PR supabase/cli#7104 open). A
reader following them today hits different output than the pages
promise.

  | Guide says | CLI does | Since |
  | --- | --- | --- |
| `stack logs` streams live lines only, no history | Keeps history, adds
`--tail`, `--since`, `--service gateway`, reads while stopped
(supabase/cli#6893) | v2.120.0 |
| Rejected config change fails with `cannot change on the saved stack` |
Fails with `The saved stack cannot adopt these changes`
(supabase/cli#6944) | v2.120.0 |
| Port changes always need a new local project | A stopped project
re-plans ports on next start (supabase/cli#6950) | v2.121.0 |
| No bulk destroy | `destroy` accepts repeated `--stack-id`
(supabase/cli#7000) | v2.121.0 |
| OrioleDB unsupported | `db.orioledb_version` runs in both runtimes
(supabase/cli#6934) | v2.121.0 |
| Nothing about native `pg_cron` | Jobs run in background workers;
earlier versions fail every job (supabase/cli#7039) | v2.121.0 |

The CLI getting-started guide (#50736) also says a container runtime is
required and never mentions the native runtime.

  ## Solution

Updated both stack guides and added one sentence to the getting-started
prerequisites.

- v2.121.0-only behavior is marked "In CLI v2.121.0 or later", with the
earlier behavior stated beside it. The guides' baseline stays at
v2.119.0.
- Every claim was checked against supabase/cli `develop` source and the
commits above.
- The `supabase stack` commands stay out of the generated CLI reference
by design, so these guides remain the only place the flags are
documented.

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-14 16:45:07 +02:00
Charis cd6afdd8b2 refactor(studio): add tool contracts and migrate update_notebook (#51626)
## Summary

Each assistant tool's identity and contract is currently written in up
to nine places that nothing ties together at compile time. This PR adds
a contract/server split and migrates `update_notebook`, the tool with
the most copies, as the first proof of the design.

- **Contract** (`lib/ai/tools/update-notebook.ts`): isomorphic file with
the input and output schemas, approval flag, minimum opt-in level, and
`toModelOutput`, the single rule for what the model may see.
- **Server** (`update-notebook.server.ts`): the executable tool, built
with `approvalGatedToolFromContract`.
- **Registry** (`registry.ts`): collects contracts, derives a typed
`StudioUIMessage`, and provides `sanitizeContractPart` for history
replay.
- **Shared types** (`types.ts`): `ToolContract`, `ToolContext`,
`ToolFactory`, plus a single `getAuthHeaders` replacing three variants.
- **Approval gate** (`approval-gate.ts`): approval-gated tools get
`acceptUntrustedSql` / `acceptUntrustedLogsSql` through a gate passed to
`execute`, and `*.server.ts` files can't import the raw functions
(ESLint).
- **Opt-in level**: `update_notebook` is gated by its contract's
`minOptInLevel`. `TOOL_CATEGORY_MAP` is now typed against `ToolName` and
excludes migrated tools, which exposed `get_active_incidents` missing
from the name enum.

Removed duplicates: the `update_notebook` sanitizer in
`tool-sanitizer.ts`, the client-side `stripNotebookSnapshot`, and the
copied update schemas in `Message.utils.ts`.

## Behavior changes

- The client no longer strips `previous_content` from `update_notebook`
outputs before sending history, so requests carry the previous notebook
snapshot. The server still strips it before the model sees it.
- On history replay, an `update_notebook` output that doesn't match its
schema is dropped instead of passed through minus `previous_content`.

## Testing

- New `registry.test.ts` (typed parts, replay sanitizer) and a contract
case in `tool-filter.test.ts`.
- Studio typecheck, lint ratchet, knip, Prettier and the affected vitest
suites pass.
2026-10-14 10:44:38 -04:00
Crispy 427d5f4681 chore: catch you all later (#51746)
Bye!
2026-10-14 13:49:10 +00:00
Inder Singh 31a74e8663 fix(self-hosted): align OAuth and OIDC discovery api-gw routes with the platform (#51493) 2026-10-14 15:47:45 +02:00
Kody JacksonandCodesmith 2d7e5f57ed chore(docs / www) - update video links to latest DevRel videos where applicable (#51606)
## Problem

Several outdated (or missing) video references across docs and www apps.

## Solution

Updates these links (and adds where appropriate) to link out to the
newer series on Supabase by @dshukertjr and individual videos by
@dijonmusters

## Preview links


[docs](https://docs-git-kody-devrel-708-update-video-links-supabase.vercel.app/docs)

[www](https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/)

## Review instructions

For marketing folks specifically, sanity check on the
[changes](https://github.com/supabase/supabase/pull/51606/changes#diff-1fb413a22e16c9b7b200e47aa9661c8be240a52a06276ed04c450e3d92c9a12a)
to the features.tsx file, which render to:



Page | Before (live) | After (preview)
-- | -- | --
vector-database | https://supabase.com/features/vector-database |
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/vector-database
realtime-postgres-changes |
https://supabase.com/features/realtime-postgres-changes |
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/realtime-postgres-changes
realtime-broadcast | https://supabase.com/features/realtime-broadcast |
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/realtime-broadcast
realtime-presence | https://supabase.com/features/realtime-presence |
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/realtime-presence
deno-edge-functions | https://supabase.com/features/deno-edge-functions
|
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/deno-edge-functions
cli | https://supabase.com/features/cli |
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/cli
role-based-access-control |
https://supabase.com/features/role-based-access-control |
https://zone-www-dot-com-git-kody-devrel-708-update-vid-8e2d6a-supabase.vercel.app/features/role-based-access-control

---------

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
2026-10-14 08:27:19 -05:00
Paul Cioanca 83ee918e80 chore: remove redundant personnel (#51663)
* Some things are harder to delete than others
* No breaking changes expected

---

<img width="498" height="482" alt="gif"
src="https://github.com/user-attachments/assets/a33ff7da-2815-438d-ac7b-d6b2f91c8404"
/>
2026-10-14 13:06:32 +00:00
Joshen Lim 09a1f431bc Mass update for all lucide icon imports to use the component with Icon suffix (#51659)
## Context

This is largely just a mechanical change here:
Opting to use lucide icons with the `Icon` suffix across all icon
imports within `studio`
- so that it’s clearer which components are icons + reduces the
possibility of name collision with our own components
- e.g <User /> vs <UserIcon />

Also added a eslint rule for this:
<img width="1069" height="167" alt="image"
src="https://github.com/user-attachments/assets/7f36f443-5ca2-4bf6-8d22-86e774513bfc"
/>

And updated `AGENTS.md` as such:
```
Icons come from `lucide-react`, always imported with the `Icon` suffix (`import { CheckIcon, Trash2Icon } from 'lucide-react'`) — never the bare names (`Check`) or `Check as CheckIcon` aliases (lint-enforced).
```
2026-10-14 12:56:55 +02:00
21f7e306ee docs(cli): align declarative schema and diff engine docs with CLI behavior (#51609)
## Problem

Four docs pages describe CLI behavior that v2.120.0 no longer has. A
reader following them hits a wrong result in three places.

- The declarative guide tells legacy-engine users who ran `db pull
--declarative` to delete the exported tree. The command also rewrites
`[db.migrations].schema_paths` in `config.toml`, so `db diff` keeps
failing after the delete. The guide also claims the failure happens "on
the first file". The code does not guarantee that.
- The declarative directory moved from `supabase/database` to
`supabase/schemas` in v2.115.0. The CLI warns when it finds a tree at
the old path. No page mentions the move or the warning, and the `db
schema declarative sync` example in the command reference still prints
the old path.
- The command reference marks `--experimental` as required on the
declarative commands. `[experimental.pgdelta] enabled = true` also
unlocks them.

Two smaller gaps: the diff engines page shows how to fall back to
`migra` for one run but not how to try `pg-delta` for one run, and the
guide omits the note `db diff -f` prints when it ignores schema files.

Every claim was checked against the CLI source on `develop` and the
v2.120.0 tag.

## Solution

Docs-only change. Four files, 17 insertions, 8 deletions.

- `declarative-database-schemas.mdx`: corrects the legacy caution,
documents the pre-2.115.0 directory and its warning, adds the `db diff
-f` note.
- `diff-engines.mdx`: adds the single-run opt-in table (`db diff
--use-pg-delta`, `db pull --diff-engine pg-delta`, `--experimental` for
the declarative commands) and the `SUPABASE_EXPERIMENTAL_PG_DELTA`
override. Updates the legacy `db pull --declarative` row. Prettier
realigned the comparison table, which accounts for most of that page's
diff.
- `cli_v1_config.yaml`: `schema_paths` notes the automatic rewrite on
`migra` and the warning on `pg-delta`. `declarative_schema_path` notes
the pre-2.115.0 default.
- `cli_v1_commands.yaml`: fixes the example path and drops `required:
true` from `--experimental` on the two declarative commands. Both match
the spec the CLI generator produces from `develop`.

The command reference is generated from the CLI repo, so the same fixes
are in supabase/cli as a separate PR. Without that, the next release's
reference update reverts them here.

## Review instructions

1. Open the preview for
`/docs/guides/local-development/declarative-database-schemas` and search
for "schema_paths". The legacy caution should say the command rewrites
the setting and tell readers to remove it.
2. On the same page, search for "2.115.0". The directory note should
name the version and both fixes.
3. Open the preview for `/docs/guides/local-development/diff-engines`
and search for "single run". The opt-in table should render, and the
comparison table below it should still align.
4. Open the CLI reference for `db schema declarative sync`. The second
example should print `supabase/schemas`, and `--experimental` should not
show as required.
5. Open the config reference entries for `db.migrations.schema_paths`
and `experimental.pgdelta.declarative_schema_path` and read the added
sentences.
6. Optional source check in supabase/cli `develop`:
`updateDeclarativeSchemaPathsConfig` in
`apps/cli/src/commands/db/shared/pgdelta.write.ts` and
`apps/cli/src/commands/db/schema/declarative/declarative.former-default.ts`
back the two main claims.

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)

---------

Co-authored-by: avallete <andrew.valleteau@supabase.io>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:53:16 +00:00
Anthony Lio 0fe320e5e3 chore: shiki velite migration (#51579)
## Problem

design-system, ui-library and learn highlight code through
`@shikijs/compat` and `rehype-pretty-code` 0.9, which both predate shiki
1

compat has no v4 release, so these apps were stuck on shiki 1.6 and
couldn't pick up the injection fix from the previous pr

## Solution

- drops `@shikijs/compat`
- moves all three apps to `rehype-pretty-code`

<!--
## Preview links

If relevant, include links to changed pages for easy review access.

Copy the preview base URL from the Vercel bot comment on this PR. Use
the following table as an example template.

| Site | Live | Preview | Search for |
| -------------- |
-------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------
| ----------------------------- |
| WWW | [/blog/your-post](https://supabase.com/blog/your-post) |
[/blog/your-post](https://zone-www-dot-com-git-branch-name-supabase.vercel.app/blog/your-post)
| unique phrase from the change |
| Docs |
[/docs/guides/your-page](https://supabase.com/docs/guides/your-page) |
[/docs/guides/your-page](https://docs-git-branch-name-supabase.vercel.app/docs/guides/your-page)
| unique phrase from the change |
| Studio | [/dashboard](https://supabase.com/dashboard) |
[/dashboard](https://studio-git-branch-name-supabase.vercel.app/dashboard)
| unique phrase from the change |
| Design system | [/design-system](https://supabase.com/design-system) |
[/design-system](https://design-system-git-branch-name-supabase.vercel.app/design-system)
| unique phrase from the change |
| UI library | [/library](https://supabase.com/library) |
[/library](https://ui-library-git-branch-name-supabase.vercel.app/library)
| unique phrase from the change |
| Knowledge base |
[/kb/guides/your-page](https://supabase.com/kb/guides/your-page) |
[/kb/guides/your-page](https://kb-git-branch-name-supabase.vercel.app/kb/guides/your-page)
| unique phrase from the change |
-->

<!-- ## Additional context

Optionally add any other context or screenshots.

-->

## Review instructions

1. open
[/design-system/docs/accessibility](https://design-system-gd7xzujta-supabase.vercel.app/design-system/docs/accessibility)
on the preview and on production side by side _ highlighted lines should
keep the left border and background, and line numbers should line up
2. open
[/design-system/docs/components/chart](https://design-system-gd7xzujta-supabase.vercel.app/design-system/docs/components/chart)
_ highlighted words should have the gray pill, with no yellow background
or black text + code blocks with titles should still show the title
above the block
3. toggle light and dark mode on both pages _ token colors and the block
background should match production
4. open [ui-library
preview](https://ui-library-hmuv1teie-supabase.vercel.app/library/docs/starters/nextjs-starter)
and do a copy check
5. open a learn lesson with code `/foundations/authentication` and
compare it with production.

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-14 12:46:03 +03:00
Anthony Lio 4b93c5186d chore: bump shiki and catalog entry (#51578)
## Problem

monorepo resolved four different shiki majors _ shiki was never added to
the pnpm catalog so each app kept whatever version it started with.

shiki 4.5.0 stops grammar injections from being registered again on
every language load (shikijs/shiki#1318) and docs worked around the same
problem locally in #50501

## Solution

- adds `shiki: ^4.5.0` to the catalog and points docs, www and marketing
at it
- docs preload guard from #50501 stays but will be ff by moving docs to
lazy language loading in another pr

<!--
## Preview links

If relevant, include links to changed pages for easy review access.

Copy the preview base URL from the Vercel bot comment on this PR. Use
the following table as an example template.

| Site | Live | Preview | Search for |
| -------------- |
-------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------
| ----------------------------- |
| WWW | [/blog/your-post](https://supabase.com/blog/your-post) |
[/blog/your-post](https://zone-www-dot-com-git-branch-name-supabase.vercel.app/blog/your-post)
| unique phrase from the change |
| Docs |
[/docs/guides/your-page](https://supabase.com/docs/guides/your-page) |
[/docs/guides/your-page](https://docs-git-branch-name-supabase.vercel.app/docs/guides/your-page)
| unique phrase from the change |
| Studio | [/dashboard](https://supabase.com/dashboard) |
[/dashboard](https://studio-git-branch-name-supabase.vercel.app/dashboard)
| unique phrase from the change |
| Design system | [/design-system](https://supabase.com/design-system) |
[/design-system](https://design-system-git-branch-name-supabase.vercel.app/design-system)
| unique phrase from the change |
| UI library | [/library](https://supabase.com/library) |
[/library](https://ui-library-git-branch-name-supabase.vercel.app/library)
| unique phrase from the change |
| Knowledge base |
[/kb/guides/your-page](https://supabase.com/kb/guides/your-page) |
[/kb/guides/your-page](https://kb-git-branch-name-supabase.vercel.app/kb/guides/your-page)
| unique phrase from the change |
-->

<!-- ## Additional context

Optionally add any other context or screenshots.

-->

## Review instructions

1. open `/docs/guides/database/full-text-search` on the docs preview and
on production side by side _ sql, js, dart and python blocks should have
the same colors in light and dark mode
2. hover a function name in one of the js blocks on that page, the type
popover should still show
3. open the www preview home page, scroll to the frameworks section and
switch a few tabs _ code should be highlighted.
4. open `/go/supabase-stripe-projects` on the www preview _ code block
section should be highlighted the same as production

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-14 12:46:03 +03:00
Brian-AnandDanny White f1082e28c7 chore: migrate Framer Motion imports to Motion (#51520)
## Problem

Closes #31221.
The applications and shared UI packages still import the former
`framer-motion` package instead of Motion's React entry point.

## Solution

Replace runtime imports, type imports, and three test mocks with
`motion/react` across the consuming workspaces.
Replace the seven direct dependency declarations with `motion:
^11.18.2`.
Preserve the existing animation engine version and all other dependency
resolutions, including the asynchronous `domMax` feature loader.
Historical blog examples remain as published; `framer-motion` remains a
transitive implementation dependency of Motion.

## Review instructions

1. Run `pnpm install --frozen-lockfile` and check the seven dependency
replacements in the lockfile.
2. Open the WWW Auth page and Docs homepage at desktop and mobile
widths, with normal and reduced motion preferences.
3. Open the mobile navigation, expand Product on WWW, and close the menu
using Escape and the close button.
4. Check the existing animation components, shared form validation, and
Studio tests for unchanged behavior.

Validation:

- Studio: 731 test files, 8,334 passing tests and one expected failure,
with `--maxWorkers=4`.
- Shared UI, UI patterns, WWW, and UI library: 615 passing tests.
- `pnpm run typecheck --concurrency=1`: all 16 repository tasks pass.
- All six application source lint scripts and lint ratchets pass;
generated Docs example copies are excluded from local lint.
- Repository Prettier source check, lockfile formatting, and case hazard
check pass.
- WWW: 10 existing end-to-end checks across nine pages.
- Docs: 5 existing guide link and accessibility checks across Database
and Auth.
- WWW and Docs mobile navigation pass at desktop/mobile sizes with
normal/reduced motion; SQL-to-REST translation tabs exercise the
asynchronous feature loader without browser errors.
- Frozen-lockfile installation passes; all existing package and snapshot
resolutions are unchanged.
- Learn and UI library command palettes open, filter results, and close
with Escape without browser errors.
- Independent code review finds no actionable defects.
- `npm run build -- --filter=www --filter=docs --filter=studio
--filter=learn --filter=library --concurrency=1 --continue=always`: all
five affected applications build successfully (9 tasks including
prerequisites); asset uploads disabled for local validation.

## Checklist

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
(no docs topics changed)

---------

Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
2026-10-14 07:16:00 +00:00
Danny White 7fa436050a refactor(studio): compose the pipeline data section for wizard reuse (#51572)
## Problem

The pipeline wizard in #49243 needs publication, initial sync and
replication settings together on its data step.

## Solution

Compose `PipelineDataSection` from the existing controls and use it in
preview-enabled creation. It includes the publication selector,
initial-sync controls and data advanced settings, including BigQuery
table layout.

This preserves the grouping from #51570. Preview off and editing keep
the existing layout. Validation and creation behaviour stay the same; no
wizard routing is added. Stacked on #51570.

## Review instructions

1. Open the [Pipelines
preview](https://studio-staging-git-dnywh-featpipeline-data-section-supabase.vercel.app/dashboard/project/_/database/pipelines),
select a test project with Pipelines enabled and go to **Database →
Pipelines**. Enable **Pipeline creation wizard** in Feature Previews,
then click **Add pipeline**. Confirm **Data** follows **Destination
connection**, with publication and initial sync above its **Advanced
settings**.
2. Select a publication and change the initial-sync option. For
selected-table options, confirm the publication tables are available.
Click **New publication** in the publication selector and confirm the
existing creation panel opens, then cancel it.
3. Expand **Advanced settings** under **Data**. Confirm replication
settings appear, plus table layout for BigQuery, without connection pool
size, staleness or role. Change **Batch wait time**, collapse and reopen
the accordion, and confirm the value remains. Check desktop and phone
widths. Cancel and discard changes; no credentials or pipeline creation
are needed.
4. Turn the preview off and reopen **Add pipeline**. Confirm the
original layout remains. With the preview on, edit an existing pipeline
and confirm its original layout also remains.
2026-10-14 10:28:21 +11:00
Danny White 37fb536e6c feat(studio): group connection settings in the pipeline creation preview (#51570)
## Problem

The pipeline wizard in #49243 needs connection settings before table
selection.

## Solution

With **Pipeline creation wizard** enabled, rearrange the creation sheet
into destination selection, **Destination connection**, then **Data**.
Group name, region, credentials and connection advanced settings
together. Keep publication, initial sync, replication settings and
BigQuery table layout in the data section.

Preview off and editing keep the existing layout. Validation and
creation behaviour stay the same. This still uses the sheet; no wizard
routing is added. Stacked on #51568.

| Feature Preview Off | Feature Preview On |
| --- | --- |
| <img width="1272" height="2536" alt="CleanShot 2026-10-13 at 13 16
36@2x"
src="https://github.com/user-attachments/assets/ebad1082-b9ae-4f5e-91ad-08638ea2b032"
/> | <img width="1244" height="2538" alt="CleanShot 2026-10-13 at 13 17
20@2x"
src="https://github.com/user-attachments/assets/b5400b31-d60e-44e7-a4d6-cca1732b7974"
/> |
| _One “Advanced settings” at the bottom of the sheet that combines
everything. Destination details handles Publication and Initial sync._ |
_An “Advanced settings” accordion under BigQuery settings. Another
“Advanced settings” under Data (clipped above). Data contains fields for
Publication and Initial sync._ |

## Review instructions

1. Open the [Pipelines
preview](https://studio-staging-git-dnywh-featpipeline-connectio-6d0876-supabase.vercel.app/dashboard/project/_/database/pipelines),
select a test project with Pipelines enabled and click **Add pipeline**.
Enable **Pipeline creation wizard** in Feature Previews, then reopen the
sheet. Confirm the order is destination cards → connection → data.
2. With BigQuery selected, expand **Advanced settings** under
**Destination connection**. Confirm it contains pool size and staleness.
Expand **Advanced settings** under **Data** below publication and
initial sync. Confirm it contains replication settings and table layout,
without duplicate connection fields. Change a value and collapse/reopen
the accordion; confirm it remains.
3. If available, select DuckLake or Snowflake. Confirm their connection
accordion contains **Pool size** or **Role**, respectively. ClickHouse
and Analytics Bucket have no connection accordion. Check desktop and
phone widths. Cancel and discard changes; no credentials or pipeline
creation are needed.
4. Turn the preview off and reopen **Add pipeline**. Confirm the
original layout returns. With the preview on, edit an existing pipeline
and confirm it also keeps the original layout.
2026-10-14 10:17:20 +11:00
Danny White d457ab59c7 feat(studio): add pipeline wizard destination selection (#51568)
## Problem

The pipeline creation wizard in #49243 needs a destination selection
step that can be reviewed before wizard routing lands.

## Solution

Add `PipelineDestinationSelection` with BigQuery, DuckLake, Snowflake,
ClickHouse and deprecated Analytics Bucket radio options, using Studio’s
existing destination logos. Show it in the creation sheet only when
**Pipeline creation wizard** is enabled in Feature Previews and allowed
by ConfigCat. Preview off and editing retain the existing dropdown.

This is an incremental preview: creation still uses the sheet. No wizard
routing or design-system changes are included.

| Feature Preview Off | Feature Preview On |
| --- | --- |
| <img width="1274" height="1316" alt="CleanShot 2026-10-13 at 10 39
24@2x"
src="https://github.com/user-attachments/assets/433e4fb1-5fa2-4dc3-982e-0aee6b266015"
/> | <img width="1250" height="1890" alt="CleanShot 2026-10-13 at 10 53
09@2x"
src="https://github.com/user-attachments/assets/033d7e43-1a57-4d61-90e8-9048e3560909"
/> |

## Review instructions

1. Open the [preview to Database →
Pipelines](https://studio-staging-git-dnywh-featpipeline-destinati-54dc7d-supabase.vercel.app/dashboard/project/_/database/pipelines),
select a test project with Pipelines enabled and click **Add pipeline**.
With **Pipeline creation wizard** off, confirm the existing destination
dropdown appears.
2. Close the sheet, enable **Pipeline creation wizard** in Feature
Previews and reopen **Add pipeline**. Confirm radio cards replace the
dropdown, with BigQuery selected initially and only destinations
available to your project shown.
3. If Analytics Bucket is available, confirm its card has a
**DEPRECATED** badge. Select it and confirm the bucket fields appear and
the description below says **Destination type cannot be changed after
creation. Analytics Bucket is deprecated.** Click another destination.
Confirm only one card is selected and the connection fields below switch
to that destination. Use arrow keys to move focus and Space to select a
destination. Check at desktop and phone widths. Cancel and discard
changes; no credentials or pipeline creation are needed.
4. With the preview still on, open an existing pipeline for editing.
Confirm its destination dropdown remains locked. Turn the preview off
and reopen **Add pipeline** to confirm the original dropdown returns.
2026-10-14 09:59:48 +11:00
Kody Jackson 3910dda149 chore(docs) - update vercel marketplace mention (#51617)
## Problem

outdated placeholder for the `vercel marketplace` navigation. this is
now live

## Preview URL


https://docs-git-docs-chore-update-vercel-marketplace-mention-supabase.vercel.app/docs/guides/integrations/vercel-marketplace#via-vercel-marketplace
2026-10-13 15:35:40 -07:00
Gonzalo ServatandCopilot App 7642d1c4a4 chore(docs): add Gonzalo Servat to humans.txt (#51581)
## Problem

I recently joined Supabase as part of the Container Engineering team,
and adding myself to `humans.txt` is one of my onboarding tasks.

## Solution

Add my full name, Gonzalo Servat, to the team list in alphabetical
order, between Giuseppe Mandato and Greg Kress.

## Review instructions

1. Confirm Gonzalo Servat appears between Giuseppe Mandato and Greg
Kress.
2. Confirm the rest of the list is unchanged.

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [ ] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-10-13 15:07:51 -07:00
Ana 9ced729c39 Revert "docs(blog): add blog post for .NET SDK v8.0.0" (#51625)
Reverts supabase/supabase#50001
2026-10-13 21:03:03 +00:00
Ana 1dffb467cf Revert "docs: add introduction blog post for .NET SDK" (#51624)
Reverts supabase/supabase#50209
2026-10-13 21:02:29 +00:00
Jeremias Menichelli 9f7d28058b chore: Rotate env vars name correctly (#51619) 2026-10-13 17:24:16 -03:00
2043400335 chore(www): update Declarative Schemas feature entry for pg-delta (#51588)
## Problem

Declarative schemas now runs on `pg-delta`. The Declarative Schemas
entry on the features page still describes the old diff flow: it points
readers to `supabase db diff`, says migrations come from the current
database state, and tells readers to use `supabase db dump` to start
from an existing project.

## Solution

Updates the `declarative-schemas` entry in `apps/www/data/features.tsx`:

- Adds a paragraph after the intro saying the feature now runs on
`pg-delta`, that it is in alpha, and how to opt in.
- Updates key benefit 5 to list grants, partitions, publications, and
domains, and extension-managed objects.
- Replaces the `supabase db diff` integration bullet with `supabase db
schema declarative sync`.
- Updates the intro bullet and three FAQ answers to match the current
docs: how migrations are generated, whether readers write their own
migration files, and how to start from an existing project (`supabase db
schema declarative generate --linked`, with `supabase db dump` kept for
the legacy engine).

The entry's status stays `PRODUCT_STAGES.GA`. The feature is GA and only
the new engine is alpha, and the new paragraph says so.

This should merge with or after the launch blog post (#51571), so the
page doesn't get ahead of the announcement.

## Preview links

| Site | Live | Preview | Search for |
| ---- | ---- | ------- | ---------- |
| WWW |
[/features/declarative-schemas](https://supabase.com/features/declarative-schemas)
| Vercel bot comment on this PR, `/features/declarative-schemas` | `now
runs on` |

## Review instructions

1. Open the live and preview links side by side.
2. Check that the new paragraph appears after the intro and renders its
inline code.
3. Check that key benefit 5 and the CLI integration bullet use the new
text.
4. Check the three updated FAQ answers: how declarative schemas differ
from migrations, whether you write your own migration files, and using
declarative schemas with an existing project.
5. Confirm the status badge still reads General Availability.

## Checklist

Check all before review:

- [ ] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [ ] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Wendie Cheung <wendie.cheung@supabase.io>
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-authored-by: Wen Bo Xie <wenbox323@gmail.com>
2026-10-14 07:02:22 +11:00
6f23988169 feat(blog): add Declarative Schemas 2.0 with pg-delta post (#51571)
## Problem

Declarative Schemas 2.0 runs on `pg-delta`. It needs a launch blog post.

## Solution

Adds `apps/www/_blog/2026-10-13-declarative-schemas-2-0-pg-delta.mdx`,
which will publish at `/blog/declarative-schemas-2-0-pg-delta`.

The post covers why the diff engine was rebuilt, what the new diff
covers, how to turn it on, a four-step walkthrough, and what stays out
of scope.

Adds the social and thumbnail images in
`apps/www/public/images/blog/select-rewind-2026-declarative-schemas-2-blog/`
(`og.png`, `thumb.png`) and references them from `imgSocial` and
`imgThumb`.

## Preview links

| Site | Live | Preview | Search for |
| ---- | ---- | ------- | ---------- |
| WWW | Not live yet |
[/blog/declarative-schemas-2-0-pg-delta](https://zone-www-dot-com-git-wendiecheung-declarative-s-817801-supabase.vercel.app/blog/declarative-schemas-2-0-pg-delta)
| `Declarative Schemas 2.0` |

## Review instructions

1. Open the preview link.
2. Check that the comparison table, code blocks, and links render.
3. Check that the post shows its thumbnail on `/blog` and its social
image in the page metadata.
4. Confirm the frontmatter: title, description, authors (`avallete`,
`wenbo`), date, tags, and images.

## Checklist

Check all before review:

- [ ] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [ ] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Wendie Cheung <wendie.cheung@supabase.io>
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-authored-by: Wen Bo Xie <wenbox323@gmail.com>
Co-authored-by: Prashant Sridharan <prashant_sridharan@hotmail.com>
2026-10-14 06:59:22 +11:00
Jeremias Menichelli 05396e3378 [DOCS-1422] feat: create GitHub workflow or script to fetch troubleshooting (#51365)
## Problem

Currently troubleshooting guides merged in a private repository trigger
an action to open a PR against our Docs project.

From now on, we want the `kb` to host the troubleshooting guides and
take care of all the Github discussion process while improving some of
its parts.

## Solution

With this PR now:
- All files and scripts related to handling the actions and processes
for handling troubleshooting entries and GitHub Discussion creation on
Docs are deleted.
- A new workflow to sync troubleshooting guides with Supabase's
`troubleshooting_entries` table was created with some improvements.
- Now troubleshooting entries are fetched at pre-build in `kb` project
directory.
- When troubleshooting guides are created a new script detects this,
creates the GitHub discussion for it, extracts the URL, and pushes the
row to a db table at `push`.
- When troubleshooting guides are updated, a checksum holding its title
and body is compared, and the GitHub discussion content gets updated.
 
_Note: all troubleshooting content hasn't been migrated for **kb**, so
content not ready is filtered and not placed in the directory. This
allow us to progressively migrate all pages without breaking the build._

<!--
## Preview links

If relevant, include links to changed pages for easy review access.

Copy the preview base URL from the Vercel bot comment on this PR. Use
the following table as an example template.

| Site | Live | Preview | Search for |
| -------------- |
-------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------
| ----------------------------- |
| WWW | [/blog/your-post](https://supabase.com/blog/your-post) |
[/blog/your-post](https://zone-www-dot-com-git-branch-name-supabase.vercel.app/blog/your-post)
| unique phrase from the change |
| Docs |
[/docs/guides/your-page](https://supabase.com/docs/guides/your-page) |
[/docs/guides/your-page](https://docs-git-branch-name-supabase.vercel.app/docs/guides/your-page)
| unique phrase from the change |
| Studio | [/dashboard](https://supabase.com/dashboard) |
[/dashboard](https://studio-git-branch-name-supabase.vercel.app/dashboard)
| unique phrase from the change |
| Design system | [/design-system](https://supabase.com/design-system) |
[/design-system](https://design-system-git-branch-name-supabase.vercel.app/design-system)
| unique phrase from the change |
| UI library | [/library](https://supabase.com/library) |
[/library](https://ui-library-git-branch-name-supabase.vercel.app/library)
| unique phrase from the change |
| Knowledge base |
[/kb/guides/your-page](https://supabase.com/kb/guides/your-page) |
[/kb/guides/your-page](https://kb-git-branch-name-supabase.vercel.app/kb/guides/your-page)
| unique phrase from the change |
-->

<!-- ## Additional context

Optionally add any other context or screenshots.

-->

## Review instructions

For the database workflow, sadly, we will have to wait and monitor, but
the fetching mechanism can be tested.

1. Go to the preview link for `kb`
2. Go to Topics > Troubleshooting
3. A new guide should be visible "Partial migrations and schema
inconsistencies from embedded transactions", click on its link
4. A page showing the guide's content should render

<img width="1022" height="810" alt="Screenshot 2026-10-07 at 13 19 17"
src="https://github.com/user-attachments/assets/cbd25a60-8721-4329-907f-f92de894c217"
/>



## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-13 14:30:58 -03:00
Monica Khoury eaad809abf fix: webhook retry error handling (nested error envelope + unhandled rejections) (#51591)
## What
Fixes two bugs found while writing component tests for the platform
webhooks page (follow-up to FE-3749):

1. The webhooks API nests error details under an `error` key (`{ error:
{ code, message } }`), but the shared `handleError` only reads a
top-level `message`. This meant the friendly rate-limit message ("wait a
minute and try again") never actually fired, it always fell back to a
generic error. Fixed with a local unwrapping `handleError` in
`platform-webhooks-fetchers.ts`.
2. Every mutation handler on the page (`mutateAsync` for
create/update/delete/regenerate-secret/send-test-event/retry) left the
re-thrown error from React Query uncaught, producing an unhandled
promise rejection on every failure, even though the error toast itself
was already correct. Fixed by wrapping each call in try/catch.

## Why
Found while writing the stacked test PR for FE-3749; filed as
[FE-4620](https://linear.app/supabase/issue/FE-4620/two-webhook-error-handling-bugs-found-while-writing-retryrate-limit)
since it's a correctness fix independent of the test work.

## Testing
Manually verified both fixes on localhost: rate-limit retry now shows
the friendly message, and no `Uncaught (in promise)` errors appear in
the console on any mutation failure.
2026-10-13 19:44:21 +03:00
shaziyaanddshukertjr bdb86f4e59 chore(www): add blog post: Ship changes to your Supabase backend with Grok Bot (#51430)
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

## What kind of change does this PR introduce?

New blog post (www): "Ship changes to your Supabase backend with Grok
Bot", announcing Supabase joining the SpaceXAI Partner Network.

## What is the current behavior?

N/A

## What is the new behavior?

Adds `/blog/ship-changes-to-your-supabase-backend-with-grok-bot`, dated
2026-10-13, with Nick Littman, Elsa Heffernan, and Shaziya Bandukia as
authors.

## Additional context

Also updates Nick Littman's title in `authors.json` to Solution
Architect.

---------

Co-authored-by: dshukertjr <dshukertjr@gmail.com>
2026-10-13 15:56:13 +00:00
Joshen Lim 3a33cbcce5 Show main branch as part of the empty state (#51607)
## Context

Shows the production branch as part of the branching empty state (Shifts
`BranchingEmptyState` into `Overview`)

It's so that users can still then reach the "View logs" button for the
production branch which was otherwise hidden

<img width="1214" height="531" alt="image"
src="https://github.com/user-attachments/assets/3bc702f2-950b-4d9e-8b4f-78149af9ed82"
/>
2026-10-13 15:48:48 +00:00
Matt McGill 287c36447a chore(docs): add Matt McGill to humans.txt (#51610)
## Problem

I joined Supabase!

## Solution

I've recorded that I joined Supabase!

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [ ] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-13 15:32:36 +00:00
Gildas GarciaandJoshen Lim 4bf7b16473 feat(studio): scoped oauth apps reconsent UI (#51078)
## Problem

When users must grant access to an app they already added because its
scopes changed, they should have a clear understanding of the changes

## Solution

Show only the scopes differences by default

<img width="844" height="962" alt="image"
src="https://github.com/user-attachments/assets/6289f4cf-200f-4660-b9a1-aedbaaa963e3"
/>

## Review instructions

Try this UI with
[`authorize?mock_scenario=reconsent`](https://studio-staging-git-gildasgarcia-oauth-apps-inte-6106b6-supabase.vercel.app/dashboard/authorize?mock_scenario=reconsent)

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-10-13 17:25:50 +02:00
Francesco Sansalvadore 25708ed67a chore(studio): storage versioning override conflict (#51593)
## Problem

When uploading a file with same name of already existing file, the ui
automatically creates a new file with incremental number and doesn't
consider the scenario of giving the possibility of storing the new
upload as a version of the already existing file.

## Solution

Provide modal to chose the behaviour when name conflict happens when
uploading a file:
- Replace existing file (same file with version history)
- Keep both (new file with incremental numbering)


https://github.com/user-attachments/assets/ee192be9-4087-4e14-89f1-1c82acf550cd

Manage edge case of clashes with files created when bucket had
versioning enabled (so with `is_versioned` flag to true) and clashing
upload happens when bucket is in SUSPENDED state.


https://github.com/user-attachments/assets/00694c77-07c1-405e-bd54-bdf0bf99d274

Unrelated fix:
- add "Delete permanently" action when selecting multiple files with
versioning enabled

<img width="510" height="203" alt="Screenshot 2026-10-13 at 15 59 27"
src="https://github.com/user-attachments/assets/5692fc23-2fd3-4259-9de2-3932aecbccd0"
/>
2026-10-13 17:14:30 +02:00
8b9af56867 feat(studio): link specific region to regions docs in free-tier region selector (#51590)
<!-- claude-slack-attribution -->
_Requested by **Charis Lam** · [Slack
thread](https://supabase.slack.com/archives/C0161K73J1J/p1791896774914759)_

**Before:** The free-tier region selector footer read "Upgrade to Pro to
choose a specific region." with only "Upgrade to Pro" linked (to the
billing plan panel).

**After:** "specific region" also links to
https://supabase.com/docs/guides/platform/regions (opens in a new tab),
so users can see which regions exist. Requested by Lukas Bernert on
#51282.

Wrapped "specific region" in `InlineLink` with
`${DOCS_URL}/guides/platform/regions` in `RegionSelector.tsx` and
extended the existing wizard test to assert the link href.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01TsqepmwoWCXiv9BTxQK7MD

---
_Generated by [Claude
Code](https://claude.ai/code/session_01TsqepmwoWCXiv9BTxQK7MD)_

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Ali Waseem <waseema393@gmail.com>
2026-10-13 10:58:28 -04:00
Wen Bo Xie 2ba7352cfe docs: clarify declarative pg_cron job workflow (#51596)
## Problem

The declarative schemas guide does not explain how pg-delta tracks
pg_cron jobs. Its guidance that schema diffs exclude row data can also
suggest that jobs stored in cron.job are excluded.

Readers need to know where to declare jobs, how changes become
migrations, and why jobs without unique names are skipped.

## Solution

Document the declarative workflow for pg_cron jobs, including:

- Declaring jobs in SQL files under supabase/schemas/.
- Giving each job a unique name.
- Generating migrations when job declarations change or are removed.
- The scheduling and unscheduling calls emitted by the engine.

Connect the DML caveat to the extension configuration explanation so
readers understand why supported configuration rows are tracked.

Validation: Prettier, Markdown generation, and git diff --check passed.
The cron workflow was checked against source code but was not executed
in a sandbox.

## Review instructions

1. Open the declarative database schemas guide in the docs preview.
2. Read Data manipulation language and follow the extension
configuration link.
3. In Extension-managed objects, confirm that the cron guidance explains
where to declare jobs, the naming requirement, and the generated
migration behavior.
4. Follow generate and apply a migration and confirm it leads to the
existing workflow.

## Checklist

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [x] If I wrote a new docs topic or edited an existing topic, I used
the /write-the-docs or /edit-the-docs skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
2026-10-13 16:45:48 +02:00
Satya Rohith 1b1c495c6a docs: note deno.json/package.json required for .npmrc (#50320)
## Summary
- .npmrc is only read when deno.json or package.json also exists in the
function's directory. Adds a caution note to the private npm packages
section.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Documentation**
- Added a caution explaining that private NPM package configuration
requires a `deno.json` or `package.json` file in the function directory.
- Clarified that `.npmrc` is ignored when neither configuration file is
present.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-10-13 08:39:38 -06:00
ChloeGarciaMillerandandGildas Garcia e0d3489c87 fix: ESLint errors relating to accessibility in project settings (#50848)
## Problem

Some aria-label and Tooltip are missing for icon-only buttons.

The components are used in
- project settings / infrastructure
- integrations / data API / settings

## Solution

Improving accessibility by adding `aria-label` and `Tooltip`.

<!--
## Preview links

If relevant, include links to changed pages for easy review access.

Copy the preview base URL from the Vercel bot comment on this PR. Use
the following table as an example template.

| Site | Live | Preview | Search for |
| -------------- |
-------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------
| ----------------------------- |
| WWW | [/blog/your-post](https://supabase.com/blog/your-post) |
[/blog/your-post](https://zone-www-dot-com-git-branch-name-supabase.vercel.app/blog/your-post)
| unique phrase from the change |
| Docs |
[/docs/guides/your-page](https://supabase.com/docs/guides/your-page) |
[/docs/guides/your-page](https://docs-git-branch-name-supabase.vercel.app/docs/guides/your-page)
| unique phrase from the change |
| Studio | [/dashboard](https://supabase.com/dashboard) |
[/dashboard](https://studio-git-branch-name-supabase.vercel.app/dashboard)
| unique phrase from the change |
| Design system | [/design-system](https://supabase.com/design-system) |
[/design-system](https://design-system-git-branch-name-supabase.vercel.app/design-system)
| unique phrase from the change |
| UI library | [/library](https://supabase.com/library) |
[/library](https://ui-library-git-branch-name-supabase.vercel.app/library)
| unique phrase from the change |
| Knowledge base |
[/kb/guides/your-page](https://supabase.com/kb/guides/your-page) |
[/kb/guides/your-page](https://kb-git-branch-name-supabase.vercel.app/kb/guides/your-page)
| unique phrase from the change |
-->

<!-- ## Additional context

No visual changes have been made.

-->

## Review instructions

Provide a clear numbered procedure that the PR reviewer can walk
through.

1. Open the pages where the updated components are used
2. See that the tooltips appear correctly when interacting with the
relevant elements


## Checklist

Check all before review:

- [X] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [ ] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which references
[WORD_LIST](https://github.com/supabase/supabase/blob/master/apps/docs/WORD_LIST.md)
and the docs
[CONTRIBUTING](https://github.com/supabase/supabase/blob/master/apps/docs/CONTRIBUTING.md)
guide


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Accessibility**
* API function, schema, and table selectors have clear accessible names
and tooltips.
* Selector status summaries are announced politely by screen readers,
including schema loading states and available counts.
* **UI**
* Simplified the layout of the “Automatically expose new tables” setting
without changing its behavior.
* Corrected the transition styling on the infrastructure flow button;
its reduced-motion behavior remains unchanged.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Gildas Garcia <1122076+djhi@users.noreply.github.com>
2026-10-13 16:36:05 +02:00
claude[bot]andClaude 44ed522778 chore(studio): bump no-arbitrary-values ratchet baseline to 198 (#51594)
<!-- claude-slack-attribution -->
_Requested by **Charis Lam** · [Slack
thread](https://supabase.slack.com/archives/C0161K73J1J/p1791896774914759)_

**Before:** The `ratchet` check fails on any PR that includes current
master. The baseline for `shadcn/no-arbitrary-values` is 197, but master
has 198 since `text-[11px]` landed in `ArchivedVersionRestoreWidget.tsx`
via #51476. The baseline bot lowered it to 197 right after (#51524).

**After:** The baseline is 198, matching master, so the check passes
again.

This only changes that one rule's number (plus its per-file breakdown
entry for the widget) in
`apps/studio/.github/eslint-rule-baselines.json` and leaves the
underlying arbitrary value for its owner to fix.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01TsqepmwoWCXiv9BTxQK7MD

---
_Generated by [Claude
Code](https://claude.ai/code/session_01TsqepmwoWCXiv9BTxQK7MD)_

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-13 14:28:03 +00:00
Kody Jackson 9e05961079 feat(kb) - add edit page on github links to bottom of KB guides (#51268)
## Problem

The current KB guides don't have clear mappings back to their GitHub
source content, which is helpful for a) suggestions and fixes and b)
overall trust in the material we're putting out there.

## Solution

Adds in this functionality. May need to be conditionally hidden for some
areas, depending where we'd be sourcing the content from in the future.

## Preview links

-
https://kb-git-kody-market-2404-kb-add-edit-github-links-supabase.vercel.app/kb/guides/migrate-from-amazon-rds

<img width="1112" height="481" alt="Screenshot 2026-10-05 at 9 15 51 AM"
src="https://github.com/user-attachments/assets/ce95982c-27e3-48da-a6a5-9821d58e2b35"
/>
2026-10-13 09:08:37 -05:00
Mert YEREKAPANandJoshen Lim e5bc7d8fa1 chore(studio): ship fullscreen pricing panel, remove plan presentation experiment (#51554)
## Summary

The `pricingPanelPlanPresentation` experiment is concluded with
`fullscreen` as the winner. This makes it the only presentation and
removes the experiment code.

- Plan-change panel always opens as the full-screen overlay with the
pricing-page style cards.
- Removed the `control`, `parity`, `gaps` and `fullscreen-gaps`
presentations: the side-sheet shell, the original compact card, and the
"Not included" / "Plan limits" gap rows.
- Removed `plan-presentation.ts` (flag read, eligibility gate, exposure
tracking, gap lists) and its tests.
- Removed the `pricing_panel_plan_presentation_experiment_exposed` event
from `telemetry-constants.ts`.
- The panel no longer waits for PostHog flags to resolve before opening.
- `useTrackExperimentExposure` stays; it's kept across experiment gaps
in `knip.jsonc`.

**Behavior change for previously ineligible orgs:** partner-billed,
Stripe-managed, AWS Marketplace, Enterprise/Platform orgs and members
without billing write were held on `control` during the test. They now
also get the full-screen panel. Their partner-managed notices and
disabled CTAs are unchanged.

## After merge

- [ ] Archive the `pricingPanelPlanPresentation` flag and end the
experiment in PostHog.

## Test plan

- [x] `vitest` for `BillingSettings/Subscription`: 11 passing
(partner-managed messaging, full-screen shell, pricing-page cards, no
gap rows)
- [x] `tsc`: no errors in touched files
- [x] `knip --workspace apps/studio`: clean
- [ ] Preview: open `/org/[slug]/billing?panel=subscriptionPlan` for a
Free org and a partner-billed org

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-10-13 06:58:30 -07:00
Kody Jackson 6f45cf8f63 fix(docs,www) - add in redirects for high-traffic 404s (#51500)
## Problem

Missing redirects for changed paths and pages leading to an extra ~1500
404's in the past 24 hours for folks (and bots) browsing our web
properties.

## Solution

Added redirects

## Preview links


https://zone-www-dot-com-git-kody-devrel-699-high-traff-584bc9-supabase.vercel.app/
(though most of these are docs links so the behavior actually won't be
visible in the preview)
2026-10-13 08:55:38 -05:00
Joshen Lim 0f238b5296 Make project vercel integrations collapsible (#51585)
## Context

For a project that might have multiple connections to Vercel projects,
the Settings -> Integrations -> Vercel section can get really long as
we're showing the configuration fields for all projects by default

Opting to make each vercel integration a collapsible instead

Also improves the "Configure connection" CTA from org integration
settings to include an id in the URL, so that redirecting users to the
project settings integrations page will land them on the right section

### Before

Organization settings -> integrations
<img width="500" alt="image"
src="https://github.com/user-attachments/assets/f5b9ea2c-0a95-4aff-9416-e16f853d3b8e"
/>

Project settings -> Integrations
<img width="500" alt="image"
src="https://github.com/user-attachments/assets/361d5ac7-5919-4103-aaae-cdb5b1a1ce8c"
/>


### After

Organization settings -> integrations
<img width="500" alt="image"
src="https://github.com/user-attachments/assets/232cfef7-affe-4f06-a019-7f86ee7805db"
/>

Project Settings -> Integrations
<img width="500" alt="image"
src="https://github.com/user-attachments/assets/c3902451-0578-4bfc-8149-2d6f9c276ebd"
/>
2026-10-13 07:52:33 -06:00
Kody Jackson eeef8d7507 feat(kb) - add optional, formatted date field to schema (#51271)
## Problem

LLMs especially are looking for freshness signals such as `published`
dates, especially high up in the content body.

## Solution

Adds a new date field in the schema and then conditionally renders it
within the GuideLayout template.

## Preview links


https://kb-git-kody-market-2505-guide-layout-date-formatted-supabase.vercel.app/kb/guides/sample-guide

<img width="1112" height="481" alt="image"
src="https://github.com/user-attachments/assets/e87fabaa-e5ec-47d4-9780-9e7fe90e16fb"
/>
2026-10-13 08:46:31 -05:00
supabase-supabase-autofixer[bot]andgithub-actions[bot] a89da5babb [bot] Decrease ESLint ratchet baselines (#51524)
Automated weekly decrease of ESLint ratchet baselines.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-10-13 09:42:54 -04:00
claude[bot]andClaude ffef679f70 chore(docs): add hasResults to docs_search_v2_search_submitted (#51541)
<!-- claude-slack-attribution -->
_Requested by **Pam Chia** · [Slack
thread](https://supabase.slack.com/archives/C076KTY11DF/p1791767641595649?thread_ts=1791767641.595649&cid=C076KTY11DF)_

## Problem

**Before:** `docs_search_v2_search_submitted` (added in #51146) fires
when a Search V2 query settles on either the `results` or the
`noResults` state, but it only sends `query`. A search that found
nothing looks the same as one that found results, and no other Search V2
event carries the outcome, so the no-results rate for Search V2 can't be
computed.

**After:** the event also sends `hasResults`. It's `true` when the
endpoint returned at least one result and `false` when it returned none,
so zero-result searches can be counted and their queries inspected.

## Solution

- `packages/common/telemetry-constants.ts`:
`DocsSearchV2SearchSubmittedEvent` gains a doc-commented `hasResults:
boolean` property.
- `apps/docs/features/SearchV2/SearchV2Dialog.tsx`: the existing fire
site sends `hasResults: searchState.status === 'results'`. The
`useDocsSearchV2` reducer only sets `results` when the response has at
least one hit, and `noResults` otherwise, so the status is exactly the
outcome.

The change is additive: the event name and `query` are unchanged, and
the `loading`, `error`, and `initial` states still don't fire the event.

Linear:
[GROWTH-1330](https://linear.app/supabase/issue/GROWTH-1330/docs-search-v2-add-hasresults-to-docs-search-v2-search-submitted)

## Review instructions

1. Open the docs preview with the Search V2 flag query:
`?docs-search-v2=search-v2-active`.
2. Open search and type a query that returns results. In the network
tab, the `/platform/telemetry/event` request for
`docs_search_v2_search_submitted` has `custom_properties` `{ "query":
"...", "hasResults": true }`.
3. Type a query that returns nothing (for example random characters).
The event has `"hasResults": false`.

## Checklist

Check all before review:

- [x] I have read
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
- [ ] If I wrote a new docs topic or edited an existing topic, I used
the `/write-the-docs` or `/edit-the-docs` skill, which applies the docs
[style
guide](https://github.com/supabase/supabase/tree/master/apps/docs/style-guide)
(not applicable: no docs content changed)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01JaqCdU2sPkBMbaUmUPW75i

---
_Generated by [Claude
Code](https://claude.ai/code/session_01JaqCdU2sPkBMbaUmUPW75i)_

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-13 10:41:53 -03:00