Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cc4b89d461
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR introduces a substantial server-backed conversation-search capability spanning RPC, persistence, shared Markdown projection, client pagination, virtualization, and new UI behavior. It also adds a default mod+f shortcut and changes auth-related code, so the scope and sensitivity require human review. Not approved because:
Review your spending limits in Billing settings, or comment |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 82c3af2074
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Team Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (36)
Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review. 📝 WalkthroughWalkthroughAdds a server-backed ChangesSearch contract and server implementation
Client find flow
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: ⚪ Minimal · up to No unresolved merge-blocking risk remains for the conversation find feature. Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 24.24% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 33 functions across 32 files. (4 skipped: 4 unsupported.)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Macroscope skipped reviewing this pull request. Per-review cost limit exceeded (workspace setting). This review would cost an estimated $12.18, which exceeds your per-review limit of $10.00. The top 3 files driving up this estimate:
Tip To get this pull request reviewed, you can:
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default 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 9f5509b. Configure here.

Problem
Native browser find only sees the part of a conversation currently mounted in the DOM. Long T3 Code threads are paginated and virtualized, so users could not reliably find text outside the visible window.
Solution
Adds in-conversation find to the web and desktop chat surfaces with
Cmd+Fon macOS andCtrl+Felsewhere, plus the same action in the command palette.The server searches rendered user text and canonical final assistant text through a bounded, capability-gated RPC. The client gets an exact thread-wide count, loads older history when needed, expands folded content, and highlights the active result without hydrating the whole thread.
How It Works
sequenceDiagram actor User participant Client as Web / Desktop participant Server as T3 server participant Projection as SQLite projection User->>Client: Cmd/Ctrl+F and query Client->>Server: findThread(query, result page) Server->>Projection: Read canonical text for one thread Projection-->>Server: Ordered message rows Server-->>Client: Exact count and bounded locators Client-->>User: Load, scroll, and highlight active matchUI Changes
Before
The conversation has no thread-aware find control.
After: active result
The find bar reports the exact count and highlights the selected occurrence.
After: unloaded history
The find bar can navigate to a result outside the initially loaded history.
After: folded content
Folded details open automatically when they contain the active result.
Verification
Checklist
Built with GPT-5.6-Sol via the Codex harness in T3 Code.
Note
Medium Risk
Touches projection revision semantics, thread-detail paging boundaries, and a new orchestration read RPC, but capability-gated and covered by extensive tests; main risk is edge cases in windowed history and highlight positioning on large threads.
Overview
Adds find in conversation for paginated, virtualized threads: clients call a new
orchestration.findThreadRPC (read scope, advertised viathreadFind: 1in server config) instead of relying on browser find over only mounted DOM.Server loads searchable user and canonical assistant text from projections, returns exact totals with paginated locators and opaque
targetCursorvalues.projection_threads.searchable_messages_revision(migration 048) invalidates cached find text when messages change, reverts run, or the canonical assistant message changes; thread-detail keyset paging gains inclusive boundaries andtargetAnchorAtso matches can load a tight window (including turnless messages before the first turn).Web adds
ThreadFindBar(debounced query, prev/next, Cmd/Ctrl+F and command palette),useThreadFindTarget/ThreadFindSourcefor scrolling, loading older or direct windows viarequestThreadTurnsAround, expanding folded markdown, and CSS Custom Highlight API highlighting (including diff shadow roots). Citation navigation shares the extended pagination model (hasMore,onLoadWindow).Reviewed by Cursor Bugbot for commit 4bd22c3. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add
thread.findin-conversation search across web, server, and shared packagesThreadFindBarUI, anorchestration.findThreadWebSocket RPC, server-side searchable-message projection with revision tracking, and a shared visible-text presentation module that derives searchable text from the rendered transcript rather than raw message source.searchableMessagesRevisionon projection thread rows (migration 48) and returns paginated, revisioned match results with cursors that reopen the matching detail window; a bounded LRU text cache avoids re-deriving visible text on repeated searches.client-runtime/webintopackages/sharedso the server and client share one visible-text pipeline.OrchestrationThreadShellgains an optionalsearchableMessagesRevisionfield andThreadDetailPageCursorgains optional direct-target fields; older cursors and shells without these fields still decode, but any out-of-tree consumers reading raw cursor or shell payloads must handle the new optional keys. Migration 48 adds a non-null column with a zero default to the projection thread table.Macroscope summarized 4bd22c3.