Skip to content

feat: implement onboarding flow and improve ADB error handling - #541

Draft
rteyssandier wants to merge 6 commits into
mainfrom
feat/onboarding
Draft

feat: implement onboarding flow and improve ADB error handling#541
rteyssandier wants to merge 6 commits into
mainfrom
feat/onboarding

Conversation

@rteyssandier

Copy link
Copy Markdown
Contributor

Introduce an initial onboarding wizard to guide users through ADB and SDK configuration. Add system-wide ADB health monitoring, including a new error state in the top bar to alert users of connection issues and provide direct access to the configuration settings.

@rteyssandier rteyssandier self-assigned this Jul 20, 2026
@rteyssandier rteyssandier added the enhancement New feature or request label Jul 20, 2026

@snappdevelopment snappdevelopment left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very cool feature! The new UI looks really nice. I left some comments, because I got stuck a couple times.

@@ -102,7 +121,19 @@ class SettingsViewModel(

fun saveAdbPath() {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To test this, I changed my adb path to an invalid one. I got the red error message in on the settings screen and also in the top app bar. Then I chose my valid path again and clicked the "save" button, but the errors didn't disappear. Only when I clicked on the "test" button, they disappeared.

shape = FloconTheme.shapes.large,
modifier = Modifier
.fillMaxWidth()
.animateContentSize(animationSpec = tween(durationMillis = 300))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The content animates up and down vertically. While it looks pretty nice, it also moves the buttons up and down which is a bit inconvenient. I wonder if it makes more sense to keep it at a fixed height and instead make the content scrollable. Then it wouldn't move around that much.

containerColor = Color.Transparent
) {
Text(
text = "Close",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The close button doesn't work for me. Nothing happens 🤔

It also took me a while to see this button tbh. Maybe it can be more prominent and say "Skip Onboarding" or "Close Onboarding"?

Comment on lines +67 to +69
if (detected && _currentStep.value == OnboardingStep.LaunchApp) {
goToStep(OnboardingStep.Success)
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I got to step 3 my app was already running. I got stuck at that step, because this flow doesn't emit again when the step changes. I think we need to combine the appsState and currentStep flows here to not get stuck.

Comment on lines +133 to +136
for (i in 5 downTo 1) {
_successCountdown.value = i
delay(1000)
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I got stuck here in step 4. The countdown went down to 1, but then nothing happened. I can't see why though.
Maybe it is the same issue as with the "Close" button. Maybe navigationState.menu(NetworkRoutes.Main) doesn't work?

@@ -54,20 +60,31 @@ class MessagesServerDelegate(
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reseting the the error when the scope gets cancelled might be a good idea. With something like this:

launch {
    try {
        awaitCancellation()
    } finally {
        _serverError.value = null
    }
}

Base automatically changed from feat/settings_logs to main July 29, 2026 17:08
Introduces a centralized LogManager to track application events, exposed through a new "Logs" tab in the Settings screen. Additionally, updates the Settings UI to use a side-drawer layout and improves ADB process feedback by logging success and error states.
Reverts the navigation3 library to the stable 1.1.1 release to resolve compatibility or stability issues encountered with the alpha version.
Introduces an `AdbForwardStatus` to track the health of reverse port forwarding in the `SettingsRepository`. Updates the Settings UI to display the current connection status and refines log entries with timestamps for better debugging.
Refactor the appearance settings to use a card-based layout and update the theme selector with improved visual feedback, including hover states and descriptive icons for each theme option.
Introduce an initial onboarding wizard to guide users through ADB and SDK configuration. Add system-wide ADB health monitoring, including a new error state in the top bar to alert users of connection issues and provide direct access to the configuration settings.
The dedicated logs pane is removed to streamline the settings interface.
The About section is refactored to allow for direct access to the onboarding flow.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants