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:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
6fa14b2 to
8a32a65
Compare
25de21d to
0af2a6e
Compare
8a32a65 to
2f88a04
Compare
2f88a04 to
54feee9
Compare
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR introduces a substantial, cross-cutting thread-search capability with new production UI, timeline navigation, rendering/highlighting behavior, theme integration, and a new default mod+f shortcut. It also has unresolved correctness risks involving Markdown-only matches and draft-thread command-palette behavior. Not approved because:
Adjust the Minimum Blocking Severity for this repo — including turning it Off — in Settings. You can add or adjust custom eligibility rules. Learn more. |
54feee9 to
91bc8e4
Compare
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 91bc8e4. Configure here.
519c42a to
4c55679
Compare
490318a to
373612e
Compare
- Re-route steering that races completion into idempotent follow-up dispatches - Preserve scheduled-task attribution and provider ownership history across clients
| variant="default" | ||
| role="search" | ||
| aria-label="Find in thread" | ||
| className="absolute top-[calc(100%+0.5rem)] right-0 z-40 h-9 w-[min(24rem,calc(100vw-1.5rem))] bg-popover shadow-sm dark:bg-popover [-webkit-app-region:no-drag]" |
There was a problem hiding this comment.
Shared primitives: this overrides InputGroup’s height and base surface at the call site. Add a size/popover variant in ui/input-group and use that here.
Suggested fix: No diff — this requires extending the shared primitive.
Posted via Macroscope — UI Consistency
| ); | ||
| } | ||
| if (entry.message.role !== "assistant") return null; | ||
| return entry.message.text || (entry.message.streaming ? "" : "(empty response)"); |
There was a problem hiding this comment.
🟡 Medium chat/threadFind.ts:38
Assistant entries produce phantom matches for text that exists only in Markdown syntax or link URLs: searching private-token in [documentation](https://example.com/private-token) adds a result, but the renderer displays only documentation, so navigation finds no highlight and scrolls to an unhighlighted row. Search the same rendered-text representation used by highlighting instead of raw entry.message.text.
🤖 Copy this AI Prompt to have your agent fix this:
In file @apps/web/src/components/chat/threadFind.ts around line 38:
Assistant entries produce phantom matches for text that exists only in Markdown syntax or link URLs: searching `private-token` in `[documentation](https://example.com/private-token)` adds a result, but the renderer displays only `documentation`, so navigation finds no highlight and scrolls to an unhighlighted row. Search the same rendered-text representation used by highlighting instead of raw `entry.message.text`.
| }, | ||
| }); | ||
|
|
||
| if (activeThread || activeDraftThread) { |
There was a problem hiding this comment.
🟡 Medium components/CommandPalette.tsx:1678
The “Find in current thread” action is available for an unsaved draft, but selecting it closes the palette without opening search. requestThreadFindOpen() requires activeThreadKey, which is null when only activeDraftThread exists; restrict this action to activeThread or add draft-thread search support.
🤖 Copy this AI Prompt to have your agent fix this:
In file @apps/web/src/components/CommandPalette.tsx around line 1678:
The “Find in current thread” action is available for an unsaved draft, but selecting it closes the palette without opening search. `requestThreadFindOpen()` requires `activeThreadKey`, which is null when only `activeDraftThread` exists; restrict this action to `activeThread` or add draft-thread search support.
600a8a5 to
d8c75ec
Compare
463d0c6 to
e10a1e2
Compare
|
Built-in thread search is already on the branch ( |

Long threads make it difficult to find an earlier message or plan, especially inside a collapsed run or attempt.
Add find-in-thread to the orchestration V2 web and desktop UI. Open it with ⌘/Ctrl+F or Find in current thread in the command palette. Next/previous controls move between highlighted matches and reveal collapsed content. Closing search clears highlights and restores folding. Search covers loaded messages and plans; load earlier history to include older turns. Terminal and preview shortcuts are preserved.
Search colours are editable under Advanced → Search in the theme editor. VS Code and Open VSX imports preserve current/other find-match colours, composite transparent backgrounds, and provide readable text fallbacks. The search bar is opaque and follows the shared control corner radius.
Targets
t3code/codex-turn-mappingand preserves V2 run/attempt ownership, timeline projection, history controls, attachments, and citations. Includes the search refinements from the separatemainPR #10439.Visual verification
Fresh captures from this V2 branch, using isolated synthetic data.
Default appearance (no custom theme)
Search navigation and closing — 15 seconds. Light mode first; dark mode starts at 0:07.5.
default-verification.mp4
Imported themes and live editing
Search colour editing, cancelling, and match navigation — 15 seconds. Light mode first; dark mode starts at 0:06.4. Cancel restores the imported colours.
theme-verification.mp4
Keybindings settings
Chat: Find is listed as ⌘F on macOS (Ctrl+F on Windows/Linux), with
!terminalFocus && !previewFocus.Before and after the search styling refinements
The before image is the earlier V2 PR build, not a base-branch build.
Verification
Model: GPT-6 via Codex.
Note
Add built-in thread search to chat timeline
chat.findto Mod+F (active outside terminal and preview focus) and adds a command palette entry to open find for the current threaduseThreadFindHighlights, which paints active and inactive matches separately and repaints on DOM changesfindThreadSearchOccurrences,splitThreadSearchText,foldThreadSearchCase) in threadSearch.ts that handle Unicode-safe case foldingMessagesTimelinenow expands collapsed content and hides collapse controls while find mode is active; checkCollapsibleUserMessageBodyandProposedPlanCardfor unexpected layout shifts whenfindActiveis true📊 Macroscope summarized 0090fb5. 22 files reviewed, 4 issues evaluated, 2 issues filtered, 2 comments posted
🗂️ Filtered Issues
apps/web/src/components/chat/threadFind.ts — 1 comment posted, 2 evaluated, 1 filtered
searchableThreadEntryTextremoves every occurrence of an inline terminal label withreplaceAll, although the renderer replaces only the occurrence(s) consumed for the appended terminal contexts. For example, a prompt containing two literal@zsh:1strings with onezsh lines 1context renders the second string as visible message text, but search removes both and cannot find it. This makes visible user-message text unsearchable. [ Already posted ]apps/web/src/components/chat/threadFindHighlights.ts — 0 comments posted, 1 evaluated, 1 filtered
collectThreadFindRangessearches each rendered DOM text node independently, whereas navigation counts occurrences in the entry's single source string. A query spanning a Markdown-rendered node boundary (for example text separated by an inline formatting element) is counted by the thread search but cannot produce a range here; its active match remainsnull, so it is neither highlighted nor revealed. Markdown also makes occurrence numbering diverge from the raw assistant source used by navigation. [ Already posted ]