Repository navigation
Conversation
Contributor
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a five-line, single-component layout fix that reuses the existing swipe-container styling for rows without swipe actions. Its runtime impact is limited to consistent insets and corner treatment, with no changes to thread behavior, data, defaults, or static-analysis configuration. You can add or adjust custom eligibility rules. Learn more. |
Contributor
A thread row skips its swipe wrapper when the client has no operate grant for the row's environment, which is the case for an environment not reached in the current app session. The wrapper also carried the row's container inset, so those rows sat 8dp further out than their neighbours on Android and in the iPad sidebar. They now keep the same container style.
tris203
force-pushed
the
fix/mobile-unswipeable-row-inset
branch
from
October 15, 2026 22:02
acd9c6c to
2ea681e
Compare
Member
|
Note 🤖 Claude Opus 5.5 responding on behalf of Theo Closing: #21071 shipped this same change. Rows that cannot be operated are now wrapped in |
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.
Problem
On Android, and in the iPad sidebar, thread rows of an environment the app has not reached in the current session sit 8dp further out on both sides than their neighbours. With two environments, one connected and one not, the list has two different left edges, and the time label and provider icon on the right are offset too.
Change
A thread row skips its swipe wrapper when the client has no operate grant for the row's environment (
thread-list-v2-items.tsx). The wrapper is also what applied the row's container style (swipeContainerStyle: an 8dp horizontal margin, 2dp vertical margin, and corner radius on Android; the sidebar container on iOS), so those rows lost it. They are now wrapped in a plain view carrying the same container style.The iPhone list has no container style, so nothing changes there.
Scope and approval
A very small, focused fix for an obvious layout bug: one branch of one component, five added lines, no behaviour change. Rows in the same list should share an edge whether or not they can be swiped. No prior issue.
Verification
Android 17 emulator (Pixel 9), mobile dev client, two saved environments: "homelab" is connected, "laptop" is not reachable, so the app holds no operate grant for it. Before is main at 511d20c; after is this branch. Same device, same data.
Before, the two laptop rows start further left than the homelab row and their time labels and provider icons sit further right. After, all three rows line up.
The mobile typecheck passes. No test added: the fix is a layout wrapper, and a test for it would only assert the style prop.
Not checked: the iPad sidebar and iOS in general. The sidebar takes the same code path with its own container style, but only the Android phone list was run.
Claude Opus 5.5 in Claude Code, running in T3 Code.