kawa and Claude Opus 5
32159a404d
feat(docker): add containerized nginx deployment with runtime base path
...
Two-stage build: node builds the static bundle, nginx serves it. The bundle is
built against a placeholder base token that the entrypoint rewrites to $BASE_URL
at start, so one image serves from any path without a rebuild.
nginx config caches hashed assets forever, never caches index.html, and applies
security headers (CSP, no framing, no referrer) suited to an app that handles
cloud credentials client-side.
.gitattributes pins LF on the container-consumed files, since core.autocrlf
would otherwise give the entrypoint a CRLF shebang.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-26 15:03:19 +02:00
kawa and Claude Opus 5
48802cf13c
chore: replace hardcoded /vite.svg favicon link with a placeholder note
...
The absolute /vite.svg path breaks once the app is served from a base path,
and the file was never replaced with a real logo. Leave instructions for
restoring it with the %BASE_URL% placeholder instead.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-26 15:03:13 +02:00
kawa and Claude 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
kawa and Claude Opus 4.6
f75b499ad6
docs(phase-13): complete phase execution and verification
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 17:33:19 +02:00
kawa and Claude Sonnet 4.6
0fa7a86545
docs(13-04): complete plan — visual verification approved, phase 13 done
...
- Task 3 visual verification approved by user
- SUMMARY.md updated to reflect all 3 tasks complete
- STATE.md updated: phase 13 complete, 100% progress
- ROADMAP.md updated: phase 13 all 4 plans complete
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 17:28:15 +02:00
kawa
46b149d900
docs(13-04): complete RemoteConfigStep full backend integration plan
...
- 13-04-SUMMARY.md: all 18 backends wired, 6 new tests, 282/282 pass
- STATE.md: session updated, decisions recorded, progress 100%
- ROADMAP.md: phase 13 marked complete (4/4 plans)
- REQUIREMENTS.md: REMOTE-05 marked complete
2026-04-01 16:59:38 +02:00
kawa
2c596c96a0
test(13-04): add tests for new backend form rendering
...
- Test gdrive: GdriveAuthToggle with OAuth Token and Service Account tabs
- Test dropbox: OAuthInstructions toggle button visible
- Test ftp: host, username, password, port, TLS mode fields
- Test webdav: URL, username, password, vendor select fields
- Test smb: host and username fields
- Test http: only URL field, no username/password
2026-04-01 16:58:00 +02:00
kawa
d0c00f7e56
feat(13-04): wire all new backends into RemoteConfigStep
...
- Replace manual backendLabel record with registry-derived Object.fromEntries
- Import OAuthInstructions and GdriveAuthToggle components
- Refactor 3-branch ternary into renderBackendFields() switch function
- Add gdrive branch: GdriveAuthToggle + generic loop for non-auth fields
- Add onedrive branch: OAuthInstructions + generic loop
- Add dropbox/box/pcloud branches: OAuthInstructions + generic loop
- Default branch covers all other backends (azure-files, swift, ftp, webdav, smb, http, seafile)
2026-04-01 16:55:22 +02:00
kawa
7c6f0acfb1
docs(13-03): complete category-grouped searchable backend selection plan
...
- 13-03-SUMMARY.md: BackendSelectionStep refactored with categories/search/icons
- STATE.md: decisions added, progress updated to 98%, session updated
- ROADMAP.md: phase 13 progress updated (3/4 summaries)
- REQUIREMENTS.md: REMOTE-03 marked complete
2026-04-01 16:53:34 +02:00
kawa
aeb1528163
test(13-03): add search filter and category collapse tests
...
- 6 new test cases covering REMOTE-03 acceptance criteria
- Tests: all 3 category headings render, ftp search shows FTP+SFTP
- Tests: no-match query hides all categories
- Tests: Cloudflare description match finds S3-Compatible
- Tests: all 18 backend cards render without search
- Tests: category heading hidden when all backends filtered out
2026-04-01 16:51:54 +02:00
kawa
0a70620fd5
feat(13-03): add icon prop to BackendCard and category/search to BackendSelectionStep
...
- BackendCard accepts optional icon prop rendered in flex row with name
- BackendSelectionStep groups 18 backends into 3 category sections
- Search bar (type=search/searchbox role) filters across displayName, description, category label, field labels
- Empty categories hidden via conditional rendering
- BACKEND_ICONS wired to BackendCard icon prop
- Changed search input to type=search to preserve getByRole('textbox') selector in existing tests
2026-04-01 16:50:49 +02:00
kawa
683faf6f11
feat(13-02): add GdriveAuthToggle and BackendIcons components
...
- GdriveAuthToggle: two-tab segmented control (OAuth Token / Service Account)
following AzureAuthToggle pattern; both fields always registered via CSS
hidden/block; OAuth tab embeds OAuthInstructions component
- BackendIcons: inline SVG icon map for all 18 backends (Partial<Record<BackendType,...>>)
using fill="currentColor" for MD3 dark-mode compatibility, no external deps
- Created src/components/icons/ directory
2026-04-01 16:27:14 +02:00
kawa
e00fc2b03b
feat(13-02): implement OAuthInstructions component with tests
...
- Collapsible disclosure with expanded=false by default
- Shows backend-specific rclone authorize command in code block
- Accepts custom steps array or defaults to 5-step generic OAuth flow
- Styled with MD3 tokens (bg-surface-container, border-outline, rounded-xl)
- All 4 behavior tests pass (TDD)
2026-04-01 16:25:18 +02:00
kawa and Claude Sonnet 4.6
f7a79647f0
docs(13-01): complete registry refactor and 18-backend expansion plan
...
- 13-01-SUMMARY.md: full execution summary with decisions, deviations, and task commits
- STATE.md: updated position to phase 13 plan 01 complete, added key decisions
- ROADMAP.md: 13-01 checked off, phase 13 progress 1/4
- REQUIREMENTS.md: REMOTE-01, REMOTE-02, REMOTE-06 marked complete (3/6 v1.3 requirements)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 16:23:25 +02:00
kawa
3010cdb0c6
feat(13-01): auto-generate BACKEND_SCHEMAS, update RCLONE_TYPE_MAP for all 18 backends
...
- BACKEND_SCHEMAS now auto-generated via Object.fromEntries over registry keys
- RCLONE_TYPE_MAP expanded with 11 new entries for all 18 backend types
- RCLONE_TYPE_MAP exported for direct testing
- index.test.ts: added auto-generation coverage (3 tests) + 4 new backend schema smoke tests
- rclone-conf.test.ts: added RCLONE_TYPE_MAP exhaustiveness test + gdrive/ftp/smb conf output tests
- Rule 1 fix: BackendSelectionStep test used /next/i regex matching WebDAV "NextCloud" card buttons
2026-04-01 16:20:18 +02:00
kawa
b8c64937ea
feat(13-01): add 18 backends to BACKEND_REGISTRY with category field
...
- Removed explicit BackendType union literal; derived via keyof typeof BACKEND_REGISTRY
- Added BackendCategory type and category field to all 18 backend entries
- Added BackendMeta interface for individual entry typing
- Removed circular Record<BackendType,...> cast; replaced with as const
- Added 11 new backends: azure-files, swift, gdrive, dropbox, box, pcloud, ftp, webdav, smb, http, seafile
- Updated registry.test.ts: 48 tests covering all 18 backends, category assertions, field validation
2026-04-01 16:16:58 +02:00
kawa and Claude Opus 4.6
7e02b01595
fix(13): revise plans based on checker feedback
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 16:04:24 +02:00
kawa and Claude Opus 4.6
4bf3f1e45f
docs(13): create phase plan for backend expansion
...
4 plans across 3 waves to expand from 7 to 17 rclone backends:
- Plan 01 (W1): Registry refactoring, BackendType derivation, 10 new entries
- Plan 02 (W2): OAuthInstructions, GdriveAuthToggle, BackendIcons components
- Plan 03 (W2): BackendSelectionStep UX overhaul with categories, search, icons
- Plan 04 (W3): RemoteConfigStep wiring for all new backends + visual verify
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 15:58:51 +02:00
kawa
fac90462f7
docs(phase-13): add research and validation strategy
2026-04-01 15:50:21 +02:00
kawa and Claude Sonnet 4.6
5228ae2a0a
docs(13): research phase domain — rclone backend expansion
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 15:49:15 +02:00
kawa and Claude Opus 4.6
9437d6c9b5
docs(state): record phase 13 context session
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 14:27:41 +02:00
kawa and Claude Opus 4.6
31725bca4f
docs(13): capture phase context
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 14:27:30 +02:00
kawa and Claude Opus 4.6
934bbfbf62
docs(phase-12): complete phase execution and verification
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 14:09:19 +02:00
kawa
5986d5dbec
docs(12-01): complete dark mode visibility fixes plan
...
- SUMMARY.md: dark mode h2 and form control semantic token fixes
- STATE.md: position updated, decisions recorded
- ROADMAP.md: phase 12 marked complete
- REQUIREMENTS.md: DARK-01, DARK-02 marked complete
2026-04-01 14:06:25 +02:00
kawa
d3329311e1
docs(12-02): complete FieldRenderer select dark mode fix plan
...
- 12-02-SUMMARY.md: select element bg-surface-container text-on-surface fix
- STATE.md: updated position and decisions
- ROADMAP.md: phase 12 progress updated
- REQUIREMENTS.md: DARK-03 marked complete
2026-04-01 14:05:23 +02:00
kawa
945f90d789
feat(12-01): style DeploymentStep form controls and ReviewStep checkbox
...
- DeploymentStep: include-install label uses text-on-surface, checkbox uses accent-primary
- DeploymentStep: fieldset legends use text-on-surface-container font-medium
- DeploymentStep: all radio/checkbox labels use flex gap-2 text-on-surface cursor-pointer
- DeploymentStep: all radios and checkboxes use accent-primary
- ReviewStep: security checkbox uses accent-[var(--r2b-warning)] for warning-themed accent
2026-04-01 14:05:14 +02:00
kawa
f6b4070ff9
feat(12-01): add semantic token classes to all step h2 headings
...
- BackendSelectionStep h2: text-2xl font-bold text-on-surface mb-2
- RemoteConfigStep h2: text-2xl font-bold text-on-surface mb-2
- DeploymentStep h2: text-2xl font-bold text-on-surface mb-2
- ReviewStep h2: text-2xl font-bold text-on-surface mb-2
2026-04-01 14:04:21 +02:00
kawa
94e90e0641
feat(12-02): add bg-surface-container text-on-surface to select element in FieldRenderer
...
- Added bg-surface-container and text-on-surface semantic token classes to select element className
- Fixes select dropdown invisible text in dark mode (browser-applied white background)
- 204 tests pass, zero regressions
2026-04-01 14:03:57 +02:00
kawa and Claude Opus 4.6
a193a183f8
docs(12): create phase plan for dark mode visibility fixes
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 14:00:04 +02:00
kawa and Claude Opus 4.6
94f70deb3d
docs(phase-12): add research and validation strategy
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 13:55:55 +02:00
kawa and Claude Sonnet 4.6
c5110b1c67
docs(12): research phase dark mode visibility fixes
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 13:54:51 +02:00
kawa and Claude Opus 4.6
0f6e0f7a5b
test(11): complete UAT - 8 passed, 0 issues
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 13:46:44 +02:00
kawa and Claude Opus 4.6
40a82487dd
docs(phase-11): complete phase execution and verification
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 13:36:12 +02:00
kawa
0c27818030
docs(11-02): complete step animation and scroll-to-error plan
...
- Create 11-02-SUMMARY.md documenting POLISH-03 and POLISH-04 completion
- Update STATE.md: phase 11 complete, 100% progress, new decisions added
- Update ROADMAP.md: phase 11 plan progress (2/2 complete)
- Update REQUIREMENTS.md: mark POLISH-03 and POLISH-04 complete
2026-04-01 13:32:39 +02:00
kawa
90cdeda142
feat(11-02): auto-scroll to first errored field on validation failure
...
- BackendSelectionStep: add onInvalidSubmit scrolling to remote-name input
- BackendSelectionStep: pass onInvalidSubmit to form onSubmit and handleCardClick
- RemoteConfigStep: add FieldErrors import from react-hook-form
- RemoteConfigStep: add onInvalidSubmit scrolling to first errored field by key
- RemoteConfigStep: pass onInvalidSubmit to form onSubmit
2026-04-01 13:30:39 +02:00
kawa
8b7daa860c
test(11-02): add failing tests for auto-scroll to first error on validation failure
...
- Add scrollIntoView mock (vi.fn()) in beforeEach to both test files
- Add POLISH-04 test in BackendSelectionStep: scrolls to remote-name on empty submit
- Add POLISH-04 test in RemoteConfigStep: scrolls to first errored field on empty submit
2026-04-01 13:29:48 +02:00
kawa
9af58bc970
feat(11-02): add step transition animation with reduced-motion guard
...
- Add @keyframes step-in (opacity 0->1, translateY 8px->0, 200ms ease-out) to index.css
- Register --animate-step-in token in @theme block
- Add @media prefers-reduced-motion: reduce guard disabling animation
- Add key={state.currentStep} and animate-step-in class to step wrapper in App.tsx
2026-04-01 13:28:38 +02:00
kawa
3af06493ea
docs(11-01): complete mobile responsiveness and MD3 focus indicators plan
...
- 11-01-SUMMARY.md: execution summary for POLISH-01/POLISH-02
- STATE.md: position advanced to phase 11 plan 01 complete, decisions added
- ROADMAP.md: phase 11 progress updated (1/2 plans complete)
- REQUIREMENTS.md: POLISH-01 and POLISH-02 marked complete
2026-04-01 13:26:58 +02:00
kawa
9015db565e
feat(11-01): MD3 focus-visible ring-3 indicators on all interactive elements
...
- md3-buttons.ts: upgrade ring-2/50 to ring-3 on all three constants (FILLED, OUTLINED, TEXT)
- BackendCard: add focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-primary
- StepIndicator: upgrade group-focus-visible completed-step circle from ring-2/50 to ring-3
- ThemeToggle: add focus-visible ring-3 with ring-inset to both selected/unselected branches
- FieldRenderer: select uses focus-visible:ring-2 (was focus:ring-2); tooltip buttons get focus-visible:ring-2 rounded
2026-04-01 13:25:00 +02:00
kawa
07f97d9f25
feat(11-01): mobile-responsive layout for wizard steps
...
- BackendSelectionStep: responsive grid (1-col mobile, 2-col desktop) for cards; button row stacks vertically on mobile
- BackendCard: add w-full to fill grid cell on all viewports
- RemoteConfigStep/DeploymentStep/ReviewStep: flex-col sm:flex-row button rows; w-full sm:w-auto on Back/Next buttons
- StepIndicator: add hidden sm:block to all three label spans (completed, active, future)
2026-04-01 13:23:43 +02:00
kawa and Claude Opus 4.6
e22d44d807
docs(11-polish-responsiveness): create phase plan
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 13:14:51 +02:00
kawa
4472c1294c
docs(phase-11): add research and validation strategy
2026-04-01 13:10:23 +02:00
kawa and Claude Sonnet 4.6
5fb0300f80
docs(phase-11): research polish & responsiveness phase
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 13:09:13 +02:00
kawa and Claude Opus 4.6
b7ba16326f
docs(phase-10): complete phase execution and verification
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 13:02:45 +02:00
kawa
74fa072e10
docs(10-02): complete live remote name preview plan
...
- Create 10-02-SUMMARY.md with task details and deviations
- Update STATE.md: add decision, session info, update progress to 100%
- Update ROADMAP.md: phase 10 marked complete (3/3 summaries)
- Update REQUIREMENTS.md: mark UX-02 complete
2026-04-01 12:58:27 +02:00
kawa
58d96cbb48
docs(10-03): complete credential-field help text plan
...
- Add 10-03-SUMMARY.md with full deviation documentation
- Update STATE.md: progress 97%, decisions, session
- Update ROADMAP.md: phase 10 plan progress (2/3 summaries)
- Mark UX-04 requirement complete in REQUIREMENTS.md
2026-04-01 12:56:45 +02:00
kawa
fefab65371
feat(10-02): integrate RemoteNamePreview into BackendSelectionStep with tests
...
- Add RemoteNamePreview integration tests: empty-state [my-remote] on render
- Add live-update test: typing 'test-remote' shows [test-remote] in DOM
- Fix getByText(/required/i) ambiguity: use alert.textContent.toMatch instead
(description paragraph now contains 'required' — Rule 1 bug fix)
- BackendSelectionStep.tsx changes already committed (watch, helpText, RemoteNamePreview)
2026-04-01 12:56:32 +02:00
kawa
be788a44b7
docs(10-01): complete intro-section and step-descriptions plan
...
- SUMMARY.md with full execution record
- STATE.md: progress updated, 3 decisions added, session recorded
- ROADMAP.md: phase 10 progress updated (1/3 summaries)
- REQUIREMENTS.md: UX-01 and UX-03 marked complete
- deferred-items.md: pre-existing RemoteConfigStep test failures logged
2026-04-01 12:56:16 +02:00
kawa
489dfab896
feat(10-03): add tooltip tests for enriched fields; fix selector ambiguity
...
- Add { selector: 'input' } to getByLabelText calls where tooltip buttons
now create aria-label matches (DEBT-01 pattern, same fix as Phase 09-03)
- Affected queries: S3 fields, S3-compatible fields, GCS fields, B2 fields,
OneDrive drive_id, and VALID-01 validation tests
- Add 4 new UX-01 tests verifying tooltip info buttons render for:
S3 access_key_id, S3-compatible endpoint, GCS service_account_credentials,
B2 account (application_key_id)
- All 37 tests pass
2026-04-01 12:55:14 +02:00
kawa
356d557348
feat(10-03): enrich registry.ts with tooltipText and helpText for credential fields
...
- S3: access_key_id and secret_access_key get helpText + tooltipText (IAM console guidance)
- S3: region gets tooltipText (where to find in S3 console)
- S3-compatible: access_key_id, secret_access_key get helpText + tooltipText (provider-specific)
- S3-compatible: endpoint gets tooltipText (common endpoint examples for Wasabi, R2, MinIO)
- GCS: project_number gets tooltipText (numeric ID vs text project ID)
- GCS: service_account_credentials gets tooltipText (IAM console steps + doc link)
- B2: account and key get tooltipText (App Keys page, shown-once warning)
- OneDrive: drive_id gets tooltipText (rclone authorize output, b! prefix)
- SFTP host and user intentionally unchanged (self-explanatory per user decision)
- Azure Blob, OneDrive token, SFTP pass/key_pem existing text untouched
2026-04-01 12:55:05 +02:00
kawa
4b837b19a0
feat(10-01): update App.test.tsx and add step descriptions to all 4 steps
...
- Update App.test.tsx: add 'shows intro section on initial render' test
- Update App.test.tsx: fix 'renders BackendSelectionStep' — click Get Started first
- Add fireEvent import for click simulation
- BackendSelectionStep: add description below h2 (text-sm text-on-surface-variant)
- RemoteConfigStep: add description below h2
- DeploymentStep: add description below h2
- ReviewStep: add h2 heading + description paragraph (step was missing h2)
- All descriptions use text-sm text-on-surface-variant mt-1 mb-4
2026-04-01 12:54:16 +02:00
kawa
c1d1633816
feat(10-01): add IntroSection and showIntro gate to App.tsx
...
- Add useState import to WizardShell
- Add showIntro local state (default true) — no persistence, resets on reload
- Add IntroSection component with action-first copy and Get Started CTA
- Copy mentions Azure Blob, S3, OneDrive, and 4 more backends
- Explains rclone.conf + deployment script generation
- Uses MD3_BTN_FILLED for CTA, MD3 tokens throughout
- When showIntro false, renders existing StepIndicator + step content unchanged
2026-04-01 12:48:53 +02:00
kawa
3c9c5fd7d8
feat(10-02): create RemoteNamePreview component with TDD
...
- Stateless component accepting value prop (string)
- Empty/whitespace state: shows grayed [my-remote] placeholder + guidance text
- Value state: shows [typed-value] in on-surface-variant color
- Renders only div/span elements — no form controls
- 9 tests covering empty state, value state, and element type constraints
2026-04-01 12:48:50 +02:00
kawa and Claude Opus 4.6
8078664f05
docs(10-content-clarity): create phase plan
...
3 plans in 1 wave covering UX-01 through UX-04: intro section,
remote name preview, step descriptions, and credential help text.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 12:43:38 +02:00
kawa
5052e9e66e
docs(phase-10): add validation strategy
2026-04-01 12:38:34 +02:00
kawa and Claude Sonnet 4.6
cfc9967a28
docs(10): research phase content-clarity domain
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 12:37:26 +02:00
kawa and Claude Opus 4.6
648a17d261
docs(state): record phase 10 context session
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 12:32:34 +02:00
kawa and Claude Opus 4.6
43c83bf399
docs(10): capture phase context
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 12:32:24 +02:00
kawa and Claude Opus 4.6
12953a230c
docs(phase-09): mark gap closure plans 09-04, 09-05 complete in roadmap
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 11:26:53 +02:00
kawa and Claude Opus 4.6
19eda65c77
docs(phase-09): re-verify after gap closure - 16/16 must-haves passed
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 11:26:39 +02:00
kawa
d173fd4455
docs(09-05): complete tooltip fix plan - hover behavior and helpTextPrefix prop
...
- SUMMARY.md: tooltip placement fix and hover+pin behavior documented
- STATE.md: decisions added, session updated, progress at 100%
- ROADMAP.md: Phase 9 plan 5/5 complete
2026-04-01 11:22:06 +02:00
kawa
d2b6da297f
test(09-05): add tooltip hover behavior tests and helpTextPrefix rendering tests
...
- FieldRenderer: 4 new tests for hover show/hide, click-pin, click-unpin
- TextFieldMD3: 3 new tests for helpTextPrefix with helpText, without, and prefix-only
- Import fireEvent from @testing-library/react added to FieldRenderer.test.tsx
2026-04-01 11:20:24 +02:00
kawa
23617c0422
feat(09-05): add helpTextPrefix prop and fix tooltip placement + hover behavior
...
- TextFieldMD3: add helpTextPrefix prop rendered inline left of helpText
- Guard changed to (helpText || helpTextPrefix) so icon renders without helpText
- FieldRenderer: move tooltip icon from above field to inline with helpText via helpTextPrefix
- FieldRenderer: add hoverTooltip state; tooltip visible on mouseEnter, dismisses on mouseLeave
- FieldRenderer: click-to-unpin clears hoverTooltip to prevent sticky tooltip after dismiss
- PasswordField: same tooltip fix as FieldRenderer text-branch
- Select-branch also gains hover support
2026-04-01 11:19:17 +02:00
kawa and Claude Opus 4.6
29aa6b9e2f
docs(09-05): add tooltip fix plan and debug session
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 11:11:59 +02:00
kawa and Claude Opus 4.6
c848f7dd75
docs(09-05): diagnose tooltip gaps and create verified fix plan
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 11:10:58 +02:00
kawa and Claude Opus 4.6
788d90a904
fix(09): revise 09-05 plan based on checker feedback
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 11:09:17 +02:00
kawa and Claude Opus 4.6
f2586dbef9
docs(09): create gap closure plan for tooltip hover and icon placement
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 11:03:10 +02:00
kawa and Claude Opus 4.6
53678e6fb3
test(09): complete UAT - 6 passed, 1 issue
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 10:58:16 +02:00
kawa and Claude Opus 4.6
ba0a029366
docs(phase-09): complete phase execution — 12/12 must-haves verified
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 10:32:11 +02:00
kawa
dad829245a
docs(09-04): complete BackendSelectionStep TextFieldMD3 gap closure plan
...
- 09-04-SUMMARY.md: all 1 tasks documented, 179 tests green
- STATE.md: position advanced, session updated
- ROADMAP.md: Phase 9 marked 4/4 plans complete
2026-04-01 10:28:48 +02:00
kawa
123f24c57d
feat(09-04): replace plain Remote name input with TextFieldMD3
...
- Add import { TextFieldMD3 } from '../ui/TextFieldMD3'
- Replace label+input+error block with TextFieldMD3 component
- Pass registration={register('name')}, error={errors.name}, required
- Closes COMP-01 gap: all wizard text inputs now use TextFieldMD3 floating label
2026-04-01 10:27:23 +02:00
kawa and Claude Opus 4.6
2bcfe2ef4f
docs(09-04): gap closure plan for BackendSelectionStep TextFieldMD3 migration
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 10:21:54 +02:00
kawa and Claude Opus 4.6
107a259d19
docs(09): create gap closure plan for BackendSelectionStep TextFieldMD3 migration
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 10:19:48 +02:00
kawa and Claude Sonnet 4.6
7d5b3f7e73
docs(09-03): complete MD3 component integration plan — Phase 9 fully complete
...
- Create 09-03-SUMMARY.md: TextFieldMD3 integration, button hierarchy, card elevation
- Update STATE.md: Phase 9 complete, decisions captured, position advanced to Phase 10
- Update ROADMAP.md: Phase 9 marked complete (3/3 plans), progress table updated
- Update REQUIREMENTS.md: COMP-03 marked complete — all Phase 9 requirements satisfied
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 09:52:18 +02:00
kawa
d7a2cad7ea
feat(09-03): apply MD3 button styles and elevation across all wizard steps
...
- BackendCard: rounded-lg -> rounded-xl, added shadow/shadow-md elevation
- OutputBlock: pre rounded -> rounded-xl + shadow-sm; Copy/Download use MD3_BTN_OUTLINED small variant
- BackendSelectionStep: added explicit Next submit button with MD3_BTN_FILLED
- RemoteConfigStep: Back uses MD3_BTN_OUTLINED, Next uses MD3_BTN_FILLED
- DeploymentStep: Back uses MD3_BTN_OUTLINED, Next/Review uses MD3_BTN_FILLED
- ReviewStep: Back uses MD3_BTN_OUTLINED, Download All (ZIP) uses MD3_BTN_FILLED
- All 179 tests pass (zero regressions)
2026-04-01 09:29:52 +02:00
kawa
e560a6af84
feat(09-03): integrate TextFieldMD3 into FieldRenderer and PasswordField
...
- FieldRenderer text-branch now renders TextFieldMD3 with floating label
- PasswordField replaced with TextFieldMD3 + show/hide suffix toggle
- Tooltip button kept outside TextFieldMD3, rendered above it
- Removed placeholder prop from PasswordField (TextFieldMD3 uses placeholder=" " internally)
- All 179 tests pass (getByLabelText queries preserved via htmlFor/id pairing)
2026-04-01 09:27:44 +02:00
kawa and Claude Sonnet 4.6
7a02d483b3
docs(09-01): complete MD3 primitives plan — TextFieldMD3, button constants, DEBT-01 resolved
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 09:25:47 +02:00
kawa
532a994f6b
fix(09-01): resolve DEBT-01 aria-label inconsistency in FieldRenderer and PasswordField
...
- Add FieldRenderer.test.tsx: 4 tests verifying both branches use aria-label consistently
- Fix FieldRenderer.tsx text-branch: replace sr-only span with aria-label={} matching select-branch
- Fix PasswordField.tsx tooltip button: same sr-only -> aria-label fix
- Update RemoteConfigStep.test.tsx: add { selector: 'input' } to getByLabelText queries that
now conflict with tooltip button aria-labels (regression fix)
2026-04-01 09:24:14 +02:00
kawa
0c8403dc79
docs(09-02): complete StepIndicator MD3 rebuild plan
...
- Create 09-02-SUMMARY.md with execution details and decisions
- Update STATE.md position, decisions, session info
- Update ROADMAP.md phase 9 progress (1/3 plans complete)
- Mark COMP-04 complete in REQUIREMENTS.md
2026-04-01 09:20:29 +02:00
kawa
9441dcdae7
feat(09-01): create TextFieldMD3 component with floating label + MD3 button constants
...
- Add TextFieldMD3.tsx: outlined text field with CSS-only floating label via peer/:not(:placeholder-shown)
- Add TextFieldMD3.test.tsx: 9 tests covering htmlFor/id pairing, registration spread, error/helpText/suffix/required slots
- Add src/styles/md3-buttons.ts: MD3_BTN_FILLED, MD3_BTN_OUTLINED, MD3_BTN_TEXT class constants
2026-04-01 09:20:19 +02:00
kawa
b70484423e
feat(09-02): rebuild StepIndicator with MD3 circles and connectors
...
- Replace text breadcrumbs with numbered circles + connector lines
- Completed steps show checkmark, are clickable buttons with label text
- Active step highlighted with border-primary and bg-primary/10
- Future steps muted with border-outline and text-on-surface-container/40
- Connector lines filled bg-primary for completed, bg-outline for future
- All inline style={{}} props removed, no hardcoded color values
- handleStepClick logic preserved: SET_REMOTE_PARAMS({}) before SET_STEP(0)
- All 5 WIZD-03 tests pass without modification
2026-04-01 09:19:06 +02:00
kawa and Claude Opus 4.6
a6c2ec7292
docs(09-md3-components): create phase plan
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 09:14:15 +02:00
kawa and Claude Opus 4.6
80a26e395d
docs(phase-9): add research and validation strategy
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 09:07:15 +02:00
kawa
68fe57f585
docs(phase-09): research MD3 components phase
2026-04-01 09:05:56 +02:00
kawa and Claude Opus 4.6
66f7cf761a
docs(phase-08): complete phase execution — verification passed
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-01 05:27:22 +02:00
kawa and Claude Sonnet 4.6
0352900e53
docs(08-02): complete phase 8 — Task 3 approved, STATE and SUMMARY updated
...
- Mark Task 3 (human-verify checkpoint) as user-approved
- Update SUMMARY.md to reflect all 3 tasks complete
- Update STATE.md: Phase 8 complete, THEME-01/THEME-02 satisfied
- Progress: 50% (2 of 4 v1.2 phases complete)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 05:17:39 +02:00
kawa
18252cbad1
docs(08-02): complete component color migration plan
...
- 08-02-SUMMARY.md: documents mechanical migration of 63 hardcoded color classes to semantic MD3 tokens across 9 components
- STATE.md: updated decisions and session info
- ROADMAP.md: phase 8 marked complete (2/2 plans with summaries)
2026-04-01 05:11:49 +02:00
kawa
1ac32eadc5
feat(08-02): migrate wizard components to semantic MD3 token classes
...
- AzureAuthToggle: border-gray-300 -> border-outline, bg-blue-600/text-white -> bg-primary/text-on-primary, bg-white/text-gray-700/hover:bg-gray-50 -> bg-surface-container/text-on-surface-container/hover:bg-surface
- SftpAuthToggle: same tab/info-tooltip mapping as AzureAuthToggle + text-gray-700 -> text-on-surface-container
- DeploymentStep: Back button border-gray-300/hover:bg-gray-50 -> border-outline/hover:bg-surface; Next bg-blue-600 -> bg-primary/text-on-primary
- OutputBlock: text-gray-700 -> text-on-surface-container, border-gray-300 -> border-outline (x2), bg-gray-900/text-gray-100 -> bg-surface-variant/text-on-surface-variant
- RemoteConfigStep: Back/Next buttons same as DeploymentStep pattern
- ReviewStep: text-green-700/bg-green-50 -> text-success/bg-success/10, bg-yellow-50/border-yellow-300 -> bg-warning/10/border-warning, text-yellow-800/900 -> text-warning, Back/Download buttons semantic tokens
- FieldRenderer (fix): text branch label text-gray-700 -> text-on-surface-container, text branch tooltip bg-blue-50/border-blue-200 -> bg-primary/10/border-primary/30
2026-04-01 05:08:33 +02:00
kawa
4e30f2ee79
feat(08-02): migrate UI primitives to semantic MD3 token classes
...
- BackendCard: border-blue-600/bg-blue-50 -> border-primary/bg-primary/10, border-gray-200/bg-white -> border-outline/bg-surface-container, text-gray-900 -> text-on-surface, text-gray-500 -> text-on-surface-container/70
- FieldRenderer: text-gray-700 -> text-on-surface-container, text-red-500 -> text-error, text-blue-500/700 -> text-primary, bg-blue-50/border-blue-200 -> bg-primary/10/border-primary/30, border-red-500 -> border-error, focus:ring-red-300 -> focus:ring-error/50, border-gray-300 -> border-outline, focus:ring-blue-300 -> focus:ring-primary/50, text-gray-500 -> text-on-surface-container/70, text-red-600 -> text-error
- PasswordField: same mapping as FieldRenderer + text-gray-400/hover:text-gray-700 -> text-on-surface-container/50 hover:text-on-surface-container
2026-04-01 05:04:33 +02:00
kawa
01752a126d
docs(08-01): complete theme foundation plan 01
...
- SUMMARY with MD3 token system, ThemeToggle, FOUC prevention
- STATE updated: decisions, session, 97% progress
- ROADMAP phase 8 marked In Progress (1/2 plans)
- REQUIREMENTS THEME-01, THEME-02 marked complete
2026-04-01 04:51:55 +02:00
kawa
074dc33c86
feat(08-01): implement ThemeToggle component and wire into App.tsx
...
- Add ThemeToggle segmented control (Light/Dark/System) with DOM class toggle
- Use getStored() lazy init and applyTheme() for side-effect-free render
- Stub localStorage and matchMedia in tests for Node v25 compatibility
- Wire ThemeToggle into App.tsx header flex row next to h1
- Change App outer div to bg-surface, h1 to text-on-surface
- All 7 ThemeToggle unit tests passing; 166 total tests green
2026-04-01 04:49:56 +02:00
kawa
fa2c0d963f
test(08-01): add failing tests for ThemeToggle component
...
- Test renders three buttons: Light, Dark, System
- Test default state is System when localStorage is empty
- Test clicking Dark adds .dark class to documentElement
- Test clicking Light removes .dark class from documentElement
- Test clicking Dark writes to localStorage key r2b-theme
- Test active/inactive aria-pressed state
- Test group has aria-label="Theme"
2026-04-01 04:34:01 +02:00
kawa
602755276e
feat(08-01): define MD3 color tokens and flash prevention script
...
- Add @custom-variant dark directive for .dark class-based toggling
- Define 15 CSS custom property token pairs (light/dark) in @layer base
- Map all tokens to Tailwind utility classes via @theme with var() references
- Include warning/success tokens (amber + green) for ReviewStep coverage
- Add body transition with prefers-reduced-motion guard
- Add inline blocking script in index.html head to prevent FOUC
2026-04-01 04:33:31 +02:00
kawa and Claude Opus 4.6
2ea0a1faaf
fix(08): revise plans based on checker feedback
...
- 08-01 Task 2: change type="auto" tdd="true" to type="tdd" (schema consistency)
- 08-02 Task 2: fix inverted on-role tokens in ReviewStep migration
bg-on-success -> bg-success/10, bg-on-warning -> bg-warning/10
- 08-02 mapping comment: same fix for consistency
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-31 18:11:02 +02:00
kawa and Claude Opus 4.6
bee3bad93a
docs(08): create phase plan - 2 plans, 2 waves
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-31 18:07:29 +02:00
kawa
0ef71cdcab
docs(phase-8): add validation strategy
2026-03-31 18:01:58 +02:00
kawa and Claude Sonnet 4.6
abb8320d74
docs(08): research phase — Tailwind v4 @theme tokens, dark mode, FOUC prevention
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-31 18:00:35 +02:00
kawa and Claude Opus 4.6
03aca9c768
docs(state): record phase 8 context session
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-31 17:53:32 +02:00
kawa and Claude Opus 4.6
43246745e7
docs(08): capture phase context
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-31 17:53:23 +02:00
kawa and Claude Opus 4.6
9196d030cc
docs: create milestone v1.2 roadmap (4 phases) — 15 requirements mapped
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-31 17:42:16 +02:00