Commit Graph
34752 Commits
Author SHA1 Message Date
Alaister Young 8b81bcdb50 [FE-2635] fix: fail build if assets upload fails (#43137)
Adds `set -eo pipefail` so any failed upload immediately exits the
script with a non-zero code, failing the Vercel build.
2026-02-24 20:53:14 +08:00
Cemal Kılıç d810b7772b feat(docs): token_endpoint_auth_method in OAuth server docs (#43128)
## 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

## Summary
The OAuth server supports three token endpoint authentication methods
(`none`, `client_secret_basic`, `client_secret_post`), but the docs only
showed `client_secret_post` implicitly without labeling it, and never
mentioned client_secret_basic (the actual default for confidential
clients per RFC 7591).

- Add `token_endpoint_auth_method` explanation with defaults/constraints
to the client registration section in getting-started.mdx
- Update registration examples (JS, Python, cURL) and response JSON to
include token_endpoint_auth_method
- Restructure token exchange and refresh token sections in
oauth-flows.mdx to show all three auth methods with clear labels
- Add `client_secret_basic` examples using HTTP Basic auth header
2026-02-24 17:29:47 +05:30
Ivan Vasilov 85e6b1143f chore: Revert "fix: persist first referrer across app boundaries (#42768)" (#43129)
This reverts commit
https://github.com/supabase/supabase/commit/04e63dfb2e00c43f8c57e538b8056aa647f4e5b4
since it was causing the Studio app to rerender the full page on every
link navigation.
2026-02-24 11:56:44 +00:00
Prashant SridharanandAlan Daniel 14d36e9480 Bolt webinar cta page (#43107)
## 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 Go landing page for the upcoming Bolt webinar. This is where we will
direct customers who want to learn more to go to request a meeting.

---------

Co-authored-by: Alan Daniel <stylesshjs@gmail.com>
2026-02-24 10:50:54 +00:00
Nika Krasnov 1a3d818de6 docs(auth): fix typo in Google Auth scopes documentation (#43093)
## 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. Fix typo
2026-02-24 10:22:28 +00:00
lch-supa 5cbaad90af docs: remove duplicate paragraph in Realtime concepts (#43051)
## 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?

A paragraph describing Realtime database connections appears immediately
before the "Database connections" section header, then again immediately
after it

## What is the new behavior?

Removed the first (pre-header) instance of the paragraph, so the
description appears only once, in its natural place beneath the section
header.

## Additional context

No visual changes, just a clarity/deduplication fix.
2026-02-24 11:18:26 +01:00
heinzen94andGildas Garcia cb9e28f669 Adding myself to humans.txt (#43104)
Co-authored-by: Gildas Garcia <1122076+djhi@users.noreply.github.com>
2026-02-24 11:15:43 +01:00
Kevin Strong-Holte 91928552bd Add Kevin Strong-Holte to humans.txt (#43113)
And then there were three.
2026-02-24 11:15:18 +01:00
Gildas Garcia a30188f914 Add Gildas Garcia to humans (#43125) 2026-02-24 11:14:53 +01:00
Timothy Lim d31534f8be chore(docs): Update download backup guide with more clarity and links (#43124) 2026-02-24 17:38:27 +08:00
Danny WhiteandJoshen Lim 1d46515edb chore(studio): misc design polish (#42966)
## What kind of change does this PR introduce?

UI polish

## What is the current behavior?

Various UI rough edges that are tiny but add up.

## What is the new behavior?

- Empty state for Data API: Replaced `Link` that had overly-specific
styles with `InlineLink`
- Copywriting improvements on Account

| Before | After |
| --- | --- |
| <img width="1024" height="560" alt="Integrations
Supabase-CDDA8DBC-57D8-4D43-A1BD-0D935D9F2442"
src="https://github.com/user-attachments/assets/1af9abb0-166b-490d-a07d-e4eb7144b558"
/> | <img width="1024" height="560" alt="Integrations
Supabase-E8CE34C7-D2AB-4842-93AB-04BD42D94CAC"
src="https://github.com/user-attachments/assets/f0d911ea-72c2-4e1e-8d16-7effb9847196"
/> |
| <img width="1024" height="560" alt="Account Settings Supabase"
src="https://github.com/user-attachments/assets/f12c76c7-5912-4bc3-8cbb-df27588add51"
/> | <img width="1024" height="560" alt="Account Settings Supabase"
src="https://github.com/user-attachments/assets/4c926313-9ff1-4e13-9546-c407dca4e7bf"
/> |

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-02-24 16:54:14 +08:00
Riccardo Busetti d6637aaf8b feat(etl): Improve copy for advanced settings (#43123) 2026-02-24 09:25:58 +01:00
Sreyas Udayavarman b2d20011c1 Update compatibility.mdx (#43121)
Removing "Public Alpha" status from the documentation to reflect current
status.

* [S3 Compatibility](https://supabase.com/features/s3-compatibility)

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

Please link any relevant issues here.

## What is the new behavior?

## Additional context
2026-02-24 13:37:56 +05:30
Riccardo Busetti 67ed8f18ee feat(etl): Add new setting for controlling table copy (#42853) 2026-02-24 08:14:23 +01:00
Joshen Lim 2b4036ff7b Render email in UserDropdown if username is empty (#43116)
## Context

Just a tiny fix - the user dropdown doesn't show any user info if
there's no username set, opting to show the email minimally

### Before
<img width="274" height="120" alt="image"
src="https://github.com/user-attachments/assets/985ef1d2-3720-402a-b0fc-6b728029a0a8"
/>

### After
<img width="286" height="155" alt="image"
src="https://github.com/user-attachments/assets/e6264aa4-841b-44c9-bd92-c9d67153f0dd"
/>
2026-02-24 14:48:59 +08:00
Danny White c10d3debb1 feat(design-system): responsive admonition (#42971)
## What kind of change does this PR introduce?

Component improvement

## What is the current behavior?


[Admonition](https://supabase.com/design-system/docs/fragments/admonition)
often passes `actions`, often Button(s). These either are stacked via
the `layout` prop `horizontal` or `vertical`. That binary choice often
means, given layout flex, awkward text wrapping.

## What is the new behavior?

Admonition now has a `"responsive"` value for the `layout` prop. When
`layout="responsive"`, the Alert root gets `@container` so the
Admonition is the container-query context. The Admonition stays
`vertical` when it’s narrow and switches to `horizontal` when its own
width reaches the `@md` container breakpoint, independent of page width.

## Additional context

See the _Disk Management_ section of Database Settings to see the single
in-situ example.

Video demo:


https://github.com/user-attachments/assets/318a4530-5ae4-43f3-99cf-b75967659ed3
2026-02-24 16:14:03 +11:00
Raminder SinghandJoshen Lim ecf8d57305 fix: only enable install/uninstall button when user has permissions (#43088)
Enable the install/uninstall integration button on the stripe sync
engine only if the user has permissions to create/delete edge function
secrets. This fixes a problem when non-admin/non-owner users try to
install the integration but it fails due to lack of permissions. For a
user without appropriate permissions a tool tip will be shown:

<img width="1344" height="977" alt="image"
src="https://github.com/user-attachments/assets/49c950cc-d76b-40b4-ab6e-cb8f193561cc"
/>

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-02-24 11:56:18 +08:00
Ivan VasilovandClaude 3f7d62ef3d Fix key prop in ComputePricingCalculator dropdown menu items (#43110)
## 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?

The dropdown menu items in the ComputePricingCalculator component use a
hardcoded key value of `"custom-expiry"` for all plan items in the map
function. This causes React to not properly identify unique list items,
which can lead to rendering issues and state management problems when
multiple plans are displayed.

## What is the new behavior?

Changed the key prop from the hardcoded `"custom-expiry"` to
`plan.name`, which uniquely identifies each plan item. This ensures
React can properly track and render each dropdown menu item.

## Additional context

This is a common React anti-pattern where using a constant key for list
items prevents React from properly reconciling the virtual DOM. Using
`plan.name` as the key ensures each plan has a unique identifier for
proper rendering and state management.

https://claude.ai/code/session_01HDfar7A1XXJFJDchPPSQTK

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-24 11:09:15 +08:00
04e63dfb2e fix: persist first referrer across app boundaries (#42768)
## Summary

Fixes GROWTH-625.

Preserves first-touch attribution across app boundaries by persisting
external referrer context at the edge and consuming it on Studio's
initial pageview.

When users come from an external source to www/docs and then navigate to
Studio, Studio often only sees the internal `supabase.com` hop. This
change preserves the original external context so first-touch
attribution is retained.

## What changed

- **Shared first-referrer cookie utilities**
(`packages/common/first-referrer-cookie.ts`):
- `isExternalReferrer`, `buildFirstReferrerData`,
`serializeFirstReferrerCookie`, `parseFirstReferrerCookie`
- `hasPaidSignals` — detects click IDs (gclid, fbclid, etc.) and paid
utm_medium values
- `shouldRefreshCookie` — centralizes stamp-or-skip decision for all
apps
- `stampFirstReferrerCookie` — shared middleware helper used by all apps
(extracted from duplicated inline logic)
- **Edge middleware on all apps** — stamps cookie for external visitors,
refreshes on paid signals:
  - `apps/www/middleware.ts` (simplified to use shared helper)
  - `apps/docs/middleware.ts` (simplified to use shared helper)
  - `apps/studio/proxy.ts` (integrated into existing proxy file)
- **Docs middleware matcher** — broadened from `/reference/:path*` to
all non-static paths so the first-referrer cookie is stamped on all docs
pages, not just reference paths
- **Telemetry** — Studio consumes cookie on initial pageview
(`packages/common/telemetry.tsx`). `handlePageTelemetry` refactored from
7 positional params to an options object for readability.
- **Tests** — 22 unit tests covering all utilities and edge cases
(including direct-navigation scenario)

## Behavior

- Writes `_sb_first_referrer` cookie when:
  - cookie is not already set and request has an external referrer, OR
- cookie exists but incoming URL has paid traffic signals (click IDs or
paid utm_medium)
- Cookie: 365-day TTL, `domain=supabase.com`, `sameSite=lax`,
`secure=true` in production
- On first Studio pageview, if current referrer is internal and cookie
has external context:
  - use persisted external referrer
  - apply persisted UTM/click-id/landing-url attribution props
- Measurement properties: `first_referrer_cookie_present`,
`first_referrer_cookie_consumed`

## Manual testing

1. Visit `supabase.com/pricing?utm_source=google&utm_medium=cpc` from an
external referrer (or use DevTools to set a `Referer` header)
2. Check `_sb_first_referrer` cookie is set in Application > Cookies
3. Navigate to Studio (`supabase.com/dashboard`)
4. In PostHog (or browser network tab), verify the first `$pageview`
event has:
   - `first_referrer_cookie_present: true`
   - `first_referrer_cookie_consumed: true`
   - `$utm_source: "google"`, `$utm_medium: "cpc"`
   - `$referrer` points to the external source, not `supabase.com`
5. Verify subsequent route changes do NOT include
`first_referrer_cookie_*` properties

## Review feedback addressed

- Added `secure: true` flag on production cookies (Pam's first comment)
- Fixed inaccurate JSDoc on `utms` field — keys retain `utm_` prefix
(Pam's fourth comment)
- Added test coverage for edge cases: malformed URLs, multi-cookie
headers, http:// referrers (Pam's sixth comment)
- Docs matcher broadening: fast-path exit on cookie-exists check keeps
overhead minimal, exclusion list is correct
- Extracted shared middleware helper to eliminate duplication across 3
apps
- Refactored `handlePageTelemetry` from positional params to options
object
- Removed redundant null check in `hasPaidSignals`
- Added direct-navigation test case
- Deleted dead `apps/learn/middleware.ts`
- Fixed studio build: integrated cookie stamping into existing
`proxy.ts` (Next.js 16 rejects both middleware.ts and proxy.ts)

---------

Co-authored-by: pamelachia <26612111+pamelachia@users.noreply.github.com>
Co-authored-by: Pamela Chia <pamelachiamayyee@gmail.com>
2026-02-23 13:31:39 -08:00
Charis e60b6a6a2e chore: properly add eslint-plugin-jsx-a11y package (#43108)
YES

## What kind of change does this PR introduce?

Chore / dependency fix

## What is the current behavior?

`eslint-plugin-jsx-a11y` was referenced in `eslint.config.json` but was
not listed in `package.json`, causing module resolution errors in the
IDE.

## What is the new behavior?

The package is properly added to `package.json` so it resolves correctly
in both ESLint and the IDE.
2026-02-23 20:13:05 +00:00
Alan Daniel fe4f1b6e82 add success redirect on go pages forms (#43105)
Usage in a page definition:

```ts
{
  type: 'form',
  // ...fields, crm, etc.
  submitLabel: 'Request a demo',
  successRedirect: '/thank-you',   // <-- redirect after submit
}
```
2026-02-23 15:01:01 -04:00
Ivan Vasilov 637b6fb792 chore: update react-resizable-panels to v4 to support pixel width (#42990)
This pull request standardizes the usage of props and value types for
the `ResizablePanelGroup` and `ResizablePanel` components across
multiple files in the codebase. Specifically, it replaces the deprecated
`direction` prop with `orientation`, and updates numeric prop values
(such as `defaultSize`, `minSize`, and `maxSize`) to be passed as
strings. This ensures consistency with the updated component API and
improves type safety.

**Component API Updates:**

* Replaced the `direction` prop with `orientation` for all usages of
`ResizablePanelGroup`
* Updated all `ResizablePanel` props (`defaultSize`, `minSize`,
`maxSize`) to be passed as strings instead of numbers, ensuring
compatibility with the latest API requirements.
* Removed deprecated or unnecessary props such as `order` from
`ResizablePanel` components, and ensured all size-related props are
consistently formatted as strings.
2026-02-23 19:48:19 +01:00
Gildas Garcia eda3490e5d Add a context menu item to copy a column name (#43101)
Small QOL improvement: a new context menu that allows to copy a column
name.
2026-02-23 19:04:39 +01:00
Jeremias Menichelli f6ec43a9ed [DOCS-454] fix(Docs): Fix images from causing CLS on pages (#43026) 2026-02-23 19:02:31 +01:00
Alan Daniel 32330e26c0 New Campaign Pages: /go (#42920)
## 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?

Bug fix, feature, docs update, ...

## What is the current behavior?

Please link any relevant issues here.

## What is the new behavior?

Feel free to include screenshots if it includes visual changes.

## Additional context

Add any other context or screenshots.
2026-02-23 15:47:03 +00:00
Chris Chinchilla d23302d2f5 docs: Fix breaking rendering issues (#43096)
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES
2026-02-23 16:22:15 +01:00
Chris Chinchilla ffb362cd10 fix: Update message for enabling point in time recovery (#43048)
Doing a series of docs updates around backups and tidying some UI copy
as I do.

## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES
2026-02-23 15:10:42 +00:00
supabase-supabase-autofixer[bot]andgithub-actions[bot] 37a240c581 [bot] Decrease ESLint ratchet baselines (#43074)
Automated weekly decrease of ESLint ratchet baselines.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-23 15:41:47 +01:00
Jordi Enric 9486e6e1a4 feat: custom report snippets from inline sql editor (#43090)
- adds option to create snippets from inline sql editor
- removes the date range from the header, its noisy

## to test
- go to custom report
- add block → snippets → add snippet
- create a new snippet in the inline SQL Editor
- back to add block → snippets → select your snippet
- your snippet should show in the report
- now try updating the snippet in the inline SQL Editor
- the chart/block should auto update
- amazing!
2026-02-23 13:56:10 +00:00
ce5cce5030 replace github discussions with local guides in the docs search (#42335)
## 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?

feature

## What is the current behavior?

Currently, old GitHub discussions appear in the docs search instead of
troubleshooting guides in docs/guides/troubleshooting

## What is the new behavior?

Local troubleshooting guides appear in the search

## Additional context

<img width="958" height="846" alt="CleanShot 2026-01-31 at 23 37 33@2x"
src="https://github.com/user-attachments/assets/445fab5d-764a-4b4d-b4ef-c29ab675a9ae"
/>


**troubleshooting.ts** - New source loader that reads local MDX files
from content/troubleshooting/ directly instead of fetching from GitHub
Discussions API
- Generates correct docs paths: /guides/troubleshooting/{slug}
- Uses type = 'troubleshooting' for proper search result mapping
- Sets slug: undefined to avoid trailing # in URLs
- Checksum includes title/topics/keywords so metadata-only changes
trigger re-indexing
- Left comments for review 

**index.ts** - Replaced GitHub discussion sources with local
troubleshooting sources
- Removed GitHubDiscussionLoader, fetchDiscussions,
buildGithubUrlToSlugMap imports
- Added fetchTroubleshootingSources and TroubleshootingSource
- Updated SearchSource type union

**globalSearchModel.ts** - Changed type mapping from
'github-discussions' to 'troubleshooting'

**generate-embeddings.ts** - Removed GitHub App env vars from required
list (DOCS_GITHUB_APP_ID, DOCS_GITHUB_APP_INSTALLATION_ID,
DOCS_GITHUB_APP_PRIVATE_KEY) since they're no longer needed


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

* **New Features**
* Local troubleshooting articles are now indexed and appear directly in
search results for easier access to step‑by‑step guidance.
* Search UI now recognizes a Troubleshooting page type and shows
appropriate icons/sections.

* **Refactor**
* Search sourcing switched from external discussion feeds to local
troubleshooting sources to improve relevance and indexing consistency.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Illia Basalaiev <illiab@IMB3.local>
Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
Co-authored-by: Chris Chinchilla <chris.ward@supabase.io>
2026-02-23 13:54:40 +01:00
Parth KadamandChris Chinchilla e707b71833 docs: update Cloudflare Workers integration screenshots (#41983)
## I have read the CONTRIBUTING.md file.

YES

## What kind of change does this PR introduce?

Docs update

## What is the current behavior?

The Cloudflare Workers integration guide shows outdated screenshots that
no longer match the current Cloudflare and Supabase dashboards.
Related issue: #41962

## What is the new behavior?

Screenshots have been updated to reflect the current Cloudflare Workers
and Supabase UI.

## Additional context

Image updates only — no content or example changes.

Co-authored-by: Chris Chinchilla <chris.ward@supabase.io>
2026-02-23 11:05:43 +01:00
Jordi Enric 233c2d4a4c feat(inline sql editor): snippet management in editor panel (#43011)
- EditorPanel can now load, save, and rename SQL snippets inline
- New SaveSnippetDialog component for saving snippets with AI-generated
titles
- EditorPanel state tracks active snippet ID and pending reset
- EditQueryButton opens the inline editor panel instead of navigating to
SQL editor page
- AIEditor exposes onMount callback for editor instance access
- SnippetDropdown label updated to "Create snippet"


## TO TEST 

### Normal CRUD
- open inline SQL Editor
- try creating a new snippet
- try editing an existing snippet

### Homepage V2 Report
- Try adding a new block → create snippet
- create the snippet in inline sql editor
- select the snippet in the report block section
2026-02-23 10:11:58 +01:00
Joshen Lim 067a95e560 Fix table editor prefetch (#43083)
## Context

Noticed that the table editor prefetch wasn't working as intended as the
table's rows were getting fetched again when opening the table.

Fix is that `preflightCheck` should've been excluded from the
`table-rows` query key

## To test
Within the Table Editor
- [ ] Verify that `table-rows` is getting prefetched when hovering over
a table in the side menu
- [ ] Verify that `table-rows` doesn't get fetched again when opening
the table subsequently (There shouldn't be a UI loader too - rows should
render immediately)
2026-02-23 16:25:03 +08:00
Chris Chinchillaandcoderabbitai[bot] c0f7e7dfd1 docs: Rework Expo React native social auth (#43017)
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

Reworks Expo React native social to use appropriate auth methods and
restructures to use external code.

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-02-23 08:54:17 +01:00
Vaibhav f8419ef9ae Fix: SQL Editor browser back button navigation (#43043)
## Problem
The SQL Editor had a browser navigation issue where pressing the back
button would get stuck in a redirect loop between `/sql` and `/sql/new`,
making it difficult to navigate away from the SQL Editor using standard
browser controls.

## Solution
Changed automatic redirects from `router.push()` to `router.replace()`
in the SQL Editor routing logic.
This prevents adding unwanted history entries during automatic
navigation, allowing the back button to work as expected.

## Related
- Closes https://github.com/supabase/supabase/issues/43035
2026-02-21 17:43:08 +00:00
Ali Waseem 571e0603c0 fix: E2E tests that are flaky due banner (#43062) 2026-02-20 13:31:26 -07:00
Jeremias Menichelli cff64ea1a9 fix(ui): Make heading anchors focusable (#43058) 2026-02-20 20:45:30 +01:00
Ali Waseem 0835e49a34 fix: updated project name truncation (#43060)
## 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: project name truncation if its to long
2026-02-20 19:28:29 +00:00
Ivan Vasilov a7e0a428fe fix: improve error handling for upload cases in storage explorer (#43054)
This pull request refactors and improves error handling in the
`createStorageExplorerState` function within
`apps/studio/state/storage-explorer.tsx`. The changes make the switch
statement more robust and readable by introducing block scoping for each
case and handling additional error scenarios with more specific
messages.

* Refactored the switch statement to use block scoping (`{}`) for each
case, improving readability and preventing variable leakage between
cases.
* Enhanced the handling of HTTP 400 errors by checking the response body
for specific error messages, and displaying more precise error toasts
for "Invalid key" and "Invalid Compact JWS" cases.
* Added a default case to the switch statement to catch and display any
other error messages not explicitly handled, ensuring users receive
feedback for unexpected errors.
2026-02-20 18:23:36 +00:00
Ignacio Dobronich ad88746d3f fix: remove entitlement checks from realtime settings (#43052)
The Realtime configurable values are not hard limits, so we shouldn't
model them as entitlements in the Realtime Settings.
2026-02-20 14:16:11 -03:00
Matt Rossman 3fcb6cbe2c fix(studio): pass providerOptions to all AI SDK calls (#43031)
`reasoningEffort: 'minimal'` was
[configured](https://github.com/supabase/supabase/blob/d5cc70560d/apps/studio/lib/ai/model.utils.ts#L55-L59)
in the provider registry but `getModel()` returns it as a separate value
that callers must destructure and forward — and 7 of 8 endpoints weren't
doing so. This meant `gpt-5-mini` (a reasoning model) was running at
default reasoning effort for every call.

This PR destructures `providerOptions` from `getModel()` and passes it
to `generateObject`/`generateText` in all affected endpoints.

## Benchmark (local, median of 5 runs)

| Endpoint | Before (s) | After (s) | Speedup |
|----------|-----------|----------|---------|
| title-v2 | 7.0 | 1.9 | 3.7x |
| cron-v2 | 2.3 | 0.9 | 2.6x |
| filter-v1 | 5.8 | 2.2 | 2.6x |
| feedback/classify | 3.5 | 0.9 | 3.9x |
| feedback/rate | 2.9 | 0.9 | 3.2x |

`code/complete` and `policy` also received the fix but aren't
benchmarked here as they require a live DB connection and use multi-step
tool calls (separate latency concern tracked in AI-419).

To test the SQL naming, visit the SQL Editor in sidebar, add some SQL
like:

```sql
create table todos (                                                                                                 
  id serial primary key,                                                                                             
  task text not null,                                                                                                
  completed boolean default false
);
```

Right click on the snippet, "Rename" and "Rename with Supabase AI"

Closes AI-443
2026-02-20 11:36:06 -05:00
Ali WaseemandJoshen Lim a909c0869d chore: enable new filter bar as a default opt in (#43028)
## 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?

This is the first step for the GA rollout

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-02-20 09:33:32 -07:00
Ali Waseem 65dac5429e feat: show recent invocations in functions view (#43030)
## 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?

By far the most important feature in the functions view is the
Invocations tab. This just adds recent invocations to the dashboard for
a function. So it's easy for you to digest what's happening.

## Demo 
<img width="1818" height="1312" alt="image"
src="https://github.com/user-attachments/assets/b3f59255-f780-4edc-bc9c-cc711b0d22f9"
/>
2026-02-20 07:55:42 -07:00
Ivan Vasilov 03660838ef chore: Refactor the script for posting PRs for review on Slack (#43022)
This pull request refactors the GitHub Actions workflow for notifying
about stale Dashboard PRs by replacing custom JavaScript scripts and the
`actions/github-script` action with new TypeScript scripts that
communicate via standard input/output. This simplifies the workflow,
improves maintainability, and adds better error handling, especially for
API rate limits. The Slack notification script is also rewritten in
TypeScript and now reads PR data from stdin, making the workflow steps
more composable.
2026-02-20 15:32:12 +01:00
Ali Waseem 41a7b34985 fix: Better error handling for filters (#43027)
## 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?

Update error handling for filter related errors on the table editor
2026-02-20 07:23:38 -07:00
Ivan Vasilov e561196f07 fix: Parse unqualified SQL functions as SQL snippet in the Cron jobs UI (#41593)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes**
* Tightened detection of database function calls to require explicit
schema-qualified names; commands without a schema prefix are now treated
as SQL snippets, improving classification accuracy.

* **Tests**
* Added tests covering schema-qualified function calls, functions with
underscores, use of search-path functions, and various edge-case snippet
forms to validate parsing behavior.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-20 13:36:37 +00:00
Ivan VasilovandJoshen Lim 75644f8396 chore: Bump react-data-grid to fix a Sentry issue (#42934)
This pull request updates the `react-data-grid` dependency and refactors
code throughout the codebase to use the new import structure and updated
APIs. The changes improve compatibility with the latest version of
`react-data-grid`, simplify imports, and update row selection logic to
match new hook signatures. Additionally, some code is reorganized to use
absolute imports for internal components.

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-02-20 14:10:13 +01:00
Raminder SinghandJoshen Lim 3d14b5e7bf fix: show uninstall progress (#42860)
This PR makes the following changes:

* Refactors the Stripe sync engine integration so that impossible states
are unrepresentable in the code.
* Factors out common code and functions into a single location to avoid
duplication.
* Factors out code to fetch installation/uninstallation and sync status
into a separate hook to make the code more readable.
* Shows uninstall progress when the user uninstalls the integration.
* Moves the **Uninstall integration** button from the **Settings** page
to the **Overview** page. This is done to avoid us having to track the
uninstallation progress via the url query params when the user is
redirected to the **Overview** page during uninstallation. Also it makes
sense for installation/uninstallation to be available on the same
location.

Note that even with the above changes there are some limitations to how
the uninstallation progress is shown. In particular, if the user
refreshes the page, the uninstallation status is lost because the
background uninstallation procedure currently doesn't update the comment
on the stripe schema during uninstallation. We are making a change in
the stripe sync engine code for that here:
https://github.com/stripe-experiments/sync-engine/pull/113

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-02-20 10:02:11 +00:00
zero e15860f169 docs(auth): clarify kakao email optional (#42405)
## 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?

The Kakao login guide implies `account_email` is required, even though
it can be optional in Supabase.

## What is the new behavior?

Clarifies that `account_email` is optional and notes that users should
enable “Allow users without an email” in the Supabase Kakao provider
settings when not requesting `account_email`.

## Additional context

N/A

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

## Summary by CodeRabbit

* **Documentation**
* Updated Kakao social login documentation to clarify that email consent
is optional.
* Added guidance on configuring provider settings to allow users without
email when email is not requested or unavailable.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-20 09:56:17 +00:00
Joshen Lim d346ee1ca8 Tiny fix wording (#43040)
## Context

Just to avoid confusion 🤦 ETL Private Alpha config cat feature flag
holds org slugs, not project refs
2026-02-20 17:43:00 +08:00