Repository navigation
fix(mobile): match the new session run-location hint and sheet to the target - #7909
Conversation
… target The local-run helper text under the Run-on selector rendered for every target, including the Cloud Agent default, where the instruction to run kilo remote on your own computer does not apply. It now renders only when the selected target is a computer or CLI instance. The run-location sheet's bottom action could sit under the Android gesture navigation bar: the sheet rides the full detent over the bar, but the list padded by the raw bottom inset alone, which is zero on devices that report no inset. The sheet now clears the bar with the app's non-tab detail floor, so the refresh action stays visible and tappable on every device.
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryBoth targeted mobile fixes are correct and covered: the run-location helper is now gated on a remote target, and the picker sheet pads with Files Reviewed (4 files)
Reviewed by deepseek-v4.1-flash · Input: 70.8K · Output: 7.6K · Cached: 455.6K Review guidance: REVIEW.md from base branch |
|
bot: Verified the run-location flow on the Android emulator (gesture navigation,
Attached captures are from that run. |
…-target-hint-sheet # Conflicts: # apps/mobile/src/app/(app)/agent-chat/instance-picker.mounted.test.tsx
…-target-hint-sheet
|
bot: Re-verified the run-location flow on the merged head (
Unit coverage re-run on the merged tree: Captures are from a throwaway account on the local stack. |
|
bot: Screenshots from the Android emulator run described in the pull request body: local dev stack, throwaway test account, gesture navigation (bar region
|






Change
Two fixes in the new-session run-location flow:
The local-run helper text now matches the selected target (
apps/mobile/src/components/agents/new-session-configure-form.tsx). The sentence describing how to run a session on your own computer rendered under the Run-on selector for every target, including the Cloud Agent default, where it does not apply. It now renders only when the selected target is a computer or CLI instance.The run-location sheet clears the Android navigation bar (
apps/mobile/src/app/(app)/agent-chat/instance-picker.tsx). The sheet rides the full detent over the gesture bar, but its list padded by the raw bottom inset alone, which is zero on devices that report no inset, leaving the sheet's bottom refresh action flush against the screen bottom with its tap target covered. The sheet now uses the app's non-tab detail floor (useDetailScreenBottomPadding), keeping the action visible and tappable on every device.End-to-end evidence (Android emulator, gesture navigation,
navigation_mode=2)Run on this work VM: Android emulator
omp36(1080×2400, gesture navigation), the local dev stack (Next.js + Metro, local Postgres), and the dev client built for this branch's native fingerprint. The app loaded a fresh full bundle from Metro —Android Bundled apps/mobile/index.js (8263 modules)— and was signed in as a throwaway local test account.Both findings were exercised on the same screens, in this order:
[36,1477][1044,1514].Run onselector to theRepositorysection, and no Folder field is rendered.No CLI instances connected). The sheet's whole surface sits over the gesture bar (the bar region is[0,2337][1080,2400]). The Refresh action reportsbounds=[371,2135][707,2250],clickable=true,enabled=true: its bottom edge is 2250, i.e. 87 px above the gesture-bar top and clear of the bar's tap surface. Tapping it at the reported centre (539, 2192) reached the control and issued the request — the dev server loggedPOST /api/trpc/activeSessions.listInstances?batch=1 200immediately after the tap.Captures for steps 1–3 are attached to the bot comment on this pull request.
Tests
new-session-configure-form.test.ts: the helper sentence renders for a remote target and never for the cloud target.instance-picker.mounted.test.tsx: the sheet's list bottom padding is the detail floor (32 with a zero reported inset, 50 with a 34px inset) instead of the raw inset.Both files pass on this VM (45 tests, 2 files), and
oxlintreports 0 warnings and 0 errors on the two changed source files.Proxy answers
The owner's proxy gave these answers in the owner's place.
Answer: Hide unless isRemote (Recommended)
Confidence: 0.88 · Precedent: Speed and least work: do the least amount of work possible, with no drop in quality; the brief specifies hiding the hint for Cloud Agent.
Answer: Detail-screen floor (Recommended)
Confidence: 0.80 · Precedent: UX and design quality: clearance from rounded corners and system elements and fix the whole class of each defect; fix the root cause and the class.