Skip to content

Add first-run onboarding to the TV app - #3

Merged
zorenkonte merged 3 commits into
mainfrom
feature/onboarding
Sep 12, 2026
Merged

zorenkonte merged 3 commits into
mainfrom
feature/onboarding

Conversation

@zorenkonte

@zorenkonte zorenkonte commented Sep 12, 2026 •

Copy link
Copy Markdown
Owner

Summary

The TV app now opens a three-step setup on first launch instead of dropping straight into settings: welcome, overlay permission, test card. The permission step can be skipped, and when it is, every later screen states that TibeePost is unusable until the permission is granted.

Changes

  • Add first-run onboarding flow: new ui/onboarding package (OnboardingScreen, WelcomeStep, PermissionStep, TestStep, DoneStep, UnusableWarning, OnboardingStep), an onboarding_done preference, and MainActivity showing the setup until it is finished. The permission step opens the system page when the TV has one, shows the adb command otherwise, and advances by itself when the permission flips to granted while displayed. The test step posts a real notification through the local server. The overlay-permission panel on the settings screen now reads "TibeePost is unusable until this permission is granted".
  • Let settings relaunch the setup flow: "Run setup again" row at the bottom of the settings list.
  • Document the first-run setup flow: README section describing the steps and the relaunch row.

No version change; the next release tag sets versionName.

Testing

  • ./gradlew assembleDebug testDebugUnitTest lintDebug: builds, 57 tests pass, 0 lint errors.
  • No TV is reachable from the build environment, so the flow was verified by reading the code paths: step transitions, focus moving to the primary button on each step, auto-advance on permission grant, skip and back-to-permission paths, flag persistence across relaunches, and a single shared SettingsState for both screens. Please try the first launch on the CHiQ and report anything the D-pad cannot reach.

Checklist

  • cd tv && ./gradlew testDebugUnitTest assembleDebug passes
  • cd client && npm run lint && npm run build passes (client untouched)
  • No comments added to source files
  • README updated when behavior, the API or setup changed
  • Each commit is one logical change and builds on its own

@zorenkonte
zorenkonte merged commit 8849efb into main Sep 12, 2026
2 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