Skip to content

Commit be64a90

Browse files
committed
Release 0.42.0
1 parent 65dc134 commit be64a90

File tree

11 files changed

+69
-21
lines changed

11 files changed

+69
-21
lines changed

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,22 @@ 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.42.0 - September 3, 2025
9+
### Added
10+
- 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).
11+
- Use the current selection as chat context.
12+
- Add folders as chat context.
13+
- Shortcut to quickly fix errors in Xcode.
14+
- 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).
15+
- Support for prompt files at `.github/prompts/*.prompt.md`. See [PromptFiles.md](https://github.com/github/CopilotForXcode/blob/0.42.0/Docs/PromptFiles.md).
16+
- Use ↑/↓ keys to reuse previous chat context in the chat view.
17+
18+
### Changed
19+
- Default chat mode is now set to “Agent”.
20+
21+
### Fixed
22+
- Cannot copy url from Safari browser to chat view.
23+
824
## 0.41.0 - August 14, 2025
925
### Added
1026
- Code review feature.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"images" : [
3+
{
4+
"filename" : "ai-model-16.svg",
5+
"idiom" : "universal"
6+
}
7+
],
8+
"info" : {
9+
"author" : "xcode",
10+
"version" : 1
11+
},
12+
"properties" : {
13+
"preserves-vector-representation" : true,
14+
"template-rendering-intent" : "template"
15+
}
16+
}
Lines changed: 1 addition & 0 deletions
Loading

Core/Sources/ChatService/ChatService.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ public final class ChatService: ChatServiceType, ObservableObject {
561561
skillSet: skillSet,
562562
references: lastUserRequest.references ?? [],
563563
model: model != nil ? model : lastUserRequest.model,
564-
modelProviderName: modelProviderName != nil ? modelProviderName : lastUserRequest.modelProviderName,
564+
modelProviderName: modelProviderName,
565565
agentMode: lastUserRequest.agentMode,
566566
userLanguage: lastUserRequest.userLanguage,
567567
turnId: id
@@ -793,7 +793,11 @@ public final class ChatService: ChatServiceType, ObservableObject {
793793
}
794794
do {
795795
CopilotModelManager.switchToFallbackModel()
796-
try await resendMessage(id: progress.turnId, model: fallbackModel.id)
796+
try await resendMessage(
797+
id: progress.turnId,
798+
model: fallbackModel.id,
799+
modelProviderName: nil
800+
)
797801
} catch {
798802
Logger.gitHubCopilot.error(error)
799803
resetOngoingRequest()

Core/Sources/HostApp/AdvancedSettings/CreateCustomCopilotFileView.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ struct CreateCustomCopilotFileView: View {
9696
if fileAlreadyExists && !trimmedFileName.isEmpty {
9797
Image(systemName: "xmark.circle.fill")
9898
.foregroundColor(.red)
99-
Text("'.github/\(promptType.directoryName)/\(trimmedFileName).\(promptType.fileExtension)' already exists")
99+
Text("'.github/\(promptType.directoryName)/\(trimmedFileName)\(promptType.fileExtension)' already exists")
100100
.font(.caption)
101101
.foregroundColor(.red)
102102
.lineLimit(2)
@@ -110,7 +110,7 @@ struct CreateCustomCopilotFileView: View {
110110
.font(.caption)
111111
.foregroundColor(.secondary)
112112
} else {
113-
Text(".github/\(promptType.directoryName)/\(trimmedFileName).\(promptType.fileExtension)")
113+
Text(".github/\(promptType.directoryName)/\(trimmedFileName)\(promptType.fileExtension)")
114114
.font(.caption)
115115
.foregroundColor(.secondary)
116116
.lineLimit(2)
@@ -165,7 +165,7 @@ struct CreateCustomCopilotFileView: View {
165165
if FileManager.default.fileExists(atPath: filePath.path) {
166166
await MainActor.run {
167167
self.fileAlreadyExists = true
168-
toast("\(promptType.displayName) '\(trimmedFileName).\(promptType.fileExtension)' already exists", .warning)
168+
toast("\(promptType.displayName) '\(trimmedFileName)\(promptType.fileExtension)' already exists", .warning)
169169
}
170170
return
171171
}
@@ -179,7 +179,7 @@ struct CreateCustomCopilotFileView: View {
179179
try promptType.defaultTemplate.write(to: filePath, atomically: true, encoding: .utf8)
180180

181181
await MainActor.run {
182-
toast("Created \(promptType.rawValue) file '\(trimmedFileName).\(promptType.fileExtension)'", .info)
182+
toast("Created \(promptType.rawValue) file '\(trimmedFileName)\(promptType.fileExtension)'", .info)
183183
NSWorkspace.shared.open(filePath)
184184
self.isOpen.wrappedValue = false
185185
}

Core/Sources/HostApp/AdvancedSettings/CustomCopilotHelper.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public enum PromptType: String, CaseIterable, Equatable {
5656
case .instructions:
5757
return "Configure `.github/instructions/*.instructions.md` files scoped to specific file patterns or tasks."
5858
case .prompt:
59-
return "Configure `.github/prompts/*.prompt.md` files for reusable prompt templates."
59+
return "Configure `.github/prompts/*.prompt.md` files for reusable prompts. Trigger with '/' commands in the Chat view."
6060
}
6161
}
6262

@@ -74,7 +74,7 @@ public enum PromptType: String, CaseIterable, Equatable {
7474
case .prompt:
7575
return """
7676
---
77-
description: Tool Description
77+
description: Prompt Description
7878
---
7979
Define the task to achieve, including specific requirements, constraints, and success criteria.
8080

Core/Sources/HostApp/BYOKSettings/ModelSheet.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,11 @@ struct ModelSheet: View {
150150
vision: supportVision
151151
)
152152
)
153+
154+
if let originalModel = existingModel, trimmedModelId != originalModel.modelId {
155+
// Delete existing model if the model ID has changed
156+
try await dataManager.deleteModel(originalModel)
157+
}
153158

154159
try await dataManager.saveModel(modelParams)
155160
dismiss()

Core/Sources/HostApp/HostApp.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ public enum TabIndex: Int, CaseIterable {
2727
case .general: return "CopilotLogo"
2828
case .advanced: return "gearshape.2.fill"
2929
case .mcp: return "wrench.and.screwdriver.fill"
30-
case .byok: return "cube"
30+
case .byok: return "Model"
3131
}
3232
}
3333

3434
var isSystemImage: Bool {
3535
switch self {
36-
case .general: return false
36+
case .general, .byok: return false
3737
default: return true
3838
}
3939
}

Core/Sources/SuggestionWidget/Extensions/WidgetWindowsController+FixErrorPanel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ extension WidgetWindowsController {
3838
@MainActor
3939
func updateFixErrorPanelWindowLocation() async {
4040
guard let activeApp = await XcodeInspector.shared.safe.activeApplication,
41-
activeApp.isXcode
41+
(activeApp.isXcode || activeApp.isCopilotForXcodeExtensionService)
4242
else {
4343
hideFixErrorWindow()
4444
return

ReleaseNotes.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
1-
### GitHub Copilot for Xcode 0.41.0
1+
### GitHub Copilot for Xcode 0.42.0
22

33
**🚀 Highlights**
44

5-
* Code review feature.
6-
* Chat: Support for new model `GPT-5`.
7-
* Agent mode: Added support for new tool to read web URL contents.
8-
* Support disabling MCP when it's disabled by policy.
9-
* Support for opening MCP logs directly from the MCP settings page.
10-
* OAuth support for remote GitHub MCP server.
5+
* 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).
6+
* 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).
7+
* Support for prompt files at `.github/prompts/*.prompt.md`. See [PromptFiles.md](https://github.com/github/CopilotForXcode/blob/0.42.0/Docs/PromptFiles.md).
8+
* Default chat mode is now set to “Agent”.
9+
1110

1211
**💪 Improvements**
1312

14-
* Performance: Improved instant-apply speed for edit_file tool.
13+
* Use the current selection as chat context.
14+
* Add folders as chat context.
15+
* Shortcut to quickly fix errors in Xcode.
16+
* Use ↑/↓ keys to reuse previous chat context in the chat view.
1517

1618
**🛠️ Bug Fixes**
1719

18-
* Chat Agent repeatedly reverts its own changes when editing the same file.
19-
* Performance: Avoid chat panel being stuck when sending a large text for chat.
20+
* Cannot copy url from Safari browser to chat view.

0 commit comments

Comments
 (0)