Commit Graph
2829 Commits
Author SHA1 Message Date
Danny White 7c189976ee fix(studio): troubleshooting links (#39916)
* clean slate fixes

* remove testing ternary
2025-10-29 12:48:27 +11:00
e27602f629 Editor sidebar manager (#39834)
* sidebar-manager

* storage keys

* tests

* more ai spots

* test fix

* revert to default

* remove ref

* Update apps/studio/state/sidebar-manager-state.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix ts

* fix

* fux

* fux query param

* clean

* fix

* more

* mock local storage

* simplify

* remove provider test

* remve useopensidebar

* fix(new homepage): open ai assistant on advisor card button clicks

* Update apps/studio/components/layouts/ProjectLayout/LayoutSidebar/index.tsx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* Update apps/studio/state/sidebar-manager-state.tsx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* refine

* editor sidebar manager

* reset results

* Update apps/studio/components/ui/EditorPanel/EditorPanel.tsx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* connect hotkey

* initial prompt

* fix(editor sidebar): disable hotkey based on user preference

* cleanup(inline editor): add migration for hotkey local storage key

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
2025-10-29 08:45:07 +10:00
Sean Oliver ad6466b1f3 feat: Add event tracking for table quickstart experiment (#39854)
* Add event tracking for table quickstart experiment

Implements telemetry instrumentation for the table quickstart experiment
to measure exposure and engagement across AI, Templates, and Assistant variations.

Events added:
- table_quickstart_viewed: Exposure tracking for variant assignment
- table_quickstart_ai_prompt_submitted: AI prompt submissions
- table_quickstart_ai_generation_completed: AI generation success/failure
- table_quickstart_template_selected: Template selection (unified for AI and templates)
- table_quickstart_quick_idea_clicked: Quick idea button clicks
- table_quickstart_category_selected: Template category navigation
- table_quickstart_assistant_opened: Assistant chat creation

All events use type-safe useTrack() hook with automatic project/org context.
Conversion tracking intentionally omitted - relying on joins with existing
table_created events for post-analysis.

* event name cleanup

* Address code review feedback

- Use nullish coalescing operator (??) instead of logical OR (||) for categoryName fallback
- Refactor handleGenerateTables to accept object parameter for improved call site readability

* prettier

* action key name alignment with event name
2025-10-28 17:12:42 +00:00
Ignacio Dobronich 26286fd162 chore: compute Instances entitlements (#39848)
chore: Compute Instances entitlements
2025-10-28 16:22:56 +00:00
Jordi Enric 406ada78bd fix webhooks link (#39939)
fix
2025-10-28 17:05:04 +01:00
Alaister YoungandCharis a3e7cb7285 chore: move password check to frontend (#39927)
* chore: move password check to frontend

* remove barrel file export and fix test import

* move import inside function

* Update apps/studio/lib/password-strength.ts

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* fix test

---------

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>
2025-10-28 23:24:35 +08:00
Abhijeet PrasadandJordi Enric c8ee8cd6e9 feat(log-drains): Add Sentry Log Drain (#39442)
* feat(log-drains): Add Sentry Log Drain

* fix icon

* fix type error

* flag

* fix dupped entry in schema

---------

Co-authored-by: Jordi Enric <jordi.err@gmail.com>
2025-10-28 12:04:43 +01:00
Ivan Vasilov da4a40e308 chore: Migrate RQ functions to use object syntax style (#39895)
* Migrate all uses of invalidateQueries to use object syntax.

* Migrate the remainder of useInfiniteQuery.

* Migrate all setQueriesData.

* Migrate all fetchQuery uses.

* Migrate some leftover functions from RQ.

* Fix issues found by Charis.
2025-10-28 10:43:14 +01:00
Kevin Grüneberg c26231a755 fix: usage page project filtering via URL param (#39919)
When opening the usage page with a projectRef param (filter by project), it lead to some odd behaviour where the project is not preselected and then after picking a project, it would end up showing the initially filtered project from the URL.

PR removes the odd all-projects logic and uses nuqs for URL state mgmt
2025-10-28 13:37:35 +08:00
Stojan DimitrovskiandJoshen Lim 1af6b84790 types are broken (#39866)
* types are broken

* Fix TS issues

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-10-28 10:38:07 +08:00
Joshen Lim f6473165bd Hide mobile nav menu on organizations page (#39908)
* Hide mobile nav menu on organizations page

* Fix
2025-10-28 10:08:46 +08:00
738c568e6b Sidebar manager (#39795)
* sidebar-manager

* storage keys

* tests

* more ai spots

* test fix

* revert to default

* remove ref

* Update apps/studio/state/sidebar-manager-state.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix ts

* fix

* fux

* fux query param

* clean

* fix

* more

* mock local storage

* simplify

* remove provider test

* remve useopensidebar

* fix(new homepage): open ai assistant on advisor card button clicks

* Update apps/studio/components/layouts/ProjectLayout/LayoutSidebar/index.tsx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* Update apps/studio/state/sidebar-manager-state.tsx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* refine

* FIX

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
2025-10-28 10:07:21 +10:00
Stojan DimitrovskiandTerry Sutton 482e477d00 feat: rewrite auth audit logs toggle to be in the positive sense (#39846)
* feat: rewrite auth audit logs toggle to be in the positive sense

* Light edit

* Copy update

---------

Co-authored-by: Terry Sutton <saltcod@gmail.com>
2025-10-27 18:19:55 +01:00
kemal.earth e2764f2675 fix(studio): average p95 calculation on query performance (#39725)
* fix: p95 calculation

Something seemed off so had another stab at it using resp_calls

* feat: simplified weighted avg p95

* feat: tweak it slightly

* feat: try one with a fallback

* feat: add test for percentile calculating
2025-10-27 13:07:42 +00:00
Alaister YoungandJoshen Lim 8855d05803 chore(studio): swap react-query to object syntax (#39842)
* chore(studio): swap react-query to object syntax

* Fix small issues found

* Fix realtime settings

* Nit

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-10-27 09:38:27 +01:00
Joshen Lim 6e2a7feee7 Break down new project page into smaller components (#39812)
* Break down new project page into smaller components

* Fix types

* Address comments

* Add min length check for project name in project settings

* Fix tests
2025-10-27 14:04:56 +08:00
Kevin Grüneberg 9961c3b4e9 fix: use Next Link for proper prefixing (#39891) 2025-10-27 13:35:14 +08:00
Danny White 0c65581e6c chore(studio): split auth templates into subpages (#39831)
* basic subpages

* add template descriptions

* keep tabbed navigation alive

* revert active tab

* use bespoke layout for each template

* redirect non-feature preview users away

* template page improvements

* fix docs link

* add TemplateEditor

* fix errors

* better error for missing routes

* extract slugifyTitle function to ensure consistent slugs
2025-10-27 15:52:34 +11:00
Danny White 7ab4569508 chore: Discord in command menu (#39836)
* add discord to command menu

* fix type size on input

* revert discord outline icon

* fix docs command menu

* add package

* visually align icons and text

* prettier write

* fix missing import
2025-10-27 15:51:27 +11:00
Kevin Grüneberg 312259b704 chore: user v2 content count query for search (#39869)
* chore: user v2 content count query for search

Instead of using two different endpoint versions, we can rely on v2 for all cases.

* Update SearchList.tsx
2025-10-26 13:49:33 +08:00
hallidayo af48b1c34d fix: revert 39818 (#39875)
revert 39818
2025-10-25 15:34:54 -06:00
Ivan VasilovandWen Bo Xie 977b867bef fix: During project claim, disable the orgs for choosing who can't add another projects (#39398)
* If the auth id has already been used for approving the same org, ignore the error.

* Accidentally committed the wrong code while testing.

* Disable the choose org button if the org can't add more free projects.

* Hide the tooltip if the condition is met.

---------

Co-authored-by: Wen Bo Xie <wenbox323@gmail.com>
2025-10-25 14:17:19 +02:00
Kevin GrünebergandJoshen Lim 03c1cc0500 fix: confirmation modal on paid org creation (#39857)
* fix: confirmation modal org creation

The button when confirming org creation was not working as it was just returning early.

The submit handler is triggered both on initially clicking the "Create organization" button and on the confirmation button, but it always early returns if the customer has other free plan orgs with projects, so it doesn't let the customer submit the form
12:44
How to reproduce:
- Create a free plan org with an active project
- Create a new paid plan organization
- Confirmation modal appears
- Clicking the button just closes the modal and does not create the org as there is an early return in the onSubmit handler

Moved away from ConfirmationModal to an inline info instead

* Update NewOrgForm.tsx

* Nit refactor

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-10-25 17:54:45 +08:00
Sean Oliver e05981cf2c feat: add assistant variation to table quickstart experiment (2.5 of 3) (#39825)
feat: add assistant variation to table quickstart experiment

Adds ASSISTANT variant to table quickstart that opens AI assistant with
pre-populated conversation to guide users through creating their first
database table.

Changes:
- Add QuickstartVariant.ASSISTANT enum value
- Add 'Create with Assistant' card for new projects (<7 days old)
- Implement handleOpenAssistant with proper loading states and error handling
- Add pre-populated messages to guide table creation workflow

The assistant card appears only for users bucketed into the assistant
variation of the tableQuickstart experiment on new projects.
2025-10-24 12:20:38 -07:00
Sean Oliver 73e3143b0c Add type-safe event tracking utility (#39745)
Adds a clean, type-safe wrapper for telemetry event tracking that automatically injects project and organization context.

- Export TelemetryGroups type from telemetry-constants
- Add useTrack() hook with full TypeScript event validation
- Refactor project creation events to use new API
- Reduces boilerplate from ~10 lines to ~2 lines per event
2025-10-24 18:25:26 +00:00
Ali WaseemandCharis 3eb8507566 Feature: Abililty to duplicate triggers from the dashboard (#39828)
* updated to support on close and duplicate

* updated formatting

* added confirmation panel for triggers

* updated form to select the correct table for defaults

* updated to support trigger intial tables selected

* updated to mark select field as dirty

* Update apps/studio/components/interfaces/Database/Triggers/TriggerSheet.tsx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* Update apps/studio/components/interfaces/Database/Triggers/TriggerSheet.tsx

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>

* updated to remove undefined error

---------

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>
2025-10-24 11:31:30 -06:00
Ali Waseem 0a99c0eb04 Fix: Removed default array value in case memo is broken (#39851)
Removed default array value in case memo is broken
2025-10-24 11:19:25 -06:00
Ali Waseem 31045d35fd Fix: infinite re-render on table when computing foreign keys (#39850)
fix infinite re-render on table editor
2025-10-24 10:48:59 -06:00
Andrew Valleteau 268c29cd9d feat(studio): give action shortcut for persistent branches deletion (#39786)
* feat(studio): give action shortcut for persistent branches deletion

* chore: refactor dedup trigger

* chore: no-biome
2025-10-24 18:25:16 +02:00
Charis 21d27b9a62 perf(storage menu): improve bucket list for users with many thousand buckets (#39826)
* perf(storage menu): virtualize and memoize bucket rows

The Storage Menu fails to render properly when the user has thousands of
buckets. Virtualizing and memoizing BucketRows to reduce rendering work.

* refactor(bucket list): only virtualize bucket list when more than 50 buckets

* style(storage menu): improve styling for virtualized and unvirtualized lists
2025-10-24 12:27:43 +00:00
kemal.earth ebf9db565b fix(studio): syntax error in banner (#38601)
* fix: rendering anchor inside button

* chore: revert banner logic out of testing purposes

* chore: debugging the gap

* chore: remove unused css
2025-10-24 12:52:01 +01:00
kemal.earth b8bc7ffc18 fix(studio): comma formatting for auth overview numbers (#39838)
fix: bring commans in for big numbers
2025-10-24 11:37:00 +01:00
Francesco SansalvadoreandCharis af43adb9a4 chore: command events (#39775)
* add CommandMenuTriggerInput in ui-patterns
* optimize search input responsiveness
* add event on commandMenu opened
* add event on debounced commandMenu input submission
* add event on commandMenu command selection
* add commandMenu telemetry to studio, www and docs

---------

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>
2025-10-24 11:06:31 +02:00
Alaister Young 45713e2910 fix: nimbus local/staging region (#39841) 2025-10-24 08:55:26 +00:00
Saxon Fletcher 7ade636a79 Improve database functions list (#39835) 2025-10-24 17:18:59 +10:00
Ali WaseemandAli Waseem c41a5be8a5 Feature: Duplicate functions from the studio dashboard (#39821)
* added feature to duplicate functions

* updated formatting for index file

* removed unused ai assitant code

---------

Co-authored-by: Ali Waseem <awaseem@Alis-MacBook-Pro.local>
2025-10-23 15:48:53 -06:00
Ali Waseem f236876270 Bug fix: update headers so that they are sent correctly (#39824)
fixed bug to send correct headers using form vals
2025-10-23 15:48:18 -06:00
Charis 33e716c684 fix(support form): bug with log snapshot (#39819)
The log snapshot is properly cut off at support form navigation in the
preview, but not when it is actually uploaded. That happens because we
try to take ownership of the current log snapshot twice, so the second
time it falls back to the non-snapshotted logs. Changed to take the
snapshot once when the support form is mounted and then pass it to child
components/handlers.
2025-10-23 14:55:56 -04:00
Charis 7ad5891e45 fix(table editor): don't show dialog separator for hidden context menu items (#39818) 2025-10-23 14:51:31 -04:00
Sean Oliver f73ea9bd74 feat: add AI-powered table generation variant (2 of 3) (#38934)
* Add table quickstart with templates and AI generation

Implement table quickstart feature with two variants:
- Template-based: Pre-built schemas across multiple categories (social, ecommerce, content, productivity)
- AI-powered: Generate custom table schemas from natural language prompts

Key features:
- Template selector with category tabs and schema previews
- AI generation using gpt-oss-120b via Bedrock for fast response times
- Streaming responses with real-time table generation
- Quick idea chips for common use cases
- Success feedback and seamless integration with table editor
- Feature flag gated (tableQuickstart) with 7-day new project window
- Comprehensive error handling and retry logic
- ARIA labels and accessibility improvements

Technical implementation:
- Custom React hooks for AI generation and state management
- Zod schema validation for type-safe streaming
- API endpoint with structured object streaming
- localStorage-based dismissal state
- Consistent styling with existing UI patterns

* Refactor and optimize AI table generation

Refactor to use AI SDK streaming with structured object generation:
- Use streamObject() with Zod schema validation for type-safe streaming
- Add 50KB buffer limit to prevent memory issues from oversized responses
- Replace custom stream parsing with Object.assign() for efficient merging
- Use fetchHandler utility for consistent error messages across codebase
- Clean up comments and unused code

* Update quickstart widget styling to match action card

- Changed background from bg-surface-75 to bg-surface-100
- Changed hover background to bg-surface-200
- Applied to AI widget, template widget, and quick idea buttons

* Address PR review feedback

- Persist AI results to localStorage so users can create multiple tables from same generation
- Remove unnecessary isMountedRef checks before synchronous state updates
- Change Quick ideas label to semantic h4 element for accessibility
- Add TODO comment about migrating to experimental_useObject() hook

* Clean up table quickstart implementation

- Match SQL Editor ActionCard styling with circular icons
- Implement smart Generate/Regenerate button logic
- Add tooltips for column counts
- Persist prompt to localStorage
- Fix React hook dependency warnings
- Remove debugging artifacts
2025-10-23 11:35:43 -07:00
kemal.earth e5beda1b0e fix(studio): auth overview table arrow styling (#39810)
* fix: align arrows to end always

* chore: remove dummy data
2025-10-23 16:48:49 +01:00
Jordi Enric c44220c096 add coming up state to new project home DESIGN-300 (#39680)
* add coming up state to new project home

* handle redirect correctly

* tweak spinner/laben logic

* show empty state in advisor whiel coming up

* prevent query while advisor is forcing empty state

* fix enabled

* rm state dep

* move complex bool to variable
2025-10-23 15:25:43 +02:00
Jordi Enric 37500328a2 Rename Active Users to Auth Activity (#39805)
rename active users to auth activity
2025-10-23 15:22:06 +02:00
kemal.earth ec53ba827b fix(studio): cache hit rate on query perf with pg_stat_statements (#39804)
fix: cache hit rate on query perf with pg_stat_statements

On the old table the number wasnt rendering due to it being a string. Added a guard.
2025-10-23 13:12:36 +01:00
Thomas f1ca06f2ea fix(billing): do not show auto-renewal banner on aws marketplace onboarding page for private offers 2025-10-23 13:33:47 +02:00
Filipe CabaçoandJoshen Lim 3613309626 fix: add modal to realtime settings to warn users of disconnect (#39787)
---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-10-23 11:01:28 +01:00
kemal.earth 53163c5bc3 feat(studio): auth overview ui tidy (#39785)
* feat: overview usage card match homepage

This matches the tiles for auth overview usage to the card styling on the homepage.

* style: smol tweak to card header

* style: table empty state

* style: table row styling

* feat: remove dummy test codes

* chore: remove ai slop empty file

* nit: remove border top from spacer

* chore: remove loading label from table cards

* fix: loading state for stat cards

* style: skeleton loader of cards tidy
2025-10-23 10:55:04 +01:00
Joshen LimandAli Waseem a3fc267d4a Add threshold value to persist sort by in auth users (#39782)
* Add threshold value to persist sort by in auth users

* Update apps/studio/components/interfaces/Auth/Users/UsersV2.tsx

Co-authored-by: Ali Waseem <waseema393@gmail.com>

* Fix local storage values getting overriden when landing on auth users page directly, and merge useEffect for loading local storage values

* Nit

* Fix

* Update warning

* Fix

---------

Co-authored-by: Ali Waseem <waseema393@gmail.com>
2025-10-23 11:40:57 +08:00
Joshen Lim fe4d394fa8 Chore/improve error handling ux for insert before and remove child errors (#39779)
* Improve error handling UX for insertBefore and removeChild client exception errors

* nit

* nit refactor
2025-10-23 09:28:35 +08:00
Charis 13c4b1584c fix,perf(policies search) (#39790)
* fix(policies search): replace useUrlState with nuqs

There is a bug when typing quickly into the search field on the policies
page: because useUrlState naively uses router.replace, which is
asynchronous, the search term can get corrupted, e.g., searching for
"dummy" might end up with a final value of "dum". Switched to nuqs for
better handling.

* perf(policies page): memoize and optimize for projects with many tables

A project with hundreds of tables will have extremely slow search
performance for the policies page, because of heavy rerendering. Made
some optimizations:
- Memoized to reduce rerendering
- Hid filtered-out tables instead of unmounting, so we don't have to
remount when the search is cleared

* refactor(policies page): pass policies info through context

Avoid having a mess of props by creating a PoliciesDataContext to share
policy information.

* cleanup(policies pages): minor code cleanup, no user-facing changes
2025-10-22 20:57:11 +00:00