- Add placeholder property to TextFieldMD3 component and props interface
- Fix vite.config.ts to import defineConfig from vitest/config instead of vite
- Add type guard for validate property in schemas/index.ts to handle readonly array union types
- Remove unused StepIndicatorWithDispatch placeholder function from tests
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Add vitest globals type definitions to tsconfig.app.json
- Enable globals in vite.config.ts test configuration
- Add explicit vitest imports and type references to all .test.ts files
- Add missing `placeholder` property to PasswordFieldProps interface
- Add missing `required` field to test field definitions in FieldRenderer.test.tsx
- Update FieldDef and BackendMeta interfaces to support readonly arrays
- Fix readonly array type incompatibilities in BackendSelectionStep.tsx
- Fix form submission handler type mismatch in RemoteConfigStep.tsx
- Remove unused helper functions and imports from StepIndicator.test.tsx
These changes resolve all TypeScript compilation errors preventing the Docker build from completing.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- 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
- 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
- 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
- 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)
- 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)