JetBrains / JetBrains/thinkrail
Cannot select a substring of a chat message (from user) to copy
- Dominant language
- TypeScript
- Stars
- 467
- Forks
- 37
- Avg merge
- 1d 52m
- Merged PRs (30d)
- 143
Description
## Description
In the Pi chat panel, users can click the copy button on a message to copy the entire message, but cannot click and drag to select any part of the message text (user bubbles) to copy a snippet.
Because `body` has `user-select: none` in `apps/web/src/index.css` and content is expected to opt back in (`.tr-prose-chat`, `data-selectable`, etc.), chat message containers (`USER_BUBBLE` / `USER_BUBBLE_BASE` / `PlainUserTurn` and assistant message wrappers in `apps/web/src/chat/turns.tsx`) currently do not include `.tr-prose-chat` or `data-selectable` (or `user-select: text`). As a result, message text inherits `user-select: none` and cannot be selected.
## Steps to reproduce
1. Open a workspace and open or start a chat session.
2. Send a message or wait for an assistant response.
3. Try clicking and dragging the cursor over words or lines within the message bubble to highlight/select a portion of the text.
## Expected behavior
Users can click and drag to highlight/select any part of a user or assistant chat message and copy the selected text, while preserving whole-message copy via the copy button.
## Actual behavior
No text selection occurs when dragging over the message text; the cursor cannot select substrings within the message.
## Environment
- OS: macOS 26.6.2 (Darwin arm64)
- Bun version (`bun --version`): 1.4.2
- Node version (`node --version`): v26.8.2
- ThinkRail version / commit: 6a836d3fe (upstream/main)
---
🤖 Generated by AI agent
Contributor guide
Research direction
Start with apps/web/src/index.css to confirm the global user-select rule, then inspect the USER_BUBBLE, USER_BUBBLE_BASE, PlainUserTurn, and assistant message wrappers in apps/web/src/chat/turns.tsx. Verify the relevant containers opt into text selection without disrupting the existing copy-button behavior. Done means users can select and copy substrings from both user and assistant messages.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- css, typescript
- Domain
- frontend, web-dev
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 86/100