Skip to content

feat: onboarding - #67

Merged
OffRange merged 25 commits into
v2from
feat/onboarding
Aug 11, 2026
Merged

feat: onboarding#67
OffRange merged 25 commits into
v2from
feat/onboarding

Conversation

@OffRange

Copy link
Copy Markdown
Owner

No description provided.

Copilot AI lite review requested due to automatic review settings August 11, 2026 19:58

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a first-run onboarding flow and adjusts app/navigation and supporting features (TOTP deep-link handling, import flow seeding, and shared UI error modeling) to integrate it cleanly into the existing KeyGo architecture.

Changes:

  • Added a new :feature:onboarding module (screens, ViewModel, navigation graph, DI, strings) and wired it into app startup.
  • Enhanced the backup import wizard to support host-preselected files (for onboarding), improved back/exit handling, and added an “unsupported format” error path.
  • Centralized field-level password errors (UiFieldError) and pending TOTP-import route data (PendingTotpImport) in :core:ui, and updated auth/settings/change-password flows accordingly.

Reviewed changes

Copilot reviewed 64 out of 66 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
settings.gradle.kts Registers the new :feature:onboarding module.
gradle/libs.versions.toml Adds SplashScreen + Navigation testing dependencies/versions.
feature/settings/src/test/kotlin/de/davis/keygo/feature/settings/presentation/changepassword/ChangePasswordViewModelTest.kt Updates tests to the new UiFieldError-based error model.
feature/settings/src/main/res/values/strings.xml Removes change-password-specific error strings (now centralized).
feature/settings/src/main/kotlin/de/davis/keygo/feature/settings/presentation/changepassword/ChangePasswordViewModel.kt Switches to UiFieldError and nullable errors in state.
feature/settings/src/main/kotlin/de/davis/keygo/feature/settings/presentation/changepassword/ChangePasswordState.kt Replaces local FieldError with shared UiFieldError?.
feature/settings/src/main/kotlin/de/davis/keygo/feature/settings/presentation/changepassword/ChangePasswordScreen.kt Renders errors via UiFieldError.error instead of local string resources.
feature/onboarding/src/test/kotlin/de/davis/keygo/feature/onboarding/presentation/model/OnboardingStepTest.kt Adds unit tests for onboarding step progression/back behavior.
feature/onboarding/src/test/kotlin/de/davis/keygo/feature/onboarding/presentation/model/AutofillSetupTest.kt Adds unit tests for autofill-step action/step-list logic.
feature/onboarding/src/main/res/values/strings.xml Adds onboarding UI copy.
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/WelcomeContent.kt Implements welcome step UI.
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/OnboardingViewModel.kt Adds onboarding orchestration, step skipping, and create-access flow.
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/OnboardingScreen.kt Hosts onboarding UI, biometric/autofill interactions, import wizard handoff.
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/OnboardingGraph.kt Adds onboarding navigation route + graph entry.
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/model/OnboardingUiState.kt Defines onboarding UI state models (including autofill setup state).
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/model/OnboardingStepProgress.kt Adds progress model for step indicator.
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/model/OnboardingStep.kt Defines step ordering and skip-aware navigation.
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/model/AutofillSetup.kt Implements autofill-setup step list/status logic.
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/MainPasswordContent.kt Implements main-password setup step UI.
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/ImportVaultContent.kt Implements import step UI wrapper for the backup chooser card.
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/EnableBiometricsContent.kt Implements biometrics step UI.
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/EnableAutofillContent.kt Implements autofill setup step UI.
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/component/OnboardingScaffold.kt Adds shared onboarding scaffold + icon container components.
feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/di/FeatureOnboardingModule.kt Adds Koin module for onboarding feature scanning.
feature/onboarding/build.gradle.kts Adds onboarding module Gradle configuration and dependencies.
feature/backup/src/testFixtures/kotlin/de/davis/keygo/feature/backup/data/FakeBackupDestinationResolver.kt Improves fake resolver to track calls and support gating for concurrency tests.
feature/backup/src/test/kotlin/de/davis/keygo/feature/backup/presentation/import/model/ImportWizardUiStateTest.kt Adds tests for back-enabled behavior across phases.
feature/backup/src/test/kotlin/de/davis/keygo/feature/backup/presentation/import/model/ImportWizardStepTest.kt Expands tests for lane/step behavior (host-owned file step).
feature/backup/src/test/kotlin/de/davis/keygo/feature/backup/presentation/import/ImportWizardViewModelTest.kt Adds tests for seeded-file flows and unsupported format handling.
feature/backup/src/main/res/values/strings.xml Adds user-facing unsupported-format import error string.
feature/backup/src/main/kotlin/de/davis/keygo/feature/backup/presentation/import/model/ImportWizardUiState.kt Adds fileChosenByHost and derives steps/format/backEnabled via getters.
feature/backup/src/main/kotlin/de/davis/keygo/feature/backup/presentation/import/model/ImportWizardStep.kt Adds lane helpers + skip-file-step logic and previousStep().
feature/backup/src/main/kotlin/de/davis/keygo/feature/backup/presentation/import/model/ImportWizardEvent.kt Adds Exit event for host-owned back/exit flow.
feature/backup/src/main/kotlin/de/davis/keygo/feature/backup/presentation/import/ImportWizardViewModel.kt Adds seeding, exit/reset behavior, and unsupported-format error handling.
feature/backup/src/main/kotlin/de/davis/keygo/feature/backup/presentation/import/ImportWizardScreen.kt Adds preselected-file seeding and host-owned back handling.
feature/backup/src/main/kotlin/de/davis/keygo/feature/backup/presentation/import/ImportWizardContent.kt Adds onFinished hook so hosts can control “Done” behavior.
feature/backup/src/main/kotlin/de/davis/keygo/feature/backup/presentation/import/ImportPhaseContent.kt Renders unsupported-format error message.
feature/backup/src/main/kotlin/de/davis/keygo/feature/backup/presentation/import/ImportFilePicker.kt Extracts and reuses file picker logic with shared MIME type list.
feature/backup/src/main/kotlin/de/davis/keygo/feature/backup/presentation/component/BackupFileChooser.kt Exposes chooser card publicly for onboarding import step.
feature/backup/src/main/kotlin/de/davis/keygo/feature/backup/domain/model/ImportError.kt Adds UnsupportedFormat error variant.
feature/backup/src/main/kotlin/de/davis/keygo/feature/backup/domain/model/FileFormat.kt Adds fromFileName() helper for extension-based format detection.
feature/autofill/src/testFixtures/kotlin/de/davis/keygo/core/feature/autofill/FakeChromeAutofillRepository.kt Updates fake for new Chrome availability/enabled API.
feature/autofill/src/main/kotlin/de/davis/keygo/feature/autofill/domain/repository/ChromeAutofillRepository.kt Makes Chrome state reads suspendable and adds isAvailable().
feature/autofill/src/main/kotlin/de/davis/keygo/feature/autofill/data/repository/ChromeAutofillRepositoryImpl.kt Moves provider query to IO + adds availability detection + logging.
feature/auth/src/main/res/values/strings.xml Removes password error strings (now centralized) and adds pending-TOTP subtitle.
feature/auth/src/main/kotlin/de/davis/keygo/feature/auth/presentation/RouteDestination.kt Refactors pending TOTP import into PendingTotpImport model.
feature/auth/src/main/kotlin/de/davis/keygo/feature/auth/presentation/model/UIPasswordError.kt Removes local password error type in favor of UiFieldError.
feature/auth/src/main/kotlin/de/davis/keygo/feature/auth/presentation/model/AuthState.kt Removes CreateAccess flow and adopts UiFieldError? for password errors.
feature/auth/src/main/kotlin/de/davis/keygo/feature/auth/presentation/model/AuthEvent.kt Removes unused/legacy auth event model.
feature/auth/src/main/kotlin/de/davis/keygo/feature/auth/presentation/AuthViewModel.kt Removes CreateAccess path, adds pending-TOTP flag, updates error wiring.
feature/auth/src/main/kotlin/de/davis/keygo/feature/auth/presentation/AuthScreen.kt Passes pending-TOTP flag through to UI.
feature/auth/src/main/kotlin/de/davis/keygo/feature/auth/presentation/AuthGraph.kt Removes deep link handling (moved to redirect destination).
feature/auth/src/main/kotlin/de/davis/keygo/feature/auth/presentation/AuthContent.kt Uses UiFieldError rendering and shows pending-TOTP subtitle.
core/ui/src/test/kotlin/de/davis/keygo/core/ui/model/PendingTotpImportTest.kt Adds tests for pending TOTP-import URI construction.
core/ui/src/main/res/values/strings.xml Centralizes password error strings for reuse.
core/ui/src/main/kotlin/de/davis/keygo/core/ui/model/UiFieldError.kt Introduces shared field error model + string mapping.
core/ui/src/main/kotlin/de/davis/keygo/core/ui/model/PendingTotpImport.kt Adds serializable model for passing pending TOTP import through nav.
core/ui/build.gradle.kts Adds Kotlin serialization plugin for PendingTotpImport.
app/src/test/kotlin/de/davis/keygo/app/presentation/TotpImportNavGraphTest.kt Adds Robolectric/nav tests for TOTP deep link redirect routing.
app/src/main/kotlin/de/davis/keygo/app/presentation/TotpImportRedirect.kt Adds deep link redirect destination that routes to Auth/Onboarding.
app/src/main/kotlin/de/davis/keygo/app/presentation/MainActivity.kt Adds SplashScreen + access-check gating + onboarding start destination.
app/src/main/kotlin/de/davis/keygo/app/presentation/AppViewModel.kt Adds startup access/migration detection for choosing start graph.
app/src/main/kotlin/de/davis/keygo/app/di/AppModule.kt Enables component scanning for app-level Koin annotations.
app/build.gradle.kts Adds onboarding module + splashscreen + nav-testing/robolectric deps.
.gitignore Ignores .worktrees/.
Suppressed comments (1)

feature/onboarding/src/main/kotlin/de/davis/keygo/feature/onboarding/presentation/OnboardingScreen.kt:341

  • Typo in helper name: isOutlinedButonCandidate should be isOutlinedButtonCandidate (Button).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@OffRange
OffRange merged commit 5bf02d0 into v2 Aug 11, 2026
9 checks passed
@OffRange
OffRange deleted the feat/onboarding branch August 11, 2026 21:31
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.

2 participants