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:
+13
-122
@@ -2,10 +2,10 @@
|
||||
gsd_state_version: 1.0
|
||||
milestone: v1.1
|
||||
milestone_name: Backlog & Tech Debt
|
||||
status: planning
|
||||
stopped_at: Completed 07-validation-ux-polish 07-02-PLAN.md
|
||||
last_updated: "2026-03-31T11:53:18.993Z"
|
||||
last_activity: 2026-03-27 — v1.1 roadmap created, 11 requirements mapped across 3 phases
|
||||
status: completed
|
||||
stopped_at: Milestone v1.1 archived
|
||||
last_updated: "2026-03-31T15:00:00Z"
|
||||
last_activity: 2026-03-31 — v1.1 milestone completed and archived
|
||||
progress:
|
||||
total_phases: 3
|
||||
completed_phases: 3
|
||||
@@ -14,135 +14,26 @@ progress:
|
||||
percent: 100
|
||||
---
|
||||
|
||||
---
|
||||
gsd_state_version: 1.0
|
||||
milestone: v1.1
|
||||
milestone_name: Backlog & Tech Debt
|
||||
status: planning
|
||||
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:
|
||||
[██████████] 100%
|
||||
completed_phases: 1
|
||||
total_plans: 8
|
||||
completed_plans: 7
|
||||
percent: 88
|
||||
---
|
||||
|
||||
---
|
||||
gsd_state_version: 1.0
|
||||
milestone: v1.1
|
||||
milestone_name: Backlog & Tech Debt
|
||||
status: planning
|
||||
stopped_at: Completed 05-tech-debt 05-03-PLAN.md
|
||||
last_updated: "2026-03-30T07:44:48.651Z"
|
||||
last_activity: 2026-03-27 — v1.1 roadmap created, 11 requirements mapped across 3 phases
|
||||
progress:
|
||||
[█████████░] 88%
|
||||
completed_phases: 1
|
||||
total_plans: 4
|
||||
completed_plans: 4
|
||||
percent: 0
|
||||
---
|
||||
|
||||
# Project State
|
||||
|
||||
## Project Reference
|
||||
|
||||
See: .planning/PROJECT.md (updated 2026-03-27)
|
||||
See: .planning/PROJECT.md (updated 2026-03-31)
|
||||
|
||||
**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.
|
||||
**Current focus:** Phase 5 — Tech Debt (ready to plan)
|
||||
**Current focus:** v1.1 shipped — ready for next milestone
|
||||
|
||||
## Current Position
|
||||
|
||||
Phase: 5 of 7 (Tech Debt)
|
||||
Plan: — (not yet planned)
|
||||
Status: Ready to plan
|
||||
Last activity: 2026-03-27 — v1.1 roadmap created, 11 requirements mapped across 3 phases
|
||||
Milestone: v1.1 (SHIPPED)
|
||||
Phase: All complete (5–7)
|
||||
Status: Archived
|
||||
Last activity: 2026-03-31 — v1.1 milestone completed and archived
|
||||
|
||||
Progress: [░░░░░░░░░░] 0% (v1.1)
|
||||
|
||||
## Performance Metrics
|
||||
|
||||
**Velocity (v1.0 reference):**
|
||||
- Total plans completed: 18
|
||||
- Average duration: ~3 min
|
||||
- Total execution time: ~54 min
|
||||
|
||||
**v1.1 By Phase:**
|
||||
|
||||
| Phase | Plans | Total | Avg/Plan |
|
||||
|-------|-------|-------|----------|
|
||||
| 5. Tech Debt | TBD | - | - |
|
||||
| 6. New Backends | TBD | - | - |
|
||||
| 7. Validation & UX Polish | TBD | - | - |
|
||||
|
||||
*Updated after each plan completion*
|
||||
| Phase 05-tech-debt P00 | 3 | 2 tasks | 2 files |
|
||||
| Phase 05-tech-debt P02 | 4min | 1 tasks | 1 files |
|
||||
| Phase 05-tech-debt P01 | 5 | 2 tasks | 4 files |
|
||||
| Phase 05-tech-debt P03 | 3 | 2 tasks | 2 files |
|
||||
| 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 |
|
||||
| Phase 07-validation-ux-polish P00 | 10min | 1 tasks | 1 files |
|
||||
| Phase 07-validation-ux-polish P01 | 5min | 2 tasks | 2 files |
|
||||
| Phase 07-validation-ux-polish P02 | 2min | 2 tasks | 5 files |
|
||||
| Phase 07-validation-ux-polish P02 | 15min | 3 tasks | 5 files |
|
||||
|
||||
## Accumulated Context
|
||||
|
||||
### Decisions
|
||||
|
||||
Decisions are logged in PROJECT.md Key Decisions table.
|
||||
Recent decisions affecting v1.1 work:
|
||||
|
||||
- [v1.0] BACKEND_REGISTRY as single source of truth — Phase 5 wires BackendSelectionStep to it
|
||||
- [v1.0] scriptTargets defaults to both ['intune','rmm'] — Phase 5 adds filtering in ReviewStep
|
||||
- [v1.0] AzureAuthToggle uses CSS hidden (not conditional render) — Phase 6 SFTP auth toggle should follow same pattern
|
||||
- [v1.0] Wave 0 TDD stubs written before implementation — continue this pattern in v1.1
|
||||
- [Phase 05-tech-debt]: Use label text not filename text for OutputBlock assertions — filename is a prop, not rendered DOM text
|
||||
- [Phase 05-tech-debt]: WizardConsumerSetup pattern: in-test React component dispatches SET_DEPLOYMENT via useEffect for state injection without changing production code
|
||||
- [Phase 05-tech-debt]: Unmount OutputBlocks entirely (conditional render with &&) not CSS hidden — avoids stale component state when toggling scriptTargets
|
||||
- [Phase 05-tech-debt]: Keep useMemo calls for all scripts even when OutputBlocks hidden — ZIP handler always needs the content for dynamic bundle building
|
||||
- [Phase 05-tech-debt]: BACKEND_REGISTRY shape enriched to { displayName, description, fields } — registry is single source of truth for display AND field data; BackendSelectionStep wired via Object.entries(BACKEND_REGISTRY)
|
||||
- [Phase 05-tech-debt]: userEvent.setup() per test body pattern established — replaces fireEvent for async React state interactions
|
||||
- [Phase 05-tech-debt]: vi.useFakeTimers() in beforeEach + vi.useRealTimers() in afterEach pattern established for suppressing setTimeout act() warnings
|
||||
- [Phase 06-new-backends]: Wave 0 RED stubs: as BackendType cast allows test files to parse before BackendType union is extended
|
||||
- [Phase 06-new-backends]: GCS rclone type = 'google cloud storage' (with spaces) not 'gcs' — verified against rclone docs, test asserts not.toContain('type = gcs')
|
||||
- [Phase 06-new-backends]: SFTP CSS-hide tab toggle pattern follows AzureAuthToggle convention (div.hidden/div.block)
|
||||
- [Phase 06-new-backends]: GCS rclone type = 'google cloud storage' (with spaces) not 'gcs' — critical for correct rclone.conf output, test asserts not.toContain('type = gcs')
|
||||
- [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
|
||||
- [Phase 07-validation-ux-polish]: Do not use vi.useFakeTimers() in form-submit tests — fake timers + userEvent.setup() deadlock waitFor when testing React async form submissions
|
||||
- [Phase 07-validation-ux-polish]: RED acceptance tests (accepts valid X) are inherently green before implementation — they serve as regression guards, not RED indicators
|
||||
- [Phase 07-validation-ux-polish]: Cast (schema as z.ZodString).regex() — ZodTypeAny does not expose .regex() at type level in Zod v4
|
||||
- [Phase 07-validation-ux-polish]: tooltipText added to FieldDef in Plan 07-01 (interface-only) to avoid second interface-only edit in Plan 07-02
|
||||
- [Phase 07-validation-ux-polish]: ⓘ button placed as sibling outside label element in flex container to avoid label text contamination
|
||||
- [Phase 07-validation-ux-polish]: AzureAuthToggle reads tooltipText from BACKEND_REGISTRY at runtime — ensures tooltip stays in sync with registry as single source of truth
|
||||
- [Phase 07-validation-ux-polish]: SFTP auth-method tooltip is section-level (above segmented control), not field-level — correctly scoped to the auth method choice
|
||||
- [Phase 07-validation-ux-polish]: ⓘ button placed as sibling outside label element in flex container to avoid label text contamination
|
||||
- [Phase 07-validation-ux-polish]: AzureAuthToggle reads tooltipText from BACKEND_REGISTRY at runtime — registry is single source of truth, tooltip stays in sync automatically
|
||||
- [Phase 07-validation-ux-polish]: SFTP auth-method tooltip is section-level (above segmented control), not field-level — correctly scoped to the auth method choice
|
||||
|
||||
### Pending Todos
|
||||
|
||||
None yet.
|
||||
|
||||
### Blockers/Concerns
|
||||
|
||||
- [Phase 6] OneDrive: confirm current `rclone authorize` token JSON structure before designing token input field — token format may differ from v1.0 research
|
||||
- [Phase 6] SFTP: verify exact rclone SFTP field names (key_file vs key_pem, etc.) against live rclone.org docs before writing registry entry
|
||||
- [Phase 6] GCS: rclone GCS backend uses `service_account_file` or `token` — confirm auth approach before implementation
|
||||
- [Phase 7] VALID-01: S3 region validation regex must match AWS region format exactly — verify against current AWS region list
|
||||
Progress: [██████████] 100% (v1.1)
|
||||
|
||||
## Session Continuity
|
||||
|
||||
Last session: 2026-03-31T11:48:24.339Z
|
||||
Stopped at: Completed 07-validation-ux-polish 07-02-PLAN.md
|
||||
Last session: 2026-03-31T15:00:00Z
|
||||
Stopped at: Milestone v1.1 archived — ready for /gsd:new-milestone
|
||||
Resume file: None
|
||||
|
||||
Reference in New Issue
Block a user