Skip to content

fix: branch creation, task running, and multi-project chat issues#22

Merged
sirily11 merged 4 commits into
mainfrom
run-button-ui-fix
May 19, 2026
Merged

fix: branch creation, task running, and multi-project chat issues#22
sirily11 merged 4 commits into
mainfrom
run-button-ui-fix

Conversation

@sirily11

Copy link
Copy Markdown
Contributor

No description provided.

sirily11 added 4 commits May 19, 2026 15:45
# 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
Copilot AI review requested due to automatic review settings May 19, 2026 09:04
@vercel

vercel Bot commented May 19, 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 19, 2026 9:04am

Request Review

@sirily11 sirily11 enabled auto-merge (squash) May 19, 2026 09:04
@autopilot-project-manager autopilot-project-manager Bot added the bug Something isn't working label May 19, 2026
@sirily11 sirily11 merged commit 1fc2564 into main May 19, 2026
8 checks passed
@sirily11 sirily11 deleted the run-button-ui-fix branch May 19, 2026 09:05

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

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 -z include two NUL-terminated paths (old then new). This parser currently uses the first path as displayPath and then increments i to 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
@sirily11

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in version 1.6.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

bug Something isn't working released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants