Commit Graph
3389 Commits
Author SHA1 Message Date
CharisandJoshen Lim 9a506888c7 fix(studio): maintenance banner separate from incident banner (#42159)
* fix(studio): maintenance banner separate from incident banner

Right now, scheduled maintenance events also show up as incidents.
Created a separate banner for them so maintenance doesn't show up as an
incident.

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-01-26 13:13:40 +00:00
Danny White 5586be6fdb fix(studio): legal page buttons (#42149)
* basics

* adjustments

* format

* rabbit

* format
2026-01-26 16:20:29 +08:00
Danny White 19cf4bb4bf feat(studio): consolidate settings phase 2 (#37612)
* new slugs

* remove symlinks

* rabbit
2026-01-26 15:41:05 +08:00
Jordi Enric 39e2fd6906 new homepage: gate new usage section behind flag (#41964) 2026-01-26 06:53:34 +01:00
Joshen Lim ea8649b1a1 Validate against empty name in FileExplorerRowEditing.tsx (#42093)
* Validate against empty name in FileExplorerRowEditing.tsx

* Update test

* Fix

* Opt to revert changes if saving empty string

* Nit

* Attempt to write tests with claude

* Trim whitespace in FileExplorerRowEditing when saving
2026-01-26 13:24:29 +08:00
abc37edaa7 chore(studio): link directly to Postgres upgrade blockers (#41527)
* validation errors

* improvements

* deprecate notice bar

* consolidate upgrade warnings

* type fixes

* rabbit

* 📝 Add docstrings to `dnywh/chore/link-to-dropped-objects` (#41528)

* 📝 Add docstrings to `dnywh/chore/link-to-dropped-objects`

Docstrings generation was requested by @dnywh.

* https://github.com/supabase/supabase/pull/41527#issuecomment-3680610884

The following files were modified:

* `apps/studio/data/config/project-upgrade-eligibility-query.ts`

* New line

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>

* Use API types instead

* Update API types

* Add manage replicas CTA to upgrade warning if unified replication and project has replicas

* Nit

* use actionable language

* gap

* simplify

* prettier

* Add URL

* better links

* add tables and encode links

* remove replication link

* nit ordering

* rabbit

* Small simplify

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-01-26 12:50:18 +08:00
Danny WhiteandJoshen Lim a6c9b6b99b chore(studio): improve backup text (#42058)
* date fix

* better tooltip

* better dialog

* fix

* better dialog

* all variations of admonition

for posterity

* cleanup

* inline admonition

* fix

* additional blog post fixes

* Update backups learn more cta URL

* Revert

* Update tooltip content

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-01-26 11:58:53 +08:00
Joshen Lim a4c10ae87c Chore/allow users to access edge functions while project is paused (#42097)
* Allow edge functions pages to be accessible while project is paused or restoring

* nit
2026-01-26 11:51:36 +08:00
Illia Basalaiev 17dde2e881 fix redirect after unsaved changes in reports (#42124) 2026-01-24 13:00:37 +07:00
Charis 842722def8 feat(studio): add api keys to connect modal (#42118)
Add a new tab to Connect Modal to display API URL and public
(publishable) API keys directly.
2026-01-23 13:25:41 -05:00
Charis b7203bc349 fix(studio): use paginated buckets endpoint for command menu (#42080)
The command menu search option uses the unpaginated version of the
buckets endpoint, which times out / causes jankiness when users have
tends of thousands of buckets.

Switch to using the paginated version. The old behaviour is preserved,
where only the first 10 results are shown, and the user has to specify a
more specific search query to get other buckets. This is for UX
simplicity, since this is a convenience feature, and fully
infinite-loading search is available in the full Storage interface.
2026-01-23 15:18:44 +00:00
Jordi Enric 0f6b5a8f7f feat: make edge fn header sticky FE-2127 FE-2386 (#42100) 2026-01-23 15:33:02 +01:00
Ali WaseemandJoshen Lim 78e0f19d6a fix: add description of column on header name (#42082)
* fix: add description of column on header name

* Simplify

* Attempt to fix test

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-01-23 07:23:07 -07:00
Joshen Lim 1536ee1064 Joshen/fe 2287 summary nodegraph in replication page (#42042)
* init

* Init 2

* Finalize

* bit more details in the summary graph

* Moreeee details

* Clean

* 🧹

* FIIIXX

* Fix rabbit

* Simplify long polling logic to only depend on database for destinations UI

* ADdress rabbit

* Address feedback
2026-01-23 17:59:52 +08:00
Joshen Lim 021c5c1634 chore(studio): Update GH branch field input for CreateBranchModal to debounce the same behaviour as EditBranchModal (#42059)
Update GH branch field input for CreateBranchModal to debounce the same behaviour as EditBranchModal
2026-01-23 17:09:07 +08:00
Joshen LimandAlaister Young fbfdd0d311 Fix GH integrations authorize CTA (#42057)
* Fix GH integrations authorize CTA

* Update apps/studio/components/interfaces/Settings/Integrations/GithubIntegration/GithubSection.tsx

Co-authored-by: Alaister Young <alaister@users.noreply.github.com>

---------

Co-authored-by: Alaister Young <alaister@users.noreply.github.com>
2026-01-23 16:17:44 +08:00
Danny White e96199081b feat(studio): show SQL snippet description (#42090)
* show browser title

* show both name and desc

* cleanup

* linebreak and format
2026-01-23 16:11:28 +08:00
Danny WhiteandJoshen Lim 8867183cdd chore(studio): handle additional dynamic button variants (#42061)
* update admonition and button

* other instances

* misc

* misc

* pitr

* buttonVariant naming

* fixes

* rabbit

* rename buttonVariant to variant

* rabbit

* fixes

* format

* Nit

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-01-23 15:55:02 +08:00
Joshen Lim bddd04bbc6 Use new action runs endpoints (#41808)
* Use new action runs endpoints

* Clean up

* Nit

* Unify DiffEditors

* Fix TS

* Fix TS

* Fix merging
2026-01-23 15:29:02 +08:00
Ali Waseem f4409d4ac5 fix: updated explain to not crash on non text formats (#42076)
updated explain to not crash on non text formats
2026-01-22 12:26:45 -07:00
Charis d27bb74258 test(studio): add tests for data api toggles (#42051)
* test(studio): add tests for data api toggles
2026-01-22 12:46:54 -05:00
Charis d34cc65e30 fix(studio): handle large cron.job_run_details table gracefully (#41992)
* fix(studio): check job_run_details size in cron display

When cron.job_run_details grows too large (200k+ rows), loading the
cron jobs overview can timeout and affect other queries by pulling
excessive data into shared buffers.

This change:
- Estimates table size using pg_stat before fetching cron jobs data
- Shows a cleanup notice when the table exceeds the threshold
- Provides batched deletion using ctid ranges to avoid buffer pollution
- Allows scheduling an automated daily cleanup cron job
- Handles timeout errors gracefully with a "suspected overflow" state

The useCronJobsData hook now returns a discriminated union status that
tracks loading, estimate-error, overflow-confirmed, overflow-suspected,
and ready states, allowing the UI to respond appropriately to each case.

* fix(studio): use index when querying cron.job_run_details

cron.job_run_details is only indexed by runid, not by start_time. Change
the query to use the runid index (which gives the same result, since
runid is auto-incrementing).
2026-01-22 11:17:49 -05:00
kemal.earth ee25ba20dc feat(studio): replace auth overview charts (#41464)
* feat: replace usage metric cards with new charts

* feat: use new chart components for auth api and error codes

* style: some tweaks to the two tables

* fix: padding around empty states

* feat: smol adjustment

* fix: add aria label to go to logs tooltip

* fix: diff value

* fix: status code method font colour

* fix: actions onClick
2026-01-22 12:56:32 +00:00
kemal.earth 434d8735f3 feat(studio): swap area chart fills for gradients (#42063)
* feat: swap area chart fills for gradients

* chore: further tweaks

* fix: light mode gradient stop thanks coderabbit
2026-01-22 12:53:13 +00:00
Jordi Enric 6fe990c658 papercut: add units to api charts (#42027)
* add units

* prettier
2026-01-22 13:34:34 +01:00
Danny White 69f15cc788 chore(studio): update upgrade to pro admonition button variants (#42056)
* update admonition and button

* other instances

* misc

* misc

* pitr

* buttonVariant naming

* fixes

* rabbit

* rename buttonVariant to variant

* rabbit
2026-01-22 19:04:13 +11:00
f293036ec7 Add UX guardrails for edge functions RE unsaved and unimported files (#41921)
* Add UX guardrails for edge functions RE unsaved and unimported files

* useLatest on hasUnsavedChanges

* Remove checking of unimported files + add VS code like indicator for modified and unsaved files

* Nit

* Fix TS

* Fix

* nit

* Fixes

* Nit

* move hasUnsavedChanges on demand

* code rabbit nit

* code rabbit nit 2

* prettier

---------

Co-authored-by: Alaister Young <a@alaisteryoung.com>
Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
2026-01-22 13:31:28 +08:00
Ali Waseem 9e1df69853 fix: handle errors better in index advisor (#42043)
* fix: handle errors better in index advisor

* added admonition
2026-01-21 11:11:39 -07:00
Joshen Lim b55c399c42 Fix API keys copy button for safari (#42036)
* Fix API keys copy button for safari

* nit
2026-01-21 09:45:35 -07:00
Jordi Enric d982417830 query perf improvements FE-2223 (#42026)
* query perf improvements

* info tooltips

* filter fixes

* prettier wont work in cursor for some reason

* fix type error

* rm clear all filters button, its too much

* prettier
2026-01-21 09:01:10 +00:00
Jordi Enric fbd40fa0d4 Query Perf: rename column (#42025)
rename
2026-01-21 08:25:25 +01:00
Danny White 1db3da7a04 chore(studio): add URL state management to database tables page (#42022)
swap input
2026-01-21 14:33:18 +08:00
Pamela Chia faa2588392 chore(studio): remove homeNew feature flag helper (#41984)
PostHog migration from boolean to string variants is complete.
The helper was only useful during migration - now it's just
`value === 'new-home'` which is trivial to inline.

- Delete apps/studio/lib/featureFlags/ folder
- Inline flag check at 3 call sites
2026-01-21 12:32:02 +07:00
Danny WhiteandCharis Lam 05dc676d36 feat(studio): incident-aware AI assistant (#41603)
* handling and mock data support

* admonition

* only show in empty state

* rabbit

* mock without local overrides

* remove admonition

* make incident banner more prominent

* remove mock data

* move to tool

* prettier

* fix(studio): get_active_incidents tool

---------

Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
2026-01-21 13:52:29 +11:00
Danny WhiteandJoshen Lim 60dfcc00ea fix(studio): PageSectionSummary alignment (#42019)
* system

* nit

* docs and fixes

* more resilient component

* remove redundant text

* format

* nit

* PRettier

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-01-21 10:18:15 +08:00
Andrey A. 19c712ffac fix: add help popover for self-hosted and cli (#42015)
fix: add help icon for self-hosted and cli
2026-01-20 10:08:28 -07:00
Andrey A. c5267c896a fix: do not show observability reports for CLI and self-hosted (#41971)
* fix: do not include reports for CLI and self-hosted

* fix: do not display empty product reports

* fix: do not include api gw and custom reports for self-hosted

* fix: ran prettier
2026-01-20 10:07:12 -07:00
Andrey A. c5a142dd2b fix: do not show replication for self-hosted and CLI (#41970) 2026-01-20 10:02:08 -07:00
Kalleby Santos b74bf9bef4 fix(studio): studio broken local/self-hosted pages 1 (database settings) (#40579)
* feat: non-platform empty local state fallback for database settings page

* stamp: improving local database settings layout

* stamp: format
2026-01-20 10:01:00 -07:00
Kalleby SantosandTerry Sutton 9792deb109 feat(studio): improve ai assistant error feedback (#41132)
* feat: improve ai assistant error alert

* stamp: format

---------

Co-authored-by: Terry Sutton <saltcod@gmail.com>
2026-01-20 12:30:04 -03:30
c3dfbc5956 feat: add support for dropping and auto-extracting zip files in Edge Functions editor (#41801)
* feat: add support for dropping and auto-extracting zip files in Edge Functions editor

* fix: add type assertions for readonly array includes checks in zip extraction

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* feat: add support for PDF and image files in zip extraction

- Moved wasm from ALLOWED_EXTENSIONS to ALLOWED_BINARY_EXTENSIONS
- Added PDF support for document files
- Added common image formats: jpg, jpeg, png, gif, svg, bmp, ico, webp
- Binary files are extracted and preserved but show "Cannot Edit" message in editor

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* refactor: remove file extension validation from zip extraction

Makes zip extraction behavior consistent with regular file drops.
Now all file types are accepted in both cases, matching the
permissive behavior users expect.

Removed:
- ALLOWED_EXTENSIONS and ALLOWED_BINARY_EXTENSIONS arrays
- isAllowedExtension() and isAllowedBinaryFile() validation functions
- getFileExtension() helper (no longer needed)
- Extension-based rejection logic from extractZipFile()

Kept:
- File size validation (individual and total limits)
- Hidden file filtering (.DS_Store, __MACOSX, etc.)
- Binary file detection for proper content reading

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix: correct file replacement detection in addDroppedFiles

Bug: The condition `updatedFiles !== files` always evaluated to true
because updatedFiles is created via files.map() which always returns
a new array reference, even when no files were actually modified.

This caused onFilesChange to be called unnecessarily when dropping
zip files that only contained files with names not matching any
existing files.

Fix: Track whether any existing files were actually replaced using
a hasReplacedFiles flag that is set to true only when we modify
files in the updatedFiles array during zip extraction.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix: add graceful error handling for zip file extraction

Replaced dangerous non-null assertion operator (!) with proper error
handling for entry.getData() calls.

Changes:
- Check entry.directory and entry.getData before extraction
- Wrap getData calls in try-catch to handle extraction failures
- Track failed files and include them in error reporting
- Skip files that can't be extracted instead of crashing

This prevents runtime errors when:
- Zip entries are directories (defensive check)
- Zip entries don't have getData method (corrupted/unusual entries)
- File extraction fails for any reason (encoding issues, etc.)
- Binary/text file reading encounters errors

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* refactor: improve file processing logic with enum and switch statement

Replaced if-else chain with cleaner enum-based approach per PR feedback.

Changes:
- Added FileAction enum (CREATE_NEW, REPLACE_EXISTING, REPLACE_NEW)
- Created getFileAction() helper function that returns action + index
- Refactored file processing loop to use switch statement
- Eliminated duplicate findIndex() calls (was calling it twice)
- Reduced variable count from 2 (existingFileIndex, newFileIndex) to 1 (actionResult)

Benefits:
- More readable and maintainable code
- Single source of truth for file lookup logic
- Better type safety with discriminated union
- Easier to extend with new file actions in the future

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* prettier

* fix: add guard for undefined entry.uncompressedSize in zip extraction

Prevents NaN from bypassing size validation when entry.uncompressedSize
is undefined.

Issue:
- entry.uncompressedSize can be undefined in malformed/corrupted zips
- Without guard: totalExtractedSize + undefined = NaN
- NaN comparisons always return false, bypassing MAX_TOTAL_EXTRACTED_SIZE
- Security risk: allows extraction of files with unknown sizes

Fix:
- Check if uncompressedSize is undefined or NaN before any arithmetic
- Skip files with unknown sizes and add to oversizedFiles array
- Provide descriptive error message: "unknown size - metadata unavailable"
- Ensures size validation always runs safely

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* Refactor to streamline handling of regular and zip files in FileExplorerAndEditor

* Address rabbit feedback

* Nit

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-01-20 20:09:01 +08:00
Kanishk Dudeja 4281be70ed feat(billing): use entitlements for read replica access (#41940) 2026-01-20 13:19:43 +05:30
Joshen Lim c6b2fe6fee Popover ui component to use portal by default, remove all manual declaration of portal for PopoverContent in dashboard (#41818)
* Popover ui component to use portal by default, remove all manual declaration of portal for PopoverContent in dashboard

* Forgot to add ui changes lol

* Clean uop
2026-01-20 11:58:31 +08:00
Ali WaseemandJoshen Lim 1dbd86a8c0 fix: edit branch modal to not make requests per branch change (#41915)
* edit branch modal to not make requests per branch change

* reverted onblur mode

* Simplify debounce logic

* updated open linker to handle undefined error

* updated to ensure branch name isn't stale

* updated to use static event

* updated logging statement

* formatted document

* removed static events

* updated loading and check states

* updated to watch on branch name

* Nit remove isChecking loading for Update branch button

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-01-20 11:33:00 +08:00
Danny White 196aa05924 chore(studio): use the shared createNavigationHandler (#41628)
* design system references

* fix remaining tables

* rabbit

* fix
2026-01-20 03:24:10 +00:00
Ali Waseem 4dda2e7f74 fix: remove message from api contact allowing users to flll helpful context (#41994)
fix: remove message from api contact allowing users to fill something helpful
2026-01-20 10:52:29 +08:00
Charis 472ef2d062 fix(studio): invalidate table editor menu on assistant mutations (#41989)
The queries used for the Table Editor menu aren't invalidated when the
Assistant executes SQL, so newly created views/tables and fresh lints
aren't shown. Now adds invalidations whenever a write query is run from
the Assistant interface.
2026-01-19 13:20:09 -05:00
Ali Waseem d512338cab fix: settings for storage to not show up on self hosted as they are not supported (#41936)
* fixed settings for storage to not show up

* updated tests and settings for storage bucket
2026-01-19 09:16:49 -07:00
Charis 0560e6e8d0 fix(studio): maintain focus on input for assistant (#41987)
While Assistant responses are streaming, the text input box is disabled.
This is an odd UX since it sends focus all over the place. Now, the text
input box is still usable while streaming, though you still have to wait
until streaming is done to actually submit. Allows the user to prepare
next messages and also keeps focus consistent.
2026-01-19 15:44:17 +00:00
Alaister Young 882ca8b636 fix(studio): integrations infinite loop error (nimbus) (#41986)
* fix(studio): integrations infinite loop error (nimbus)

* sort imports
2026-01-19 15:18:28 +00:00