SwiftUI thread rows: copy thread metadata - #8622
Conversation
|
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 Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
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 05a8d68. Configure here.
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR adds a new user-facing metadata-copy workflow to SwiftUI thread rows and modifies shared row-context fallback behavior across multiple production files. The implementation is tested and localized, but the cross-file integration and changed existing context derivation merit human review. Notes:
You can add or adjust custom eligibility rules. Learn more. |

What users observed
On the SwiftUI iOS home screen, long-pressing a thread row offered a single coarse copy action. Copying just the thread's metadata (name, project, environment) — the thing you usually want when filing an issue or handing a thread to someone — was not possible without manually editing pasted text.
What changed
ThreadCopyContextderived from the row's existing presentation context, so each action stays correct as project/environment metadata changes.Affected: SwiftUI iOS client only — server, contracts, web/desktop, and React Native are unchanged.
Base:
t3code/rebuild-mobile-app-swiftatb67837984e5650888b1eed0e1cd7fff83625f696.UI changes
Before (single copy action, light)
After (individual copy submenu)
Interaction video
Play the menu interaction video
Dark-mode captures and the full set are embedded in the tracking issue.
Intentionally unchanged
Verification
T3CodeTests/ThreadCopyActionsTests(per-action coverage incl. fallbacks) — run on this re-materialized head, iPhone 16 Pro / iOS 26.5 simulator; 10 test cases passed, 0 failed (xcodebuild exit 0).xcodebuild test, exit 0).git diff --checkclean.Known gaps / honest disclosures
Affected: SwiftUI iOS client only.
Note
Low Risk
Client-only clipboard and context-menu UI with localized row-context fallback logic; no server or auth changes.
Overview
Home thread long-press menus on iOS now include a Copy submenu with separate actions for path, branch, thread ID, project, environment, and deep link URL, wired through new
ThreadCopyModel/ThreadCopyClipboardhelpers.HomeThreadCollectionViewpasses each row’sHomeThreadRowContextintomenuActions; unavailable items stay visible but disabled, and successful copies go to the pasteboard with VoiceOver announcements.HomeThreadRowContext.copyContextmaps existing row presentation fields into copy metadata, and blankthread.environmentIDvalues are treated as missing so indexing falls back to the project’s environment (affecting labels and copy/URL fields).Focused unit tests cover action ordering, raw-value copying, fallbacks, URL encoding, and the placeholder-project edge case.
Reviewed by Cursor Bugbot for commit e90618a. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add 'Copy' submenu to SwiftUI thread row context menus for metadata
ThreadCopyModel.actions(for:context:)HomeThreadRowContext.index(snapshot:)to fall back to the project'senvironmentIDwhen the thread's value is blankHomeThreadRowContext.copyContextomitsprojectNamewhen noprojectWorkspaceRootexists, avoiding placeholder project entriesenvironmentIDwas previously blank — see WorkspaceView.swiftMacroscope summarized e90618a.