feat: Add onboarding flow#199
Merged
Merged
Conversation
…rect' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a first-run onboarding experience to the SvelteKit app, including an interactive welcome modal and an optional guided tour, while also introducing a client-side redirect for legacy hash-based URLs.
Changes:
- Introduces
WelcomeScreen.svelteand wires it into the root layout to display a multi-step onboarding modal. - Adds a
driver.js-based guided tour (welcome-tour.ts) plus global CSS theming overrides for the popovers. - Implements
legacy-hash-redirect.tsand hooks it intohooks.client.tsstartup to translate old#/...URLs to the new route structure; addsexpiring-flagsfor localStorage-backed one-time/expiry gating.
Reviewed changes
Copilot reviewed 8 out of 9 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| src/routes/WelcomeScreen.svelte | New multi-step welcome modal with optional “start tour” action gated by login state. |
| src/routes/+layout.svelte | Mounts the welcome screen at the app root so it can display globally. |
| src/lib/utils/legacy-hash-redirect.ts | Adds mapping + redirect logic for legacy hash routes. |
| src/lib/tour/welcome-tour.ts | Implements the driver.js welcome tour flow and step definitions. |
| src/lib/state/expiring-flags.ts | Adds expiring localStorage-backed flags used to gate onboarding/tour. |
| src/hooks.client.ts | Runs legacy redirect and prunes expired flags during client init. |
| src/app.css | Adds a dark-theme override for driver.js popovers/buttons. |
| package.json | Adds driver.js dependency. |
| pnpm-lock.yaml | Locks driver.js dependency version and integrity metadata. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Deploying openshockapp with
|
| Latest commit: |
58ecf42
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://32b0bb6b.openshockapp.pages.dev |
| Branch Preview URL: | https://feat-onboarding-flow.openshockapp.pages.dev |
…ed correctly - Enter key in WelcomeScreen no longer advances slides when the focused element is a button, link, or other interactive element, preventing double-fire with onClick handlers. - welcome-tour nextBtnText changed from 'Skip' to 'Next'; action steps already hide the Next button via showButtons, so 'Skip' was only ever appearing on info steps where it was semantically wrong. - Add unit tests for mapLegacyHashRoute and redirectLegacyHashRoute.
# Conflicts: # package.json
Keep both driver.js and temporal-polyfill deps; run both redirectLegacyHashRoute and ensureTemporal in init hook.
… bigger close button
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces a new interactive welcome tour for onboarding users.
It also adds the
driver.jslibrary for the tour, applies custom theming to match the app's dark UI, and ensures users with old-style hash URLs are redirected to the new route structure.