Skip to content

Commit a648a29

Browse files
authored
Merge branch 'github:main' into main
2 parents 033808f + 5b3a5b8 commit a648a29

481 files changed

Lines changed: 47659 additions & 3721 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
blank_issues_enabled: false
22
contact_links:
33
- name: Questions
4-
url: https://github.com/orgs/community/discussions/categories/copilot
4+
url: https://github.com/github/CopilotForXcode/discussions
55
about: Please ask and answer questions about GitHub Copilot here

.github/actions/set-xcode-version/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ inputs:
66
Xcode version to use, in semver(ish)-style matching the format on the Actions runner image.
77
See available versions at https://github.com/actions/runner-images/blame/main/images/macos/macos-14-Readme.md#xcode
88
required: false
9-
default: '15.3'
9+
default: '26.0'
1010
outputs:
1111
xcode-path:
1212
description: "Path to current Xcode version"

.github/workflows/auto-close-pr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
gh pr close ${{ github.event.pull_request.number }} --comment \
1515
"At the moment we are not accepting contributions to the repository.
1616
17-
Feedback for GitHub Copilot for Xcode can be given in the [Copilot community discussions](https://github.com/orgs/community/discussions/categories/copilot)."
17+
Feedback for GitHub Copilot for Xcode can be given in the [Copilot community discussions](https://github.com/github/CopilotForXcode/discussions)."
1818
env:
1919
GH_REPO: ${{ github.repository }}
2020
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,10 @@ Core/Package.resolved
117117

118118
# Copilot language server
119119
Server/node_modules/
120+
Server/dist
120121

121122
# Releases
122123
/releases/
123124
/release/
124125
/appcast.xml
126+

CHANGELOG.md

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,188 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## 0.46.0 - December 11, 2025
9+
### Added
10+
- MCP: Support delete MCP server from list.
11+
12+
### Changed
13+
- Refine built-in tools layout and displaying error and output details.
14+
- Better support toolCallingLoop continue operation for subagent turn.
15+
- Update feedback forum link.
16+
- Update client-side MCP restore and persist.
17+
- Adopt NES notification.
18+
19+
### Fixed
20+
- Disable auto focus for fix error window.
21+
- Fixed an issue where no file change was made when insert_edit_into_file tool succeeds.
22+
- Fixed an issue where insert edit was applied to the incorrect file.
23+
- Fixed model picker to use model id instead of model family.
24+
- Fixed read_file, read_directory tool randomly failing.
25+
26+
## 0.45.0 - November 14, 2025
27+
### Added
28+
- New models: GPT-5.1, GPT-5.1-Codex, GPT-5.1-Codex-Mini, Claude Haiku 4.5, and Auto (preview).
29+
- Added support for custom agents (preview).
30+
- Introduced the built-in Plan agent (preview).
31+
- Added support for subagent execution (preview).
32+
- Added support for Next Edit Suggestions (preview).
33+
34+
### Changed
35+
- MCP servers now support dynamic OAuth setup for third-party authentication providers.
36+
- Added a setting to configure the maximum number of tool requests allowed.
37+
38+
### Fixed
39+
- Fixed an issue that the terminal view in Agent conversation was clipped
40+
- Fixed an issue that the Chat panel failed to recognize newly created workspaces.
41+
42+
## 0.44.0 - October 15, 2025
43+
### Added
44+
- Added support for new models in Chat: Grok Code Fast 1, Claude Sonnet 4.5, Claude Opus 4, Claude Opus 4.1 and GPT-5 mini.
45+
- Added support for restoring to a saved checkpoint snapshot.
46+
- Added support for tool selection in agent mode.
47+
- Added the ability to adjust the chat panel font size.
48+
- Added the ability to edit a previous chat message and resend it.
49+
- Introduced a new setting to disable the Copilot “Fix Error” button.
50+
- Added support for custom instructions in the Code Review feature.
51+
52+
### Changed
53+
- Switched authentication to a new OAuth app "GitHub Copilot IDE Plugin".
54+
- Updated the chat layout to a messenger-style conversation view (user messages on the right, responses on the left).
55+
- Now shows a clearer, more user-friendly message when Copilot finishes responding.
56+
- Added support for skipping a tool call without ending the conversation.
57+
58+
### Fixed
59+
- Fixed a command injection vulnerability when opening referenced chat files.
60+
- Resolved display issues in the chat view on macOS 26.
61+
62+
## 0.43.0 - September 4, 2025
63+
### Fixed
64+
- Cannot type non-Latin characters in the chat input field.
65+
66+
## 0.42.0 - September 3, 2025
67+
### Added
68+
- Support for Bring Your Own Keys (BYOK) with model providers including Azure, OpenAI, Anthropic, Gemini, Groq, and OpenRouter. See [BYOK.md](https://github.com/github/CopilotForXcode/blob/0.42.0/Docs/BYOK.md).
69+
- Use the current selection as chat context.
70+
- Add folders as chat context.
71+
- Shortcut to quickly fix errors in Xcode.
72+
- Support for custom instruction files at `.github/instructions/*.instructions.md`. See [CustomInstructions.md](https://github.com/github/CopilotForXcode/blob/0.42.0/Docs/CustomInstructions.md).
73+
- Support for prompt files at `.github/prompts/*.prompt.md`. See [PromptFiles.md](https://github.com/github/CopilotForXcode/blob/0.42.0/Docs/PromptFiles.md).
74+
- Use ↑/↓ keys to reuse previous chat context in the chat view.
75+
76+
### Changed
77+
- Default chat mode is now set to “Agent”.
78+
79+
### Fixed
80+
- Cannot copy url from Safari browser to chat view.
81+
82+
## 0.41.0 - August 14, 2025
83+
### Added
84+
- Code review feature.
85+
- Chat: Support for new model GPT-5.
86+
- Agent mode: Added support for new tool to read web URL contents.
87+
- Support disabling MCP when it's disabled by policy.
88+
- Support for opening MCP logs directly from the MCP settings page.
89+
- OAuth support for remote GitHub MCP server.
90+
91+
### Changed
92+
- Performance: Improved instant-apply speed for edit_file tool.
93+
94+
### Fixed
95+
- Chat Agent repeatedly reverts its own changes when editing the same file.
96+
- Performance: Avoid chat panel being stuck when sending a large text for chat.
97+
98+
## 0.40.0 - July 24, 2025
99+
### Added
100+
- Support disabling Agent mode when it's disabled by policy.
101+
102+
## 0.39.0 - July 23, 2025
103+
### Fixed
104+
- Performance: Fixed a freezing issue in 'Add Context' view when opening large projects.
105+
- Login failed due to insufficient permissions on the .config folder.
106+
- Fixed an issue that setting changes like proxy config did not take effect.
107+
- Increased the timeout for ask mode to prevent response failures due to timeout.
108+
109+
## 0.38.0 - June 30, 2025
110+
### Added
111+
- Support for Claude 4 in Chat.
112+
- Support for Copilot Vision (image attachments).
113+
- Support for remote MCP servers.
114+
115+
### Changed
116+
- Automatically suggests a title for conversations created in agent mode.
117+
- Improved restoration of MCP tool status after Copilot restarts.
118+
- Reduced duplication of MCP server instances.
119+
120+
### Fixed
121+
- Switching accounts now correctly refreshes the auth token and models.
122+
- Fixed file create/edit issues in agent mode.
123+
124+
## 0.37.0 - June 18, 2025
125+
### Added
126+
- **Advanced** settings: Added option to configure **Custom Instructions** for GitHub Copilot during chat sessions.
127+
- **Advanced** settings: Added option to keep the chat window automatically attached to Xcode.
128+
129+
### Changed
130+
- Enabled support for dragging-and-dropping files into the chat panel to provide context.
131+
132+
### Fixed
133+
- "Add Context" menu didn’t show files in workspaces organized with Xcode’s group feature.
134+
- Chat didn’t respond when the workspace was in a system folder (like Desktop, Downloads, or Documents) and access permission hadn’t been granted.
135+
136+
## 0.36.0 - June 4, 2025
137+
### Added
138+
- Introduced a new chat setting "**Response Language**" under **Advanced** settings to customize the natural language used in chat replies.
139+
- Enabled support for custom instructions defined in _.github/copilot-instructions.md_ within your workspace.
140+
- Added support for premium request handling.
141+
142+
### Fixed
143+
- Performance: Improved UI responsiveness by lazily restoring chat history.
144+
- Performance: Fixed lagging issue when pasting large text into the chat input.
145+
- Performance: Improved project indexing performance.
146+
- Don't trigger / (slash) commands when pasting a file path into the chat input.
147+
- Adjusted terminal text styling to align with Xcode’s theme.
148+
149+
## 0.35.0 - May 19, 2025
150+
### Added
151+
- Launched Agent Mode. Copilot will automatically use multiple requests to edit files, run terminal commands, and fix errors.
152+
- Introduced Model Context Protocol (MCP) support in Agent Mode, allowing you to configure MCP tools to extend capabilities.
153+
154+
### Changed
155+
- Added a button to enable/disable referencing current file in conversations
156+
- Added an animated progress icon in the response section
157+
- Refined onboarding experience with updated instruction screens and welcome views
158+
- Improved conversation reliability with extended timeout limits for agent requests
159+
160+
### Fixed
161+
- Addressed critical error handling issues in core functionality
162+
- Resolved UI inconsistencies with chat interface padding adjustments
163+
- Implemented custom certificate handling using system environment variables `NODE_EXTRA_CA_CERTS` and `NODE_TLS_REJECT_UNAUTHORIZED`, fixing network access issues
164+
165+
## 0.34.0 - April 29, 2025
166+
### Added
167+
- Added support for new models in Chat: OpenAI GPT-4.1, o3 and o4-mini, Gemini 2.5 Pro
168+
169+
### Changed
170+
- Switched default model to GPT-4.1 for new installations
171+
- Enhanced model selection interface
172+
173+
### Fixed
174+
- Resolved critical error handling issues
175+
176+
## 0.33.0 - April 17, 2025
177+
### Added
178+
- Added support for new models in Chat: Claude 3.7 Sonnet and GPT 4.5
179+
- Implemented @workspace context feature allowing questions about the entire codebase in Copilot Chat
180+
181+
### Changed
182+
- Simplified access to Copilot Chat from the Copilot for Xcode app with a single click
183+
- Enhanced instructions for granting background permissions
184+
185+
### Fixed
186+
- Resolved false alarms for sign-in and free plan limit notifications
187+
- Improved app launch performance
188+
- Fixed workspace and context update issues
189+
8190
## 0.32.0 - March 11, 2025 (General Availability)
9191
### Added
10192
- Implemented model picker for selecting LLM model in chat

CommunicationBridge/ServiceDelegate.swift

Lines changed: 93 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -136,28 +136,100 @@ actor ExtensionServiceLauncher {
136136
isLaunching = true
137137

138138
Logger.communicationBridge.info("Launching extension service app.")
139-
140-
NSWorkspace.shared.openApplication(
141-
at: appURL,
142-
configuration: {
143-
let configuration = NSWorkspace.OpenConfiguration()
144-
configuration.createsNewApplicationInstance = false
145-
configuration.addsToRecentItems = false
146-
configuration.activates = false
147-
return configuration
148-
}()
149-
) { app, error in
150-
if let error = error {
151-
Logger.communicationBridge.error(
152-
"Failed to launch extension service app: \(error)"
153-
)
154-
} else {
155-
Logger.communicationBridge.info(
156-
"Finished launching extension service app."
157-
)
139+
140+
// First check if the app is already running
141+
if let runningApp = NSWorkspace.shared.runningApplications.first(where: {
142+
$0.bundleIdentifier == appIdentifier
143+
}) {
144+
Logger.communicationBridge.info("Extension service app already running with PID: \(runningApp.processIdentifier)")
145+
self.application = runningApp
146+
self.isLaunching = false
147+
return
148+
}
149+
150+
// Implement a retry mechanism with exponential backoff
151+
Task {
152+
var retryCount = 0
153+
let maxRetries = 3
154+
var success = false
155+
156+
while !success && retryCount < maxRetries {
157+
do {
158+
// Add a delay between retries with exponential backoff
159+
if retryCount > 0 {
160+
let delaySeconds = pow(2.0, Double(retryCount - 1))
161+
Logger.communicationBridge.info("Retrying launch after \(delaySeconds) seconds (attempt \(retryCount + 1) of \(maxRetries))")
162+
try await Task.sleep(nanoseconds: UInt64(delaySeconds * 1_000_000_000))
163+
}
164+
165+
// Use a task-based approach for launching with timeout
166+
let launchTask = Task<NSRunningApplication?, Error> { () -> NSRunningApplication? in
167+
return await withCheckedContinuation { continuation in
168+
NSWorkspace.shared.openApplication(
169+
at: appURL,
170+
configuration: {
171+
let configuration = NSWorkspace.OpenConfiguration()
172+
configuration.createsNewApplicationInstance = false
173+
configuration.addsToRecentItems = false
174+
configuration.activates = false
175+
return configuration
176+
}()
177+
) { app, error in
178+
if let error = error {
179+
continuation.resume(returning: nil)
180+
} else {
181+
continuation.resume(returning: app)
182+
}
183+
}
184+
}
185+
}
186+
187+
// Set a timeout for the launch operation
188+
let timeoutTask = Task {
189+
try await Task.sleep(nanoseconds: 10_000_000_000) // 10 seconds
190+
return
191+
}
192+
193+
// Wait for either the launch or the timeout
194+
let app = try await withTaskCancellationHandler {
195+
try await launchTask.value ?? nil
196+
} onCancel: {
197+
launchTask.cancel()
198+
}
199+
200+
// Cancel the timeout task
201+
timeoutTask.cancel()
202+
203+
if let app = app {
204+
// Success!
205+
self.application = app
206+
success = true
207+
break
208+
} else {
209+
// App is nil, retry
210+
retryCount += 1
211+
Logger.communicationBridge.info("Launch attempt \(retryCount) failed, app is nil")
212+
}
213+
} catch {
214+
retryCount += 1
215+
Logger.communicationBridge.error("Error during launch attempt \(retryCount): \(error.localizedDescription)")
216+
}
158217
}
159-
160-
self.application = app
218+
219+
// Double-check we have a valid application
220+
if !success && self.application == nil {
221+
// After all retries, check once more if the app is running (it might have launched but we missed the callback)
222+
if let runningApp = NSWorkspace.shared.runningApplications.first(where: {
223+
$0.bundleIdentifier == appIdentifier
224+
}) {
225+
Logger.communicationBridge.info("Found running extension service after retries: \(runningApp.processIdentifier)")
226+
self.application = runningApp
227+
success = true
228+
} else {
229+
Logger.communicationBridge.info("Failed to launch extension service after \(maxRetries) attempts")
230+
}
231+
}
232+
161233
self.isLaunching = false
162234
}
163235
}

Config.debug.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ EXTENSION_BUNDLE_NAME = GitHub Copilot Dev
1010
EXTENSION_BUNDLE_DISPLAY_NAME = GitHub Copilot Dev
1111
EXTENSION_SERVICE_NAME = GitHub Copilot for Xcode Extension
1212
COPILOT_DOCS_URL = https:$(SLASH)$(SLASH)docs.github.com/en/copilot
13-
COPILOT_FORUM_URL = https:$(SLASH)$(SLASH)github.com/orgs/community/discussions/categories/copilot
13+
COPILOT_FORUM_URL = https:$(SLASH)$(SLASH)github.com/github/CopilotForXcode/discussions
1414

1515
// see also target Configs
1616

Config.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ EXTENSION_BUNDLE_NAME = GitHub Copilot
1010
EXTENSION_BUNDLE_DISPLAY_NAME = GitHub Copilot
1111
EXTENSION_SERVICE_NAME = GitHub Copilot for Xcode Extension
1212
COPILOT_DOCS_URL = https:$(SLASH)$(SLASH)docs.github.com/en/copilot
13-
COPILOT_FORUM_URL = https:$(SLASH)$(SLASH)github.com/orgs/community/discussions/categories/copilot
13+
COPILOT_FORUM_URL = https:$(SLASH)$(SLASH)github.com/github/CopilotForXcode/discussions
1414

1515
// see also target Configs

0 commit comments

Comments
 (0)