Commit Graph
35520 Commits
Author SHA1 Message Date
Jordi EnricandClaude Sonnet 4.6 447dfb29e8 fix(studio): remove CLI backup instructions from paused project state
The inline CLI section in ProjectPausedState pushed the card off-screen
on smaller viewports with no way to scroll, blocking users from resuming
their project. CLI instructions are still available in the delete modal
and via the Download backup button in failed states.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 15:03:28 +02:00
Jordi EnricandClaude Sonnet 4.6 09713bc31f refactor: extract tooltip text to named constant in failed states
Replace 3-level nested ternary for the Download backup tooltip with a
named variable for readability.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 16:12:33 +02:00
Jordi EnricandClaude Opus 4.6 37a8ffb362 fix(studio): address four CLI backup review issues
- isPending race: destructure isPending from useDownloadableBackupQuery
  and disable the Download backup button while the query is in-flight,
  preventing the CLI dialog from opening before backups have loaded

- tooltip/click mismatch: align onClickDownloadBackup with tooltip by
  also routing physical-backups-enabled projects to the CLI dialog

- PauseDisabledState: remove LogicalBackupCliInstructions — the project
  has been paused >90 days, compute is stopped and cannot be resumed,
  so pg_dump commands would fail with connection refused; the Download
  backups button is the correct path here

- ProjectPausedState: pass note prop to LogicalBackupCliInstructions
  clarifying the project must be resumed before running the commands

- LogicalBackupCliInstructions: decouple error-state DB settings link
  from showResetPassword — the link is always shown on query failure;
  add note prop for contextual call-site warnings

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 11:33:13 +02:00
Jordi EnricandClaude Opus 4.6 93474835b1 chore(studio): format LogicalBackupCliInstructions files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 11:29:20 +02:00
Jordi EnricandClaude Opus 4.6 1d8849ea0c fix(studio): show CLI backup instructions even when pause status query fails
LogicalBackupCliInstructions uses its own independent query
(useProjectSettingsV2Query) so it should not be gated on
isPauseStatusSuccess. Removing that guard ensures users always
see backup options when the project is paused, even if the
pause status API call errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 17:10:22 +02:00
Jordi EnricandClaude Opus 4.6 d7d57fd0b2 refactor(studio): extract CLI backup utils and add unit tests
Move buildDirectPostgresConnectionUri and buildLogicalBackupShellScript
out of the component into a co-located utils module so they can be
unit tested independently. Adds 8 tests covering URI construction,
password placeholder, port handling, script structure, single-quote
shell safety, and exclusion of storage vector tables.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 17:10:16 +02:00
Jordi EnricandClaude Opus 4.6 cb4bb68281 revert(design-system): drop unrelated rehype-component guard fix
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 17:04:42 +02:00
Jordi EnricandClaude Opus 4.6 bd9a6b9da2 chore(studio): format LogicalBackupCliInstructions.tsx
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 15:47:19 +02:00
Jordi EnricandClaude Opus 4.6 b0a59b3f73 fix(studio): restore tooltip context on download backup button in failed states
When no downloadable backup is available (no backups or physical backups),
the tooltip now explains why and signals that clicking will show CLI
backup instructions — preserving the context that was lost when the
disabled state was removed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 15:05:57 +02:00
Jordi EnricandClaude Opus 4.6 ef6a62eee2 fix(studio): pass required tooltip prop to ButtonTooltip in failed states
ButtonTooltip unconditionally reads tooltip.content, so omitting
the prop caused a crash after removing the disabled tooltip text.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 14:55:29 +02:00
Jordi EnricandClaude Opus 4.6 0e62d8c305 feat(studio): show CLI backup instructions in delete project modal
Before deleting a project, users are now shown CLI backup instructions
so they can export their data first. Reset password button is hidden
since users are about to delete the project.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 14:35:51 +02:00
Jordi EnricandClaude Opus 4.6 ac18df1af3 refactor(studio): replace inline CLI backup section with dialog in failed states
Instead of showing CLI instructions inline (cluttering the error card),
the download backup button now opens a dialog with CLI instructions when
no downloadable backup is available. The inline backup section is removed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 14:35:47 +02:00
Jordi EnricandClaude Opus 4.6 287e97907c refactor(studio): improve CLI backup instructions and add showResetPassword prop
- Simplify encoding guidance: clarify that any reserved URL character
  must be encoded, not just the listed examples; add / → %2F
- Split description into two focused paragraphs for readability
- Add showResetPassword prop (default true) to hide the reset password
  button and swap the isError fallback text in inaccessible project states

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 14:35:43 +02:00
Jordi EnricandClaude Sonnet 4.6 14fcf6f905 chore(studio): format PauseFailedState.tsx
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 14:25:28 +02:00
Jordi EnricandClaude Sonnet 4.6 c91166d2d2 fix(studio): add backup CLI to PauseFailedState and improve encoding guidance
- Add LogicalBackupCliInstructions to PauseFailedState (mirrors RestoreFailedState)
- Add single quote and percent sign to percent-encoding guidance (both break single-quoted shell commands or URI parsing)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 14:17:42 +02:00
Jordi EnricandClaude Sonnet 4.6 47c82c16cb fix(studio): address PR review comments on LogicalBackupCliInstructions
- Remove unused Button import and useIsProjectActive hook
- Allow Reset database password button in paused/failed states (it's a navigation action, not project-state-dependent)
- Remove npx supabase login from generated script (--db-url auth doesn't require it)
- Use single quotes around --db-url values to prevent shell metacharacter issues
- Fix misleading error message that referenced non-existent commands
- Add percent-encoding guidance for special characters in passwords

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 14:00:01 +02:00
Jordi EnricandClaude Opus 4.6 2f6bbf6076 fix(studio): align imports with studio tsconfig
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Made-with: Cursor
2026-04-10 12:32:11 +02:00
Jordi EnricandClaude Opus 4.6 e2e0687cca fix(studio): use alias imports for backup cli block
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Made-with: Cursor
2026-04-10 12:26:48 +02:00
Jordi EnricandClaude Opus 4.6 e2a0472ffc fix(design-system): guard missing registry components
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Made-with: Cursor
2026-04-10 12:23:12 +02:00
Jordi EnricandClaude Opus 4.6 9af1fa01c2 feat(studio): show backup cli steps on restore failed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Made-with: Cursor
2026-04-10 11:45:20 +02:00
Jordi EnricandClaude Opus 4.6 fcdcb5ee74 chore(studio): drop unrelated changes from pr
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Made-with: Cursor
2026-04-07 12:37:25 +02:00
Jordi EnricandClaude Opus 4.6 764fd209e9 chore(studio): format backup cli changes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Made-with: Cursor
2026-04-07 12:03:13 +02:00
Jordi EnricandClaude Opus 4.6 e8b2de82ff chore: merge master into feat/studio-backup-cli-delete-project
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Made-with: Cursor
2026-04-07 11:58:44 +02:00
Jordi EnricandClaude Opus 4.6 0dfbc600f1 chore(studio): drop unrelated skill rule
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Made-with: Cursor
2026-04-07 11:57:04 +02:00
Andrey A. 0950b99bf0 chore: add a nofile limit for supavisor in smoke test (#44582) 2026-04-07 10:46:28 +02:00
Vaibhav df0bf6b57e fix: hover changelog (#44596)
smol fix 


- closes  https://github.com/supabase/supabase/issues/44595

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

## Summary by CodeRabbit

* **Style**
* Improved visual feedback for the Changelog dropdown entry with
enhanced cursor styling to indicate interactivity.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-07 10:26:08 +02:00
Alan DanielandClaude Opus 4.6 aab4550c1b State of Startups 2026 (#44248)
New pages for State of Startups 2026.

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

## Summary by CodeRabbit

## Release Notes

* **New Features**
* Added "State of Startups 2026" interactive survey results page with
dynamic charts, filterable analytics, and data visualizations across
industry, funding stage, location, and technology adoption
* Implemented animated statistics displays, word clouds, and participant
directory throughout the results experience
  * Updated navigation to prominently feature the survey section

* **Style**
* Added smooth animated transitions for survey data elements and page
sections

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 08:52:38 +01:00
Gildas Garcia bebd98a613 chore: use dndkit for enumerated types sorting (#44521)
## Problem

We currently have 3 different libraries for drag & drop, two of which
are not actively maintained anymore.

## Solution

Migrate all usage of the two unmaintained libraries to DndKit.

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

* **Refactor**
* Replaced drag-and-drop with a newer library offering pointer and
keyboard sensors, improved accessibility, and more reliable reordering.
* Simplified list markup by removing legacy wrappers and placeholders;
rows render directly and use a dedicated drag handle.
  * Updated row editing to use form controls with inline validation.
* Improved form initialization/reset behavior and disable the side panel
when the form is not dirty.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-07 09:38:21 +02:00
2a018833fd Joshen/fe 2900 migrate stripe sync engine to new UI (#44427)
## Context

Part of marketplace integrations, this moves the last integration over
to the new integrations UI

Just a heads up though that the code changes imo are quite messy - am
trying to figure out how to shift a lot of the integration logic (e.g
installing, installation progress tracking, etc) into a code
configuration within `Integrations.constants.ts` so pardon the
mid-transition state. I reckon we'll be able to clean up things once
requirements are bit more clearer. (Refer to "Moving forward" section
below for details)

## Changes involved
- Much of the details on the Stripe Sync Engine page will now live in
the Installation panel
<img width="1143" height="512" alt="image"
src="https://github.com/user-attachments/assets/cb23e49d-cc4e-4ad6-8a47-0bc3fe81ede7"
/>
<img width="656" height="955" alt="image"
src="https://github.com/user-attachments/assets/ff0e33c5-52ab-480f-b941-ebf3fd0708c5"
/>

- Code wise, `useStripeSyncStatus` will retrieve `ref` and
`connectionString` itself, don't need to pass in as parameters

## To test
- [ ] Verify that you can install + uninstall Stripe Sync Engine with
the flag off
- [ ] Verify that you can install + uninstall Stripe Sync Engine with
the flag on

## Moving forward
Couple of notes + open questions at the top of my head
- We'll need to do away with integration-specific overview UI (e.g
Queues, Data API, Webhooks, Wrappers, Stripe Sync Engine)
- Everything needs to be defined in code, so `IntegrationDefinition`
within `Integrations.constants.ts` is also a bit fluid at the moment as
we figure out what properties we need / don't need
- We'll need to figure out a way to do the following from a code config
POV, keeping in mind that integrations will be fetched remotely from a
DB
- How to trigger the installation of the integration (e.g from a set of
commands? SQL?)
- How to track the progress of the installation (e.g We can do long
polling but on what data?)
- How to uninstall the integration (if applicable, e.g Stripe Sync
Engine supports this)
  - How all this this can work for self-hosted/CLI


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

* **New Features**
* New modular integration install experience: interactive install sheet
with form inputs, installation overview (Extensions & SQL), advanced
per-extension schema settings, and dedicated installation settings.
* New Stripe Sync Engine overview and action controls for
install/upgrade/uninstall flows.

* **Bug Fixes & Improvements**
* Improved installation status handling, long-polling/status checks,
progress/error reporting and telemetry; more robust install/uninstall
flows and error recovery.

* **Tests**
  * Updated install-sheet tests to better simulate form submission.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com>
Co-authored-by: Alaister Young <alaister@users.noreply.github.com>
2026-04-07 15:08:10 +09:00
474c125da4 fix(studio): handle undefined connectionStringPooler in connect sheet (#44611)
Follow-up to #44471. Fixes Sentry error: `can't access property
"ipv4SupportedForDedicatedPooler", g is undefined`.

`connectionStringPooler` can be `undefined` when the databases query
hasn't resolved yet (returns `[]` by default, so the lookup object is
empty). Added optional chaining + explicit typing.

## To test

- Open the connect sheet on any project — should render without errors
- Check that IPv4 status panel still displays correctly once loaded

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

## Summary by CodeRabbit

* **Refactor**
* Improved type safety and robustness in connection pooler configuration
handling for more reliable IPv4 capability detection.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 06:06:22 +00:00
Saxon FletcherandAlaister Young 042248fd6d Update connect sheet direct connection logic (#44471)
<img width="996" height="424" alt="image"
src="https://github.com/user-attachments/assets/f0a0620b-c7e1-4391-a065-51c95fee1186"
/>

Updates the new ConnectSheet direct connection logic to better handle
plan and add-on status.

To test view the connect sheet with:
- A free org
- A paid org
- A paid org with the ip4 add-on enabled

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

* **New Features**
* IPv4 connection status panel with icons, badges, contextual links and
collapsible details about IPv4 limitations and pooler alternatives
* Pooler-type badges reflecting entitlement-based availability and
clearer connection compatibility messaging with direct links to relevant
settings

* **Tests**
  * Added coverage for entitlement-dependent pooler behavior

* **Style**
* Simplified admonition header and improved formatting of copied step
text
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com>
2026-04-07 15:13:51 +10:00
Greg Richardson 273916171b feat: openai domain verification (#44603) 2026-04-06 16:09:35 -06:00
Prashant Sridharan 8b25383fde Added deadlines for contest entries (#44591)
## 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 contest deadlines to two conference landing pages.

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

* **Documentation**
* Updated contest entry deadlines in the “How to enter” checklist: MCP
Dev NYC 2026 — Monday April 13, 2026 at 12:00 PM PDT; PgConf Dev 2026 —
Monday June 1, 2026 at 12:00 PM PDT.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-06 22:19:20 +01:00
Ali Waseem fbb0770b47 fix(studio): AI assistant results make page unresponsive (#44578)
## Summary

Fixes https://linear.app/supabase/issue/FE-2941

- Replaced per-cell `ContextMenu_Shadcn_` in SQL result tables with a
single shared instance
- Each Radix ContextMenu registers a `keydown` listener on `document`
via `useEffect`. With 1000+ row result sets, this created thousands of
document-level listeners. Chrome trace showed listeners growing from 21k
to 347k, with every keystroke taking ~250ms (70k+ function calls per
long task)
- Fixed DataGrid not rendering in Firefox by using flex layout instead
of `height: 100%` for sizing
- Fixed double scrollbar in QueryBlock results by making the container a
flex column and removing `overflow-auto`
- Moved format utils into `Results.utils.ts`

## Test plan

The `Results` component and `QueryBlock` are used in several places.
Each should be verified:

- [x] **AI Assistant** — Have the assistant run a query returning 1000+
rows. Verify the page stays responsive while typing and there is only a
single scrollbar on the results table
- [x] **AI Assistant (Firefox)** — Same as above but in Firefox. Verify
the results table actually renders
- [x] **SQL Editor results panel** — Run a query in the SQL Editor.
Verify results render correctly with a single scrollbar in the utility
panel
- [x] **SQL Editor explain tab** — Run an EXPLAIN query. Verify explain
results render
- [x] **Editor Panel** (used in Table Editor SQL preview) — Verify
results display correctly
- [x] **Context menu** — Right-click a cell in any of the above and
verify "Copy cell content" and "View cell content" still work

## Traces
<img width="891" height="599" alt="image"
src="https://github.com/user-attachments/assets/6e1b710b-ca9e-4748-9369-d03457d80206"
/>


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

* **Bug Fixes**
* Fixed context menu behavior so it opens at the cursor and is
instantiated once.
* Improved clipboard copy formatting for cell values; NULLs copy as
empty and cells render as "NULL".

* **Style**
* Adjusted table layout and scrolling behavior to improve results
container sizing.

* **Tests**
* Added tests for results rendering, context-menu behavior, and
cell/clipboard formatting utilities.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-06 13:04:24 -06:00
Colin Murray 2af6b3eaec Chore: humans.txt - add Colin Murray (#44358)
## 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?

Adding my name to the humans.txt list!

## What is the current behavior?

Currently, my name is not on the list of employees.

## What is the new behavior?

My name is now on the list of employees.

## Additional context

N/A
2026-04-06 13:19:44 -04:00
Usama NadeemandCharis Lam 33c890f564 fix(studio): allow selecting columns for empty-cell NULL conversion on CSV import (#44515)
Bug fix / enhancement to an existing Studio import flow.

## What is the current behavior?

Studio currently supports converting empty CSV cells to `NULL`, but the
behavior applies across all imported columns. That makes it impossible
to preserve empty strings in some columns while still treating empty
cells as `NULL` in others.

This follows up on the earlier CSV import fix discussed in #43281, which
addressed the underlying issue reported in #43258.

## What is the new behavior?

This PR updates the CSV import flow so users can choose exactly which
imported columns should convert empty cells to `NULL`.

The import flow now:
- keeps all imported columns selected by default for
backwards-compatible behavior
- lets users narrow that selection down to specific columns
- keeps preview behavior aligned with the actual inserted data

## Additional context

I manually verified the full create-table-from-CSV flow locally in
Studio, including saving the imported data and confirming that only the
selected columns were persisted as `NULL` while other empty cells
remained empty values.

Formatting was checked with Prettier.
A direct production build run was started locally, but the Next.js build
process remained running without producing a final result during this
session, so I am not claiming a completed local build verification here.

## Related issues

- Fix follow-up for #43281
- Original issue: #43258

## Summary by CodeRabbit

## Release Notes

* **New Features**
* Added a "Set empty cells as NULL" selector during spreadsheet import,
allowing users to specify which columns should treat empty strings as
NULL values rather than converting all nullable columns automatically.
* Enhanced import preview to display NULL representation for selected
empty-string columns.

* **Tests**
* Added test coverage for selective empty-string-to-NULL conversion
behavior.

---------

Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
2026-04-06 12:35:07 -04:00
Ignacio Dobronich 41e6b66d7b feat(billing): show tax in subscription upgrade preview (#44258)
This PR moves the client-side "Charge Today" calculation to the backend
- relying on the `preview` endpoint data to show the `Charge Today`,
`Prorated Credits` and `Customer Balance` in the Subscription Upgrade
Preview.

It also includes fields for displaying Tax information in the preview,
only for enabled orgs. Do note that at the moment the Tax Preview will
not change if the address in the Subscription Preview changes, that will
be tackled in a follow-up PR.

## Changes

- Replace client-side charge calculation with backend data: The upgrade
dialog previously computed the prorated credit and total charge locally
(using subscription period timestamps and plan prices). This PR uses the
`upfront_charge` object returned by the subscription preview API
instead.
- Display itemized tax breakdown: When the backend returns tax data, the
dialog now shows a line-by-line breakdown: plan cost → subtotal (if
different) → tax (with rate %) → total charged today.
- Use `tax_status` from the subscription preview to conditionally show
tax details, and display a warning when tax calculation fails.


## Testing

### No taxes - Upgrade from Free to Paid Plan
- With a Free Org with a billing address in Canada or any other
non-enabled jurisdiction, start the upgrade to the Pro Plan
- Assert that only the Charge Today field is shown in the summary
<img width="410" height="298" alt="image"
src="https://github.com/user-attachments/assets/e8c7e12e-833d-41d5-aec3-00092b12782f"
/>

### Taxes - Upgrade Plan
- Update an Org's Orb Customer on the Free or Pro Plan with the
`automatic_tax_enabled: true` flag.
```
curl --location --request PUT 'https://api.withorb.com/v1/customers/external_customer_id/{ORG_SLUG}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: ••••••' \
--data '{
  "tax_configuration": {
    "tax_exempt": false,
    "tax_provider": "numeral",
    "automatic_tax_enabled": true
  }
}'
```
- Update the Org address to a valid taxable address, like: 
```
  "address": {
    "country": "US",
    "line1": "100 Congress Ave",
    "city": "Austin",
    "state": "TX",
    "postal_code": "78701"
  }
```
- Assert that the tax information is shown in the preview, including Tax
Rate, Prorated credits (if applicable), Customer balance (if applicable)
and the price of the intended plan.

<img width="465" height="470" alt="image"
src="https://github.com/user-attachments/assets/dd6a7e27-1708-48a8-bbf3-5435e6d582c2"
/>






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

## Summary by CodeRabbit

* **New Features**
* Added itemized breakdown of subscription charges, including plan cost,
unused time credits, subtotal, and applicable taxes.
  * Enhanced billing estimates with detailed tax information display.

* **Improvements**
* Updated "Charge today" calculations to reflect real-time preview data
for greater accuracy.
* Improved billing estimate UI layout and clarity with better
organization of charge details.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-06 13:24:59 -03:00
Charis 1355ea7db1 chore: temporarily remove pg-meta codeowners (#44577)
See https://supabase.slack.com/archives/C0161K73J1J/p1775482643470329
for context.

## Summary by CodeRabbit

This change is an internal configuration update with no user-facing
impact. It does not require release notes for end-users.
2026-04-06 14:48:25 +00:00
supabase-supabase-autofixer[bot]andgithub-actions[bot] 379a33d21c [bot] Decrease ESLint ratchet baselines (#44539)
Automated weekly decrease of ESLint ratchet baselines.

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-06 10:39:53 -04:00
Ali Waseem 768c79446e fix(studio): prevent report remove button from overflowing on long names (#44575)
## Summary

- Adds `min-w-0` to the flex container holding the report block label in
`ReportBlockContainer`, so CSS truncation works correctly and the Remove
button stays visible even with long report names.

## Test plan

- [x] Create a report with a very long name on the Project Overview page
- [x] Verify the Remove (X) button remains visible without needing to
zoom out
- [x] Verify the report name truncates with an ellipsis

Fixes FE-2944

## Demo
<img width="938" height="390" alt="image"
src="https://github.com/user-attachments/assets/17419035-b03d-4f61-a324-8e446685a109"
/>

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

## Summary by CodeRabbit

* **Bug Fixes**
* Improved text truncation in report block titles to prevent layout
overflow in narrow containers.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-06 14:39:22 +00:00
Ali Waseem a2863ee05f chore: updated UI tests (#44576)
## 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?

Missing mock made the pipeline fail 😢 

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

## Summary by CodeRabbit

* **Tests**
* Extended test mock infrastructure to support additional component
composition patterns.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-06 14:25:56 +00:00
Charis 6563dc7998 refactor: authorize page (#44522)
Refactor authorize page to move Next.js dependencies into the page shell
and have Next.js-agnostic code for the core logic. Add unit tests for
authorize screen.

## Summary by CodeRabbit

* **New Features**
* New end-to-end API authorization UI: loading, error, invalid,
approved, and main approval screens.
* Organization selector with preselection, create-organization link, MCP
warning, expiration handling, and approve/decline actions.
  * Improved page title handling via layout/head provider.

* **Tests**
* Added comprehensive component tests covering loading, error, approval
flows, organization states, validation, and side effects.
2026-04-06 10:02:56 -04:00
Aaron Byrne 205dac33da feat: Adding a more lightweight query to pg-meta that just fetches the table names (#44469)
Bug fix & feature

## What is the current behavior?

Customers with large schemas have trouble running:
pg-meta/{ref}/tables?include_columns=false

## What is the new behavior?

In the webhooks view some users with large schemas could not click a
table name as the underlying query times out. This just adds a light
weight query and fetches the table name
## Additional context

Add any other context or screenshots.

## Summary by CodeRabbit

* **Refactor**
* Optimized table name fetching in the database interface by introducing
an enhanced query mechanism that streams table metadata more efficiently
from the database.
2026-04-06 09:57:08 -04:00
6be596ea34 feat: add user preference to enable queue operations (#44366)
## 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?

- Remove queue operations from feature preview into settings
- Refactor dashboard settings 
- Resolves DEPR-434

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

* **New Features**
* Dashboard settings panel in Account preferences with toggles for
Inline Editor and Queue Operations; “Dashboard” added to project
Configuration.

* **Removed**
* Old Inline Editor settings UI and the Queue Operations feature-preview
UI removed.

* **Refactor**
* Consolidated dashboard preferences into a single settings surface;
banners and actions now navigate to preferences; account/preferences
layouts and back-navigation behavior adjusted for platform vs
self-hosted.

* **Tests**
* Added tests for settings UI, menu generation, redirects, and
local-storage.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
2026-04-06 13:52:53 +00:00
oniani1 78fbed1d5c fix(studio): apply literal() escaping to remaining queue mutation files (#44555)
Follow-up to #44451 which added `literal()` escaping to 4 queue message
files. The remaining 5 files in the same directory still use raw string
interpolation.

The create mutation was the biggest gap -- no `literal()` and no
`isQueueNameValid` at all. It could also interpolate `undefined` into
SQL when partition config is missing.

Applied the same pattern from #44451 to all 5 files: import `literal`,
wrap interpolated values. For the metrics query and create mutation,
also used `ident()` for table name references.

## Summary by CodeRabbit

* **Refactor**
* Improved internal SQL query construction for database queue operations
to enhance code reliability and maintainability.
2026-04-06 09:52:43 -04:00
Fatuma AbdullahiandAli Waseem 8038682bb5 fix: add tooltip, replace button with Tooltip one (#44526)
## 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?

Adds a tooltip for the account settings button

## What is the current behavior?

It has no tooltip

Closes #44524

## What is the new behavior?

Has Tooltip

## Additional context

<img width="552" height="167" alt="Screenshot 2026-04-03 at 22 21 35"
src="https://github.com/user-attachments/assets/e41caee7-e688-4bd9-8823-0c47133c5470"
/>


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

## Summary by CodeRabbit

* **Style**
* Improved interface usability by adding descriptive tooltips to
dropdown menu triggers in the studio. The settings dropdown trigger now
displays a "Settings" tooltip, while the user account dropdown trigger
displays "Account settings" to provide clearer guidance, help users
navigate key interface controls, and enhance the overall user
experience.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Ali Waseem <waseema393@gmail.com>
2026-04-06 13:52:40 +00:00
Charis 333175b17b refactor: switch to @ imports and enforce sorting for studio/state (#44523)
* **Refactor**
* Updated internal module import paths to use standardized alias
conventions across the codebase.
  * Reorganized import statement ordering for improved code consistency.
2026-04-06 13:36:05 +00:00
a020be54c0 fix(studio): use hook for org in NoProjectsOnPaidOrgInfo (#44572)
Follow-up to #44562 – the org prop wasn't actually being passed in, so
`NoProjectsOnPaidOrgInfo` was always returning null. Switched to
`useSelectedOrganizationQuery` hook instead.

## To test

- Go to an org on a paid plan with no projects
- Verify the admonition banner appears on the general settings page

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

## Summary by CodeRabbit

* **Refactor**
* Simplified component architecture by replacing prop-based organization
retrieval with hook-based approach, reducing component coupling and
improving maintainability.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 19:05:24 +09:00
e7bec24021 [FE-2913] feat(studio): restrict cloud provider to AWS (Revamped) for HA projects (#44569)
When high availability is enabled during project creation, automatically
switch to AWS (Revamped) and disable other cloud providers –
multigres/HA is only supported on v3.

<img width="778" height="390" alt="Screenshot 2026-04-06 at 5 09 55 PM"
src="https://github.com/user-attachments/assets/c458f345-497e-4963-9c2f-b4b1eafd030b"
/>

**Changed:**
- Cloud provider selector now watches `highAvailability` form state
- Non-`AWS_K8S` providers (Fly.io, AWS, AWS Nimbus) are disabled when HA
is on
- Warning description shown in orange when HA restricts the provider
choice

**Added:**
- `useEffect` in project creation form to auto-switch cloud provider to
`AWS_K8S` when HA is toggled on

## To test

- Enable the HA toggle on the new project page (requires
`instances.high_availability` entitlement)
- Verify cloud provider auto-switches to AWS (Revamped)
- Verify other providers are greyed out in the dropdown
- Verify orange warning text appears below the cloud provider label
- Toggle HA off and confirm all providers become selectable again
- Ensure project creation still works for both HA and non-HA projects

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

* **New Features**
* When high availability is enabled, cloud provider selection is
restricted to AWS.
* A warning appears when high availability is enabled, noting AWS-only
support.
* The cloud provider selection automatically switches to AWS if high
availability is toggled on.

* **Bug Fixes**
* Improved form validation to prevent incompatible high-availability and
provider combinations.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com>
Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
2026-04-06 19:05:09 +09:00
K-Dog (Kevin) b2d8772d75 chore: do not preload plan change data on page load (#44562)
The data is preloaded even though the modal is never visible
2026-04-06 09:26:02 +00:00