OnboardingScreen (feature/onboarding/ui) is the first thing a fresh
install shows. KapowRoot renders it whenever the onboarding_seen flag in
ReaderPreferencesRepository (DataStore reader_preferences) is false and no
comic is being opened; a VIEW intent (opening a file from another app) skips
it and goes straight to the reader. The root draws nothing until the flag has
been read, so there is no library-then-onboarding flash.
Three steps in a HorizontalPager, each drawn with Compose primitives (no
image assets):
OpenDocumentTree picker as
the library and feeds LibraryViewModel.onFolderPicked; the note says the
sample comic is already on the shelf and the folder can be chosen later.
Once a folder is set the button turns into a tonal “Folder selected” with a
check icon and the note becomes the folder’s display name
(core/ui/folderDisplayName, the same helper Settings uses); tapping it
picks another folder. The step reads LibraryUiState.folderUri (the
persisted LibraryPreferences value), so a folder chosen earlier is already
confirmed when the onboarding is replayed from Settings.TapZones), chevrons, and the centre tap; the copy also covers
pinch / double-tap zoom and swipe.onboarding_guided_note: works best on clearly drawn panel borders) and a
footnote says these features are still improving and that
“Report a visual glitch” in the reader controls sends the page to us
(onboarding_modes_note).“Skip” (top right) and “Start reading” both call OnboardingViewModel.finish(),
which sets the flag; the screen leaves through the root’s normal fade.
Back moves to the previous step and does nothing on the first one.
Show it again: Settings → About → “Show the introduction again” only resets
the flag (AppSettingsViewModel.onReplayOnboarding); the root reacts and shows
the onboarding, and finishing it returns to the library. There is no separate
navigation path.
Strings live under onboarding_* in values/ and values-es/.