fix(mobile): Android commit sheet scrolls to the commit buttons#28272

merged1
main
GitHub fork: issue-watch/28259
opened7d agobySshivam
View on GitHubTwo-way sync enabledPR last imported 6d ago

Closes https://github.com/pingdotgg/t3code/issues/28259

What's fixed: On Android, the commit sheet's header button captured the sheet's scrolling gestures, leaving the commit actions unreachable with a long changed-files list. Render the scrollable content before the header in native order and reverse the Android column to keep the header at the top, following the existing sheet pattern. The iOS layout and commit handlers stay unchanged.

Verification

All PR-head captures below use 0d4aa9ec6b5785a25693e9d83d871d3908aa4bbc. Android runs on the physical POCO F4 with Android 14 on corex. iOS runs on shiv's Simlock iPhone 18 Pro simulator with iOS 27.0, loading the PR checkout from Metro on corex and the same isolated fixture backend. The iOS development client was built on shiv with vp run mobile:install ios --prepare, native fingerprint 887f84d7e8ee2e1063658bf884c9d17f60d6cbb3; the PR changes only JavaScript.

Android 14, POCO F4, before: upward swipes leave the 13-file list stuck with both commit actions off-screen.

Main 15fe2832727893cbdd2214383f9f971474849695, Metro from a clean checkout on corex. Four upward swipes with Show taps enabled leave the same files fixed in place and both actions unreachable.

https://github.com/user-attachments/assets/3ee6554e-fa86-4b47-a819-221de038a4da

Android 14, POCO F4, after: opening the same 13-file sheet and swiping reaches both enabled commit actions.

https://github.com/user-attachments/assets/eb00b0f6-2fd2-4766-92cc-bf7553214948

Android 14, POCO F4, after: a two-file list still fits with the header and both actions visible.

iOS 27.0, iPhone 18 Pro simulator, PR head: open Commit changes with 13 changed files, then scroll to both enabled actions.

https://github.com/user-attachments/assets/63d3155e-4402-47bf-b333-17758da7b805

iOS 27.0, iPhone 18 Pro simulator, PR head: the two-file sheet fits with its header and both enabled actions visible without scrolling.

https://github.com/user-attachments/assets/3e6498e3-44ee-4891-ac50-a3813ff776ae

Physical Android commit execution

On PR head 0d4aa9ec6b5785a25693e9d83d871d3908aa4bbc, the POCO F4 on Android 14 loaded Metro from this checkout on corex, with native fingerprint 541b3da3e5f7b2ad504aaa6303bdcea8d7194d22. A fresh real T3 server used an isolated home and two disposable Git repositories. Projects and idle threads were created through the server's normal APIs. No mocked Git responses or projection fixtures were used. USB port forwarding connected the phone to Metro and the backend.

Each recording opens the overflowing 13-file Commit changes sheet, enters an explicit message, swipes upward to both actions, executes the named action, and shows the clean repository state.

Commit changes on the existing branch:

https://github.com/user-attachments/assets/e74b7ded-3070-4540-90c1-01d83c5bcd82

Commit on a new branch:

https://github.com/user-attachments/assets/47783fb7-e0ca-4cec-8435-f7a300b76145

Independent Git checks after the phone actions passed:

text
1Existing-branch action:
2 branch: test-scroll
3 commit: f4535b88b856af950042a3ecc3a94135fff65fbe
4 subject: Verify F4 existing branch commit
5 13 files changed, 13 insertions(+), 13 deletions(-)
6 working tree: clean
7New-branch action:
8 branch: feature/verify-f4-new-branch-commit
9 commit: af71cd432f117a9895d1299ee804ae5e4cd0789c
10 subject: Verify F4 new branch commit
11 13 files changed, 13 insertions(+), 13 deletions(-)
12 working tree: clean
13 original test-scroll remains: 20bbccaca72f97b6d809a71955e271df77696132

Android automatic commit message

Physical POCO F4, Android 14, PR head 0d4aa9ec6b5785a25693e9d83d871d3908aa4bbc, same native fingerprint as above. Metro and a fresh isolated real server ran on corex. A disposable Git repository had 13 modified files, and its project and idle thread were created through normal server APIs.

The recording opens the overflowing sheet, leaves the commit-message field empty, swipes to the actions, and presses Commit changes. The UI shows Generating commit message..., then Committed 6c8c032: Edit lines across fixture files, with branch test-scroll and Clean · 1 ahead. The real Codex text-generation path used the server's default gpt-6-luna model with low reasoning effort. No provider or Git mocks were used.

https://github.com/user-attachments/assets/0d8be4d3-e07f-44e2-b7e5-e828389186b5

text
1git log -1: 6c8c0327b525ff775ee6d972d90e0e26e8e54ed4
2subject: Edit lines across fixture files
3branch: test-scroll
413 files changed, 13 insertions(+), 13 deletions(-)
5git status --porcelain=v1: empty

The required CI checks are green for this head. This pass changes evidence only. iOS commit execution, a physical iPhone, and LAN/remote/tunnel connections remain unverified by these passes. The requested iOS execution follow-up is blocked because the Simlock iPhone 18 Pro and Pro Max both failed to boot. Existing iOS long-list and short-list layout evidence above remains valid for this head.

Implemented by Claude Opus 5.5 through Claude Code. Investigated, device-tested and reviewed by GPT-6.1-Sol through Codex.

Checks

24 successful · 15 skipped
All checks passed
0d4aa9e

Added 1 commit

  • fix(mobile): Android commit sheet scrolls to the commit buttons0d4aa9e

[GPT-6.1-Sol][Codex] on behalf of shivam.

Verified head 0d4aa9ec6b5785a25693e9d83d871d3908aa4bbc against base 15fe2832727893cbdd2214383f9f971474849695 on corex. Android 14 POCO F4, existing compatible T3 Code Dev native client fingerprint 541b3da3e5f7b2ad504aaa6303bdcea8d7194d22, Metro from each commit, isolated backend and disposable repository.

  • Before: two finger swipes left the 13-file sheet stuck. An accessibility scroll command reached the buttons, confirming a gesture-routing defect.
  • After: the same finger swipe reached both enabled commit actions. Last-file selection, deselect/select all, commit-message entry, keyboard dismissal on drag, a compact two-file sheet and header drag dismissal also passed.
  • vp run check:changed passed: format, lint, knip, affected mobile/scripts typechecks and the changed component's React compiler coverage, six selected tests.
  • A separate Codex review found no issues. The Android layout follows the existing Sheet.android.tsx pattern.

The PR body contains the before/after recordings and screenshots. iOS was checked by source inspection only because its rendered structure is unchanged. No commit action or provider turn was executed. Test connection, servers, Metro and phone lease were cleaned up.

Synced from GitHub

Approvability

Verdict: Approved at 0d4aa9e

Macroscope's review found this PR approvable — This adjusts Android commit-sheet layout so scrolling can reach the commit buttons while preserving the header's visual position. Commit behavior, file selection, and permission safeguards are unchanged.

You can add or adjust custom eligibility rules. Learn more.

Synced from GitHub

Review in Change Stack →

No actionable comments were generated in the recent review.

External image Recent review info
External image Run configuration
External image Commits

Reviewing files that changed from the base of the PR and between 15fe2832727893cbdd2214383f9f971474849695 and 0d4aa9ec6b5785a25693e9d83d871d3908aa4bbc.

External image Files selected for processing: 1
  • apps/mobile/src/features/threads/git/GitCommitSheet.tsx

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

Walkthrough

The commit sheet now places the header differently by platform. On Android, the column is reversed and the header renders after the content. On iOS, the header remains before the content.

Changes: Commit sheet layout

Layer / File(s)Summary
Platform-specific header order
apps/mobile/src/features/threads/git/GitCommitSheet.tsx
The Android layout reverses its column and renders the header after ScreenContent. The iOS layout continues to render the header before the content.

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: Medium

Possibly related PRs

  • pingdotgg/t3code#26741: This PR changes the Android Git sheet header implementation. This change adjusts the header and content order in that sheet.

Suggested reviewers: juliusmarminge, pixpmusic

Merge Risk: External image Minimal · up to 0d4aa

The supplied source evidence supports the intended Android scrolling behavior without identifying a merge-blocking regression.

Pre-merge checks: Passed 4
Check nameStatusExplanation
Title checkPassedThe title clearly identifies the Android commit sheet scrolling fix and matches the main change.
Linked Issues checkPassedIssue [#28259] requires the Android commit sheet to scroll through overflowing changed files and reach both commit actions. GitCommitSheet.tsx places ScreenContent before the Android inline `Sheet…
Out of Scope Changes checkPassedThe pull request changes only apps/mobile/src/features/threads/git/GitCommitSheet.tsx. The changes adjust Android sheet layout and preserve the existing sheet options, commit actions, handlers, and …
Description checkPassedThe description clearly explains the Android scrolling problem, the implementation, linked issue, extensive Android and iOS verification, limitations, and implementation attribution. It does not use t…
Full details: Linked Issues check

Explanation

Issue [#28259] requires the Android commit sheet to scroll through overflowing changed files and reach both commit actions. GitCommitSheet.tsx places ScreenContent before the Android inline SheetHeader and applies android:flex-col-reverse. This keeps the header at the top while making the scrollable content the first native view. The existing Commit changes and Commit on a new branch handlers remain in the scrollable content. The implementation matches the reported Android scope and preserves the iOS header order.

Full details: Out of Scope Changes check

Explanation

The pull request changes only apps/mobile/src/features/threads/git/GitCommitSheet.tsx. The changes adjust Android sheet layout and preserve the existing sheet options, commit actions, handlers, and iOS order. These changes directly support issue [#28259]. No unrelated product behavior or files are included.

Full details: Description check

Explanation

The description clearly explains the Android scrolling problem, the implementation, linked issue, extensive Android and iOS verification, limitations, and implementation attribution. It does not use the template's explicit Problem, Change, or Scope and approval headings, and it does not include a maintainer approval comment, but the required information is otherwise substantially covered.

Finishing Touches
Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Note

Written by gpt-6.1-sol on behalf of Maria

Verified on Android emulator (API 35) against a real dev server

verified head 0d4aa9ec6b5785a25693e9d83d871d3908aa4bbc on the t3 x86_64 emulator, api 35, with the shared-cache development client, local metro, and an isolated dev server on port 13773. two real codex gpt-6.1-sol turns created and edited files in a disposable git project. no mocks or demo provider were used.

  • reproduced on github/main at 5fe18d79ac835e0f193ad61325e5b7d69a317bcf: three upward finger swipes left the 13-file list stuck and both commit actions off-screen.
  • on the pr head, two equivalent finger swipes reached both enabled commit actions. the header stayed at the top. both revisions used the same backend, project, thread, and 13 files.
  • individual file selection, deselect-all disabling both actions, and cancel/reopen passed.
  • entered a commit message and pressed commit changes. git confirmed commit f0e65d1 contained all 13 files and the working tree was clean.
  • a second real codex turn changed two files. the compact sheet displayed its header, both files, and both enabled actions without scrolling.

no source changes or pushes were needed. the current head has 32 successful ci checks, zero pending and zero failing; those are existing ci results, not a substitute for the emulator checks above.

before: github main remains stuck after finger swipes

before recording: upward swipes fail to move the list

after: pr head reaches both enabled commit actions

after recording: finger swipes reach the commit actions

compact sheet: two real changed files and both actions visible

Not verified

ios cannot run on this linux vm. commit on a new branch, automatic commit-message generation, physical android devices, and remote/tunnel connections were not exercised. no new static checks were run because this pass changed no source.

git.cafe renders the external evidence embeds as links in this comment. the uploaded images loaded at full resolution, and both recordings played to completion and supported seeking in the browser; inline playback inside the git.cafe comment is unavailable.