fix(mobile): native text selection in the tool details sheet - #5065
Merged
Conversation
Contributor
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (22 files)
Reviewed by kimi-k3 · Input: 118.1K · Output: 27.5K · Cached: 1.7M Review guidance: REVIEW.md from base branch |
iscekic
enabled auto-merge (squash)
August 5, 2026 20:43
pandemicsyn
approved these changes
Aug 5, 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.
Users can long-press command, output, reasoning, and tool error text in the tool details sheet to use native iOS text selection. The transcript preparation output keeps its existing behavior.
The product gains native selection handles and Copy support on the affected sheet surfaces without a custom action menu. The iOS callout appears on the first long press.
The implementation adds a shared read-only multiline TextInput. It replaces React Native 0.86 selectable Text, whose RCTParagraphComponentView.mm:311 edit-menu path does not call becomeFirstResponder and whose :336 path validates only copy:. The mono block uses an inTranscript prop to keep the transcript Text branch unchanged. The Metro prerequisite was already present on origin/main after rebase and is not duplicated.
Human steps: none before or after merge.
Visual Changes:
E2E: bot-e2e — iOS verifier passed A1-A7. A1-A3 callouts were [Copy, Look Up, Translate]. A4 showed handles, widened the selection, and copied MD-alpha-bravo. A5 horizontal scroll passed. A6 vertical scroll passed. A7 preserved the message details long press without a native selection callout.
A8: not tested, expectation from code. Android uses a different native text-selection path, and this iOS round did not start an Android device. This is not device evidence.
A9: not exercised, no preparation attempt is reachable in the seeded session. The inTranscript prop and mounted test guard the unchanged transcript path. A9 is not reported as passed.
Share was absent from the observed iOS callouts. No custom Share action was added.
The mobile checks passed: format, typecheck, lint, check:unused, and the mobile Vitest suite (370 files, 3621 tests).
The Metro prerequisite was already fixed on origin/main after the required rebase, so this PR does not duplicate it.
Reviewers selected from repository history: @jeanduplessis and @pandemicsyn.