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
This commit is contained in:
2026-04-01 12:55:05 +02:00
parent 4b837b19a0
commit 356d557348
+15
View File
@@ -71,12 +71,16 @@ export const BACKEND_REGISTRY = {
inputType: 'text', inputType: 'text',
required: true, required: true,
placeholder: 'AKIAIOSFODNN7EXAMPLE', 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', key: 'secret_access_key',
label: 'Secret Access Key', label: 'Secret Access Key',
inputType: 'password', inputType: 'password',
required: true, 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', key: 'region',
@@ -84,6 +88,7 @@ export const BACKEND_REGISTRY = {
inputType: 'text', inputType: 'text',
required: true, required: true,
placeholder: 'us-east-1', 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: { validate: {
regex: /^[a-z][a-z0-9-]+[a-z0-9]$/, regex: /^[a-z][a-z0-9-]+[a-z0-9]$/,
message: 'Must be a valid AWS region format (e.g. us-east-1)', 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', label: 'Access Key ID',
inputType: 'text', inputType: 'text',
required: true, 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', key: 'secret_access_key',
label: 'Secret Access Key', label: 'Secret Access Key',
inputType: 'password', inputType: 'password',
required: true, 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', key: 'endpoint',
@@ -122,6 +131,7 @@ export const BACKEND_REGISTRY = {
required: true, required: true,
placeholder: 'https://s3.wasabisys.com', placeholder: 'https://s3.wasabisys.com',
helpText: 'The S3-compatible endpoint URL for your storage provider', 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', key: 'region',
@@ -153,6 +163,7 @@ export const BACKEND_REGISTRY = {
required: true, required: true,
placeholder: 'b!...', placeholder: 'b!...',
helpText: 'The drive ID from your OneDrive. Found in the rclone authorize output.', 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', key: 'drive_type',
@@ -179,6 +190,7 @@ export const BACKEND_REGISTRY = {
required: true, required: true,
placeholder: '123456789', placeholder: '123456789',
helpText: 'Your GCP project number (not project ID)', 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: { validate: {
regex: /^\d+$/, regex: /^\d+$/,
message: 'Must contain digits only', message: 'Must contain digits only',
@@ -191,6 +203,7 @@ export const BACKEND_REGISTRY = {
required: true, required: true,
placeholder: '{"type":"service_account","project_id":"..."}', placeholder: '{"type":"service_account","project_id":"..."}',
helpText: 'Paste the full content of your service account JSON key file', 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, required: true,
placeholder: 'your-application-key-id', placeholder: 'your-application-key-id',
helpText: 'The applicationKeyId — not the master account 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', key: 'key',
@@ -247,6 +261,7 @@ export const BACKEND_REGISTRY = {
inputType: 'password', inputType: 'password',
required: true, required: true,
helpText: 'The application key (secret value from the B2 dashboard)', 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.',
}, },
], ],
}, },