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>
83 lines
4.7 KiB
Markdown
83 lines
4.7 KiB
Markdown
# Milestones
|
||
|
||
## v1.3 Backend Expansion (Shipped: 2026-04-16)
|
||
|
||
**Phases completed:** 1 phase (13), 4 plans
|
||
**Timeline:** 2026-04-01 (1 day)
|
||
**Stats:** 28 files changed, +3,959 / -206 lines; total 6,055 TypeScript LOC
|
||
|
||
**Key accomplishments:**
|
||
1. BACKEND_REGISTRY expanded from 7 → 18 backends; BackendType derived from `keyof typeof` — no manual union to maintain
|
||
2. BACKEND_SCHEMAS auto-generated from registry via `Object.fromEntries` — zero per-backend boilerplate
|
||
3. OAuthInstructions collapsible component with backend-specific `rclone authorize` commands (TDD, 4 tests)
|
||
4. GdriveAuthToggle dual-auth component (OAuth token vs service account) for Google Drive
|
||
5. BackendSelectionStep with category groups, instant search filtering, and inline SVG icons
|
||
6. RemoteConfigStep wired for all 18 backends via `renderBackendFields()` switch function; `backendLabel` derived from registry
|
||
|
||
**Archive:** `.planning/milestones/v1.3-ROADMAP.md`, `.planning/milestones/v1.3-REQUIREMENTS.md`
|
||
|
||
---
|
||
|
||
## v1.2 UI Polish & Clarity (Shipped: 2026-04-01)
|
||
|
||
**Phases completed:** 5 phases (8–12), 14 plans
|
||
**Timeline:** 2026-03-31 → 2026-04-01 (2 days)
|
||
**Stats:** 78 files changed, +9,908 / -287 lines
|
||
|
||
**Key accomplishments:**
|
||
1. Full MD3 color token system — CSS custom properties in a single token file, all components use semantic classes (`bg-surface`, `text-on-primary`, etc.)
|
||
2. Dark mode toggle (System/Light/Dark) — DOM class toggle pattern (not React Context), persisted in localStorage, zero FOUC
|
||
3. TextFieldMD3 with CSS-only floating label (`peer-[:not(:placeholder-shown)]`), MD3 button hierarchy constants, rebuilt StepIndicator with numbered circles + checkmarks
|
||
4. App intro section, step descriptions, remote name live config preview, and contextual help/tooltip enrichment across all 18 credential fields
|
||
5. Mobile-responsive layout, MD3 `focus-visible` ring-3 indicators on all interactive elements
|
||
6. Step fade/slide transition with `prefers-reduced-motion` guard; auto-scroll to first validation error
|
||
7. Dark mode visibility fixes: semantic tokens on select, h2 headings, DeploymentStep form controls, ReviewStep security checkbox
|
||
|
||
**Archive:** `.planning/milestones/v1.3-ROADMAP.md` (includes v1.2 phases in archive)
|
||
|
||
---
|
||
|
||
## v1.0 MVP (Shipped: 2026-03-27)
|
||
|
||
**Phases completed:** 4 phases, 18 plans
|
||
**Timeline:** 2026-03-26 → 2026-03-27 (2 days)
|
||
**Stats:** ~2,746 LOC TypeScript/TSX, 101 files, 73 commits
|
||
|
||
**Key accomplishments:**
|
||
1. Vite 6 + React 18 + TypeScript scaffold with Tailwind v4, Vitest, and zero-error dev server
|
||
2. Backend Schema Registry as single source of truth — drives form rendering, Zod validation, and config generation for Azure Blob, S3, S3-compatible
|
||
3. 4 pure generator functions (rclone.conf, Intune install/detection, RMM script) — 61 tests, UTF-8 no-BOM, SYSTEM-context safe
|
||
4. Multi-step wizard (backend selection → config → deployment options) with full back-navigation and no data loss — 87 tests GREEN
|
||
5. Review + download + security layer — live preview, security gate, individual downloads, ZIP bundle, clipboard copy — 98 tests GREEN
|
||
6. Pure client-side: no backend, no localStorage writes, credentials never leave the browser
|
||
|
||
**Tech debt deferred to v1.1:**
|
||
- `scriptTargets` collected in DeploymentStep but ignored by ReviewStep (all output blocks render unconditionally)
|
||
- ReviewStep missing explicit Back button (UX inconsistency)
|
||
- Backend list hardcoded in BackendSelectionStep, not driven by BACKEND_REGISTRY keys
|
||
- `BackendFormValues<T>` dead export in src/schemas/index.ts
|
||
- `act()` warnings in BackendSelectionStep tests
|
||
|
||
---
|
||
|
||
## v1.1 Backlog & Tech Debt (Shipped: 2026-03-31)
|
||
|
||
**Phases completed:** 3 phases, 11 plans
|
||
**Timeline:** 2026-03-30 → 2026-03-31 (2 days)
|
||
**Stats:** 47 files changed, +7,311 / -210 lines
|
||
|
||
**Key accomplishments:**
|
||
1. Registry-driven architecture — BACKEND_REGISTRY enriched with `displayName`, `description`, `fields`; BackendSelectionStep fully data-driven via `Object.entries()`
|
||
2. 4 new cloud backends — OneDrive, SFTP (password + key auth), GCS, and Backblaze B2 added end-to-end through registry, schema, and UI
|
||
3. SftpAuthToggle component — CSS-hidden toggle for SFTP auth method (password vs SSH key), following AzureAuthToggle pattern
|
||
4. RemoteConfigStep extended for all 7 backends — registry-loop renders all fields; SFTP has dedicated branch
|
||
5. Inline field validation — `FieldDef.validate` regex rules on 3 fields; wired via `buildZodSchema().regex()`
|
||
6. Contextual tooltips (UX-01) — `FieldDef.tooltipText` rendered via ⓘ button across all field types
|
||
|
||
**Tech debt carried forward:**
|
||
- 7 browser UI verifications pending (confirmatory, not discovery)
|
||
- FieldRenderer aria inconsistency between text-branch and select-branch (cosmetic)
|
||
- Phase 7 Nyquist compliance partial
|
||
|
||
---
|