Commit Graph
89 Commits
Author SHA1 Message Date
kawa 153bc61f8a test(03-01): add Wave 0 RED baseline stubs for all 7 requirements
- src/App.test.tsx: WIZD-02 step routing (3 stubs)
- src/components/wizard/BackendSelectionStep.test.tsx: WIZD-01, WIZD-04 (10 stubs)
- src/components/wizard/RemoteConfigStep.test.tsx: BACK-01, BACK-02, BACK-03 (8 stubs)
- src/components/wizard/StepIndicator.test.tsx: WIZD-03 (5 stubs)
- All 26 tests fail RED with descriptive 'not yet implemented' messages
2026-03-27 09:26:06 +01:00
kawa 9eef93775c chore(03-01): configure Vitest jsdom environment
- Add test block to vite.config.ts with environment: 'jsdom'
- Add passWithNoTests: true (established project convention)
2026-03-27 09:25:08 +01:00
kawa ace078d418 docs(03): add validation strategy and research 2026-03-26 14:36:13 +01:00
kawaandClaude Sonnet 4.6 e6883089b4 docs(03): research phase wizard UI
Investigate react-hook-form + Zod v4 + Tailwind v4 patterns for the
multi-step wizard, document registry-driven form rendering, touch-then-live
validation, Azure auth toggle, and breadcrumb navigation approach.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 14:35:08 +01:00
kawa 279bd0a534 docs(state): record phase 3 context session 2026-03-26 14:30:44 +01:00
kawa dc8aa85dcd docs(03): capture phase context 2026-03-26 14:30:40 +01:00
kawa e17419bfd0 docs(phase-02): complete phase execution 2026-03-26 14:12:22 +01:00
kawa 64e25a691c docs(02-03): complete Intune generators plan 2026-03-26 14:08:40 +01:00
kawa 83e48648f4 docs(02-04): complete buildRmmScript plan — phase 2 all generators done
- SUMMARY.md for plan 02-04 (buildRmmScript)
- STATE.md updated: 100% progress, decisions added, session recorded
- ROADMAP.md phase 02 marked Complete (4/4 summaries)
- Requirements DEPL-03, DEPL-04, DEPL-05 satisfied
2026-03-26 14:08:10 +01:00
kawa 1e1ac25ea3 feat(02-04): implement buildRmmScript pure function
- Imports CONFIG_DIR and buildRcloneInstallBlock from ps-helpers.ts
- Uses \$ErrorActionPreference = 'Stop' for RMM platform exit code surfacing
- Creates config directory idempotently with Test-Path guard
- Writes rclone.conf using [System.IO.File]::WriteAllText UTF-8 no-BOM
- Conditionally includes rclone download block based on includeInstall flag
- All 6 rmm-script.test.ts assertions pass GREEN
2026-03-26 14:06:51 +01:00
kawa 495be0cd11 feat(02-03): implement buildIntuneInstall and buildIntuneDetection
- buildIntuneInstall: UTF-8 no-BOM write via WriteAllText, PS here-string for config, conditional rclone download block
- buildIntuneDetection: no $ErrorActionPreference, Write-Output + exit 0/1 pattern
- Both generators use CONFIG_DIR from ps-helpers for consistent path resolution
- All 15 intune-install and intune-detection tests pass GREEN
2026-03-26 14:06:45 +01:00
kawa 6a7912daae feat(02-03): create ps-helpers.ts shared module
- Export CONFIG_DIR record mapping configPath to Windows paths
- Export buildRcloneInstallBlock for conditional rclone binary download
- machine-wide maps to C:\ProgramData\rclone
- user-profile maps to %APPDATA%\rclone
- Uses -UseBasicParsing for SYSTEM context safety
2026-03-26 10:56:43 +01:00
kawa e3615c446c feat(02-02): implement buildRcloneConf pure function
- Maps BackendType to rclone INI type strings via RCLONE_TYPE_MAP
- s3-compatible correctly maps to type = s3 (not s3-compatible)
- Omits empty param values from output (no 'sas_url =' when blank)
- Throws on null backendType or empty remote name
- All 17 rclone-conf.test.ts assertions pass GREEN
2026-03-26 10:56:42 +01:00
kawa 41ebd20a93 docs(02-01): complete generator test stubs plan
- SUMMARY.md: RED test stubs for all four generators + barrel
- STATE.md: progress 63%, decisions recorded, session updated
- ROADMAP.md: phase 2 plan progress updated (1/4 summaries)
- REQUIREMENTS.md: CONF-01, DEPL-01-05 marked complete
2026-03-26 10:55:22 +01:00
kawa cc53bc014f feat(02-01): create generators barrel index.ts
- Re-exports buildRcloneConf, buildIntuneInstall, buildIntuneDetection, buildRmmScript
- Phase 4 will import all generators from this single entry point
- No implementation logic — purely structural re-exports
2026-03-26 10:53:49 +01:00
kawa 964022b5fc test(02-01): add failing test stubs for all four generators
- rclone-conf.test.ts: azureblob/s3/s3-compatible fixtures, error cases
- intune-install.test.ts: configPath, includeInstall, UTF-8 write, credential safety
- intune-detection.test.ts: configPath, exit codes, stdout only (no STDERR contamination)
- rmm-script.test.ts: configPath, includeInstall, ErrorActionPreference=Stop
2026-03-26 10:53:34 +01:00
kawaandClaude Sonnet 4.6 0722046c32 docs(02-generators): create phase 2 plan — 4 plans in 2 waves
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 10:45:15 +01:00
kawa 0d4c9bd37e docs(02-generators): add research and validation strategy 2026-03-26 10:40:18 +01:00
kawaandClaude Sonnet 4.6 aff2923b14 docs(phase-02): research generators phase
Covers rclone.conf INI generation (type mapping, empty field omission),
PowerShell encoding (UTF-8 no-BOM via UTF8Encoding($false)), Intune
detection script contract (STDERR breaks detection), and RMM SYSTEM
context patterns. All key findings verified against live official sources.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 10:39:12 +01:00
kawaandClaude Sonnet 4.6 bd10a33dab docs(phase-01): complete phase execution
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 10:30:46 +01:00
kawa 77ad5f39b0 docs(01-04): complete WizardState store plan
- 01-04-SUMMARY.md: TDD reducer + Context API store complete, 8 tests green, build clean
- STATE.md: progress 100%, decisions added, session updated
- ROADMAP.md: Phase 01 all 4 plans complete
2026-03-26 10:26:16 +01:00
kawa 2eef7225da feat(01-04): create WizardContext provider and wire into App
- Create src/store/context.tsx: WizardContext, WizardProvider, useWizard hook
- useWizard throws if used outside WizardProvider (prevents silent undefined state bugs)
- Update src/App.tsx to wrap content in WizardProvider
- npm run build exits 0 with no TypeScript errors
2026-03-26 10:24:32 +01:00
kawa 3fade79ea1 feat(01-04): implement WizardState types and pure reducer
- Create src/store/types.ts: WizardState interface, WizardAction union type, INITIAL_STATE constant
- Create src/store/reducer.ts: pure wizardReducer handling SET_STEP, SET_BACKEND_TYPE, SET_REMOTE_NAME, SET_REMOTE_PARAMS, SET_DEPLOYMENT, RESET
- All 8 reducer tests GREEN
- No localStorage/sessionStorage access (SECU-03 compliant)
2026-03-26 10:23:53 +01:00
kawa 5a4bb475c1 docs(01-03): complete Zod schema builder plan
- SUMMARY.md created for Plan 03
- STATE.md updated: progress 75%, decisions logged, session recorded
- ROADMAP.md updated: phase 1 at 3/4 SUMMARY files
2026-03-26 10:22:28 +01:00
kawa eaeae32849 feat(01-03): implement BACKEND_SCHEMAS Zod schema builder
- buildZodSchema derives z.object() from BACKEND_REGISTRY field definitions
- required fields map to z.string().min(1, label) — optional to z.string().optional()
- BACKEND_SCHEMAS exported with entries for azureblob, s3, s3-compatible
- BackendFormValues<T> utility type infers TypeScript type from schema
- No hardcoded field names — all shapes derived from registry loop
- All 8 tests in index.test.ts pass (GREEN)
2026-03-26 10:21:11 +01:00
kawa 64c02e7b76 docs(01-02): complete Backend Schema Registry plan - SUMMARY, STATE, ROADMAP updated
- 01-02-SUMMARY.md created with decisions, deviations, and self-check
- STATE.md: advanced to Plan 2 of 4, added decisions, updated metrics
- ROADMAP.md: phase 1 progress updated (2/4 plans complete)
2026-03-26 10:19:46 +01:00
kawa 9e28bf9ece test(01-02): add Wave 0 TDD stubs for SC-3 (Zod schemas) and SC-4 (wizard reducer)
- src/schemas/index.test.ts: 8 tests defining acceptance criteria for BACKEND_SCHEMAS (Plan 03)
- src/store/reducer.test.ts: 8 tests defining acceptance criteria for wizardReducer (Plan 04)
- Both files fail with "Cannot find module" — correct RED phase, implementation deferred to Plans 03-04
2026-03-26 10:17:35 +01:00
kawa 4c614fc06c feat(01-02): create Backend Schema Registry with rclone-compatible field definitions
- BackendType union: 'azureblob' | 's3' | 's3-compatible'
- FieldDef interface with key (snake_case rclone key), label, inputType, required, and optional fields
- BACKEND_REGISTRY: azureblob (3 fields), s3 (4 fields), s3-compatible (5 fields)
- All FieldDef.key values match rclone INI config key names exactly
- registry.test.ts: 7 tests all passing (GREEN)
2026-03-26 10:16:49 +01:00
kawa 1aebceae55 docs(01-01): complete scaffold plan - SUMMARY, STATE, ROADMAP updated
- Created 01-01-SUMMARY.md documenting scaffold outcomes and deviations
- Updated STATE.md: plan 1/4 complete, decisions recorded, session continuity
- Updated ROADMAP.md: plan 01-01 checked off, Foundation at 1/4 plans
2026-03-26 10:15:13 +01:00
kawa d132413b2a feat(01-01): configure Vitest for pure-function unit tests
- Created vitest.config.ts with environment: 'node' and globals: true
- Added passWithNoTests: true so vitest run exits 0 with no test files
- test script already present in package.json as "vitest run"
2026-03-26 10:12:53 +01:00
kawa 237d06b8f7 feat(01-01): scaffold Vite 6 + React 18 + TypeScript 5 project
- Created Vite 6 project with React 18 and TypeScript 5 template
- Installed zod, react-hook-form, @hookform/resolvers (production)
- Installed tailwindcss @tailwindcss/vite (Tailwind v4 via Vite plugin)
- Installed vitest, @testing-library/react, @testing-library/dom (dev)
- Configured Tailwind v4 via @tailwindcss/vite plugin in vite.config.ts
- Set src/index.css to @import "tailwindcss" (no postcss/tailwind.config.js)
- Created minimal App.tsx with Tailwind classes, .gitignore
- Auto-fix (Rule 1): added src/vite-env.d.ts for CSS module type declarations
2026-03-26 10:12:15 +01:00
kawa 4514fc9033 docs(01-foundation): create phase plan
4 plans across 3 waves: scaffold, registry+test stubs, Zod schemas and WizardState store (parallel wave 3).
2026-03-26 10:05:01 +01:00
kawa a3dea0ef19 docs(phase-1): add research and validation strategy 2026-03-26 09:59:57 +01:00
kawaandClaude Sonnet 4.6 eb103c4338 docs(phase-1): research foundation phase
Covers Vite 6 scaffold, Tailwind v4 CSS-first setup, Zod v4 + hookform/resolvers v5 compatibility, Backend Schema Registry pattern, WizardState useReducer design, and Vitest test map for phase success criteria.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 09:58:48 +01:00
kawa 914c2c04c5 docs: create roadmap (4 phases) 2026-03-26 09:52:35 +01:00
kawa 9748321091 docs: define v1 requirements 2026-03-26 09:49:43 +01:00
kawaandClaude Sonnet 4.6 0b72904e36 docs: complete project research
Add STACK, FEATURES, ARCHITECTURE, PITFALLS, and SUMMARY research files for Ready2Blob.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 09:46:22 +01:00
kawa da8b950684 chore: add project config 2026-03-26 09:37:07 +01:00
kawa 4aa632a6d7 docs: initialize project 2026-03-26 09:36:14 +01:00