docs(06-03): complete new backends UI wiring plan
- SUMMARY.md: all 7 backends wired in RemoteConfigStep, human-verified - STATE.md: progress updated to 100%, decision and metrics recorded - ROADMAP.md: phase 6 marked Complete (4/4 plans)
This commit is contained in:
@@ -24,7 +24,7 @@ Full phase details: [.planning/milestones/v1.0-ROADMAP.md](milestones/v1.0-ROADM
|
|||||||
**Milestone Goal:** Ship all deferred tech debt and backlog features from v1.0 — scriptTargets filtering, UX consistency fixes, registry-driven backend list, 4 new backends, field validation, and contextual tooltips.
|
**Milestone Goal:** Ship all deferred tech debt and backlog features from v1.0 — scriptTargets filtering, UX consistency fixes, registry-driven backend list, 4 new backends, field validation, and contextual tooltips.
|
||||||
|
|
||||||
- [x] **Phase 5: Tech Debt** - Fix all deferred v1.0 issues (scriptTargets filtering, Back button, registry-driven UI, dead export, test warnings) (completed 2026-03-30)
|
- [x] **Phase 5: Tech Debt** - Fix all deferred v1.0 issues (scriptTargets filtering, Back button, registry-driven UI, dead export, test warnings) (completed 2026-03-30)
|
||||||
- [ ] **Phase 6: New Backends** - Add OneDrive, SFTP, Google Cloud Storage, and Backblaze B2 to the backend registry and wizard
|
- [x] **Phase 6: New Backends** - Add OneDrive, SFTP, Google Cloud Storage, and Backblaze B2 to the backend registry and wizard (completed 2026-03-31)
|
||||||
- [ ] **Phase 7: Validation & UX Polish** - Add field-level format validation and contextual tooltips across all backends
|
- [ ] **Phase 7: Validation & UX Polish** - Add field-level format validation and contextual tooltips across all backends
|
||||||
|
|
||||||
## Phase Details
|
## Phase Details
|
||||||
@@ -85,5 +85,5 @@ Plans:
|
|||||||
| 3. Wizard UI | v1.0 | 5/5 | Complete | 2026-03-27 |
|
| 3. Wizard UI | v1.0 | 5/5 | Complete | 2026-03-27 |
|
||||||
| 4. Review, Download & Security | v1.0 | 5/5 | Complete | 2026-03-27 |
|
| 4. Review, Download & Security | v1.0 | 5/5 | Complete | 2026-03-27 |
|
||||||
| 5. Tech Debt | 4/4 | Complete | 2026-03-30 | - |
|
| 5. Tech Debt | 4/4 | Complete | 2026-03-30 | - |
|
||||||
| 6. New Backends | 3/4 | In Progress| | - |
|
| 6. New Backends | 4/4 | Complete | 2026-03-31 | - |
|
||||||
| 7. Validation & UX Polish | v1.1 | 0/TBD | Not started | - |
|
| 7. Validation & UX Polish | v1.1 | 0/TBD | Not started | - |
|
||||||
|
|||||||
+21
-3
@@ -1,3 +1,19 @@
|
|||||||
|
---
|
||||||
|
gsd_state_version: 1.0
|
||||||
|
milestone: v1.1
|
||||||
|
milestone_name: Backlog & Tech Debt
|
||||||
|
status: planning
|
||||||
|
stopped_at: Completed 06-new-backends 06-03-PLAN.md
|
||||||
|
last_updated: "2026-03-31T06:58:48.939Z"
|
||||||
|
last_activity: 2026-03-27 — v1.1 roadmap created, 11 requirements mapped across 3 phases
|
||||||
|
progress:
|
||||||
|
total_phases: 3
|
||||||
|
completed_phases: 2
|
||||||
|
total_plans: 8
|
||||||
|
completed_plans: 8
|
||||||
|
percent: 100
|
||||||
|
---
|
||||||
|
|
||||||
---
|
---
|
||||||
gsd_state_version: 1.0
|
gsd_state_version: 1.0
|
||||||
milestone: v1.1
|
milestone: v1.1
|
||||||
@@ -7,7 +23,7 @@ stopped_at: Completed 06-new-backends 06-02-PLAN.md
|
|||||||
last_updated: "2026-03-30T16:15:00Z"
|
last_updated: "2026-03-30T16:15:00Z"
|
||||||
last_activity: 2026-03-27 — v1.1 roadmap created, 11 requirements mapped across 3 phases
|
last_activity: 2026-03-27 — v1.1 roadmap created, 11 requirements mapped across 3 phases
|
||||||
progress:
|
progress:
|
||||||
total_phases: 3
|
[██████████] 100%
|
||||||
completed_phases: 1
|
completed_phases: 1
|
||||||
total_plans: 8
|
total_plans: 8
|
||||||
completed_plans: 7
|
completed_plans: 7
|
||||||
@@ -71,6 +87,7 @@ Progress: [░░░░░░░░░░] 0% (v1.1)
|
|||||||
| Phase 06-new-backends P00 | 5min | 3 tasks | 3 files |
|
| Phase 06-new-backends P00 | 5min | 3 tasks | 3 files |
|
||||||
| Phase 06-new-backends P01 | 5min | 2 tasks | 3 files |
|
| Phase 06-new-backends P01 | 5min | 2 tasks | 3 files |
|
||||||
| Phase 06-new-backends P02 | 4min | 2 tasks | 4 files |
|
| Phase 06-new-backends P02 | 4min | 2 tasks | 4 files |
|
||||||
|
| Phase 06-new-backends P03 | 10min | 2 tasks | 1 files |
|
||||||
|
|
||||||
## Accumulated Context
|
## Accumulated Context
|
||||||
|
|
||||||
@@ -97,6 +114,7 @@ Recent decisions affecting v1.1 work:
|
|||||||
- [Phase 06-new-backends]: OneDrive uses paste-based OAuth token (JSON token field), GCS uses service_account_credentials (paste JSON), B2 uses account + key — all follow stateless browser-paste pattern
|
- [Phase 06-new-backends]: OneDrive uses paste-based OAuth token (JSON token field), GCS uses service_account_credentials (paste JSON), B2 uses account + key — all follow stateless browser-paste pattern
|
||||||
- [Phase 06-new-backends]: SftpAuthToggle follows AzureAuthToggle CSS-hidden pattern: both pass and key_pem always registered with react-hook-form, tab visibility via div.block/div.hidden
|
- [Phase 06-new-backends]: SftpAuthToggle follows AzureAuthToggle CSS-hidden pattern: both pass and key_pem always registered with react-hook-form, tab visibility via div.block/div.hidden
|
||||||
- [Phase 06-new-backends]: RCLONE_TYPE_MAP and BACKEND_SCHEMAS extended for all 7 backends in plan 02 (not just sftp) to fix failing onedrive/gcs/b2 test assertions
|
- [Phase 06-new-backends]: RCLONE_TYPE_MAP and BACKEND_SCHEMAS extended for all 7 backends in plan 02 (not just sftp) to fix failing onedrive/gcs/b2 test assertions
|
||||||
|
- [Phase 06-new-backends]: Three-branch ternary in RemoteConfigStep (azureblob/sftp/else) keeps custom logic minimal; OneDrive/GCS/B2 render entirely via registry loop
|
||||||
|
|
||||||
### Pending Todos
|
### Pending Todos
|
||||||
|
|
||||||
@@ -111,6 +129,6 @@ None yet.
|
|||||||
|
|
||||||
## Session Continuity
|
## Session Continuity
|
||||||
|
|
||||||
Last session: 2026-03-30T16:15:00Z
|
Last session: 2026-03-31T06:58:48.937Z
|
||||||
Stopped at: Completed 06-new-backends 06-02-PLAN.md
|
Stopped at: Completed 06-new-backends 06-03-PLAN.md
|
||||||
Resume file: None
|
Resume file: None
|
||||||
|
|||||||
@@ -0,0 +1,112 @@
|
|||||||
|
---
|
||||||
|
phase: 06-new-backends
|
||||||
|
plan: "03"
|
||||||
|
subsystem: ui
|
||||||
|
tags: [react, wizard, rclone, sftp, onedrive, gcs, b2, vitest]
|
||||||
|
|
||||||
|
# Dependency graph
|
||||||
|
requires:
|
||||||
|
- phase: 06-new-backends/06-01
|
||||||
|
provides: OneDrive, GCS, B2 registry entries and schemas
|
||||||
|
- phase: 06-new-backends/06-02
|
||||||
|
provides: SFTP registry entry, SftpAuthToggle component, RCLONE_TYPE_MAP and BACKEND_SCHEMAS extended for all 7 backends
|
||||||
|
|
||||||
|
provides:
|
||||||
|
- RemoteConfigStep.tsx extended to handle all 7 BackendType values
|
||||||
|
- SFTP branch with SftpAuthToggle (CSS-hidden password/private-key toggle)
|
||||||
|
- OneDrive/GCS/B2 rendered via registry loop (no custom branch needed)
|
||||||
|
- All four new backends visually verified in wizard UI by user
|
||||||
|
|
||||||
|
affects:
|
||||||
|
- 07-validation-ux — RemoteConfigStep is the primary config form; any field-level validation work targets these same fields
|
||||||
|
|
||||||
|
# Tech tracking
|
||||||
|
tech-stack:
|
||||||
|
added: []
|
||||||
|
patterns:
|
||||||
|
- Three-branch JSX ternary in RemoteConfigStep (azureblob → sftp → registry loop)
|
||||||
|
- Auth toggle subcomponent pattern (SftpAuthToggle mirrors AzureAuthToggle)
|
||||||
|
|
||||||
|
key-files:
|
||||||
|
created: []
|
||||||
|
modified:
|
||||||
|
- src/components/wizard/RemoteConfigStep.tsx
|
||||||
|
|
||||||
|
key-decisions:
|
||||||
|
- "Three-branch ternary: azureblob (AzureAuthToggle), sftp (SftpAuthToggle), all others (registry loop) — minimal custom branching, maximal registry reuse"
|
||||||
|
- "OneDrive/GCS/B2 render entirely via registry loop with zero custom JSX branches — registry is the single source of truth"
|
||||||
|
|
||||||
|
patterns-established:
|
||||||
|
- "New auth-toggle pattern: import toggle component, add named branch in ternary, render host/user via FieldRenderer then toggle for pass/key fields"
|
||||||
|
- "Registry-loop default: any new backend that doesn't need a custom auth toggle is automatically handled by the else branch"
|
||||||
|
|
||||||
|
requirements-completed:
|
||||||
|
- BACK-01
|
||||||
|
- BACK-02
|
||||||
|
- BACK-03
|
||||||
|
- BACK-04
|
||||||
|
|
||||||
|
# Metrics
|
||||||
|
duration: ~10min
|
||||||
|
completed: 2026-03-30
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 06 Plan 03: New Backends UI Wiring Summary
|
||||||
|
|
||||||
|
**RemoteConfigStep extended to all 7 backends via three-branch ternary — SFTP uses SftpAuthToggle, OneDrive/GCS/B2 render via registry loop, human-verified in running app**
|
||||||
|
|
||||||
|
## Performance
|
||||||
|
|
||||||
|
- **Duration:** ~10 min
|
||||||
|
- **Started:** 2026-03-30T16:15:00Z
|
||||||
|
- **Completed:** 2026-03-30T16:25:00Z
|
||||||
|
- **Tasks:** 2 (1 auto + 1 human-verify)
|
||||||
|
- **Files modified:** 1
|
||||||
|
|
||||||
|
## Accomplishments
|
||||||
|
|
||||||
|
- Extended `backendLabel` record to cover all 7 BackendType values (onedrive, sftp, gcs, b2 added)
|
||||||
|
- Added SFTP branch in JSX ternary: renders host + user via FieldRenderer, then SftpAuthToggle for pass/key_pem toggle
|
||||||
|
- OneDrive, GCS, and B2 render through the existing registry loop — no new custom branches
|
||||||
|
- Full Vitest suite green, zero TypeScript errors confirmed
|
||||||
|
- All four new backends visually verified in the wizard UI by the user
|
||||||
|
|
||||||
|
## Task Commits
|
||||||
|
|
||||||
|
Each task was committed atomically:
|
||||||
|
|
||||||
|
1. **Task 1: Extend RemoteConfigStep.tsx — backendLabel + sftp branch + all four new backends** - `09adff0` (feat)
|
||||||
|
2. **Task 2: Human verify all four new backends in the wizard UI** - human-approved (no code commit)
|
||||||
|
|
||||||
|
**Plan metadata:** (this docs commit — see below)
|
||||||
|
|
||||||
|
## Files Created/Modified
|
||||||
|
|
||||||
|
- `src/components/wizard/RemoteConfigStep.tsx` - Extended to handle all 7 backends; SFTP branch with SftpAuthToggle; backendLabel exhaustive over all BackendType values
|
||||||
|
|
||||||
|
## Decisions Made
|
||||||
|
|
||||||
|
- Three-branch ternary (azureblob / sftp / else) keeps custom logic minimal: only backends with non-standard auth flows get their own branch
|
||||||
|
- OneDrive, GCS, and B2 required zero custom JSX because their fields are all standard input/password/select types fully covered by FieldRenderer and the registry loop
|
||||||
|
|
||||||
|
## Deviations from Plan
|
||||||
|
|
||||||
|
None - plan executed exactly as written.
|
||||||
|
|
||||||
|
## Issues Encountered
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
## User Setup Required
|
||||||
|
|
||||||
|
None - no external service configuration required.
|
||||||
|
|
||||||
|
## Next Phase Readiness
|
||||||
|
|
||||||
|
- All 7 backends are now wired end-to-end: registry → schema → rclone-conf → wizard UI
|
||||||
|
- Phase 7 (Validation & UX Polish) can target any field in any of the 7 backends — the UI layer is complete
|
||||||
|
- No blockers for Phase 7
|
||||||
|
|
||||||
|
---
|
||||||
|
*Phase: 06-new-backends*
|
||||||
|
*Completed: 2026-03-30*
|
||||||
Reference in New Issue
Block a user