Commit Graph
19246 Commits
Author SHA1 Message Date
Danny White cca4e52dd0 refactor(ui-patterns): Standardise TanStack sort headers (#44212)
## What kind of change does this PR introduce?

Component update.

## What is the current behaviour?

TanStack tables in the repo are split between the shared `TableHeadSort`
primitive and the older Studio-local `DataTableColumnHeader` helper,
which makes the sorting UI and integration path inconsistent.

If you were to just use `DataTableColumnHeader` in `ui-patterns/Table`,
you’d get a very different visual result to the `TableHeadSort` UI you
see in most other tables.

## What is the new behaviour?

Adds a shared `TanStackTableHeadSort` adapter in `ui-patterns/Table`,
backed by the existing `TableHeadSort` primitive, and switches the
webhook table plus the design-system TanStack demo to that canonical
path. `DataTableColumnHeader` stays as a deprecated wrapper for now,
Studio gets a lint guard to block new imports of it, and the table docs
now point TanStack tables at the shared adapter explicitly.

## To test

Check out column sorting on the Platform Webhook endpoint deliveries
table.
2026-03-30 21:48:52 +11:00
Ivan Vasilov ee8eae7309 chore: Clean the ui package from next imports (#44278)
This PR moves several components which rely on `next` out of the `ui`
package to the `ui-patterns` package.

`ui-patterns` package is intented to be imported with specific imports
so it's ok if there are components reliant on `next` in there.

The `SonnerToaster` component has removed its dependency by requiring a
prop for `theme`.
2026-03-30 10:58:37 +02:00
Pamela Chia e01fa312fb feat(studio): add connection_string_copied tracking to ConnectSheet (#44327) 2026-03-30 16:32:18 +08:00
Joshen Lim ef6c47616f Bring Vault, Cron, Data API and GraphiQL integrations to the new UI (#44271)
## Context

Just brings more integrations over to the new UI bit by bit
- Vault
- Cron
- Data API
- GraphiQL

Will be tackling webhooks next which is a bit different as its not just
a database extension
2026-03-30 15:44:01 +08:00
Joshen Lim 4fdeed448b Joshen/fe 2854 migrate queues integration to new UI (#44270)
## Context

Related to marketplace related work, just moves the Queues integration
to the new UI (Changes are feature flagged)
<img width="1145" height="584" alt="image"
src="https://github.com/user-attachments/assets/d3245889-597d-44e2-9850-f20907e42056"
/>

Installation is now in a side panel with the intention that it'll just
be a single click to install integrations that involve multiple parts
<img width="400" height="955" alt="image"
src="https://github.com/user-attachments/assets/71903b61-6bd2-486c-903e-b48ae2133887"
/>


## To test
- Verify that you can install the integration and everything else should
be status quo
- Verify that everything should be status quo if the flag is off
2026-03-30 14:23:21 +08:00
Danny WhiteandAli Waseem 12a43e5aba chore(studio): storage file explorer breadcrumbs (#43844)
## What kind of change does this PR introduce?

UI update that resolves DEPR-114. Also resolves DEPR-113.

## What is the current behavior?

- The breadcrumbs on the file explorer have some rough edges in column
view
  - Fancy hide/show behavior
  - Hidden tap targets
- `FileExplorerHeader` actions can overflow on the x-axis
- The Navigate button is only shown on hover
- The inline Navigate flow does not work well on smaller screens

## What is the new behavior?

- Column view now shows the same in-explorer breadcrumb trail as list
view
- The active breadcrumb is visually emphasized, while inactive
breadcrumbs remain clickable
- The back affordance now uses a clearer arrow treatment with a stronger
separator from the breadcrumb trail
- The Navigate button is permanently visible and moved to the right-side
action group before Reload
- Navigate now opens a dialog on both desktop and mobile
- Added typed telemetry so we can measure `Navigate` usage before
deciding whether to keep or remove it
- Fixed header overflow by letting the full header contents scroll
horizontally together instead of visibly spilling out

| Before | After |
| --- | --- |
| <img width="947" height="997" alt="Buckets Storage AWS Healthy
Toolshed Supabase"
src="https://github.com/user-attachments/assets/fa53fdd4-954c-4832-bf9b-210b63ae020b"
/> | <img width="947" height="997" alt="Buckets Storage AWS Healthy
Toolshed Supabase"
src="https://github.com/user-attachments/assets/3689a0e5-97d1-4b36-a2dd-7adce23add5d"
/> |
| <img width="864" height="997" alt="Buckets Storage AWS Healthy
Toolshed Supabase"
src="https://github.com/user-attachments/assets/ad559118-205f-40e2-b3c5-97cef462d5f5"
/> | <img width="864" height="997" alt="Buckets Storage AWS Healthy
Toolshed Supabase"
src="https://github.com/user-attachments/assets/9c569b29-7c58-4a33-b809-34d6ed919008"
/> |

## Additional context

Also added a link to the `Buckets` portion of the `PageHeader`
breadcrumb:

```text
Files > Buckets > MyBucketName
```

It goes to the same place as Files because the root Files page lists
buckets, but having both links there feels more ergonomic in practice.

---------

Co-authored-by: Ali Waseem <waseema393@gmail.com>
2026-03-30 13:14:27 +11:00
Gildas Garcia 7d7de475ec chore: use react-hook-form in logs query modals (#44243)
## Problem

- Logs query modals still use `formik` and we want to remove it in
favour of `react-hook-form` to keep only one form library

## Solution

- Migrate to `react-hook-form`

## Screenshots

New query:
<img width="566" height="387" alt="image"
src="https://github.com/user-attachments/assets/f300a292-88f6-454e-8f86-84a27a8c4892"
/>

Existing query:
<img width="554" height="378" alt="image"
src="https://github.com/user-attachments/assets/2333f041-7185-47f6-8fb0-5176b5a0c77b"
/>
2026-03-27 17:32:15 +01:00
Gildas Garcia 753638caf4 fix: storage explorer column infinite loading loads the wrong column (#44275)
## Problem

When scrolling down in a column that has more than 200 items to trigger
its lazy loading, while other columns are displayed and the targeted
column isn't the last one, it doesn't load its items.

Fixes #43799

## Solution

- Don't rely on the storage state for opened folders for the lazy
loading
- Add the item path information to the column and use it to define the
API request path

## How to test

- create a bucket
- create a folder and upload more than 200 items in it
- in this folder, create a sub folder and upload more than 200 items in
it (make sure its name position it _before_ the files)
- refresh the page
- without scrolling the first column, select the subfolder
- now scroll down on the first column past the last of its items and
verify it loads more items
- do the same on the sub folder column

To easily create many files to upload, use the following commands:

For root folder:
```sh
for i in {0..300}
do
    echo hello >"root_$(printf "%03d" "$i").txt"
done
```

For sub folder:
```sh
for i in {0..300}
do
    echo hello >"sub_$(printf "%03d" "$i").txt"
done
```
2026-03-27 16:55:15 +01:00
Jeremias Menichelli 3ec3f3c57d chore(Docs): Bump radix dependency to avoid ref error (#44276) 2026-03-27 16:17:25 +01:00
Mert YEREKAPAN f8815aff9b refactor(pricing): remove A/B experiment logic and consolidate pricing components (#44205)
## 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?

Removes the control variant and replaces it with the test variant as
winner.

## What is the current behavior?

-

## What is the new behavior?

-
## Additional context

Add any other context or screenshots.
2026-03-27 11:31:47 +00:00
Gildas Garcia 63c63d57e3 chore: use react-hook-form in Storage custom expiry modal (#44245)
## Problem

- Storage custom expiry modal still uses `formik` and we want to remove
it in favour of `react-hook-form` to keep only one form library

## Solution

- Migrate to `react-hook-form`

## Screenshots

Before:
<img width="443" height="235" alt="image"
src="https://github.com/user-attachments/assets/c9e10fa5-a618-4287-bc13-ca40ce41af10"
/>
<img width="438" height="335" alt="image"
src="https://github.com/user-attachments/assets/bf903eaf-0c31-4150-a17d-32a616dde7cc"
/>

After:
<img width="417" height="290" alt="image"
src="https://github.com/user-attachments/assets/be12f39e-0f1f-46cb-a442-82553b0a77e6"
/>
<img width="443" height="342" alt="image"
src="https://github.com/user-attachments/assets/4f537259-d3f6-4664-a1a1-f4a921c6a26c"
/>
2026-03-27 12:31:33 +01:00
Jeremias Menichelli 5e6e2ec0c1 fix(Docs): Migrate the rest of the raw.githubcontent calls to new util (#44274) 2026-03-27 11:55:36 +01:00
Inder Singh 2fd49395b8 docs(self-hosted): session token usage with s3 client (#43394) 2026-03-27 11:48:16 +01:00
supabase-supabase-autofixer[bot]andsupabase-releaser[bot] d58cc5b157 docs: update js sdk docs (2.100.1) (#44236)
Updates JS sdk documentation following stable release.
Ran `make` in apps/docs/spec to regenerate tsdoc files.

**Details:**
- **Version:** `2.100.1`
- **Source:** `supabase-js-stable-release`
- **Changes:** Regenerated tsdoc files from latest spec files

🤖 Auto-generated from @supabase/supabase-js stable release.

Co-authored-by: supabase-releaser[bot] <223506987+supabase-releaser[bot]@users.noreply.github.com>
2026-03-27 11:39:52 +01:00
Sreyas Udayavarman c5518d437a Update standard-uploads.mdx (#44225)
Updated standard uploads documentation to include curl examples
2026-03-27 10:17:49 +05:30
2ab9915d8c Connect iteration (#43949)
<img width="1670" height="1030" alt="image"
src="https://github.com/user-attachments/assets/fa2e4f9a-2287-402c-89cc-7f05d04f57e5"
/>


- Connect button becomes primary on new projects
- Switch from HoverCard to a "Copy" button on project url
- Adds "API Keys" item to the "Get Connected" section on project home

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: SaxonF <1072756+SaxonF@users.noreply.github.com>
2026-03-27 09:14:04 +10:00
Danny White 6b6598994f chore(studio): add pagination to webhook deliveries table (#43847)
## What kind of change does this PR introduce?

UI update.

## What is the current behavior?

The webhook endpoint details view showed all mock deliveries in a single
table with a Studio-specific sortable header treatment, no pagination,
and uneven row heights when the retry action was absent.

## What is the new behavior?

Moves the deliveries table onto TanStack table state, adopts the shared
`TableHeadSort` header UI, keeps the existing delivery search, and adds
simple previous/next pagination controls at the bottom. The mock
deliveries are expanded so pagination and sorting can be exercised in
both organisation and project flows, and the actions column now reserves
a consistent button footprint so every row keeps the same minimum
height.

| Before | After |
| --- | --- |
| <img width="1728" height="997" alt="Webhooks Settings Chisel Toolshed
Supabase-A4712323-6FD9-471B-B1F4-234B20686018"
src="https://github.com/user-attachments/assets/2745e5fd-1ef7-4f3a-872c-1fd8d10dce41"
/> | <img width="1728" height="997" alt="Webhooks Settings Chisel
Toolshed Supabase-D482241B-F324-4EA2-9B89-133AD5E10F17"
src="https://github.com/user-attachments/assets/5bfcefd8-cb58-46c0-a863-dcf80e4da4a3"
/> |

## Additional context

This keeps the view on the Data Table path now, while aligning the
sortable headers with the design-system table pattern instead of the
older Studio-local `DataTableColumnHeader` helper.
2026-03-27 10:03:56 +11:00
joannamich ac3a0f45d8 Update humans.txt (#44230)
Adding myself to the Supabase team version 2 (alphabetical order)

## 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?

Update - Adding myself to the Supabase team version 2 (alphabetical
order)

## What is the current behavior?


## What is the new behavior?


## Additional context
2026-03-26 20:35:23 +01:00
Prashant SridharanandAna f3481f6f42 Added Stripe Projects go page (#43968)
## 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?

Added a new landing page to support the Stripe Projects launch.

---------

Co-authored-by: Ana <ana1337x@users.noreply.github.com>
2026-03-26 12:36:16 -04:00
Charis 634bd2760f fix: suppress misleading toast when navigating away from a deleted project (#44032)
Bug fix

## What is the current behavior?

When a user deletes a project, the `useProjectDetailQuery` in
`RouteValidationWrapper` returns an error (HTTP 404) because the project
no longer exists. This triggers the `isErrorProject` effect, which shows
a "You do not have access to this project" toast and redirects to the
home page — even though the user intentionally deleted the project.

## What is the new behavior?

The error's HTTP status code is checked before showing the toast. A 404
response (project not found / deleted) silently redirects without
showing the misleading access-denied toast. The toast is still shown for
other error codes (e.g. 403 Forbidden), where the "no access" message is
accurate.

## Additional context

Resolves FE-2831
2026-03-26 12:24:56 -04:00
David Alvarez 8b92bbac3e chore(docs): add David Alvarez to list of contributors (#44209)
## 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?

docs update to add David Alvarez to humans.txt

## What is the current behavior?

David Alvarez is not currently in the humans.txt file

## What is the new behavior?

David Alvarez is now in the humans.txt file!
2026-03-26 09:20:24 -07:00
Ana 415f56bf27 Revert "Revert "blog: Supabase joins the Stripe Projects developer preview"" (#44115)
Reverts supabase/supabase#44109

## 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 for Stripe Projects

## What is the current behavior?
N/A

## What is the new behavior?
Adds a new blog post: "Supabase joins the Stripe Projects Developer
Preview" and adds Gregor Vand and Ana Mogul to authors.json.
2026-03-26 12:13:58 -04:00
Greg Richardson 6fe6d9ea46 feat(docs): docs archive (#44206)
Adds a `https://supabase.com/docs/docs.tar.gz` which bundles the
generated markdown files and is served from `./public`. This archive is
needed by the supabase-ssh project.

## Preview

> Note: clicking this will download the archive (~936KB)

https://docs-git-feat-docs-archive-supabase.vercel.app/docs/docs.tar.gz
2026-03-26 09:47:11 -06:00
Gildas Garcia 5c98bb6c0f chore: react-hook-form best practices (#44221)
## Problem

The design system documentation and examples promote an invalid usage of
react-hook-form state.

## Solution

- Fix the documentation and examples
- Update Claude skills for future components

## Out of scope

- Fix current code across the repository
2026-03-26 16:24:08 +01:00
Gildas Garcia fba5a8a001 chore: use react-hook-form in network restrictions modal (#44238)
## Problem

- Network restrictions modal still uses `formik` and we want to remove
it in favour of `react-hook-form` to keep only one form library

## Solution

- Migrate to `react-hook-form`

## Screenshots

<img width="546" height="478" alt="image"
src="https://github.com/user-attachments/assets/457e59c0-e4cf-4bcb-b941-68cdb8876b45"
/>

<img width="568" height="511" alt="image"
src="https://github.com/user-attachments/assets/b118468a-bbe0-4c59-a63c-4bb33fe548eb"
/>
2026-03-26 16:23:48 +01:00
Gildas Garcia 91ee6e64f3 chore: use react-hook-form in SQL snippets modals (#44232)
## Problem

- SQL snippets modals still uses `formik` and we want to remove it in
favour of `react-hook-form` to keep only one form library

## Solution

- Migrate to `react-hook-form`
2026-03-26 15:47:15 +01:00
Gildas GarciaandCopilot e590acc04b chore: use react-hook-form in disk size configuration modal (#44233)
## Problem

- Disk size configuration modal still uses `formik` and we want to
remove it in favour of `react-hook-form` to keep only one form library

## Solution

- Migrate to `react-hook-form`

## How to test

Haven't found a way to test locally except by temporarily inverting
conditions in `apps/studio/pages/project/[ref]/database/settings.tsx` at
L57 and checking the API request payload in the network tab.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-26 15:46:28 +01:00
Ivan Vasilov bed5a96349 chore: Bump Typescript to v6 (#44204) 2026-03-26 15:27:35 +01:00
Vaibhav aded2cade0 fix: hooks form (#44231)
## TL;DR

fixes the scroll behavior for the schema and function dropdowns in the
auth Hooks form for sms & email

## Before:


https://github.com/user-attachments/assets/dd930a4d-da48-4b75-94ba-22f37973fa0e

## After:


https://github.com/user-attachments/assets/c08d4aff-d17d-4a8d-8a90-c6c111f28695



## Related 
- closes https://github.com/supabase/supabase/issues/44222
- Same pattern as https://github.com/supabase/supabase/pull/44181
2026-03-26 07:02:43 -06:00
Katerina Skroumpelou b87f6fa056 docs: move the rest of the docs to the js repo (#44096)
Ref PR: https://github.com/supabase/supabase-js/pull/2165

Remove entries from yaml. Use `tsdoc` only.
2026-03-26 14:29:50 +02:00
Gildas Garcia 71129c3057 chore: migrate observability report modals to use react-hook-form (#44227)
## Problem

- observability report modals still uses `formik` and we want to remove
it in favour of `react-hook-form` to keep only one form library

## Solution

- Migrate to `react-hook-form`
2026-03-26 12:28:52 +01:00
Jordan McQueen 844b62be08 chore(docs): add Jordan McQueen to humans.txt (#44218)
## 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?

Docs update to `humans.txt` to add `Jordan McQueen`
 
## What is the current behavior?

`Jordan McQueen` does not yet exist in `humans.txt`

## What is the new behavior?

`Jordan McQueen` exists in `humans.txt`
2026-03-26 18:53:54 +09:00
TheOtherBrian1andChris Chinchilla a574ef50ef docs: Update branching.mdx | fixed typo (#44112)
## 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?

docs update

## What is the current behavior?

Uses the phrase: "For e.g." instead of "For instance,"

## What is the new behavior?

Substituted out the abbreviation "e.g." for the word "instance"

---------

Co-authored-by: Chris Chinchilla <chris.ward@supabase.io>
2026-03-26 09:44:16 +00:00
Chris ChinchillaandCopilot Autofix powered by AI 2fe1d2935c docs: Update Ionic React guide with correct auth methods, updated dependencies, and code sample component (#43858)
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-26 09:36:04 +00:00
Vaibhav 4f9f47dccc docs: reports link (#44186)
small fix 😅

## Before:

<img width="737" height="291" alt="image"
src="https://github.com/user-attachments/assets/2041e729-2d15-4b99-b0b9-e591673861f2"
/>



## After:

<img width="875" height="474" alt="image"
src="https://github.com/user-attachments/assets/3260b0b4-6582-489d-84d1-a72db1e50bc4"
/>
2026-03-26 10:29:36 +01:00
supabase-cli-releaser[bot] 06bd4b29e1 chore: update cli reference doc (#44202)
Co-authored-by: supabase-cli-releaser[bot] <246109035+supabase-cli-releaser[bot]@users.noreply.github.com>
2026-03-26 10:29:01 +01:00
Gildas Garcia e5fb3801ac chore: update database role form to use react-hook-form (#44178)
## Problem

- The database role form still uses `formik` and we want to remove it in
favour of `react-hook-form` to keep only one form library
- The database role form does not follow the design system guidelines

## Solution

- Migrate to `react-hook-form`
- Apply the design system guidelines
- Make sure you can toggle switches by clicking their labels too
- Fix accessibility issues

## Notes

In the new design system, labels for disabled inputs have the same style
as those for enabled inputs

## Screenshots

Before:
<img width="1325" height="288" alt="image"
src="https://github.com/user-attachments/assets/5e558618-3227-42be-b085-4ee388c0aff6"
/>
<img width="1328" height="402" alt="image"
src="https://github.com/user-attachments/assets/9e41a4c2-ab38-4772-b619-548a1a0b9556"
/>

After:
<img width="1281" height="325" alt="image"
src="https://github.com/user-attachments/assets/698e526c-5ae3-4e89-bcb5-0bfee1b70f72"
/>
<img width="1285" height="428" alt="image"
src="https://github.com/user-attachments/assets/65b30dc2-9724-4609-9fd0-f32171e37abd"
/>
2026-03-26 10:05:35 +01:00
Inder Singh 1f733dc1d4 docs(self-host): custom email templates (#42832) 2026-03-26 09:21:16 +01:00
Danny WhiteandJoshen Lim 3980bb162d feat(studio): improve database column list scanning (#44208)
## What kind of change does this PR introduce?

UI improvements. Resolves DEPR-419.

## What is the current behavior?

- `ColumnList` splits type information across separate `Data Type` and
`Format` columns, which makes scanning less efficient
- The list only surfaces a limited subset of column metadata up front,
so key structural information like primary keys, foreign keys,
uniqueness, and identity is not easy to scan
- Constraint and nullability affordances are not aligned with the visual
language already used in the Table Editor and Schema Visualiser

## What is the new behavior?

- `ColumnList` now shows a leading type affordance icon, while keeping
the exact Postgres type visible in the `Type` column
- The standalone `Data Type` column is removed, and `format` is now the
primary textual type shown in the table
- The `Constraints` column now surfaces explicit icon-plus-label tokens
for:
  - `Primary`
  - `Foreign key`
  - `Unique`
  - `Identity`
  - `Nullable` / `Non-nullable`
- Constraint tokens use a purpose-built segmented style based on
`ComputeBadge`, including a green primary variant for primary keys
- Nullability now matches Schema Visualiser semantics exactly: outlined
diamond for nullable, filled diamond for non-nullable
- Existing search, descriptions, row actions, and permission gating are
preserved

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-03-26 15:55:32 +08:00
Andrey A. fe08059cb7 chore(self-hosted): remove backticks in headers in self-hosted how-to (#44184) 2026-03-26 08:54:46 +01:00
Ali WaseemandJoshen Lim 2b419fcb1a fix: revert changes when the value is the same as old (#44196)
## 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?

Revert changes when the value is the same as the old value

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-03-26 14:39:37 +08:00
Joshen Lim 3debd400a6 Refactor ColumnEditor to use latest UI components + fix some UI oddities (#44214)
## Context

Refactors the Table Editor's `ColumnEditor` to use the latest UI
components, and fix some UI oddities along the way

## Bug fixes

- Fix header text vertical alignment
  - Before:
<img width="325" height="59" alt="image"
src="https://github.com/user-attachments/assets/e4bc07d4-2630-4a86-a87c-4bbbf94e2f52"
/>
  - After:
<img width="351" height="74" alt="image"
src="https://github.com/user-attachments/assets/d0a0a246-59b6-4d19-8674-8cc5eb33772c"
/>
- Fix closing a toast would close the panel as well
- Can verify by creating a new column, then hitting save without
entering anything. Will trigger some error toasts and closing them will
close the panel too
- Fix tooltips on "is nullable" and "is unique" showing up irregardless
if "is primary key" is toggled on or off
2026-03-26 14:36:21 +08:00
Matt Rossman 0c5f64fcba feat(assistant): upgrade default models to gpt-5.4-nano and gpt-5.3-codex (#44107)
Replaces `gpt-5-mini` and `gpt-5` with `gpt-5.4-nano` and
`gpt-5.3-codex` respectively. Clients with stale model IDs in IndexedDB
will gracefully reset to the new defaults. While we can technically keep
the existing models around, we've
[opted](https://supabase.slack.com/archives/C051L8U2EJF/p1774283070517609?thread_ts=1773771991.871669&cid=C051L8U2EJF)
to replace them w/ the newer models for simplicity. Basic completion
endpoints use `'none'` reasoning level for optimal speed.

Rationale for these models is they provide they best balance of
intelligence/speed and cost. GPT-5.4-nano is less expensive (0.8x
price), faster, and smarter than GPT-5-mini. GPT-5.4-mini would be even
smarter but is 3x the price. GPT-5.3-Codex is ~1.4x the price of GPT-5,
while GPT-5.4 would be 2x price, but 5.3-Codex is still a big
intelligence boost from GPT-5.

See [eval
comparison](https://www.braintrust.dev/app/supabase.io/p/Assistant/experiments/mattrossman%2Fai-509-v2-upgrade-assistant-models-beyond-gpt-5-family-1774468619?c=master-1774458837&diff=between_experiments),
scores are relatively stable and conciseness naturally improves on
gpt-5.4-nano.

Other change:
- Fixed an eval test case to clarify that https://supabase.help is also
a correct URL for submitting support ticket, which was unfairly scored
as incorrect
[here](https://www.braintrust.dev/app/supabase.io/p/Assistant/trace?object_type=experiment&object_id=5244cccd-23b2-4f79-9dd2-287f1b40ebad&r=bac9b903-8bde-4c21-99dd-e0ed141c4f9e&s=f248fbf5-75bf-4aab-be0a-87a4298e6d11)

I sanity checked the Assistant, natural language filters, and SQL Editor
completions on staging preview.

References:
- https://openai.com/index/introducing-gpt-5-4-mini-and-nano/
- https://openai.com/index/introducing-gpt-5-3-codex/
- https://developers.openai.com/api/docs/pricing

Closes AI-509
2026-03-26 14:35:54 +08:00
Prashant Sridharan ba5eedcefa Added Navigating Regional Network Blocks blog post (#44203) 2026-03-26 05:52:19 +00:00
Ignacio Dobronich 87c61d8de3 fix: hide tax id banner for billing partner orgs (#44195)
### Changes
- (shouldFetch): `!org.billing_partner` - prevents the unnecessary API
call to fetch the customer profile for partner orgs.
- (early return guard): `org.billing_partner` - returns null (hides the
banner) when the org has a billing partner.
2026-03-26 11:34:44 +08:00
Danny WhiteandJoshen Lim 64c37ca72b chore(studio): database tables UI improvements (#44163)
## What kind of change does this PR introduce?

UI improvements

## What is the current behavior?

- The database tables list and columns list use inconsistent page shells
and table primitives
- The child columns page has weaker information hierarchy and row
actions than the parent tables page
- Responsive column priority on the tables list does not reflect the
most important data on smaller breakpoints
- Table actions and counts are harder to scan than they should be

## What is the new behavior?

- Both pages now use `PageLayout` with matching large-width content
containers
- `ColumnList` now uses the latest `ui` Table primitives instead of the
legacy cleaned-up-later table
- Both pages now show totals in a table footer
- `ColumnList` now uses a tiny filter input, case-insensitive filtering,
inline descriptions under the name, and a primary `Edit` button with
overflow actions
- `TableList` now has improved responsive column priority:
  - smallest breakpoint keeps `Rows`
  - `Columns` appears from `sm`
  - `Size` appears from `lg`
  - `Realtime Enabled` appears from `2xl`
- `TableList` now uses `View columns` as the CTA, removes the ambiguous
icon from that CTA, restores the entity icon from `sm` upwards only, and
tightens the name column on the smallest breakpoint only
- Boolean icon columns are right-aligned consistently, with the same
Realtime icon tones applied to both `Realtime Enabled` and `Nullable`
- The columns detail page now uses breadcrumbs for navigation back to
Tables instead of an inline back button

| Before | After |
| --- | --- |
| <img width="1728" height="997" alt="Tables Database Mallet Toolshed
Supabase-0E0E3DE0-4EA1-407F-88D4-B85664D26D8E"
src="https://github.com/user-attachments/assets/3a2e265c-394e-432c-8c29-12317b60fda8"
/> | <img width="1728" height="997" alt="Tables Database Mallet Toolshed
Supabase-C8FC339C-E9DA-4ADB-8458-C7EFF55F2AEC"
src="https://github.com/user-attachments/assets/50c83a3f-a70c-4d09-a8c3-1eeaed68b68b"
/> |
| <img width="1728" height="997" alt="Tables Database Mallet Toolshed
Supabase-FE9196A0-BEAF-4BA5-8A2C-06F934A62C38"
src="https://github.com/user-attachments/assets/707a564a-e764-45ac-8470-8532e22d39bc"
/> | <img width="1728" height="997" alt="Tables Database Mallet Toolshed
Supabase-36E93C1E-7943-4C98-8119-CAF48E2FE5BA"
src="https://github.com/user-attachments/assets/4cba5791-a4d7-4f43-aea0-8277b2ec5d28"
/> |

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-03-26 10:48:15 +11:00
Danny White 10e9cdd1f4 chore(studio): webhooks UI cleanup (#43797)
## What kind of change does this PR introduce?

UI updates to platform webhooks.

## What is the new behavior?

- `Webhooks` icon on empty state
- Better text wrapping/overflow handling on table
- Clearer endpoint deletion dialog

| After |
| --- |
| <img width="1024" height="563" alt="Webhooks Toolshed
Supabase-A3AF1CE1-B489-450F-9FD7-AE1B1BC0C999"
src="https://github.com/user-attachments/assets/6606922d-fd39-400e-bc2d-99806755fc09"
/> |
| <img width="1024" height="563" alt="Webhooks Toolshed
Supabase-00EF8F02-A3F2-477C-ADDB-68996D6C16E3"
src="https://github.com/user-attachments/assets/705a1d78-4366-4ea4-b538-99eb368a3997"
/> |
| <img width="1024" height="563" alt="Webhooks Toolshed
Supabase-902AC0EC-D0D2-471A-B241-C90FA8F50883"
src="https://github.com/user-attachments/assets/97ff1267-b31b-442f-ad14-62b0bd24ac46"
/> |
2026-03-26 10:29:23 +11:00
Ali Waseem 9da28685ec fix: remove SMS validation of fields for Twilio Verify (#44198)
## 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?

Investigation by claude, validated! 

- Before (Formik): The old form used `<Form
initialValues={INITIAL_VALUES} validationSchema={...}>` Formik does not
unregister hidden fields — all fields from initialValues stay in form
state with their initial values, so hidden required fields still pass
validation because they retain their default values (e.g., the OTP
expiry/length numbers from the config).

- After (react-hook-form): The new form uses useForm({ shouldUnregister:
true }). This explicitly removes fields from form state when their
components unmount. When Twilio Verify is selected, the three hidden
fields are unmounted, their values become undefined, and yup's
unconditional .required() fails silently.

this bug was introduced today by PR #44095, the
Formik-to-react-hook-form migration.
2026-03-25 17:49:27 -02:30
Gildas Garcia 16ec2c09c5 fix: cannot create nor edit foreign keys from schema visualiser (#44190)
## Problem

Users cannot create nor edit foreign keys when editing a table or a
column from the schema visualiser

## Solution

The foreign key edition component is always reading the current table
from the URL parameters. However, in the context of the schema
visualiser, the parameter does not exist.

Allows to override it from the side panel editor context

## How to test

- Create two tables
- Go to the schema visualiser and edit one of the table
- Click the _Add foreign key relation_ and add a foreign key to the
other table

- Edit one of the foreign key column
- You should be able to edit the relation
2026-03-25 18:12:11 +01:00
Ali WaseemandJoshen Lim a4258e851a fix: copy cell for record peak portal on forgien relationship (#44144)
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES/NO

## What kind of change does this PR introduce?

fixes: #37454 

The context menu on the FK row is a lie, its just exposing the cell
underneath. Ideally this should have its own context menu, right now we
only support copy operations.

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-03-25 09:41:27 -06:00