fix(mobile): start the guided-tour body under the header and add a back control - #6191
Merged
Merged
Conversation
iscekic
marked this pull request as draft
September 15, 2026 22:59
Contributor
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryThe follow-up commit Files Reviewed (1 file)
Notes
Previous Review Summary (commit 196f02f)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 196f02f)Status: 1 Issue Found | Recommendation: Address before merge Executive SummaryThe tour layout rewrite and the Overview
Issue Details (click to expand)SUGGESTION
Files Reviewed (4 files)
Notes
Reviewed by deepseek-v4.1-flash · Input: 0 · Output: 0 · Cached: 0 Review guidance: REVIEW.md from base branch |
iscekic
force-pushed
the
kwf/guided-tour-ux-7b2e
branch
from
September 15, 2026 23:21
196f02f to
2fbe61f
Compare
iscekic
marked this pull request as ready for review
September 15, 2026 23:32
eshurakov
approved these changes
Sep 16, 2026
iscekic
added this pull request to stack #6230
September 16, 2026 13:41
pandemicsyn
approved these changes
Sep 17, 2026
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.
Changelog for users
Changelog for maintainers
ScrollView; the removedCenteredStatecentring produced the empty band.ForkStepkeeps itsgap-8spacing;TourRemoteStepkeeps its centred column and 240px reserved slot, so no state swap moves the header.toForkcallback returns to the choice; the header shows its back control only on the computer step and calls it.path-dependent BackHandler branch.E2E proof
[e2] Walk the tour: Profile -> Tutorial -> fork, then fork ->
Your computer-> back control -> fork ->Your computer-> Android hardware Back -> fork. — android emulator-5606: scripted scene OK ('SCENE e2 OK'); final digest shows the fork restored after hardware Back with QUICK TOUR header, 'Where would you like to run Kilo?', both cards and 'Skip tour'; the scene asserted the step's empty state ('No computer connected yet', 'Check again'), the 'Go back' control, and both returns to the choice. Visual layout (empty band/spacing) is the visual reviewer's on scripted-shard2.mp4/e2.png.[e11] ux-check: Re-enter 'Your computer' and press Android hardware Back: it returns to the choice instead of dismissing the tour, matching the visible control. — Android emulator-5604 (state.sh STATE HIT signed-in-home, e11-state.log): the replay e11.replay.json ('{"back":true}' preceded by the computer-step asserts '{"assert":"Start your first remote session","wait":12},{"assert":"Go back","wait":8}' and followed by '{"assert":"Where would you like to run Kilo?","wait":10},{"assert":"Skip tour","wait":8}') passed - e11-scene.log records 'SCENE e11 OK' and its post-run digest still shows the tour fork ('android.view.View Where would you like to run Kilo? tappable [147,476][933,550]', 'android.widget.TextView Skip tour tappable [473,2255][606,2301]')…
Recording of the verified flow (waits trimmed)
scripted-shard4.mp4.trim.mp4
[e11] ux-check: Re-enter 'Your computer' and press Android hardware Back: it returns to the choice instead of dismissing the tour, matching the visible control. — Android emulator-5604 (state.sh STATE HIT signed-in-home, e11-state.log): the replay e11.replay.json ('{"back":true}' preceded by the computer-step asserts '{"assert":"Start your first remote session","wait":12},{"assert":"Go back","wait":8}' and followed by '{"assert":"Where would you like to run Kilo?","wait":10},{"assert":"Skip tour","wait":8}') passed - e11-scene.log records 'SCENE e11 OK' and its post-run digest still shows the tour fork ('android.view.View Where would you like to run Kilo? tappable [147,476][933,550]', 'android.widget.TextView Skip tour tappable [473,2255][606,2301]')…
[e11] ux-check: Re-enter 'Your computer' and press Android hardware Back: it returns to the choice instead of dismissing the tour, matching the visible control. — Android emulator-5604 (state.sh STATE HIT signed-in-home, e11-state.log): the replay e11.replay.json ('{"back":true}' preceded by the computer-step asserts '{"assert":"Start your first remote session","wait":12},{"assert":"Go back","wait":8}' and followed by '{"assert":"Where would you like to run Kilo?","wait":10},{"assert":"Skip tour","wait":8}') passed - e11-scene.log records 'SCENE e11 OK' and its post-run digest still shows the tour fork ('android.view.View Where would you like to run Kilo? tappable [147,476][933,550]', 'android.widget.TextView Skip tour tappable [473,2255][606,2301]')…
[e2] Walk the tour: Profile -> Tutorial -> fork, then fork ->
Your computer-> back control -> fork ->Your computer-> Android hardware Back -> fork. — android emulator-5606: scripted scene OK ('SCENE e2 OK'); final digest shows the fork restored after hardware Back with QUICK TOUR header, 'Where would you like to run Kilo?', both cards and 'Skip tour'; the scene asserted the step's empty state ('No computer connected yet', 'Check again'), the 'Go back' control, and both returns to the choice. Visual layout (empty band/spacing) is the visual reviewer's on scripted-shard2.mp4/e2.png.[e10] ux-check: header back control returns to the choice without dismissing or recording — android emulator-5606: live one-call scene ('SCENE e10 OK') from signed-in-home; tapping the header 'Go back' on the computer step returned to the fork with both cards and 'Skip tour' still present, the tour still standing (a recorded decision replaces the tour) and no tour row anywhere in the DB, so nothing was recorded nor dismissed; captures e10-tour-back.mp4/e10.png/e10-frame-*.png left for the visual reviewer.
[e7] ux-check: guided tour opens from Profile → Tutorial with the 'Quick tour' eyebrow and the fork body directly beneath it, and the computer step's back control returns to the fork — SCENE e7 OK (e7-scene.log:1): the run asserted the fork ('Where would you like to run Kilo?', both cards, 'Skip tour'), tapped 'Your computer' and asserted 'Go back', returned by the header control ('Where would you like to run Kilo?' again) and by Android hardware Back, ending on the fork with 'QUICK TOUR tappable [37,149][1045,186]' directly above 'Where would you like to run Kilo?'; the header-to-icon spacing and the sparkle icon are captures in e7.png for the visual reviewer.
E2E proof — log excerpts
/home/igor_kilocode_ai/.local/share/kwf/sections/guided-tour-ux-7b2e/e2e-mobile-app/e1-ok.log/home/igor_kilocode_ai/.local/share/kwf/sections/guided-tour-ux-7b2e/e2e-mobile-app/e3-ok.log/home/igor_kilocode_ai/.local/share/kwf/sections/guided-tour-ux-7b2e/e2e-mobile-app/e2-scene.log/home/igor_kilocode_ai/.local/share/kwf/sections/guided-tour-ux-7b2e/e2e-mobile-app/e2step3-scene.log/home/igor_kilocode_ai/.local/share/kwf/sections/guided-tour-ux-7b2e/e2e-mobile-app/e4loading-digest3.txt/home/igor_kilocode_ai/.local/share/kwf/sections/guided-tour-ux-7b2e/e2e-mobile-app/e4empty-step.txt/home/igor_kilocode_ai/.local/share/kwf/sections/guided-tour-ux-7b2e/e2e-mobile-app/e4cold-run.logOwner request
[e13] ux-check: on the computer step with a connected kilo remote instance, tapping that instance row opens the new-session page with that computer's Run-on target already selected — From the declared state (state-signed-in-home.txt: 'Home, tab, 1 of 3') the replay walked Profile → Tutorial → Your computer, asserted the connected row, tapped it, and the end digest shows 'New session' (e13-scene.log:19) with 'Run on: kwf-guided-tour-ux-7b2e.europe-west4-a.c.kilocode.internal · guided-tour-ux-7b2e' (e13-scene.log:29) while the tour's Skip bar is not among the listed controls; the harness's single MISS was the capture-time screen-anchor re-check (e13-scene.log:15) because my anchor did not cover the New session end state, so e13.replay.json now uses '/HOME|Home, tab, 1 of…
[e11] ux-check: Re-enter 'Your computer' and press Android hardware Back: it returns to the choice instead of dismissing the tour, matching the visible control. — Android emulator-5604 (state.sh STATE HIT signed-in-home, e11-state.log): the replay e11.replay.json ('{"back":true}' preceded by the computer-step asserts '{"assert":"Start your first remote session","wait":12},{"assert":"Go back","wait":8}' and followed by '{"assert":"Where would you like to run Kilo?","wait":10},{"assert":"Skip tour","wait":8}') passed - e11-scene.log records 'SCENE e11 OK' and its post-run digest still shows the tour fork ('android.view.View Where would you like to run Kilo? tappable [147,476][933,550]', 'android.widget.TextView Skip tour tappable [473,2255][606,2301]')…
Follow-ups (not changed here)
Cloud AgentNAVIGATES to the New session page (New session) withRun on: Cloud Agentpreselected and the tour gone (Skip tourabsent) — capture the new-session still; expected android (the scenario anchor covers both the declared start, Home, and the deliberate hand-off end, New session, so the capture re-assert cannot misfire) (no capture cited it)Start your first remote sessionand the back control already in place, then the detected list or empty state fills the same slot — the header and the back control must not move when it settles; expected android (no capture cited it)activeSessions.listInstancesrequest fails, e.g. the web service serving it stalled or the device offline): the step keepsStart your first remote session, showsNetwork error. Please try again.with aRetrycontrol, and the header back control still returns to the fork — no dead end; expected android (no capture cited it)Quick tourin the header and the sparkle,Where would you like to run Kilo?, its subtitle and both path cards starting directly under the header — the still must show no empty band between the header and the card block; expected android (no capture cited it)kilo remote, e12-style relay, so the step lists one detected row): replay the tour, tapYour computer, the detected row showsComputer connected, tapping the row navigates to New session with that computer preselected —Run on: Cloud Agentis absent andSkip touris gone; expected android (no capture cited it)kilo remoteinstance, tap that instance row: the new-session page opens with that computer's Run-on target already selected. (no capture cited it)Open findings (not fixed here)