chore: complete v1.3 milestone — Backend Expansion
Archives v1.3 milestone (Phase 13: 18 rclone backends), updates PROJECT.md with all 30 validated requirements, reorganizes ROADMAP.md with all 4 milestones in collapsed details blocks, adds v1.2 and v1.3 retrospective entries. Also commits minor CSS token fixes in src/ (text-on-surface-container class alignment) that were uncommitted from phase 13 execution. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -126,3 +126,15 @@ None - no external service configuration required.
|
||||
---
|
||||
*Phase: 10-content-clarity*
|
||||
*Completed: 2026-04-01*
|
||||
|
||||
## Self-Check: PASSED
|
||||
|
||||
- `src/App.tsx` — FOUND
|
||||
- `src/App.test.tsx` — FOUND
|
||||
- `src/components/wizard/BackendSelectionStep.tsx` — FOUND
|
||||
- `src/components/wizard/RemoteConfigStep.tsx` — FOUND
|
||||
- `src/components/wizard/DeploymentStep.tsx` — FOUND
|
||||
- `src/components/wizard/ReviewStep.tsx` — FOUND
|
||||
- `.planning/phases/10-content-clarity/10-01-SUMMARY.md` — FOUND
|
||||
- Commit `c1d1633` — FOUND
|
||||
- Commit `4b837b1` — FOUND
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
---
|
||||
phase: 13-add-remaining-rclone-remotes
|
||||
plan: "02"
|
||||
subsystem: ui
|
||||
tags: [react, tailwind, svg, rclone, oauth, wizard, components]
|
||||
|
||||
# Dependency graph
|
||||
requires:
|
||||
- phase: 13-add-remaining-rclone-remotes
|
||||
provides: "BackendType derived from BACKEND_REGISTRY (18 backends), registry as const pattern"
|
||||
provides:
|
||||
- "OAuthInstructions: collapsible step-by-step OAuth token guide (TDD, 4 tests)"
|
||||
- "GdriveAuthToggle: two-tab OAuth/Service Account toggle for Google Drive"
|
||||
- "BACKEND_ICONS: inline SVG icon map for all 18 BackendType entries"
|
||||
affects: [13-03-BackendSelectionStep, 13-04-RemoteConfigStep]
|
||||
|
||||
# Tech tracking
|
||||
tech-stack:
|
||||
added: []
|
||||
patterns:
|
||||
- "TDD for UI components: test → implement → verify cycle"
|
||||
- "Collapsible disclosure via useState(false) + conditional render"
|
||||
- "Both form fields always registered, visibility toggled via CSS hidden/block"
|
||||
- "Inline SVG icons with fill=currentColor for dark-mode compatibility"
|
||||
- "Partial<Record<BackendType, FC<IconProps>>> for optional icon map"
|
||||
|
||||
key-files:
|
||||
created:
|
||||
- src/components/wizard/OAuthInstructions.tsx
|
||||
- src/components/wizard/OAuthInstructions.test.tsx
|
||||
- src/components/wizard/GdriveAuthToggle.tsx
|
||||
- src/components/icons/BackendIcons.tsx
|
||||
modified: []
|
||||
|
||||
key-decisions:
|
||||
- "OAuthInstructions renders authorizeCommand in a <code> block (detected via step text prefix), not inline text — ensures test getByText exact-match works"
|
||||
- "BACKEND_ICONS is Partial<Record<BackendType,...>> — missing entries mean no icon rendered on the card; allows incremental icon addition"
|
||||
- "GdriveAuthToggle defaults to oauth tab (not service-account) — OAuth is the more common flow for personal use"
|
||||
- "BackendIcons uses text SVG elements for letter-based icons (S3, B2, G, p) — simpler than path-based glyphs for recognizable short labels at 24px"
|
||||
|
||||
patterns-established:
|
||||
- "AuthToggle pattern: segmented control + CSS hidden/block for always-registered dual fields"
|
||||
- "OAuthInstructions: generic collapsible guide reusable for any OAuth backend (backendName + authorizeCommand props)"
|
||||
- "IconProps = { className?: string } — minimal prop surface for SVG components"
|
||||
|
||||
requirements-completed: [REMOTE-04]
|
||||
|
||||
# Metrics
|
||||
duration: 4min
|
||||
completed: 2026-04-01
|
||||
---
|
||||
|
||||
# Phase 13 Plan 02: Component Library for OAuth and Icons Summary
|
||||
|
||||
**Collapsible OAuthInstructions, GdriveAuthToggle dual-auth toggle, and 18-backend inline SVG icon map — all with zero external dependencies**
|
||||
|
||||
## Performance
|
||||
|
||||
- **Duration:** 4 min
|
||||
- **Started:** 2026-04-01T14:24:33Z
|
||||
- **Completed:** 2026-04-01T14:28:00Z
|
||||
- **Tasks:** 2 (Task 1 TDD, Task 2 standard)
|
||||
- **Files modified:** 4 created
|
||||
|
||||
## Accomplishments
|
||||
- OAuthInstructions: collapsible disclosure (collapsed by default), shows backend-specific rclone authorize command in code block, 5-step generic OAuth flow, MD3 styled — TDD with 4 passing tests
|
||||
- GdriveAuthToggle: two-tab segmented control (OAuth Token / Service Account) following AzureAuthToggle pattern exactly; OAuth tab embeds OAuthInstructions; both fields always registered via CSS hidden/block
|
||||
- BackendIcons: inline SVG icon map covering all 18 BackendType keys, fill="currentColor" throughout, viewBox 0 0 24 24, no external icon library
|
||||
|
||||
## Task Commits
|
||||
|
||||
Each task was committed atomically:
|
||||
|
||||
1. **Task 1: OAuthInstructions component with tests** - `e00fc2b` (feat + test TDD)
|
||||
2. **Task 2: GdriveAuthToggle and BackendIcons components** - `683faf6` (feat)
|
||||
|
||||
## Files Created/Modified
|
||||
- `src/components/wizard/OAuthInstructions.tsx` - Collapsible OAuth step-by-step guide component
|
||||
- `src/components/wizard/OAuthInstructions.test.tsx` - 4 behavior tests (collapsed default, expand on click, authorize command display, backend name in button)
|
||||
- `src/components/wizard/GdriveAuthToggle.tsx` - Google Drive dual-auth toggle (OAuth Token + Service Account tabs)
|
||||
- `src/components/icons/BackendIcons.tsx` - Inline SVG icon map for all 18 backends
|
||||
|
||||
## Decisions Made
|
||||
- OAuthInstructions uses step-prefix detection to render the authorize command in a `<code>` element — the step text "Run the authorize command: ..." is matched by prefix so the command value is extracted cleanly for the code block while keeping getByText test assertions working correctly.
|
||||
- BACKEND_ICONS is `Partial<Record<BackendType,...>>` so missing icons simply render nothing — plans 03/04 handle the absent-icon case in BackendCard.
|
||||
- GdriveAuthToggle defaults to oauth tab since OAuth is the typical personal-use flow; service account is the secondary option.
|
||||
- Letter-based SVG icons (S3, B2, G, p) use `<text>` elements for simplicity at 24px — path-based glyph construction for single characters is over-engineered.
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
None - plan executed exactly as written.
|
||||
|
||||
## Issues Encountered
|
||||
None.
|
||||
|
||||
## User Setup Required
|
||||
None - no external service configuration required.
|
||||
|
||||
## Next Phase Readiness
|
||||
- OAuthInstructions ready for embedding in any OAuth backend config step
|
||||
- GdriveAuthToggle ready for use in RemoteConfigStep (plan 13-04) as gdrive's auth renderer
|
||||
- BACKEND_ICONS ready for BackendCard integration in BackendSelectionStep (plan 13-03)
|
||||
- Full test suite (270 tests, 17 files) remains green
|
||||
|
||||
---
|
||||
*Phase: 13-add-remaining-rclone-remotes*
|
||||
*Completed: 2026-04-01*
|
||||
Reference in New Issue
Block a user