fix: branch creation, task running, and multi-project chat issues#22
Merged
Conversation
# RxCode — run-button-ui-fix * This branch focused on enhancing multi-project chat tool functionalities, including adding new tool descriptors and updating handlers for enhanced search and message retrieval. * It also addressed persistent issues with plan mode across different branches, ensuring consistent behavior during thread switching and reject-with-feedback scenarios. * Work was done on Xcode run configuration, including implementing a smart launcher for iOS simulators and updating run profile toolbars. * The branch also tackled issues with branch creation and layout, such as moving the wallet button to the main content view and improving run button placement. * Resolved follow-ups included re-prompting permission on debug builds and addressing unresolved issues like simulator stdout tie problems. ## Threads - Branch Creation Issue - Plan mode persistence issue - Multi-project chat tool - Xcode Run Configuration Issue - Repeated permission request - Run button placement confusion
…onment * Added `gitEnvironment` to GitHelper to augment PATH with additional system and Homebrew directories * Updated `run` method to use `gitEnvironment()` instead of hardcoded environment variables ### RxCode: Update WindowState and AppState to include missing enum cases * Added missing enum cases to `InspectorTab` and `InspectorReviewTab` enums in `RxCode/Views/Inspector/RightInspectorPanel.swift` and `RxCode/App/AppState.swift` ### RxCode: Update Services to include missing enum cases * Added missing enum cases to `ClaudeService.enum` and `FoundationModelSummarizationService.enum` in `RxCode/Services/ClaudeService.swift` and `RxCode/Services/FoundationModelSummarizationService.swift` ### RxCode: Update Views to include missing enum cases * Added missing enum cases to `RightInspectorPanel.enum` in `RxCode/Views/Inspector/RightInspectorPanel.swift` * Added missing enum cases to `MainView.enum` in `RxCode/Vie
- improve code generation efficiency - enhance code quality
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Pull request overview
This PR improves RxCode’s run + git workflows and addresses multi-project chat/tooling gaps by adding structured Xcode run destinations, a combined Changes inspector with commit/push support, and new MCP IDE tools for cross-project thread discovery and messaging.
Changes:
- Add structured Xcode run destinations (discovery + selection) and update Xcode run scripts to launch simulators via
simctl. - Replace separate Staged/Unstaged inspector tabs with a combined Changes view including stage/unstage, commit composer, push/publish, and commit-message generation.
- Extend IDE MCP tooling to list/search threads across projects, fetch thread messages, and send prompts cross-project with stream completion tracking.
Reviewed changes
Copilot reviewed 21 out of 21 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| RxCode/Views/RunProfile/RunProfileToolbarGroup.swift | Adds an optional destination picker to the run toolbar and async destination loading. |
| RxCode/Views/RunProfile/RunConfigurationsView.swift | Replaces free-text destination with a structured destination display/clear UI. |
| RxCode/Views/MainView.swift | Adjusts sidebar split view column width constraints. |
| RxCode/Views/Inspector/RightInspectorPanel.swift | Consolidates Git changes UI into a combined Changes view with commit/push features. |
| RxCode/Views/Chat/BranchPickerChip.swift | Adds a branch switcher menu and supports pending worktree state for new chats. |
| RxCode/Services/RunProfile/XcodeDestinationService.swift | Introduces an actor to run xcodebuild -showdestinations and cache results. |
| RxCode/Services/OpenAISummarizationService.swift | Adds OpenAI-backed commit message generation prompt/endpoint call. |
| RxCode/Services/IDEServer/AppState+IDEToolHandling.swift | Adds ide__get_projects, thread semantic search, thread message hydration, and cross-project send handling. |
| RxCode/Services/FoundationModelSummarizationService.swift | Adds on-device commit message generation support. |
| RxCode/Services/ClaudeService.swift | Adds Claude-backed commit message generation helper. |
| RxCode/App/AppState.swift | Adds stream completion tracking, cross-project send plumbing, commit message generation routing, and worktree/branch state fixes. |
| RxCode.xcodeproj/project.pbxproj | Updates bundle identifier and reorders/adds Swift package references. |
| Packages/Tests/RxCodeCoreTests/RunTaskExecutorTests.swift | Adds test coverage for Xcode run/build destination behaviors and parser expectations. |
| Packages/Sources/RxCodeCore/WindowState.swift | Persists inspector mode/tabs in UserDefaults and adds pending worktree fields. |
| Packages/Sources/RxCodeCore/Utilities/GitWorktreeService.swift | Reuses existing worktrees when a branch is already checked out. |
| Packages/Sources/RxCodeCore/Utilities/GitHelper.swift | Expands git environment PATH and adds stage/unstage/commit/push/upstream/branch listing helpers. |
| Packages/Sources/RxCodeCore/RunProfile/XcodeDestinationParser.swift | Adds parsing of xcodebuild -showdestinations output to structured destinations. |
| Packages/Sources/RxCodeCore/RunProfile/RunTaskExecutor.swift | Uses structured destinations for xcodebuild -destination and simulator launching via simctl. |
| Packages/Sources/RxCodeCore/Models/XcodeRunConfig.swift | Adds selectedDestination, preserves legacy destination support, and resolves destination arguments. |
| Packages/Sources/RxCodeCore/Models/XcodeDestination.swift | Introduces the destination model (serialization + grouping + xcodebuild argument). |
| Packages/Sources/RxCodeCore/Backend/IDEToolRegistry.swift | Registers new MCP tools and expands thread tooling schemas/descriptions. |
Comments suppressed due to low confidence (1)
RxCode/Views/Inspector/RightInspectorPanel.swift:1274
- Rename entries from
git status --porcelain=v1 -zinclude two NUL-terminated paths (old then new). This parser currently uses the first path asdisplayPathand then incrementsito skip the second token, which drops the new path and can produce incorrect/invalid absolute paths for renamed files. Use the second token as the display path (and keep skipping the extra token) so renames point at the new filename.
let isUntracked = (indexChar == "?" && worktreeChar == "?")
let isRename = indexChar == "R" || worktreeChar == "R"
if isRename, i < tokens.count {
i += 1
}
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+42
to
+49
| /// switches profile or edits the container/scheme. | ||
| private var destinationCacheKey: String? { | ||
| guard let profile = selectedProfile, | ||
| profile.type == .xcode, | ||
| let xcode = profile.xcode, | ||
| !xcode.container.isEmpty, | ||
| !xcode.scheme.isEmpty else { return nil } | ||
| return "\(xcode.container)::\(xcode.scheme)" |
Comment on lines
+281
to
+283
| private var currentDestination: XcodeDestination? { | ||
| selectedProfile?.xcode?.selectedDestination | ||
| } |
Comment on lines
+467
to
+473
| HStack(spacing: 6) { | ||
| Text(xcode.wrappedValue.selectedDestination?.displayName ?? "Any Mac (default)") | ||
| .foregroundStyle(.secondary) | ||
| if xcode.wrappedValue.selectedDestination != nil { | ||
| Button { | ||
| var c = xcode.wrappedValue | ||
| c.selectedDestination = nil |
Comment on lines
+176
to
+179
| guard let raw = UserDefaults.standard.string(forKey: inspectorReviewTabKey), | ||
| let tab = InspectorReviewTab(rawValue: raw) else { return .thisThread } | ||
| return tab | ||
| } |
Comment on lines
+41
to
+43
| let destinations = XcodeDestinationParser.parse(output) | ||
| cache[key] = destinations | ||
| return destinations |
Comment on lines
+1224
to
+1230
| struct GitChangeFile: Identifiable, Hashable { | ||
| let id = UUID() | ||
| let path: String // absolute path | ||
| let displayPath: String // path relative to repo | ||
| let statusChar: Character | ||
| let isUntracked: Bool | ||
| let diffMode: PreviewFile.GitDiffMode |
Contributor
Author
|
🎉 This PR is included in version 1.6.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.