Commit Graph
2379 Commits
Author SHA1 Message Date
kemal d23890759b chore: remove unused token files
This removes some AI slop from my Cursor prototype. There will be a few more of these commits cleaning up.
2025-08-15 10:45:02 +01:00
kemal 90c83ccce7 chore: some folder organising
Move all access token stuff to its own folder as its got quite a few files now
2025-08-15 10:45:02 +01:00
kemal 1d10e7ccc3 fix: bring old admonition back for copy token
This brings back the old admonition for copying of the token.
2025-08-15 10:45:02 +01:00
kemal 803cc99268 chore: tidying up some of cursors files
Cursor leaves behind unused files, cleaning up and cleaning up the final prototype in general.
2025-08-15 10:45:02 +01:00
kemal 60650dd72f feat: side panel concept 2025-08-15 10:45:02 +01:00
kemal d7b0854a2d feat: alternative no wizard option
This is a version where everything is inside the dialog without steps to guide you through. It is much more upfront.
2025-08-15 10:45:02 +01:00
kemal 616ab72ac4 feat: access token view layout feedback
Implements the feedback from Saxon on the page layout.
2025-08-15 10:45:02 +01:00
kemal bee496431e feat: step by step concept 2025-08-15 10:45:02 +01:00
kemal c210875e80 chore: slightly adjusted direction
As we can only configure permissions on create, this introduces beginnings for project access and permission settings in the create dialog. This also changes the update panel to a view only panel.
2025-08-15 10:45:02 +01:00
kemal 433490701f chore: add some dummy data for now
Adds some dummy data to play with while I prototype.
2025-08-15 10:45:02 +01:00
kemal 441764ba35 fix: add truncation to access token name column
This adds truncation the access token name as currently if you set a really long name it distorts the table.
2025-08-15 10:45:01 +01:00
kemal 1dba2b0147 feat: add manage tokens panel
This adds the sheet where the PATs will be managed.
2025-08-15 10:45:01 +01:00
kemal 2267e98826 feat: add delete token into more dropdown
To add a bit consistency with other table rows, we put the delete inside a more dropdown. Also useful if more general actions will come for tokens.
2025-08-15 10:45:01 +01:00
kemal df6210e6ec feat: introduce manage tokens entry point
This adds a button to trigger the eventual manage tokens tray
2025-08-15 10:45:01 +01:00
Drake CostaandJoshen Lim afd82d1ee0 [Replace yup] Refactor Sign In/Up forms to use shadcn and replace yup with zod (#37913)
* refactor sign-in forms, remove `yup-password`

* add missing disabled state to email field

* Fix zod validations for min length

* minor fix loading state sign up form, and use motion div for success state

* Remove unnecessary useState for isSubmitting

* Nit

* Nit

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-08-15 13:12:34 +07:00
Saxon Fletcher 0952d46d40 Fix so can change prod branch (#37937)
* fix so can change prod branch

* update to remove useEffect
2025-08-15 12:26:57 +07:00
Charis 41bfd35aba fix: write queries in ai assistant (#37938)
Some read-only errors from running SQL in the AI Assistant aren't being
properly detected, so the action item to review and confirm running the
SQL isn't showing up. Add test against another variant of read-only
error message that can show up.
2025-08-15 11:15:34 +07:00
Saxon FletcherandJoshen Lim f9a6af7a68 Table consistency (#37924)
* update project tables

* org team table

* Minor fixes

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-08-15 13:16:55 +10:00
Drake Costa ca4b3bc624 Refactor Storage Create/Edit/Empty/Delete Modals to use Shadcn components (#37517)
* Refactor `StorageMenu` modals to replace deprecated patterns

* add test for `DeleteBucketModal` and update test setup

Note: Because this component uses `useParams`, it's necessary to have the dynamic route segment passed to `next-router-mock`'s `createDynamicRouteParser`. In order not to have to manually list all of these as the application grows, I added a glob utility that uses the `pages/` directory  to automatically generate an array of dynamic route paths in this case.

* add test for `EmptyBucketModal`

* add test for `EditBucketModal` and add `isNonNullable` utility function

* add test for `CreateBucketModal`

* implement requested changes

* implement visual fixes
2025-08-14 21:23:08 +02:00
Ignacio Dobronich cfc99d7d4a chore: add BillingManagedBy constant (#37919)
chore/managed-by
2025-08-14 13:32:10 -03:00
Joshen Lim abf62572a4 Reinstate captureException in SessionTimeoutModal with lowered quota usage (#37925) 2025-08-14 15:41:28 +07:00
Joshen Lim 7a35ad3081 Bump temp API key expiry to an hour just for realtime inspector (#37896)
* Bump temp API key expiry to an hour just for realtime inspector

* Refresh temp api token whenever starting a refresh listen session in realtime inspector if current token in realtime config is a temp key
2025-08-14 15:24:30 +07:00
Joshen Lim 1ab728e8e9 Remove captureException in SessionTimeoutModal (#37895) 2025-08-14 14:42:23 +07:00
Joshen LimandCharis a3e585b4ae Chore/refactor database publications page (#37901)
* Refactor database publications page

* Use new page layout

* Update apps/studio/components/interfaces/Database/Publications/PublicationsList.tsx

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

* Address feedback

* Add tooltips

---------

Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>
2025-08-14 13:24:06 +07:00
Christian Butcher f3013222ff Update LinterPageFooter.tsx (#37890)
Fix missing "after" in reset suggestion
2025-08-13 15:54:07 +00:00
CharisandJoshen Lim e8a19faa03 feat: drop file to import data in Table Editor (#37888)
* feat: drop file to import data

In the Table Editor for an empty table, make the entire grid area a
dropzone so that files can be dropped onto the grid area for importing.
Dropping a file opens the SpreadsheetImport side panel with the dropped
file already loaded.

* refactor: drag and drop file import

Refactor logic into hooks and utility functions

* refactor: file drop import

Small changes caught in code review

* Opt to pass file through valtio store instead of event listener

* refactor: telemetry properties + cleaning up hook deps

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-08-13 11:32:06 -04:00
Jordi Enric c03dcc1ead remove effect for logs redirection (#37898)
* rm effect

* diff approach, rm effect for unified logs

* simplify, only redirect to explorer, keep unifiedlog check

* clean up

* dynamic url in the sidebar based on unified logs feature preview

* fix deep link missing ref
2025-08-13 15:37:16 +02:00
Joshen Lim e75c4b2960 Swap useCheckPermissions with useAsyncCheckProjectPermissions part 3 (#37899)
* Swap useCheckPermissions with useAsyncCheckProjectPermissions part 3

* Fix loading state in edge function secrets
2025-08-13 19:07:35 +07:00
Ignacio Dobronich 61379cbe2a chore: add confirmation modal when enabling SMS MFA (#37879) 2025-08-13 09:06:07 -03:00
Kevin Grüneberg d60b3e3b9e feat: cached egress rollout (#37827) 2025-08-13 17:36:48 +08:00
Thomas 90b2288122 feat(billing): add onboarding page for AWS Marketplace 2025-08-13 11:31:14 +02:00
Joshen Lim 89140e7c08 Chore/support copy row in table editor (#37863)
* Support copy row in table editor

* Add copy action in Table Editor header
2025-08-13 09:51:04 +07:00
Saxon FletcherandJoshen Lim af9310f5b3 ui consistency issues (#37823)
* ui consistency issues

* storage policies

* copy

* Fix storage policies y gap

* Small fixes

* Add deprecated comments

* Use Card component for S3 settings

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-08-13 10:55:09 +10:00
Jordi Enric 22ca812f56 fix tabs crash (#37875) 2025-08-12 20:24:43 +02:00
hallidayo 3f56fa9bff fix: connect Remix guide (#37865)
remix connect update
2025-08-12 13:59:46 -02:30
Han Qiao c32c74e34c fix: diff all schemas on branch merge (#37754)
* fix: diff all schemas on branch merge

* chore: remove branching limitation on schema and extensions

* chore: remove limitation from blog post

* chore: remove limitation from docs
2025-08-12 21:18:24 +08:00
Joshen Lim e320368dc7 Part 2 of swapping useCheckPermissions with useAsyncCheckProjectPermissions (#37860)
* Part 2 of swapping useCheckPermissions with useAsyncCheckProjectPermissions

* Fix TS

* Address feedback

* Fix
2025-08-12 17:34:53 +07:00
Saxon Fletcher 7b941a0fd7 Attempt to fix completion (#37787)
* attempt to fix completion

* use experimental output
2025-08-12 17:18:24 +07:00
7e367daf73 feat: use temporary api keys for storage explorer (#37696)
* feat: use temporary api keys for storage explorer

* Remove service key from storage explorer store + some minor UI nits

* Address TS

* Another TS

* Update

* Use temp API keys in realtime inspector (#37740)

* Use temp API keys in realtime inspector

* Fix

* fix: typo from github web ui…

* fix: opps

* fix: missing import

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
Co-authored-by: Cemal Kılıç <cemalkilic@users.noreply.github.com>
Co-authored-by: Cemal Kilic <cemalkilic96@gmail.com>
2025-08-12 11:40:45 +02:00
TaishiandJoshen Lim 2976d572e1 Implement message editing functionality in AI Assistant (#37603)
* Implement message editing functionality in AIAssistant

* add functionality to delete messages in AI Assistant chat in assistant state

* remove duplicated `text-xs` class

* add a 'group' class for improved styling and refining action button visibility on hover

* Refine action button visibility in AIAssistantPanel to show only for user messages on hover, improving user experience.

* remove `"` from the message to edit

* Enhance editing message display in AIAssistantPanel by updating styling for improved visibility and user experience.

* Refactor AIAssistantPanel state management by simplifying original message content initialization and clarifying comments for better code readability.

* clean up action button rendering in AIAssistantPanel message component

* adjust the chat message layout (space)

* simplify the editing mode message

* show the edit button even when user is already in the edit mode

* Update AssistantChatForm styling for editing mode, positioning the editing message above the input field without changing the layout

* use `ButtonTooltip` for edit button to show tooltip

* simplify the condiiton to show the edit buton

* delete unnecessary `originalMessageContent` state variable

* delete `confirmEdit` and move its logic into `sendMessageToAssistant`

* add `strokeWidth={1.5}` to `Pencil` icon

* add `opacity-50` to any messages that are after the message being edited, and it cancels the edit when those messages are clicked

* add a pulse animation to the user’s message being edited

* add more space between mesages and `AssistantChatForm`

* add framer-motion animation to `Editing message` element

* cancel editing when a user clicks the edit button again or the edit button in subsequent messages

* add Pencil icon to AIAssistantPanel component and fixed duplicated tailwind class

* Update AIAssistantPanel to use the Pencil icon

* Refactor AIAssistant to set editing message content from text parts

* Minor changes

* nit

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-08-12 15:02:52 +07:00
Joshen Lim 4418e6df19 Chore/align bucket and object naming validation with storage api (#37854)
* Align bucket naming validation

* Align folder naming validation

* Remove description
2025-08-12 14:01:34 +07:00
Ivan Vasilov ec6b7709d7 fix: Handle a race condition with permissions API and the cell editors in the Table Editor (#37837)
* When updating the editable flag, the grid columns need to be recreated.

* Remove reference to gridColumn since it's the same reference as the passed in column.
2025-08-12 12:19:00 +07:00
Joshen LimandAlaister Young 7ed5edd320 Add CTA to unrestricted badge in table editor (#37730)
* Add CTA to unrestricted badge in table editor

* Update apps/studio/components/interfaces/TableGridEditor/GridHeaderActions.tsx

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

---------

Co-authored-by: Alaister Young <alaister@users.noreply.github.com>
2025-08-12 10:44:48 +07:00
Riccardo Busetti e9424b98de feat(replication): Delete destination and pipeline atomically (#37790) 2025-08-11 08:23:15 +02:00
Joshen LimandDrake Costa a897cc27f0 Part 1 of swapping useCheckPermissions with useAsyncCheckProjectPermissions (#37751)
* Part 1 of swapping useCheckPermissions with useAsyncCheckProjectPermissions

* Update apps/studio/hooks/misc/useCheckPermissions.ts

Co-authored-by: Drake Costa <drake@saeris.io>

* Address feedback

---------

Co-authored-by: Drake Costa <drake@saeris.io>
2025-08-11 11:53:15 +07:00
Saxon Fletcher adfc138450 Remove error display temporarily (#37804) 2025-08-09 14:56:05 +10:00
Saxon Fletcher f28e6e9c8f Check error before handling (#37801)
check error before handling
2025-08-08 23:37:48 +00:00
Drake CostaandTerry Sutton d6fe8476f3 Refactor EditSecretModal to use shadcn components (#37258)
* chore: Refactor `NewAccessTokenButton` to use shadcn components

This brings `NewAccessTokenButton` into conformance with the latest UI patterns of using shadcn based components, zod schemas, and react-hook-form for form submission.

I based this refactor on the implementation of `CreateSecretAPIKeyDialog`, which already made use of the above.

* add success and failure toasts

* add smoke test for `NewAccessTokenButton`, fix vitest config

This adds a minimal test for `NewAccessTokenButton` but more importantly fixes a critical bug in the vitest configuration for `studio`.

Because `restoreMocks: true` was set in the config, this meant that the mock implementation for `window.matchMedia` defined in the `tests/vitestSetup.ts` file was being **reset** to an empty function before each test suite was run. While this didn't appear to be a problem before, that appears to be because none of the existing tests had `motion.div` in their component trees. Since `motion.div` calls `addListener` on a media query as part of it's lifecycle, that meant that any test which included it would fail as `addListener` would be undefined in this situation. Removing `restoreMocks: true` from the config results in the desired mocking behavior.

This change is necessary in order to test any component that has the `FormItemLayout` component, as it uses `framer-motion` to animate in error messages for input elements.

* add warning comment in case of future config regression

* update test cases, reset form on dialog close, testing setup fixes

This fixes an issue with the polyfills for the testing environment, where a call to `useMutation` would fail as a result of `TransformStream` being set to `null`.

Basic tests for access token creation and form resetting added. Adds `@faker-js/faker` to the studio app devDependencies to generate mock data for `msw` endpoint response.

Adds `shx` to the docs app devDependencies to ensure that the `codegen:examples` script runs cross-platform.

* ensure mocked date is a string

* update testing setup, pollyfills and add rich type support to addAPIMock

* add missing changes

* Move `EditSecretModal` to be child of `SecretRow`

In the accompanying PR for `DeleteSecretModal`, that one will also be moved over to `SecretRow`

* Update studio testing setup files

Improves API mocking type safety and polyfills browser APIs necessary to run tests with framer-motion components

* chore: Refactor `NewAccessTokenButton` to use shadcn components

This brings `NewAccessTokenButton` into conformance with the latest UI patterns of using shadcn based components, zod schemas, and react-hook-form for form submission.

I based this refactor on the implementation of `CreateSecretAPIKeyDialog`, which already made use of the above.

* add success and failure toasts

* add smoke test for `NewAccessTokenButton`, fix vitest config

This adds a minimal test for `NewAccessTokenButton` but more importantly fixes a critical bug in the vitest configuration for `studio`.

Because `restoreMocks: true` was set in the config, this meant that the mock implementation for `window.matchMedia` defined in the `tests/vitestSetup.ts` file was being **reset** to an empty function before each test suite was run. While this didn't appear to be a problem before, that appears to be because none of the existing tests had `motion.div` in their component trees. Since `motion.div` calls `addListener` on a media query as part of it's lifecycle, that meant that any test which included it would fail as `addListener` would be undefined in this situation. Removing `restoreMocks: true` from the config results in the desired mocking behavior.

This change is necessary in order to test any component that has the `FormItemLayout` component, as it uses `framer-motion` to animate in error messages for input elements.

* update test cases, reset form on dialog close, testing setup fixes

This fixes an issue with the polyfills for the testing environment, where a call to `useMutation` would fail as a result of `TransformStream` being set to `null`.

Basic tests for access token creation and form resetting added. Adds `@faker-js/faker` to the studio app devDependencies to generate mock data for `msw` endpoint response.

Adds `shx` to the docs app devDependencies to ensure that the `codegen:examples` script runs cross-platform.

* ensure mocked date is a string

* update testing setup, pollyfills and add rich type support to addAPIMock

* add missing changes

* Move `EditSecretModal` to be child of `SecretRow`

In the accompanying PR for `DeleteSecretModal`, that one will also be moved over to `SecretRow`

* fix imports

* Update test, fix rebase errors

* remove unnecessary code

* resolve type errors

* fix missing listen call for msw, resolve test type error

* fix imports

* Update studio testing setup files

Improves API mocking type safety and polyfills browser APIs necessary to run tests with framer-motion components

* fix missing listen call for msw, resolve test type error

* fix imports

* remove duplicate test

* update testing setup

* implement requested changes

* cleanup unnecessary conditional logic for undefined `secret` prop

* remove unused import

* remove unnecessary code

* cleanup, replace lodash import with JS

* add required router mock

* fix broken lockfile

---------

Co-authored-by: Terry Sutton <saltcod@gmail.com>
2025-08-08 15:42:06 -02:30
Joshen Lim 00cad15723 Set unusualLineTerminators for grid monaco editor to auto (#37786)
* Set unusualLineTerminators for grid monaco editor to auto

* Set to off instead
2025-08-08 22:20:59 +07:00
TaishiandJoshen Lim 81e1acc2d8 Add ability to stop AI Assistant responses mid-stream (#37628)
* get `stop()` from useChat and use it

* Implement abort signal in `generate-v4` API

* Enhance `onStop` functionality in AIAssistant to store partial message when aborted

* Update dependencies in AIAssistant to include `updateMessage` in effect hook (lint warning fix)

* change onStop prop to be required in AssistantChatForm

* add comment for saving partial AI responses

* remove redundant text size class

* Make onStop prop optional in AssistantChatForm and conditionally render stop button

* Add loading spinner to stop button in AssistantChatForm

* simplify opacity handling for submit button

* Add tooltips

* Improve UI error handler for assistant panel

* Small tweak

* Filter out any tool calls that are streaming in generate-v4, happens when aborting the assistant while a tool is being called

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-08-08 17:47:46 +07:00