Skip to content

feat: add global search and briefing to the app#20

Merged
sirily11 merged 2 commits into
mainfrom
fix
May 18, 2026
Merged

feat: add global search and briefing to the app#20
sirily11 merged 2 commits into
mainfrom
fix

Conversation

@sirily11

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI review requested due to automatic review settings May 18, 2026 12:31
@vercel

vercel Bot commented May 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
rxcode Ready Ready Preview, Comment May 18, 2026 0:32am

Request Review

@sirily11 sirily11 enabled auto-merge (squash) May 18, 2026 12:31
@autopilot-project-manager autopilot-project-manager Bot added the enhancement New feature or request label May 18, 2026
@sirily11 sirily11 merged commit 2336497 into main May 18, 2026
8 checks passed
@sirily11 sirily11 deleted the fix branch May 18, 2026 12:34

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a global Cmd+K semantic search across all threads, a Briefings dashboard summarizing per-project / per-branch activity, multi-terminal inspector tabs, and typed Run Profiles (Xcode / Make) with auto-detection. Supporting changes wire a new ThreadSearchService (on-device NLEmbedding actor) and a thread-summary / branch-briefing pipeline into AppState, replace ProjectWindowRoot's view with MainView, and add per-project draft/queue scoping.

Changes:

  • New global search overlay + ThreadSearchService with backfill/reindex and ThreadEmbeddingChunk persistence.
  • New BriefingView plus ThreadSummaryRecord / BranchBriefingRecord storage and summarization helpers in the LLM services.
  • Multi-terminal inspector tabs, typed Xcode/Make run profiles with RunProfileDetector, and various sidebar polish (animations, briefing entry, fixed-width timestamps).

Reviewed changes

Copilot reviewed 36 out of 36 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
RxCodeTests/AppStateProjectSwitchTests.swift New tests covering per-project draft queue preservation across project switches.
RxCode/Views/Terminal/TerminalView.swift Adds TerminalProcess.clear() that resets the terminal without killing the shell.
RxCode/Views/Sidebar/ProjectTreeView.swift Adds Briefing entry section, expand/collapse animations, and briefing-aware "current" highlighting; introduces dynamic visible-thread caps.
RxCode/Views/Sidebar/ProjectChatRow.swift Fixed-width monospaced trailing time/progress column.
RxCode/Views/Sidebar/HistoryListView.swift Import reorder only.
RxCode/Views/Sidebar/BriefingView.swift New briefings dashboard with per-project filter and grouped cards.
RxCode/Views/SettingsView.swift Adds a "Search Index" section to manually reindex threads with progress.
RxCode/Views/Search/GlobalSearchOverlay.swift New Cmd+K overlay with semantic + in-thread search and keyboard navigation.
RxCode/Views/RunProfile/RunConfigurationsView.swift Typed Xcode/Make profile UI, detected-runnables add menu.
RxCode/Views/ProjectWindowView.swift Wires Briefing pane into the detail area; adds ThreadTitlePopoverButton.
RxCode/Views/MainView.swift Routes Cmd+K, hosts the global search overlay, and becomes the new project window root.
RxCode/Views/Inspector/RightInspectorPanel.swift Multi-terminal storage with add/select/close/rename/reset/clear per session.
RxCode/Views/Inspector/InspectorContentView.swift Flattened multi-terminal rendering with tab bar.
RxCode/Views/EmptyProjectStateView.swift New empty-state landing with recent briefings list.
RxCode/Views/Chat/ThreadTitlePopoverButton.swift Title button that reveals current thread summary in a popover.
RxCode/Views/Chat/RecentChatsSuggestionList.swift Guards visibility via ChatBridge and applies pinned/unpinned ordering caps.
RxCode/Services/ThreadStore.swift Schema for ThreadSummaryRecord, BranchBriefingRecord, ThreadEmbeddingChunk and related CRUD.
RxCode/Services/ThreadSearchService.swift New on-device NLEmbedding actor with chunking, backfill, reindex, in-thread search.
RxCode/Services/RunProfile/RunProfileDetector.swift Auto-detects Xcode schemes, npm scripts, and Makefile targets.
RxCode/Services/OpenAISummarizationService.swift / ClaudeService.swift / CodexAppServer.swift Adds summary/briefing generation helpers.
RxCode/App/RxCodeApp.swift Switches ProjectWindowRoot to MainView and reorders lifecycle hooks.
RxCode/App/AppState.swift Boots search service, runs backfill/reindex, drives briefing/summary pipeline, project-scoped draft keys, briefing-on-launch behavior.
Packages/Tests/RxCodeCoreTests/RunTaskExecutorTests.swift Tests for Make profile script generation.
Packages/Sources/RxCodeCore/WindowState.swift Adds clearTerminalRequest, default showingBriefing = true, and showGlobalSearch.
Packages/Sources/RxCodeCore/RunProfile/RunTaskExecutor.swift Synthesizes xcodebuild / make / open commands.
Packages/Sources/RxCodeCore/Models/* New models (XcodeRunConfig, MakeRunConfig, ThreadSummaryRecord, BranchBriefingRecord, ThreadEmbeddingChunk) and RunProfile extensions.
Packages/Sources/RxCodeCore/Models/QueuedMessageRecord.swift Doc comment updated to note project-scoped session keys.
Packages/Sources/RxCodeChatKit/WebPreviewButton.swift Color tweak.
Packages/Sources/RxCodeChatKit/MessageListView.swift Removes the "Show earlier messages" folding behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +202 to +208
func removeProject(id: UUID) async {
for (threadId, chunks) in index where chunks.first?.projectId == id {
index.removeValue(forKey: threadId)
}
// ThreadStore.deleteAll(projectId:) already purges chunks at the same
// time it removes the threads, so the disk side is handled there.
}
.padding(8)
.background(ClaudeTheme.codeBackground)
VStack(spacing: 0) {
if currentTerminals.count > 1 || !currentTerminals.isEmpty {
Comment on lines +138 to 187
}
}

// MARK: - SummarySidebarSection

private struct SummarySidebarSection: View {
@Environment(WindowState.self) private var windowState

var body: some View {
VStack(alignment: .leading, spacing: 2) {
Text("General")
.font(.system(size: ClaudeTheme.size(12), weight: .semibold))
.foregroundStyle(ClaudeTheme.textTertiary)
.textCase(.uppercase)
.padding(.horizontal, 12)
.padding(.bottom, 2)

Button {
windowState.showingBriefing = true
} label: {
HStack(spacing: 8) {
Image(systemName: "text.page")
.font(.system(size: ClaudeTheme.size(12), weight: .medium))
.frame(width: 18, height: 18)

Text("Briefing")
.font(.system(size: ClaudeTheme.size(13), weight: .medium))
.lineLimit(1)

Spacer(minLength: 4)
}
.foregroundStyle(windowState.showingBriefing ? ClaudeTheme.accent : ClaudeTheme.textSecondary)
.padding(.horizontal, 10)
.padding(.vertical, 7)
.background(
RoundedRectangle(cornerRadius: ClaudeTheme.cornerRadiusSmall)
.fill(windowState.showingBriefing ? ClaudeTheme.accent.opacity(0.10) : Color.clear)
)
.padding(.horizontal, 8)
.contentShape(Rectangle())
}
.buttonStyle(.plain)
.help("Open project branch briefing")
}
}
}

// MARK: - Empty State
// MARK: - Empty State

private var emptyState: some View {
Comment on lines +170 to +186
Menu {
Button {
selectedProjectIds.removeAll()
} label: {
Label("All projects", systemImage: selectedProjectIds.isEmpty ? "checkmark" : "")
}
Divider()
ForEach(projects) { project in
Button {
toggleProject(project.id)
} label: {
Label(
project.name,
systemImage: selectedProjectIds.contains(project.id) ? "checkmark" : ""
)
}
}
@sirily11

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in version 1.5.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants