Mobile: combined fixes test branch (scroll, back-swipe, thread lists, computer switching)#3687
Mobile: combined fixes test branch (scroll, back-swipe, thread lists, computer switching)#3687t3dotgg wants to merge 14 commits into
Conversation
The new-task draft composer (route /new/draft) typed its text at the compact 14pt `composer` size, which felt too small for a full-screen, primary task-description input. Bump it to the iOS-standard 17pt body size via the existing `headline` typography token. Scoped to the new-task screen only; the in-thread ThreadComposer pill keeps its intentional 14pt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…7dad) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…795bc9), resolve import conflict Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…resolve HomeScreen conflicts Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
…s onto the split-view restructure Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…Inset scroll fixes The far-edge/blank-area scroll failures trace to the keyboard-controller version: @legendapp/list's KeyboardAwareLegendList requires >= 1.21.7, and 1.21.12 additionally fixes the non-scrollable KeyboardChatScrollView when blankSpace is large (viewport clamp + Android touch-dispatch workaround). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The drawer gesture's 40px-wide left-edge hitSlop spans the full screen height; its y-position check only ran in onEnd, after the pan had already activated and stolen the touch from the native back-swipe recognizer. Fail the gesture immediately when the touch starts below the header so left-edge back-swipes work everywhere else. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The drawer predates the current navigation (it shipped with the old sheet-based thread routing). On phones its only trigger was an invisible 40px left-edge pan that competed with the native back swipe — the cause of the dead far-left-edge back gesture — and on split view it never rendered at all. Thread switching now goes through Home (compact) or the persistent sidebar (split view), so the drawer, its gesture, its modal component, and the now-orphaned thread-navigation-groups helpers are all removed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Note Unit test generation is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it. Generating unit tests... This may take up to 20 minutes. |
- selectEnvironment: fall back to workspace basename, then title, when the selected project has no repositoryIdentity, so computer switching still follows the same repo instead of resetting to the target's first project. - ThreadListGroupHeader: lift the new-thread button out of the collapse toggle Pressable — nested touchables are invisible to VoiceOver/TalkBack. - homeListItems: compare canShowLess against the group's recency baseline instead of the global page size, so stale groups can collapse back. - HomeScreen: only offer the quick new-thread button on single-project groups; an aggregated group's representative is arbitrary. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ApprovabilityVerdict: Needs human review 1 blocking correctness issue found. This PR introduces multiple runtime behavioral changes (thread recency filtering, environment switching, removed drawer navigation) and has an unresolved review comment about a missing collapse/expand chevron indicator. The scope and the identified UX bug warrant human review. You can customize Macroscope's approvability policy. Learn more. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 3edb72e. Configure here.
|
✅ Created PR with unit tests: #3688 |
- Replace the pencil icon with a larger plus, flush right with full-height padded hit area; drop the fold/unfold chevron (title press still toggles). - Give the collapse toggle back its padded hit area (was reduced when padding moved to the outer View). - Hide the quick new-thread button on synthetic pending-project groups. - Environment picker: fall back to workspace basename/title matching when either side lacks repositoryIdentity, so still-indexing hosts stay visible. - Deep-link/cold-start threads (no back stack) get an explicit header button to reach the threads list. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟡 Medium
ThreadListGroupHeader no longer renders the collapse/expand chevron. The old chevron.right/chevron.down glyph was removed and replaced only by the plus new-thread button (or a blank spacer when onNewThread is absent), so every project header gives no visual indication of its collapsed state and looks non-collapsible. Consider restoring the disclosure chevron inside the toggle Pressable so the expanded/collapsed state is visible again.
🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @apps/mobile/src/features/threads/thread-list-items.tsx around line 95:
`ThreadListGroupHeader` no longer renders the collapse/expand chevron. The old `chevron.right`/`chevron.down` glyph was removed and replaced only by the `plus` new-thread button (or a blank spacer when `onNewThread` is absent), so every project header gives no visual indication of its collapsed state and looks non-collapsible. Consider restoring the disclosure chevron inside the toggle `Pressable` so the expanded/collapsed state is visible again.
There was a problem hiding this comment.
Intentional — the disclosure chevron was removed at the maintainer's request; tapping the project title row toggles collapse. Declining this one.
A pending-task placeholder project has workspaceRoot "" when no cwd was snapshotted; an "" basename rejected every real host, emptying the environment picker for that queued task. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
navigationPathConfig was built in Stack.tsx but never passed to the navigation container, so appLinking had prefixes and no config: a cold-start deep link produced a single-screen stack and back finished the activity (Android back-swipe quit the app). Wire the config with initialRouteName Home so deep-linked threads get a Home route beneath them. Upstream pingdotgg#3687 works around the same symptom with a header Home button; this fixes the cause.

Note
Draft integration branch combining several in-flight mobile fixes for on-device testing. One commit per fix; not intended to merge as-is.
What Changed
All changes scoped to
apps/mobile/(plus one dependency bump):<1minstead of a ticking seconds counter; fixed-width timestamp column to stop layout shifts.react-native-keyboard-controller1.21.6 → 1.21.13 — the app was below@legendapp/list's required 1.21.7; includes upstream fixes for non-scrollable chat scroll views with large blank space. Needs a fresh native build.Checklist
🤖 Generated with Claude Code
Note
Medium Risk
Touches core navigation, keyboard/scroll timing, and new-task environment selection; changes are localized to mobile UI with added tests but need on-device validation.
Overview
Bundles several mobile UX fixes: thread detail no longer uses the slide-out
ThreadNavigationDraweror its left-edge pan (which blocked native back-swipe); compact thread routes without stack history get a Home header button instead.After send,
ThreadDetailScreenwaits forKeyboardController.dismiss()before anchor scroll to avoid a stuck bottom inset;ThreadFeedenables the RN contentInset hit-test workaround so the blank area below the last message is scrollable.react-native-keyboard-controlleris bumped to 1.21.13.Home project groups now default to a 5-day recency window (or the 3 newest threads), with Show more/less tied to that baseline; search still shows full history. Group headers gain a + action (single real project only) that opens
NewTaskDraftpre-scoped to that project.New-task flow filters the machine picker to environments that host the selected repo and remaps the project when switching machines. Composer prompt uses headline typography;
relativeTimeshows<1mwith a fixed-width timestamp column to stop row jitter.Reviewed by Cursor Bugbot for commit cf9a564. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Fix scroll, back-swipe, and thread list behavior in mobile app
KeyboardController.dismissbefore scrolling to anchor (ThreadDetailScreen.tsx)relativeTimeoutput under one minute from'now'/seconds to'<1m'to reduce timestamp layout jitterMacroscope summarized cf9a564.