Files
kawaandClaude Sonnet 4.6 a26608791f 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>
2026-04-16 16:54:45 +02:00

83 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 (812), 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
---