chore: archive v1.1 milestone — 3 phases, 11 plans, 11/11 requirements shipped

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-31 15:11:28 +02:00
co-authored by Claude Opus 4.6
parent 1aae501ddf
commit d8822e0e0b
7 changed files with 248 additions and 312 deletions
+38 -60
View File
@@ -2,44 +2,31 @@
## What This Is
Ready2Blob is a pure-frontend web app that helps IT professionals deploy rclone onto end-user Windows PCs. A step-by-step wizard collects backend credentials (Azure Blob, S3, S3-compatible) and deployment preferences, then generates rclone config files and PowerShell scripts ready to push via Intune or any RMM tool — all client-side, no server required.
Ready2Blob is a pure-frontend web app that helps IT professionals deploy rclone onto end-user Windows PCs. A step-by-step wizard collects backend credentials (Azure Blob, S3, S3-compatible, OneDrive, SFTP, Google Cloud Storage, Backblaze B2) and deployment preferences, then generates rclone config files and PowerShell scripts ready to push via Intune or any RMM tool — all client-side, no server required.
## Core Value
An IT pro can go from zero to a deployable rclone setup in minutes — without needing to know rclone's config syntax or PowerShell deployment conventions.
## Requirements
## Current State
### Validated
**Shipped:** v1.1 — 2026-03-31
**Backends:** 7 (Azure Blob, S3, S3-compatible, OneDrive, SFTP, GCS, Backblaze B2)
**Tech stack:** Vite 6, React 18, TypeScript 5, Tailwind v4, react-hook-form 7, Zod 4, Vitest 4, JSZip
**Test coverage:** 159 tests across all test files — all GREEN
**Total milestones:** 2 shipped (v1.0 + v1.1), 7 phases, 29 plans
- ✓ Multi-step wizard guides user through rclone backend selection and configuration — v1.0
- ✓ Supports Azure Blob, S3, and S3-compatible backends — v1.0
- ✓ Generates a valid rclone.conf file with live preview — v1.0
- ✓ Generates PowerShell deployment script for MS Intune (Intune install + detection scripts) — v1.0
- ✓ Generates PowerShell deployment script for RMM tools (generic SYSTEM-context) — v1.0
- ✓ User can download each output file individually or as a ZIP bundle — v1.0
- ✓ Includes rclone installation step in scripts (toggleable) — v1.0
- ✓ All config generation runs client-side (no backend, static site) — v1.0
- ✓ Security warning gate before any download — v1.0
- ✓ Wizard state never written to localStorage or sessionStorage — v1.0
## Next Milestone Goals
### Active
*(Not yet defined — run `/gsd:new-milestone` to start next milestone)*
**Milestone: v1.1 — Backlog & Tech Debt**
## Constraints
*Tech debt:*
- [ ] `scriptTargets` filtering: only render output blocks for selected Intune/RMM targets (TD-1)
- [ ] ReviewStep Back button (UX consistency with other steps — TD-2)
- [ ] Backend list in BackendSelectionStep driven by BACKEND_REGISTRY keys (maintainability — TD-4)
- [ ] `BackendFormValues<T>` dead export removal from src/schemas/index.ts
- [ ] `act()` warnings fixed in BackendSelectionStep tests
- **Architecture**: Pure static frontend — no backend, no server required
- **Target OS**: Windows endpoints only (scripts are PowerShell)
- **Secrets**: Plain text in generated files — UI must display a clear security warning before download
*Backlog features:*
- [ ] Additional backends: OneDrive, SFTP, Google Cloud Storage, Backblaze B2
- [ ] Field-level format validation per backend (Azure account name format, S3 region codes)
- [ ] Explanatory tooltips on sensitive fields (SAS token vs access key, region codes)
### Out of Scope
## Out of Scope
- User accounts / saved templates — no backend, no persistence
- Server-side generation — everything runs in the browser
@@ -48,24 +35,8 @@ An IT pro can go from zero to a deployable rclone setup in minutes — without n
- Non-Windows targets — scripts target Windows endpoints only
- Auto-push to Intune via Graph API — requires Azure AD app registration, massive scope increase
- Config credential encryption — rclone encrypted configs require interactive unlock, incompatible with unattended deployment
## Context
**Shipped:** v1.0 — 2026-03-26/27, 2 days, 4 phases, 18 plans, ~2,746 LOC TypeScript/TSX
**Tech stack:** Vite 6, React 18, TypeScript 5, Tailwind v4, react-hook-form 7, Zod 4, Vitest 4, JSZip
**Test coverage:** 98 tests across 12 test files — all GREEN
**Known issues / tech debt:**
- `scriptTargets` disconnect: user can deselect Intune or RMM in DeploymentStep but all blocks still appear in ReviewStep
- ReviewStep lacks a Back button; users navigate back via StepIndicator breadcrumb only
- BackendSelectionStep BACKENDS constant is hardcoded — adding to BACKEND_REGISTRY does not auto-surface in UI
- 6 browser verifications still pending (live preview reactivity, real file writes, ZIP content, clipboard, DevTools storage check)
## Constraints
- **Architecture**: Pure static frontend — no backend, no server required
- **Target OS**: Windows endpoints only (scripts are PowerShell)
- **Secrets**: Plain text in generated files — UI must display a clear security warning before download
- Multiple remotes in one config — significant wizard UX complexity, defer to v2
- OAuth flow in browser (OneDrive) — requires backend proxy; paste pre-obtained token instead
## Key Decisions
@@ -75,26 +46,33 @@ An IT pro can go from zero to a deployable rclone setup in minutes — without n
| BACKEND_REGISTRY as single source of truth | Drives form rendering, Zod schemas, and config generation from one definition | ✓ Good — zero duplication across phases |
| useReducer + Context API (no external state lib) | Zero dependencies, sufficient for 4-step wizard | ✓ Good — kept bundle lean |
| Wave 0 TDD (stubs RED before implementation) | Forces API contract before code, catches integration mismatches early | ✓ Good — caught several issues upfront |
| Support all rclone backends (not Azure-only) | Broader utility despite "Blob" in project name | ✓ Good — S3-compatible covers Wasabi/MinIO/R2 |
| Support all rclone backends (not Azure-only) | Broader utility despite "Blob" in project name | ✓ Good — 7 backends and growing |
| Optional rclone install in scripts | Different orgs have different baseline images | ✓ Good — no friction for orgs that pre-install |
| Tailwind v4 via @tailwindcss/vite plugin | No postcss.config.js, no tailwind.config.js needed | ✓ Good — cleaner config |
| Zod v4 + @hookform/resolvers v5 together | v5 resolvers required for Zod v4 compatibility | ✓ Good — noted for future upgrades |
| AzureAuthToggle uses CSS hidden (not conditional render) | Preserves both sas_url and key in react-hook-form state when toggling | ✓ Good — avoids field reset on toggle |
| scriptTargets defaults to both ['intune','rmm'] | Users deselect rather than discover — less friction | — Pending (deferred filtering to v1.1) |
| BACKEND_REGISTRY keys not wired to UI list | Hardcoded BACKENDS constant in BackendSelectionStep | ⚠️ Revisit — maintainability gap for v1.1 |
| AzureAuthToggle / SftpAuthToggle CSS hidden pattern | Preserves both auth fields in react-hook-form state when toggling | ✓ Good — avoids field reset on toggle |
| FieldDef.validate + tooltipText extension | Additive interface change, non-breaking to existing backends | ✓ Good — clean composition |
| Registry-loop rendering in RemoteConfigStep | Three-branch ternary (azureblob/sftp/else) — custom logic minimal | ✓ Good — scales with new backends |
## Current Milestone: v1.1 Backlog & Tech Debt
<details>
<summary>Previous milestone context (v1.0 → v1.1)</summary>
**Goal:** Ship all deferred tech debt and backlog features from v1.0 — no new functionality.
**v1.0 shipped:** 2026-03-27, 4 phases, 18 plans, ~2,746 LOC
**v1.1 shipped:** 2026-03-31, 3 phases, 11 plans, +7,311 lines
**Target features:**
- scriptTargets filtering in ReviewStep
- ReviewStep Back button
- BackendSelectionStep driven by BACKEND_REGISTRY
- Dead export + test warning cleanup
- 4 additional backends (OneDrive, SFTP, GCS, Backblaze B2)
- Field-level format validation per backend
- Explanatory tooltips on sensitive fields
**v1.0 tech debt resolved in v1.1:**
- scriptTargets filtering in ReviewStep (TECH-01)
- ReviewStep Back button (TECH-02)
- Registry-driven BackendSelectionStep (TECH-03)
- Dead export removal (TECH-04)
- act() warnings fix (TECH-05)
**v1.1 remaining tech debt:**
- 7 browser UI verifications pending (confirmatory)
- FieldRenderer aria inconsistency (cosmetic)
- Phase 7 Nyquist compliance partial
</details>
---
*Last updated: 2026-03-27 after v1.1 milestone started*
*Last updated: 2026-03-31 after v1.1 milestone completed*