feat(session-list): copy session ID from the long-press menu#1425
feat(session-list): copy session ID from the long-press menu#1425chphch wants to merge 1 commit into
Conversation
Add an always-visible "Copy session ID" action to the session quick-actions menu (long-press on a session row + the web actions popover). It copies the Happy session ID via expo-clipboard and shows the existing success/failure modal. The internal Claude/Codex ids keep their own copy rows on the Session Info screen. Reuses the existing sessionInfo.happySessionIdCopied / failedToCopySessionId strings; adds one new label key sessionInfo.copySessionId across all 10 locales. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
Proof — Copy session ID works end-to-endCaptured locally via a standalone The session action menu renders the new Copy session ID item; tapping it writes The action flows through |

Add a "Copy session ID" action to the session quick-actions menu (long-press a session row, or the web actions popover) that copies the Happy session ID to the clipboard and shows the existing confirmation toast. Today the only way to grab a session's ID is to open Session Info and tap the "Happy Session ID" row — this surfaces the same copy one long-press away, alongside the existing (dev-only) "Copy session metadata" actions. The internal Claude/Codex ids keep their dedicated copy rows on the Session Info screen.
Implemented as a small
copySessionIdToClipboardhelper mirroring the existingcopySessionMetadataToClipboard, wired intouseSessionQuickActions'sactionItemsso every consumer picks it up automatically (the long-pressModal.alertmenu inSessionsList/ActiveSessionsGroupCompact, andSessionActionsPopover). It reuses the existingsessionInfo.happySessionIdCopied/sessionInfo.failedToCopySessionIdstrings and adds one new label keysessionInfo.copySessionIdacross all 10 locales.Proof
Verified end-to-end on web via a standalone
happy-server(PGlite) + Expo web, authenticated with the dev-token URL bypass and driven headlessly with Playwright: the session action menu renders the new Copy session ID item, tapping it writessession.idto the clipboard (assertednavigator.clipboard.readText() === session.id), and the "Happy Session ID copied to clipboard" confirmation appears.pnpm typecheckis clean. GIF in the comment below.