feat(search): find threads by conversation content - #4959
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 |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2683db9. Configure here.
ApprovabilityVerdict: Needs human review This PR introduces a new search feature enabling users to find threads by conversation content, including new server-side RPC endpoints, database queries, client state management, and UI components. New features introducing user-facing capabilities warrant human review. You can customize Macroscope's approvability policy. Learn more. |
## What's Changed * fix(mobile): support dragged images in the composer by @t3dotgg in pingdotgg/t3code#4953 * fix(mobile): stop long iOS threads from jumping while scrolling up by @t3dotgg in pingdotgg/t3code#4867 * fix(web): keep worktree default when switching a draft's machine by @t3dotgg in pingdotgg/t3code#4964 * perf(mobile): reconnect environments immediately on resume by @t3dotgg in pingdotgg/t3code#4878 * feat(web): pasting a huge screenshot now compresses it instead of erroring by @t3dotgg in pingdotgg/t3code#4967 * feat(web): regenerate thread titles from sidebar by @t3dotgg in pingdotgg/t3code#4810 * fix(web): show server update progress through reconnect by @t3dotgg in pingdotgg/t3code#4903 * feat(search): find threads by conversation content by @t3dotgg in pingdotgg/t3code#4959 * fix: marketing site Vercel builds no longer die after ~100 deploys by @t3dotgg in pingdotgg/t3code#4975 **Full Changelog**: pingdotgg/t3code@v0.0.32-nightly.20260730.955...v0.0.32-nightly.20260730.956 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.32-nightly.20260730.956
27 commits from main, including the ⌘P file picker / ⇧⌘F content search (#4855), thread content search (#4959), sidebar title regeneration (#4810), image-paste compression (#4967), and the docs restructure (#4807). Notable resolutions beyond keep-both: - Thread content search is ported to the v2 surface: searchThreads joins ORCHESTRATION_V2_WS_METHODS/rpc/auth scopes, and the SQL now UNIONs orchestration_v2_projection_messages so current threads are searchable, not just legacy-projected ones. - Title regeneration's server half lived in the v1 ProviderCommandReactor this branch deletes, so the capability is deliberately not advertised: clients hide the action, the contract/UI code stays intact, and the input field is accepted as a documented no-op. TODO(orchestration-v2): port regeneration to the v2 runtime. - Main's 035_ProjectionThreadTitleRegeneration migration collided with this branch's 035-043 range; renumbered to 044. - Mobile activity grouping keeps this branch's runId/prominence semantics while adopting main's O(1) trailing-group optimization (prominence tracked in a flag instead of a per-append scan). - v1-only startup tests from main (heartbeat/auto-bootstrap against the deleted reactor-era services) are dropped; their v2 equivalents already cover the ordered startup phases. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Thread search only matched shell metadata, so finding older work by what was actually said or delivered was frustrating.
This adds a bounded search RPC for user messages and canonical final agent responses. Web, desktop, and mobile query connected environments after a 200 ms debounce, preserve instant local title/project/branch matching, and fall back cleanly when an environment is disconnected or running an older server. Content matches show the selected variant C
You:/Agent:excerpt without replacing existing thread metadata.Design preview: selected variant C mock
Real screenshot

Verification:
Built with GPT-5.6 Sol in the Codex harness.
Note
Medium Risk
New read RPC and SQL search over message projection data with bounded inputs; broad UI surface (web palette, mobile lists) but no auth or write-path changes.
Overview
Adds thread content search so users can find work by what was said or delivered, not only thread titles and project metadata.
Server & contracts: New
orchestration.searchThreadsWebSocket RPC (orchestration read scope) queries projection tables for user messages and canonical final assistant outputs on active, non-archived threads. Results are bounded (query length, limit), deduped to one match per thread, and include snippets. Interim assistant text, system messages, archived/deleted threads, and literal%in queries are handled safely in SQL.Client-runtime: Shared
thread-searchmodule merges per-environment RPC results via atom families; failed or older servers are ignored so local title/project/branch matching still works.Web: Command palette uses debounced
useThreadSearch(≥2 chars, connected environments) and shows You: / Agent: excerpts with highlighted terms under thread rows without replacing project/branch context. Pending search shows “Searching thread messages…”.Mobile: Home and thread navigation sidebar wire the same search into v1 groups and thread list v2 filtering via
matchedThreadKeys, pass excerpts into list rows, and gate empty states while search is pending. Environment filter options include connection state so only connected environments are searched.Docs: Keybindings doc notes palette message search behavior.
Reviewed by Cursor Bugbot for commit 1fc3070. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add thread message content search to command palette and thread list sidebar
searchThreadsRPC method to the orchestration WebSocket layer, backed by a new SQL query inProjectionSnapshotQuery.tsthat searches user messages and canonical assistant outputs in active threads, deduplicating to one match per thread.threadSearch.tswithcreateThreadSearchResultsAtomFamilyanduseThreadSearchhooks (web and mobile) that debounce queries, fan out across connected environments, and aggregate results.Macroscope summarized 1fc3070.