docs(10-content-clarity): create phase plan
3 plans in 1 wave covering UX-01 through UX-04: intro section, remote name preview, step descriptions, and credential help text. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
---
|
||||
phase: 10-content-clarity
|
||||
plan: 03
|
||||
type: execute
|
||||
wave: 1
|
||||
depends_on: []
|
||||
files_modified:
|
||||
- src/schemas/registry.ts
|
||||
- src/components/wizard/RemoteConfigStep.test.tsx
|
||||
autonomous: true
|
||||
requirements:
|
||||
- UX-04
|
||||
|
||||
must_haves:
|
||||
truths:
|
||||
- "S3 access_key_id and secret_access_key fields have tooltipText and helpText"
|
||||
- "S3-compatible access_key_id, secret_access_key, and endpoint fields have tooltipText"
|
||||
- "GCS project_number and service_account_credentials fields have tooltipText"
|
||||
- "B2 account and key fields have tooltipText"
|
||||
- "OneDrive drive_id field has tooltipText"
|
||||
- "SFTP host and user do NOT get tooltipText (self-explanatory per user decision)"
|
||||
- "Existing Azure Blob, OneDrive token, SFTP pass/key_pem help text is NOT rewritten"
|
||||
artifacts:
|
||||
- path: "src/schemas/registry.ts"
|
||||
provides: "Enriched FieldDef entries with tooltipText and helpText"
|
||||
contains: "tooltipText"
|
||||
- path: "src/components/wizard/RemoteConfigStep.test.tsx"
|
||||
provides: "Tests verifying tooltip buttons render for newly enriched fields"
|
||||
contains: "tooltip"
|
||||
key_links:
|
||||
- from: "src/schemas/registry.ts"
|
||||
to: "src/components/ui/FieldRenderer.tsx"
|
||||
via: "tooltipText and helpText consumed by FieldRenderer rendering"
|
||||
pattern: "tooltipText"
|
||||
- from: "src/schemas/registry.ts"
|
||||
to: "src/components/ui/PasswordField.tsx"
|
||||
via: "tooltipText consumed by PasswordField tooltip rendering"
|
||||
pattern: "tooltipText"
|
||||
---
|
||||
|
||||
<objective>
|
||||
Add contextual help text and tooltips to all backend credential fields that currently lack them.
|
||||
|
||||
Purpose: Users know exactly what to enter in each field and where to find the value in their cloud provider's console, without needing external documentation.
|
||||
Output: Enriched registry.ts with tooltipText/helpText for S3, S3-compatible, GCS, B2, OneDrive drive_id fields. New tests verifying tooltip buttons render.
|
||||
</objective>
|
||||
|
||||
<execution_context>
|
||||
@C:/Users/SebastienQUEROL/.claude/get-shit-done/workflows/execute-plan.md
|
||||
@C:/Users/SebastienQUEROL/.claude/get-shit-done/templates/summary.md
|
||||
</execution_context>
|
||||
|
||||
<context>
|
||||
@.planning/PROJECT.md
|
||||
@.planning/ROADMAP.md
|
||||
@.planning/STATE.md
|
||||
@.planning/phases/10-content-clarity/10-CONTEXT.md
|
||||
@.planning/phases/10-content-clarity/10-RESEARCH.md
|
||||
|
||||
<interfaces>
|
||||
<!-- Key contracts the executor needs -->
|
||||
|
||||
From src/schemas/registry.ts:
|
||||
```typescript
|
||||
export interface FieldDef {
|
||||
key: string;
|
||||
label: string;
|
||||
inputType: 'text' | 'password' | 'select' | 'toggle';
|
||||
required: boolean;
|
||||
placeholder?: string;
|
||||
helpText?: string;
|
||||
options?: { value: string; label: string }[];
|
||||
validate?: { regex: RegExp; message: string };
|
||||
tooltipText?: string;
|
||||
}
|
||||
```
|
||||
|
||||
FieldRenderer and PasswordField already consume `tooltipText` and `helpText` from FieldDef.
|
||||
No component changes needed — this is purely a data enrichment task.
|
||||
|
||||
Fields to ADD tooltipText (from RESEARCH.md audit):
|
||||
- s3: access_key_id, secret_access_key (YES), region (OPTIONAL — low priority)
|
||||
- s3-compatible: access_key_id, secret_access_key, endpoint (YES)
|
||||
- gcs: project_number, service_account_credentials (YES — GCS SAC warrants doc link)
|
||||
- b2: account, key (YES)
|
||||
- onedrive: drive_id (YES)
|
||||
- sftp: host, user (NO — self-explanatory per user decision)
|
||||
|
||||
Fields to ADD helpText:
|
||||
- s3: access_key_id, secret_access_key (YES — label alone ambiguous)
|
||||
- s3-compatible: access_key_id, secret_access_key (YES)
|
||||
|
||||
DO NOT REWRITE existing helpText/tooltipText on:
|
||||
- azureblob (account, key, sas_url)
|
||||
- onedrive token
|
||||
- sftp pass, key_pem
|
||||
- b2 account, key (already have helpText — ADD tooltipText only)
|
||||
- gcs project_number, service_account_credentials (already have helpText — ADD tooltipText only)
|
||||
</interfaces>
|
||||
</context>
|
||||
|
||||
<tasks>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 1: Enrich registry.ts with tooltipText and helpText for credential fields</name>
|
||||
<files>src/schemas/registry.ts</files>
|
||||
<action>
|
||||
Add `tooltipText` and/or `helpText` to the following fields in BACKEND_REGISTRY. Do NOT modify existing helpText/tooltipText on Azure Blob, OneDrive token, SFTP pass/key_pem fields.
|
||||
|
||||
**S3 fields:**
|
||||
- `access_key_id`: Add helpText (e.g., "The access key ID from your IAM credentials (starts with AKIA for long-term keys).") and tooltipText explaining where to find it in AWS Console (IAM > Users > Security credentials > Access keys).
|
||||
- `secret_access_key`: Add helpText (e.g., "The secret access key paired with your Access Key ID. Only shown once at creation time.") and tooltipText explaining it's shown once when creating the access key and to store it securely.
|
||||
- `region`: Add tooltipText (brief — "The AWS region where your S3 bucket is located. Find this in the S3 console next to your bucket name."). No helpText needed — placeholder is clear.
|
||||
|
||||
**S3-compatible fields:**
|
||||
- `access_key_id`: Add helpText (e.g., "The access key ID from your storage provider's dashboard.") and tooltipText explaining it varies by provider (Wasabi: Access Keys page, R2: API Tokens, MinIO: admin console).
|
||||
- `secret_access_key`: Add helpText (e.g., "The secret key paired with your Access Key ID.") and tooltipText similar to S3.
|
||||
- `endpoint`: Add tooltipText explaining common endpoints (e.g., "Wasabi: https://s3.wasabisys.com, Cloudflare R2: https://{account_id}.r2.cloudflarestorage.com, MinIO: your server URL with port").
|
||||
|
||||
**GCS fields:**
|
||||
- `project_number`: Add tooltipText explaining the difference from project ID and where to find it ("Found in Google Cloud Console > Dashboard > Project info. This is the numeric ID, not the text project ID.").
|
||||
- `service_account_credentials`: Add tooltipText with doc link for creating service account JSON ("Create at Google Cloud Console > IAM & Admin > Service Accounts > Keys > Add Key > JSON. See https://cloud.google.com/iam/docs/keys-create-delete for detailed steps.").
|
||||
|
||||
**B2 fields:**
|
||||
- `account` (Application Key ID): Add tooltipText ("Found in Backblaze B2 > App Keys. The applicationKeyId is the shorter ID — not the master account ID shown in account settings.").
|
||||
- `key` (Application Key): Add tooltipText ("The application key value shown once when you create a new app key in B2 > App Keys. Copy it immediately — it cannot be retrieved later.").
|
||||
|
||||
**OneDrive fields:**
|
||||
- `drive_id`: Add tooltipText ("The drive ID is shown in the output of `rclone authorize \"onedrive\"` — look for the 'drive_id' field in the JSON response. It typically starts with 'b!' for business drives.").
|
||||
|
||||
**Fields to SKIP (per user decision):**
|
||||
- sftp host — self-explanatory
|
||||
- sftp user — self-explanatory
|
||||
|
||||
Claude has discretion on exact wording. Keep tooltips actionable — tell the user WHERE to find the value, not just WHAT it is. Include doc links only for GCS service account JSON creation and OneDrive token procedure (already has tooltipText with the rclone authorize instruction).
|
||||
</action>
|
||||
<verify>
|
||||
<automated>npx vitest run src/components/wizard/RemoteConfigStep.test.tsx</automated>
|
||||
</verify>
|
||||
<done>All credential fields in S3, S3-compatible, GCS, B2, and OneDrive drive_id have contextual tooltipText. S3 and S3-compatible access key fields have helpText. Existing help text on Azure Blob, OneDrive token, SFTP is unchanged.</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 2: Add tests verifying tooltip buttons for newly enriched fields</name>
|
||||
<files>src/components/wizard/RemoteConfigStep.test.tsx</files>
|
||||
<action>
|
||||
Add test cases in RemoteConfigStep.test.tsx that verify tooltip info buttons render for the newly enriched fields. Follow the existing test pattern in the file (check how existing tooltip tests are structured — likely under a UX-01 or similar describe block).
|
||||
|
||||
Add tests for at least these representative fields:
|
||||
1. S3 backend: `access_key_id` field renders a tooltip info button
|
||||
2. S3-compatible backend: `endpoint` field renders a tooltip info button
|
||||
3. GCS backend: `service_account_credentials` field renders a tooltip info button
|
||||
4. B2 backend: `account` field renders a tooltip info button
|
||||
|
||||
Use the existing renderAtStep or component render pattern from the test file. Each test should:
|
||||
- Render RemoteConfigStep with the appropriate backend type
|
||||
- Find the tooltip button (typically `getByRole('button', { name: /more info about .../i })` or similar pattern — check existing tests for the exact pattern)
|
||||
- Assert the button exists
|
||||
|
||||
IMPORTANT: Read the existing test file first to match the exact patterns used for tooltip assertions. The existing UX-01 section tests Azure Blob, SFTP, and OneDrive tooltips — follow the same approach.
|
||||
</action>
|
||||
<verify>
|
||||
<automated>npx vitest run src/components/wizard/RemoteConfigStep.test.tsx</automated>
|
||||
</verify>
|
||||
<done>Tests confirm tooltip info buttons render for S3, S3-compatible, GCS, and B2 credential fields. All existing tests still pass.</done>
|
||||
</task>
|
||||
|
||||
</tasks>
|
||||
|
||||
<verification>
|
||||
1. `npx vitest run src/components/wizard/RemoteConfigStep.test.tsx` — all tooltip tests pass
|
||||
2. `npx vitest run` — full suite green
|
||||
3. Grep registry.ts for `tooltipText` — count matches expected enrichment
|
||||
4. Azure Blob, OneDrive token, SFTP pass/key_pem entries unchanged
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
- All S3 credential fields have tooltipText explaining where to find values in AWS Console
|
||||
- S3 and S3-compatible access key fields have helpText
|
||||
- S3-compatible endpoint has tooltipText with provider-specific examples
|
||||
- GCS fields have tooltipText (service_account_credentials includes doc link)
|
||||
- B2 fields have tooltipText
|
||||
- OneDrive drive_id has tooltipText
|
||||
- SFTP host/user do NOT have tooltipText
|
||||
- Existing help text on Azure Blob, OneDrive token, SFTP pass/key_pem is untouched
|
||||
- Tests verify tooltip buttons render for enriched fields
|
||||
</success_criteria>
|
||||
|
||||
<output>
|
||||
After completion, create `.planning/phases/10-content-clarity/10-03-SUMMARY.md`
|
||||
</output>
|
||||
Reference in New Issue
Block a user