Commit Graph
11 Commits
Author SHA1 Message Date
kawa 9aae9e33bd feat(07-02): add tooltipText to registry fields + render ⓘ in FieldRenderer and PasswordField
- Populate tooltipText for azureblob.sas_url, azureblob.key, and onedrive.token in registry
- Add tooltipText prop and showTooltip state to PasswordField with toggle button + panel
- Add showTooltip state to FieldRenderer; pass tooltipText to PasswordField for password branch
- Add ⓘ button + panel for text/select branches in FieldRenderer
- Use sr-only span for accessible name to avoid getByLabelText collision
2026-03-31 09:55:09 +02:00
kawa c6d38fa0f1 feat(07-01): extend buildZodSchema() to chain .regex() from field.validate
- Replace simple ternary assignment with let schema pattern
- Chain (schema as z.ZodString).regex() when field.validate is present
- Handle optional fields: z.string() first, then .regex() if needed, then .optional()
- VALID-01 tests all pass (GREEN): azureblob account, s3 region, gcs project_number
2026-03-31 09:50:02 +02:00
kawa 3dea5c8561 feat(07-01): extend FieldDef with validate/tooltipText and add 3 validate rules
- Add validate?: { regex: RegExp; message: string } to FieldDef interface
- Add tooltipText?: string to FieldDef interface (prep for Plan 07-02)
- Add validate rule to azureblob.account: /^[a-z0-9]{3,24}$/
- Add validate rule to s3.region: /^[a-z][a-z0-9-]+[a-z0-9]$/
- Add validate rule to gcs.project_number: /^\d+$/
2026-03-31 09:49:13 +02:00
kawa c1d61d380c feat(06-02): add sftp entry to registry, index, and rclone-conf
- Add sftp entry to BACKEND_REGISTRY with host, user, pass, key_pem fields
- Remove placeholder NOTE comment (sftp entry now present)
- Add sftp, onedrive, gcs, b2 to BACKEND_SCHEMAS in index.ts
- Add sftp, onedrive, gcs (google cloud storage), b2 to RCLONE_TYPE_MAP
- All 55 registry and rclone-conf tests pass; zero TypeScript errors
2026-03-30 18:12:39 +02:00
kawa ad3d3240b1 test(06-00): add failing assertions for 7-backend registry (RED)
- EXPECTED_BACKENDS now includes onedrive, sftp, gcs, b2 (7 total)
- Added describe blocks for OneDrive, SFTP, GCS, Backblaze B2 field assertions
- 9 tests fail RED because registry.ts still has only 3 BackendType values
2026-03-30 17:18:30 +02:00
kawa 52318d5130 feat(05-01): wire BackendSelectionStep to registry and remove dead export
- Replace hardcoded BACKENDS array with Object.entries(BACKEND_REGISTRY)
- Import BACKEND_REGISTRY in BackendSelectionStep.tsx
- Remove BackendFormValues<T> export from schemas/index.ts (dead code TECH-04)
- TypeScript compiles with zero errors
2026-03-30 09:38:25 +02:00
kawa d495552b60 feat(05-01): enrich BACKEND_REGISTRY and update all consumers
- Change BACKEND_REGISTRY shape from Record<BackendType, FieldDef[]> to
  Record<BackendType, { displayName, description, fields: FieldDef[] }>
- Add displayName and description to azureblob, s3, s3-compatible entries
- Update schemas/index.ts buildZodSchema to use .fields access
- Update RemoteConfigStep.tsx two .fields accesses (azureblob.find + map)
2026-03-30 09:37:16 +02:00
kawa 05d23bc3ce test(05-00): update registry.test.ts to use .fields access for TECH-03 shape
- Update BACKEND_REGISTRY[backend].length → .fields.length
- Update iteration to use BACKEND_REGISTRY[backend].fields
- Update field lookups (.find/.map) to go through .fields
- Add new test: each backend has displayName and description metadata (RED)
2026-03-30 09:33:36 +02:00
kawa eaeae32849 feat(01-03): implement BACKEND_SCHEMAS Zod schema builder
- buildZodSchema derives z.object() from BACKEND_REGISTRY field definitions
- required fields map to z.string().min(1, label) — optional to z.string().optional()
- BACKEND_SCHEMAS exported with entries for azureblob, s3, s3-compatible
- BackendFormValues<T> utility type infers TypeScript type from schema
- No hardcoded field names — all shapes derived from registry loop
- All 8 tests in index.test.ts pass (GREEN)
2026-03-26 10:21:11 +01:00
kawa 9e28bf9ece test(01-02): add Wave 0 TDD stubs for SC-3 (Zod schemas) and SC-4 (wizard reducer)
- src/schemas/index.test.ts: 8 tests defining acceptance criteria for BACKEND_SCHEMAS (Plan 03)
- src/store/reducer.test.ts: 8 tests defining acceptance criteria for wizardReducer (Plan 04)
- Both files fail with "Cannot find module" — correct RED phase, implementation deferred to Plans 03-04
2026-03-26 10:17:35 +01:00
kawa 4c614fc06c feat(01-02): create Backend Schema Registry with rclone-compatible field definitions
- BackendType union: 'azureblob' | 's3' | 's3-compatible'
- FieldDef interface with key (snake_case rclone key), label, inputType, required, and optional fields
- BACKEND_REGISTRY: azureblob (3 fields), s3 (4 fields), s3-compatible (5 fields)
- All FieldDef.key values match rclone INI config key names exactly
- registry.test.ts: 7 tests all passing (GREEN)
2026-03-26 10:16:49 +01:00