From 92952bf9033bc04cb0f4580edbecba46fc32e9a5 Mon Sep 17 00:00:00 2001 From: Danny White <3104761+dnywh@users.noreply.github.com> Date: Wed, 30 Sep 2026 15:21:47 +1000 Subject: [PATCH] fix(studio): clarify S3 access key dialogs (#51070) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Problem The S3 access key creation dialogs are wider than their contents, use plural titles for one key pair, and call the name field “Description” even though the table calls it “Name”. The save state also implies both values disappear, although only the secret does. ## Solution Use the small dialog size for both states. Use singular titles, label the field “Name”, shorten the create button to “Create”, and clarify when the secret must be copied. The API field remains `description`. ## Review instructions 1. Open a project’s **Storage > S3** page and select **New access key**. Check the dialog width, title, Name field, and Create button. 2. Create a key and check the save dialog width, singular title, and secret visibility guidance. | Before | After | | --- | --- | | CleanShot 2026-09-30 at 14 37
20@2x | CleanShot 2026-09-30 at 14 36
56@2x | | CleanShot 2026-09-30 at 14 37
57@2x | CleanShot 2026-09-30 at 14 37
39@2x | ## Summary by CodeRabbit * **Updates** * The credential form now labels the field “Name” and uses “Create” for the submit button. * Confirmation text now clarifies that the access key is bucket-wide, bypasses RLS, and its secret is shown only once. It also refers to a single access key instead of using S3-specific wording. --- .../StorageSettings/CreateCredentialModal.tsx | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/apps/studio/components/interfaces/Storage/StorageSettings/CreateCredentialModal.tsx b/apps/studio/components/interfaces/Storage/StorageSettings/CreateCredentialModal.tsx index e0a9ff4e8ec..90fe0ebb353 100644 --- a/apps/studio/components/interfaces/Storage/StorageSettings/CreateCredentialModal.tsx +++ b/apps/studio/components/interfaces/Storage/StorageSettings/CreateCredentialModal.tsx @@ -16,6 +16,7 @@ import { DialogTitle, DialogTrigger, Form, + FormControl, FormField, Tooltip, TooltipContent, @@ -51,7 +52,7 @@ export const CreateCredentialModal = ({ visible, onOpenChange }: CreateCredentia const FormSchema = z.object({ description: z.string().min(3, { - message: 'Description must be at least 3 characters long', + message: 'Name must be at least 3 characters long', }), }) const form = useForm>({ @@ -110,6 +111,7 @@ export const CreateCredentialModal = ({ visible, onOpenChange }: CreateCredentia { if (showSuccess) e.preventDefault() }} @@ -117,10 +119,10 @@ export const CreateCredentialModal = ({ visible, onOpenChange }: CreateCredentia {showSuccess ? ( <> - Save your new S3 access keys + Save your new access key - You won't be able to see them again. If you lose these access keys, you'll need to - create a new ones. + Copy the access key ID and secret now. The secret won't be shown again. If you lose + it, create a new access key. @@ -128,7 +130,7 @@ export const CreateCredentialModal = ({ visible, onOpenChange }: CreateCredentia - + @@ -146,10 +148,9 @@ export const CreateCredentialModal = ({ visible, onOpenChange }: CreateCredentia ) : ( <> - Create new S3 access keys + Create new access key - S3 access keys provide full access to all S3 operations across all buckets and - bypass any existing RLS policies. + This access key grants full access to every bucket and bypasses RLS policies. @@ -159,20 +160,22 @@ export const CreateCredentialModal = ({ visible, onOpenChange }: CreateCredentia ( - - + + + + )} />