Commit Graph
5505 Commits
Author SHA1 Message Date
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
kemal.earth 7013388c0c fix(studio): small font size fix on access tokens table (#41928)
fix: small nit on access token table
2026-01-19 08:59:21 +00:00
Joshen LimandAlaister Young 3b7bba9a9a Add read replicas details page from database replication (#41784)
* Add read replicas details page from database replication

* Clean

* Address 🐰

---------

Co-authored-by: Alaister Young <a@alaisteryoung.com>
2026-01-19 13:44:41 +08:00
Joshen LimandAlaister Young 3277b3c062 chore(studio): Use session access token for GraphiQL UI (#41642)
Use session access token

Co-authored-by: Alaister Young <alaister@users.noreply.github.com>
2026-01-19 13:19:31 +08:00
Joshen Lim 9dbc4fc851 Simplify logic in NoticeBanner by using useLocalStorageQuery (#41890)
* Simplify logic in NoticeBanner by using useLocalStorageQuery

* Clean up

* Deprecate AppBannerWrapperContext
2026-01-19 13:07:22 +08:00
Joshen Lim 5c91e60811 Add alert dialog when toggling SSL enforcement (#41887)
* Add alert dialog when toggling SSL enforcement

* Updating copywrting
2026-01-19 13:00:58 +08:00
Jordi Enric d786c1bdd4 add dynamic datepicker (#41924)
* add dynamic datepicker

* tests

* handle singulars
2026-01-15 13:11:40 +00:00
kemal.earth d19385a138 fix(studio): remove wrongly semicolon from export cli command (#41898)
* fix: remove semicolon from export cli

* fix: bump up contrast of string on light mode

* chore: update lightmode green to danny suggestion

* fix: actual suggestion
2026-01-15 09:28:54 +00:00
Ali Waseem 7c01479404 fix: update so that branch does not get overwritten (#41920) 2026-01-15 16:19:39 +07:00
kemal.earth 167ad55f57 chore(studio): hide pg stat monitor from extensions list (#41880)
chore: hide pg stat monitor from extensions list
2026-01-15 08:44:40 +00:00
kemal.earth e284e5ddcd fix(studio): table editor sidebar toggle on mobile (#41894)
fix: table editor sidebar toggle on mobile
2026-01-15 08:44:08 +00:00
Ali Waseem 52587d49e9 fix: Update roles in query performance to make them less confusing (#41828)
* added query performance dropdown with filters and groups

* updated and cleaned up roles

* updated filter popover to show options

* updated types for filter

* updated spacing

* fixed minor bug

* updated description

* updated

* update roles

* updated width and added only button

* updated index button

* updated to remove descriptions
2026-01-15 08:17:26 +00:00
Danny White fa9b22a171 fix(studio): StorageExplorer overflow on PreviewPane (#41918)
fix overflow
2026-01-15 19:08:53 +11:00
Francesco Sansalvadore a65c661270 fix(studio): remove mobile sidebar toggle in table editor (#41914)
fix(studio): remove redundant sidebar toggle in table editor
2026-01-15 14:30:51 +07:00
Joshen Lim eb81b2a340 Fix toggling of prevent use of leaked passwords in auth config (#41912)
* Allow disabling of prevent use leaked passwords config if enabled but downgraded to free plan

* Simplify logic
2026-01-15 10:49:30 +07:00
Joshen Lim 17715744b2 Update programmatically generated policies to use authenticated role (#41812)
* Update programmatically generated policies to use authenticated role

* Fix test

* Fix unit tests
2026-01-15 10:27:07 +07:00
Kanishk Dudeja 3efa9a433f feat(billing): use entitlements for replication access (#41891)
* feat(billing): use entitlements for replication access

* fix ts error

* rename variable to make it clearer
2026-01-14 16:14:55 +05:30
kemal.earth 605de42f49 feat(studio): remove warnings dropdown in favour of index advisor toggle filter (#41873)
* feat: remove warnings dropdown in favour of index advisor toggle fitler

* fix: tests for index advisor
2026-01-14 08:27:08 +00:00
Joshen Lim a2b4e83fc6 Update NoticeBanner content for scheduled maintenance (#41888) 2026-01-14 13:34:03 +07:00
Joshen Lim 2e7b968b1c Fix Auth OAuth apps request error if oauth server has not been configured (#41870)
* Fix Auth OAuth apps request error if oauth server has not been configured

* Clean up
2026-01-14 09:31:03 +07:00
kemal.earthandJoshen Lim 06e523136c fix(studio): access projects dropdown (#41856)
* feat: improve panel width

* feat: tidy list and fix panel sizing

* chore: remove unnecessary cn

* fix: add prop enables scroll within a sheet

* chore: match header background

* chore: small styling brush up

* fix: remove non tailwind class

* Nit

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-01-13 09:11:27 +00:00
Danny WhiteandJoshen Lim 2d8bead174 fix(studio): function form reset only after open or change (#41871)
* fix

* simplify

* Adjust

* Nit

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-01-13 14:57:54 +07:00
Joshen Lim 417f92268d Allow disabling GH integration on project if org is on a free plan (#41868) 2026-01-13 13:59:58 +07:00
Sean Oliver 30adf96a0e Simplify realtime experiment to rely on PostHog targeting (#41210) 2026-01-12 20:58:00 -08:00
kemal.earth 59dfc7875f fix(studio): access token delete menu (#41850)
* fix: correct styling for access tokens action menu

* fix: use timestampinfo card for created and expired

* chore: remove unused tooltip components

* feat: bonus add sorting for expiry and used dates

* fix: coderabbit suggestions

* fix: colspan suggestion

* fix: line truncation for token

* fix: another colspan spotted
2026-01-12 11:36:39 +00:00
Joshen Lim b24778c0d8 Fix incorrect project access callout for project scoped roles (#41846) 2026-01-12 18:40:20 +08:00
Kevin Grüneberg 140e74435d docs: rename Realtime quotas to Limits (#41816)
We use the quota term for actual billing quotas, so using "Quota" as a term for configurable Realtime limits is confusing. While there are varying per-plan limits, they are not used for billing. Realtime Quotas on plans refer to Realtime Messages and Realtime Peak Connections
2026-01-12 16:03:25 +07:00
Charis 8705a2f2fd fix(studio): warn when wrapper is changed (#41845)
When a wrapper is changed (e.g., by changing a table name, the entire
wrapper is destroyed and recreated. This also destroys dependent objects
like functions, but the user is not warned.

Add a confirmation modal warning that this will happen.
2026-01-12 05:34:27 +00:00
Joshen Lim 32e1fedc79 (chore) studIo: Refactor use query state with select part 01 (#41819)
* Refactor to remove usage of useQueryStateWithSelect in auth policies and vector bucket

* Refactor to remove usage of useQueryStateWithSelect in edge functionn secrets
2026-01-12 12:30:04 +07:00
Alaister Young ebfc40f4ea fix(studio): Twitter (Deprecated) oauth provider enabled status (#41844)
fix(studio): twitter (deprecated) oauth provider enabled status
2026-01-12 05:05:36 +00:00
Sean OliverandJoshen Lim 4e9b718cf3 Fix table quickstart experiment multi-bucket exposure issue (#41423)
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-01-09 15:53:12 -08:00
Han Qiao 9b152f0ce5 fix: remove git branches from merge requests dropdown (#41817)
* fix: remove git branches from merge requests dropdown

* fix: disable merge on github connected branch

* chore: update merge tooltip
2026-01-09 17:44:55 +08:00
Joshen Lim b867dd73bb Update FDW type for server_options to be nullable and fix TS issues (#41811) 2026-01-09 17:33:35 +08:00
Ivan Vasilov f346518fe3 [FE-2227] chore: Refactor the Deno libraries to be bundled loaded as dynamic ES modules (#41595)
* Load the TS lib files dynamically in the editor and set them on the Monaco instance only if the language is TS or JS.

* Change the AIEditor to use named export.

* Add catches for the dynamic loads.
2026-01-09 09:46:12 +01:00
Joshen Lim 7844b2e4ab Add pause indicator to ProjectDropdown (#41809) 2026-01-09 14:28:20 +08:00