From 356d55734809b9b0080039505bf6fadc00b60842 Mon Sep 17 00:00:00 2001 From: Kawa Date: Wed, 1 Apr 2026 12:55:05 +0200 Subject: [PATCH] feat(10-03): enrich registry.ts with tooltipText and helpText for credential fields - S3: access_key_id and secret_access_key get helpText + tooltipText (IAM console guidance) - S3: region gets tooltipText (where to find in S3 console) - S3-compatible: access_key_id, secret_access_key get helpText + tooltipText (provider-specific) - S3-compatible: endpoint gets tooltipText (common endpoint examples for Wasabi, R2, MinIO) - GCS: project_number gets tooltipText (numeric ID vs text project ID) - GCS: service_account_credentials gets tooltipText (IAM console steps + doc link) - B2: account and key get tooltipText (App Keys page, shown-once warning) - OneDrive: drive_id gets tooltipText (rclone authorize output, b! prefix) - SFTP host and user intentionally unchanged (self-explanatory per user decision) - Azure Blob, OneDrive token, SFTP pass/key_pem existing text untouched --- src/schemas/registry.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/schemas/registry.ts b/src/schemas/registry.ts index 019e624..5990627 100644 --- a/src/schemas/registry.ts +++ b/src/schemas/registry.ts @@ -71,12 +71,16 @@ export const BACKEND_REGISTRY = { inputType: 'text', required: true, placeholder: 'AKIAIOSFODNN7EXAMPLE', + helpText: 'The access key ID from your IAM credentials (starts with AKIA for long-term keys).', + tooltipText: 'Find this in the AWS Console under IAM > Users > select user > Security credentials > Access keys. If you only have the secret key, you cannot recover the Key ID — create a new access key pair instead.', }, { key: 'secret_access_key', label: 'Secret Access Key', inputType: 'password', required: true, + helpText: 'The secret access key paired with your Access Key ID. Only shown once at creation time.', + tooltipText: 'This value is shown only once when you create an access key in IAM. If you did not save it, delete the existing key and create a new one. Never share or commit this value — treat it as a password.', }, { key: 'region', @@ -84,6 +88,7 @@ export const BACKEND_REGISTRY = { inputType: 'text', required: true, placeholder: 'us-east-1', + tooltipText: 'The AWS region where your S3 bucket is located. Find this in the S3 console next to your bucket name (e.g. us-east-1, eu-west-2, ap-southeast-1).', validate: { regex: /^[a-z][a-z0-9-]+[a-z0-9]$/, message: 'Must be a valid AWS region format (e.g. us-east-1)', @@ -108,12 +113,16 @@ export const BACKEND_REGISTRY = { label: 'Access Key ID', inputType: 'text', required: true, + helpText: 'The access key ID from your storage provider\'s dashboard.', + tooltipText: 'Where to find this varies by provider: Wasabi — Account > Access Keys; Cloudflare R2 — R2 > Manage R2 API Tokens; MinIO — admin console > Identity > Users or Service Accounts.', }, { key: 'secret_access_key', label: 'Secret Access Key', inputType: 'password', required: true, + helpText: 'The secret key paired with your Access Key ID.', + tooltipText: 'This value is typically shown only once when you create the key. Store it securely — if lost, you will need to generate a new key pair.', }, { key: 'endpoint', @@ -122,6 +131,7 @@ export const BACKEND_REGISTRY = { required: true, placeholder: 'https://s3.wasabisys.com', helpText: 'The S3-compatible endpoint URL for your storage provider', + tooltipText: 'Common endpoints: Wasabi — https://s3.wasabisys.com (or region-specific, e.g. https://s3.us-west-1.wasabisys.com); Cloudflare R2 — https://{account_id}.r2.cloudflarestorage.com; MinIO — your server URL with port (e.g. https://minio.example.com:9000).', }, { key: 'region', @@ -153,6 +163,7 @@ export const BACKEND_REGISTRY = { required: true, placeholder: 'b!...', helpText: 'The drive ID from your OneDrive. Found in the rclone authorize output.', + tooltipText: 'The drive ID appears in the JSON output of `rclone authorize "onedrive"` — look for the "drive_id" field in the response. It typically starts with "b!" for business/SharePoint drives. Personal OneDrive drive IDs look like a UUID.', }, { key: 'drive_type', @@ -179,6 +190,7 @@ export const BACKEND_REGISTRY = { required: true, placeholder: '123456789', helpText: 'Your GCP project number (not project ID)', + tooltipText: 'Found in Google Cloud Console > select your project > Dashboard > Project info card. This is the numeric ID (e.g. 123456789012) — not the text-based project ID like "my-project-name".', validate: { regex: /^\d+$/, message: 'Must contain digits only', @@ -191,6 +203,7 @@ export const BACKEND_REGISTRY = { required: true, placeholder: '{"type":"service_account","project_id":"..."}', helpText: 'Paste the full content of your service account JSON key file', + tooltipText: 'Create a service account key at Google Cloud Console > IAM & Admin > Service Accounts > select or create an account > Keys > Add Key > Create new key > JSON. Paste the entire contents of the downloaded JSON file here. See https://cloud.google.com/iam/docs/keys-create-delete for detailed steps.', }, ], }, @@ -240,6 +253,7 @@ export const BACKEND_REGISTRY = { required: true, placeholder: 'your-application-key-id', helpText: 'The applicationKeyId — not the master account ID', + tooltipText: 'Found in Backblaze B2 > App Keys. The applicationKeyId is the shorter alphanumeric ID listed next to your key — not the master account ID shown in your account settings.', }, { key: 'key', @@ -247,6 +261,7 @@ export const BACKEND_REGISTRY = { inputType: 'password', required: true, helpText: 'The application key (secret value from the B2 dashboard)', + tooltipText: 'The application key value is shown only once when you create a new app key in B2 > App Keys. Copy it immediately — it cannot be retrieved later. If lost, delete the key and create a new one.', }, ], },