[Feature][Mobile] Copy thread ID, branch, and path from thread menus (desktop parity)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 23k
- Forks
- 5.9k
- Avg merge
- 11h 14m
- Merged PRs (30d)
- 357
Description
Description
The T3 Code mobile app has no visible way to copy a thread's ID, branch, or workspace path, while the desktop/web app does.
Desktop/web exposes a per-thread Copy submenu in both the sidebar row right-click menu and the chat header menu (buildThreadActionMenuItems in apps/web/src/components/threadActionMenu.logic.ts):
- Copy Path (workspace path, falls back to project cwd)
- Copy Branch (when the thread has a branch)
- Copy Thread ID (always)
plus a separate PR-link-or-thread-ID shortcut via resolveThreadReferenceCopyTarget (packages/shared/src/threadReference.ts, wired in ChatView.tsx / command palette).
On mobile (React Native client):
- Thread row long-press menus (
ThreadListRowinapps/mobile/src/features/threads/thread-list-items.tsx,ThreadListV2Rowinthread-list-v2-items.tsx) offer only lifecycle/title actions (Archive/Settle/Snooze/Pin/Regenerate/Delete, plus New-thread-on-branch) — no Copy submenu. - The only copy path is the hardware-keyboard shortcut in
HardwareKeyboardCommandProvider.tsx(copyThreadReference), which is invisible on touch devices.
Expected behavior
- Add a Copy submenu to the mobile thread row long-press menus (both v1 and v2 lists), mirroring desktop ordering/labels:
- Path (worktree path, falling back to project workspace root where available; error feedback when unavailable, like desktop's "Path unavailable")
- Branch (only when the thread has one)
- Thread ID (always)
- Use the existing
copyTextWithHaptichelper with failure feedback, matching other mobile copy surfaces. - Add the missing
numberSF Symbol Android mapping (Tabler Hash) so the Thread ID row has an icon on Android, as the prior full-parity attempt did.
Related reports and changes
- Desktop origin: feat(web) add Copy Thread ID to the sidebar and chat header thread context menu (#5574, merged)
- Mobile full-parity attempt (included this Copy submenu, closed unmerged as too large): feat(mobile) Bring Thread Menus to Desktop Parity (#5962, closed)
- SwiftUI-only equivalent (does not cover the React Native client): feat(swift-ios) copy thread metadata from row menus (#8622, merged)
- Adjacent mobile parity gap: [Bug][Mobile] Archive action is missing from thread actions (#9328, open)
- Hardware-keyboard-only copy on mobile:
apps/mobile/src/features/keyboard/HardwareKeyboardCommandProvider.tsx
Acceptance criteria
- A mobile user can long-press a thread row and copy its Thread ID.
- Branch and Path are copyable from the same submenu under the same conditions as desktop.
- Missing-path and clipboard-failure cases surface an error instead of silently doing nothing.
- Existing Archive/Delete/Settle/Snooze/Pin/Regenerate behavior does not regress.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with buildThreadActionMenuItems in apps/web/src/components/threadActionMenu.logic.ts, then inspect ThreadListRow and ThreadListV2Row in apps/mobile/src/features/threads and the existing copyTextWithHaptic usage. Add the mobile Copy submenu and number SF Symbol mapping, preserving current actions; done means touch users can copy path, branch, or thread ID with the specified availability and error feedback.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react-native, typescript
- Domain
- mobile
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 72/100