Skip to content

feat(onboarding): calmer onboarding + local AI download snackbar#134

Merged
senamakel merged 3 commits into
mainfrom
feat/calmer-onboarding-snackbar
Mar 31, 2026
Merged

feat(onboarding): calmer onboarding + local AI download snackbar#134
senamakel merged 3 commits into
mainfrom
feat/calmer-onboarding-snackbar

Conversation

@graycyrus
Copy link
Copy Markdown
Contributor

Summary

  • Durable onboarding deferral: "Set up later" persists across sessions via onboardingDeferredByUser in Redux persist — no more full-screen overlay nagging on every launch
  • Non-intrusive resume path: SetupBanner shows a subtle top banner ("Finish setting up OpenHuman") when onboarding is deferred, with "Continue Setup" to re-open the flow
  • Fire-and-forget local AI download: LocalAIStep triggers downloads and immediately advances; blocking progress UI removed from the onboarding wizard
  • Persistent download snackbar: LocalAIDownloadSnackbar (bottom-left, z-[9998]) shows download progress, speed, and ETA — collapsible to a pill, dismiss hides UI but does NOT cancel download
  • Shared helpers: Extracted formatBytes, formatEta, progressFromStatus to localAiHelpers.ts (previously duplicated in 3-4 files)
  • Vitest coverage: Tests for overlay gating logic, SetupBanner render/dismiss/resume, and snackbar render conditions

Files changed

Modified (7)

  • app/src/store/authSlice.ts — new onboardingDeferredByUser persisted field + reducer
  • app/src/store/authSelectors.ts — new selectOnboardingDeferred selector
  • app/src/store/index.ts — added to persist whitelist
  • app/src/components/OnboardingOverlay.tsx — respects deferred state, passes onDefer callback
  • app/src/pages/onboarding/Onboarding.tsx — accepts onDefer prop, renders "Set up later"
  • app/src/pages/onboarding/steps/LocalAIStep.tsx — fire-and-forget download, no blocking UI
  • app/src/App.tsx — mounts SetupBanner + LocalAIDownloadSnackbar

New (6)

  • app/src/components/SetupBanner.tsx — non-intrusive setup reminder banner
  • app/src/components/LocalAIDownloadSnackbar.tsx — persistent download progress snackbar
  • app/src/utils/localAiHelpers.ts — shared formatting helpers
  • app/src/components/__tests__/OnboardingOverlay.test.tsx
  • app/src/components/__tests__/SetupBanner.test.tsx
  • app/src/components/__tests__/LocalAIDownloadSnackbar.test.tsx

Test plan

  • yarn typecheck passes
  • yarn lint passes
  • yarn format:check passes
  • yarn build succeeds
  • yarn tauri dev launches, core connects
  • Manual: clear isOnboardedByUser in localStorage, reload — overlay appears with "Set up later"
  • Manual: click "Set up later", reload — overlay stays hidden, SetupBanner visible
  • Manual: click "Continue Setup" on banner — overlay reappears
  • Manual: go through onboarding, click "Download Local Models" — advances immediately, snackbar appears bottom-left
  • Manual: dismiss snackbar — download continues (verify in Settings > Local AI)

Closes #101

…download snackbar

- Add persisted `onboardingDeferredByUser` state so "Set up later" survives
  across sessions (no more overlay nagging on every launch)
- Add SetupBanner for non-intrusive "Finish setting up" reminder with resume path
- Convert LocalAIStep to fire-and-forget download, advancing immediately
- Add LocalAIDownloadSnackbar (bottom-left, collapsible) for persistent download
  progress that doesn't block the main chrome
- Extract shared helpers (formatBytes, formatEta, progressFromStatus) to localAiHelpers.ts
- Add Vitest tests for overlay gating, banner, and snackbar

Closes #101
…orts

The OnboardingOverlay test mocked utils/config with only DEV_FORCE_ONBOARDING,
which shadowed the global mock from setup.ts and dropped IS_DEV — causing
store/index.ts to fail on CI.
@graycyrus graycyrus requested a review from senamakel March 31, 2026 19:20
@senamakel senamakel merged commit 8486a3b into main Mar 31, 2026
16 of 20 checks passed
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.

[Feature] Calmer onboarding (show when needed) + local AI download as side snackbar

2 participants