From 31a6d00a675bf99c6c1ba1c605f2cb3e27f282f6 Mon Sep 17 00:00:00 2001 From: Kawa Date: Tue, 31 Mar 2026 08:59:26 +0200 Subject: [PATCH] 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) --- .planning/ROADMAP.md | 4 +- .planning/STATE.md | 24 +++- .../phases/06-new-backends/06-03-SUMMARY.md | 112 ++++++++++++++++++ 3 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 .planning/phases/06-new-backends/06-03-SUMMARY.md diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index e9ad30a..610fa31 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -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. - [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 Details @@ -85,5 +85,5 @@ Plans: | 3. Wizard UI | 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 | - | -| 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 | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index 569274b..8f4f2bf 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -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 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_activity: 2026-03-27 — v1.1 roadmap created, 11 requirements mapped across 3 phases progress: - total_phases: 3 + [██████████] 100% completed_phases: 1 total_plans: 8 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 P01 | 5min | 2 tasks | 3 files | | Phase 06-new-backends P02 | 4min | 2 tasks | 4 files | +| Phase 06-new-backends P03 | 10min | 2 tasks | 1 files | ## 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]: 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]: Three-branch ternary in RemoteConfigStep (azureblob/sftp/else) keeps custom logic minimal; OneDrive/GCS/B2 render entirely via registry loop ### Pending Todos @@ -111,6 +129,6 @@ None yet. ## Session Continuity -Last session: 2026-03-30T16:15:00Z -Stopped at: Completed 06-new-backends 06-02-PLAN.md +Last session: 2026-03-31T06:58:48.937Z +Stopped at: Completed 06-new-backends 06-03-PLAN.md Resume file: None diff --git a/.planning/phases/06-new-backends/06-03-SUMMARY.md b/.planning/phases/06-new-backends/06-03-SUMMARY.md new file mode 100644 index 0000000..5f0e5c0 --- /dev/null +++ b/.planning/phases/06-new-backends/06-03-SUMMARY.md @@ -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*