Skip to content

feat(ui): complete setup wizard flows through review + launch (#53/#54/#55/#56)#37

Merged
lan17 merged 12 commits intomainfrom
lev/wizard-5
Feb 27, 2026
Merged

feat(ui): complete setup wizard flows through review + launch (#53/#54/#55/#56)#37
lan17 merged 12 commits intomainfrom
lev/wizard-5

Conversation

@lan17
Copy link
Copy Markdown
Owner

@lan17 lan17 commented Feb 27, 2026

Summary

  • implements setup wizard Storage step with reusable storage settings module (ui/src/features/settings/storage/)
  • implements setup wizard Detection step with reusable filter/VLM settings modules (ui/src/features/settings/detection/)
  • implements setup wizard Notifications step with reusable notifier + alert policy modules:
    • ui/src/features/settings/notifiers/ (backend registry + MQTT/SendGrid forms + typed state/validation)
    • ui/src/features/settings/alerts/AlertPolicyForm.tsx
  • reuses shared setup probe UX via TestConnectionButton for backend test-connection actions
  • wires storage/detection/notifications/review steps into wizard state/rendering in ui/src/features/setup/SetupPage.tsx
  • adds draft parsing support for wizard state restoration in ui/src/features/setup/stepDrafts.ts
  • follow-up hardening for notifications UX/maintainability:
    • clears stale notifier test results on config change/toggle
    • centralizes enabled-notifier and risk-level constants
    • replaces camera-specific checkbox utility class with generic form-checkbox-field
  • aligns notification policy UX with backend threshold semantics:
    • changes alert policy form state to minRiskLevel
    • switches UI from multi-select risk checkboxes to single minimum-risk selector
    • centralizes canonical alert_policy payload entry builder
    • simplifies notification-step state update flow by removing nested state setter callbacks
  • completes Review & Launch wizard step for ticket #56:
    • extends UI API codegen and generated SDK support for /api/v1/setup/finalize
    • adds finalize parsing/client path in ui/src/api/client.ts and ui/src/api/parsing.ts
    • adds useFinalizeMutation hook and review payload/summary helpers in ui/src/features/setup/review.ts
    • adds ReviewStep, ReviewSummaryCard, and LaunchProgress components with:
      • per-section summary cards + edit-jump actions
      • launch action (POST /api/v1/setup/finalize) and startup polling via setup status
      • retry path on launch failure and dashboard handoff on success
    • extends wizard shell/action model to allow review step to own launch CTA (showNext + goToStep)

Tests

  • added behavioral tests (Given/When/Then style) for:
    • storage settings + storage wizard step
    • detection settings + detection wizard step
    • notifier backend forms, notifier config form, alert policy form, notification wizard step
    • setup draft parsing and wizard routing/rendering integration
    • notification validation rendering, initialData re-hydration, mqtt port parsing, and stale result reset behavior
    • alert policy threshold form behavior and canonical alert-policy payload helper behavior
    • review/launch flow:
      • API client finalize contract parsing (ui/src/api/client.test.ts)
      • review helper payload/summary composition (ui/src/features/setup/review.test.ts)
      • launch progress state rendering (ui/src/features/setup/steps/LaunchProgress.test.tsx)
      • review step edit/launch/retry/dashboard behaviors (ui/src/features/setup/steps/ReviewStep.test.tsx)
      • wizard shell footer-next suppression and direct step-jump behavior (useWizardState / SetupWizardShell tests)
  • validation run: make ui-check (pass)

Tickets

Follow-up Scope Added In This Branch

  • implements ticket #76 (setup finalize dry-run precheck + cancel-safe launch polling):
    • backend: FinalizeRequest.validate_only, service-layer validate-only path that performs full merge+validation without config write/restart
    • ui: review step now executes two-phase finalize (validate_only=true precheck, then real finalize), and abort-safe polling cancellation on unmount/navigation
    • regenerated OpenAPI/schema artifacts for the updated finalize contract
  • validation run: make check and make ui-check (pass)

@codecov
Copy link
Copy Markdown

codecov Bot commented Feb 27, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.85%. Comparing base (765b978) to head (d51d09b).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #37   +/-   ##
=======================================
  Coverage   82.85%   82.85%           
=======================================
  Files         107      107           
  Lines        9658     9661    +3     
=======================================
+ Hits         8002     8005    +3     
  Misses       1656     1656           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@lan17 lan17 changed the title feat(ui): add storage wizard step and shared storage forms (#53) feat(ui): add setup storage, detection, and notifications steps (#53/#54/#55) Feb 27, 2026
@lan17 lan17 changed the title feat(ui): add setup storage, detection, and notifications steps (#53/#54/#55) feat(ui): add setup config steps + finalize API scaffolding (#53/#54/#55/#56) Feb 27, 2026
@lan17 lan17 changed the title feat(ui): add setup config steps + finalize API scaffolding (#53/#54/#55/#56) feat(ui): complete setup wizard flows through review + launch (#53/#54/#55/#56) Feb 27, 2026
@lan17 lan17 merged commit 1386d19 into main Feb 27, 2026
4 checks passed
@lan17 lan17 deleted the lev/wizard-5 branch February 27, 2026 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant