Skip to content

Fix onboarding skipping profile and model steps#151

Merged
FuJacob merged 1 commit into
mainfrom
fix/onboarding-skip-steps
May 21, 2026
Merged

Fix onboarding skipping profile and model steps#151
FuJacob merged 1 commit into
mainfrom
fix/onboarding-skip-steps

Conversation

@FuJacob

@FuJacob FuJacob commented May 21, 2026

Copy link
Copy Markdown
Owner

Summary

  • Remove legacy hasShownWelcomeWindowonboardingCompleted migration that caused the app to skip profile and model selection steps
  • The legacy key was set at presentation time (not completion), so migrating it treated incomplete onboarding as done
  • Now only the new onboardingCompleted key (set when user taps "Start Using tabby") controls whether onboarding shows
  • Upgrading users will see the wizard once more — better than silently dropping steps

Test plan

  • Fresh install (clear UserDefaults): full wizard flows through all 5 steps
  • Grant permission mid-wizard → restart → wizard reappears from step 1, all steps accessible
  • Complete wizard → relaunch → no wizard, no reminder (if permissions granted)
  • Complete wizard → revoke permission → relaunch → permission reminder only

🤖 Generated with Claude Code

Greptile Summary

This PR removes the one-time migration that copied hasShownWelcomeWindow into onboardingCompleted, because that legacy key was written at window-presentation time rather than at wizard completion — causing the profile and model-selection steps to be silently skipped for affected users.

  • isOnboardingCompleted is simplified to a single UserDefaults read of onboardingCompleted, with an inline doc comment explaining why the legacy key is deliberately not migrated.
  • The legacyHasShownWelcomeDefaultsKey constant is removed entirely; upgrading users who only had the legacy key set will see the onboarding wizard once more, which is the correct trade-off.

Confidence Score: 5/5

Safe to merge — the change is a focused, well-documented removal of a single faulty migration path with no risk of data loss or new regressions.

The diff is a net deletion of 10 lines and a rewrite of one computed property. The new implementation is simpler and correct: only users who genuinely completed the wizard (had onboardingCompleted written at the 'Start Using tabby' step) will skip the wizard on relaunch. The behaviour change for users who only had the legacy key is intentional and clearly documented. No other logic is touched.

No files require special attention.

Important Files Changed

Filename Overview
tabby/App/Coordinators/WelcomeCoordinator.swift Removes the legacy hasShownWelcomeWindow → onboardingCompleted migration; isOnboardingCompleted now reads only the new key, with a clear inline rationale for skipping the migration.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[App Launch] --> B{isOnboardingCompleted?\nonboardingCompleted key}
    B -- true --> C{presentPermissionReminderIfNeeded}
    B -- false --> D[showWelcome wizard]
    C -- permissions granted --> E[No window shown]
    C -- permissions missing --> F[showPermissionReminder]
    D --> G[User completes wizard\n'Start Using tabby']
    G --> H[completeOnboarding\nsets onboardingCompleted = true\nin UserDefaults]
    H --> I[Close welcome window]

    style D fill:#f9a825,color:#000
    style H fill:#2e7d32,color:#fff
Loading

Reviews (1): Last reviewed commit: "Fix onboarding skipping steps due to leg..." | Re-trigger Greptile

The legacy hasShownWelcomeWindow key was set at presentation time, not
completion. Migrating it to onboardingCompleted caused the app to skip
profile and model selection for both upgrading users and fresh installs
where the old key lingered. Remove the migration so only the new
completion-time flag controls whether onboarding is shown.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@FuJacob FuJacob merged commit 439f505 into main May 21, 2026
2 of 3 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.

1 participant