pingdotgg / pingdotgg/t3code

[Feature][Mobile] Copy thread ID, branch, and path from thread menus (desktop parity)

Open
#12,185 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

accepted enhancement via-triage
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 (ThreadListRow in apps/mobile/src/features/threads/thread-list-items.tsx, ThreadListV2Row in thread-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 copyTextWithHaptic helper with failure feedback, matching other mobile copy surfaces.
  • Add the missing number SF 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.