Repository navigation
Add in-app tutorial screen with a first-launch welcome prompt - #8
Merged
Merged
Conversation
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.
Surfaces the walkthrough from
TUTORIAL.mdinside the app itself, per your ask ("yes or a popup for a new user actually both").Changes
lib/ui/tutorial/tutorial_screen.dart(new) — a 9-step walkthrough (sample data, editing sections, preview, signature, letter placeholders, export/share, LaTeX source, settings, PDF combiner) as icon+title+body cards, matching the app's visual style.lib/models/app_settings.dart— newtutorialSeenbool field (defaultsfalse), persisted like every other setting.lib/ui/home/home_screen.dart:?) in the AppBar opens the tutorial on demand, any time.tutorialSeenis false and settings have loaded), a "Welcome to Resumate" dialog offers Show me (opens the tutorial, marks it seen) or Skip (marks it seen, no tutorial). Never shown again after either choice.test/home_screen_tutorial_test.dart(new, 4 tests) + atutorialSeenround-trip test intest/models_serialization_test.dart.A note on the test file
Getting this test file right took real digging — two environment gotchas, documented in the file's header comment:
dart:iocalls (temp dir, repo.load()) must happen insetUp()/tearDown(), not directly inside atestWidgetsbody — the latter hangs indefinitely in this environment.SettingsStore.update) before navigating toTutorialScreen.flutter_test's fake clock doesn't reliably resume a genuinedart:ioFuture triggered as a side effect of pumping (confirmed even insidetester.runAsync()), so the one assertion that depended on that (navigating toTutorialScreenafter accepting) is intentionally not automated — it's covered by code review of the four-lineifthat gates it, plus manual verification.flutter analyzeclean · all 32 tests pass (28 + 4 new).Manual on-device verification was blocked by two pre-existing, unrelated machine issues I fixed along the way (Flutter's configured
--jdk-dirpointed at a JDK that no longer exists, and a stale Gradle daemon was pinned to it) — after fixing both, the build now hits a separate Kotlin compiler crash inimage_picker_android/pdf_combinerunrelated to this PR's diff, worth aflutter clean+ toolchain look separately.🤖 Generated with Claude Code