From ced4800119a36a90bb0bc554300d5335bcc146c9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 17 Nov 2025 20:50:18 +0000 Subject: [PATCH 1/6] Initial plan From e044d0d47484395d26647c8057cccb62e3539971 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 17 Nov 2025 20:54:00 +0000 Subject: [PATCH 2/6] Add Apple Watch SE 3rd generation support (Watch7,13-16) Co-authored-by: Zandor300 <6069593+Zandor300@users.noreply.github.com> # Conflicts: # Source/Device.generated.swift --- Source/Device.generated.swift | 24 +++++++++++++++++++++++- Source/Device.swift.gyb | 12 ++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/Source/Device.generated.swift b/Source/Device.generated.swift index 295941f..b72d54b 100644 --- a/Source/Device.generated.swift +++ b/Source/Device.generated.swift @@ -540,6 +540,14 @@ public enum Device { /// /// ![Image]() case appleWatchUltra2 + /// Device is an [Apple Watch SE (3rd generation)]() + /// + /// ![Image]() + case appleWatchSE3_40mm + /// Device is an [Apple Watch SE (3rd generation)]() + /// + /// ![Image]() + case appleWatchSE3_44mm /// Device is an [Apple Watch Series 10]() /// /// ![Image]() @@ -730,6 +738,8 @@ public enum Device { case "Watch7,1", "Watch7,3": return appleWatchSeries9_41mm case "Watch7,2", "Watch7,4": return appleWatchSeries9_45mm case "Watch7,5": return appleWatchUltra2 + case "Watch7,13", "Watch7,14": return appleWatchSE3_40mm + case "Watch7,15", "Watch7,16": return appleWatchSE3_44mm case "Watch7,8", "Watch7,10": return appleWatchSeries10_42mm case "Watch7,9", "Watch7,11": return appleWatchSeries10_46mm case "Watch7,12": return appleWatchUltra3 @@ -889,6 +899,8 @@ public enum Device { case .appleWatchSeries9_41mm: return 1.9 case .appleWatchSeries9_45mm: return 2.0 case .appleWatchUltra2: return 2.2 + case .appleWatchSE3_40mm: return 1.8 + case .appleWatchSE3_44mm: return 2.0 case .appleWatchSeries10_42mm: return 1.9 case .appleWatchSeries10_46mm: return 2.0 case .appleWatchUltra3: return 2.2 @@ -1028,6 +1040,8 @@ public enum Device { case .appleWatchSeries9_41mm: return (width: 4, height: 5) case .appleWatchSeries9_45mm: return (width: 4, height: 5) case .appleWatchUltra2: return (width: 4, height: 5) + case .appleWatchSE3_40mm: return (width: 4, height: 5) + case .appleWatchSE3_44mm: return (width: 4, height: 5) case .appleWatchSeries10_42mm: return (width: 374, height: 446) case .appleWatchSeries10_46mm: return (width: 416, height: 496) case .appleWatchUltra3: return (width: 4, height: 5) @@ -1278,7 +1292,7 @@ public enum Device { #elseif os(watchOS) /// All Watches public static var allWatches: [Device] { - return [.appleWatchSeries0_38mm, .appleWatchSeries0_42mm, .appleWatchSeries1_38mm, .appleWatchSeries1_42mm, .appleWatchSeries2_38mm, .appleWatchSeries2_42mm, .appleWatchSeries3_38mm, .appleWatchSeries3_42mm, .appleWatchSeries4_40mm, .appleWatchSeries4_44mm, .appleWatchSeries5_40mm, .appleWatchSeries5_44mm, .appleWatchSeries6_40mm, .appleWatchSeries6_44mm, .appleWatchSE_40mm, .appleWatchSE_44mm, .appleWatchSeries7_41mm, .appleWatchSeries7_45mm, .appleWatchSeries8_41mm, .appleWatchSeries8_45mm, .appleWatchSE2_40mm, .appleWatchSE2_44mm, .appleWatchUltra, .appleWatchSeries9_41mm, .appleWatchSeries9_45mm, .appleWatchUltra2, .appleWatchSeries10_42mm, .appleWatchSeries10_46mm, .appleWatchUltra3, .appleWatchSeries11_42mm, .appleWatchSeries11_46mm] + return [.appleWatchSeries0_38mm, .appleWatchSeries0_42mm, .appleWatchSeries1_38mm, .appleWatchSeries1_42mm, .appleWatchSeries2_38mm, .appleWatchSeries2_42mm, .appleWatchSeries3_38mm, .appleWatchSeries3_42mm, .appleWatchSeries4_40mm, .appleWatchSeries4_44mm, .appleWatchSeries5_40mm, .appleWatchSeries5_44mm, .appleWatchSeries6_40mm, .appleWatchSeries6_44mm, .appleWatchSE_40mm, .appleWatchSE_44mm, .appleWatchSeries7_41mm, .appleWatchSeries7_45mm, .appleWatchSeries8_41mm, .appleWatchSeries8_45mm, .appleWatchSE2_40mm, .appleWatchSE2_44mm, .appleWatchUltra, .appleWatchSeries9_41mm, .appleWatchSeries9_45mm, .appleWatchUltra2, .appleWatchSE3_40mm, .appleWatchSE3_44mm, .appleWatchSeries10_42mm, .appleWatchSeries10_46mm, .appleWatchUltra3, .appleWatchSeries11_42mm, .appleWatchSeries11_46mm] } /// All simulator Watches @@ -1569,6 +1583,8 @@ public enum Device { case .appleWatchSeries9_41mm: return 326 case .appleWatchSeries9_45mm: return 326 case .appleWatchUltra2: return 338 + case .appleWatchSE3_40mm: return 326 + case .appleWatchSE3_44mm: return 326 case .appleWatchSeries10_42mm: return 326 case .appleWatchSeries10_46mm: return 326 case .appleWatchUltra3: return 338 @@ -1740,6 +1756,8 @@ extension Device: CustomStringConvertible { case .appleWatchSeries9_41mm: return "Apple Watch Series 9 41mm" case .appleWatchSeries9_45mm: return "Apple Watch Series 9 45mm" case .appleWatchUltra2: return "Apple Watch Ultra2" + case .appleWatchSE3_40mm: return "Apple Watch SE (3rd generation) 40mm" + case .appleWatchSE3_44mm: return "Apple Watch SE (3rd generation) 44mm" case .appleWatchSeries10_42mm: return "Apple Watch Series 10 42mm" case .appleWatchSeries10_46mm: return "Apple Watch Series 10 46mm" case .appleWatchUltra3: return "Apple Watch Ultra 3" @@ -1898,6 +1916,8 @@ extension Device: CustomStringConvertible { case .appleWatchSeries9_41mm: return "Apple Watch Series 9 41mm" case .appleWatchSeries9_45mm: return "Apple Watch Series 9 45mm" case .appleWatchUltra2: return "Apple Watch Ultra2" + case .appleWatchSE3_40mm: return "Apple Watch SE (3rd generation) 40mm" + case .appleWatchSE3_44mm: return "Apple Watch SE (3rd generation) 44mm" case .appleWatchSeries10_42mm: return "Apple Watch Series 10 42mm" case .appleWatchSeries10_46mm: return "Apple Watch Series 10 46mm" case .appleWatchUltra3: return "Apple Watch Ultra 3" @@ -2602,6 +2622,8 @@ extension Device { case .appleWatchSeries9_41mm: return .s9 case .appleWatchSeries9_45mm: return .s9 case .appleWatchUltra2: return .s9 + case .appleWatchSE3_40mm: return .s9 + case .appleWatchSE3_44mm: return .s9 case .appleWatchSeries10_42mm: return .s10 case .appleWatchSeries10_46mm: return .s10 case .appleWatchUltra3: return .s10 diff --git a/Source/Device.swift.gyb b/Source/Device.swift.gyb index a650ece..29339a1 100644 --- a/Source/Device.swift.gyb +++ b/Source/Device.swift.gyb @@ -309,6 +309,18 @@ watches = [ "", ["Watch7,5"], 2.2, (4,5), "Apple Watch Ultra2", "Apple Watch Ultra2", 338, False, False, False, False, False, False, False, True, False, False, 0, False, 0, False, "s9", False, False), + Device( + "appleWatchSE3_40mm", + "Device is an [Apple Watch SE (3rd generation)]()", + "", + ["Watch7,13", "Watch7,14"], 1.8, (4,5), "Apple Watch SE (3rd generation) 40mm", "Apple Watch SE (3rd generation) 40mm", 326, False, False, False, False, False, False, False, True, False, False, 0, False, 0, False, "s9", False, False), + + Device( + "appleWatchSE3_44mm", + "Device is an [Apple Watch SE (3rd generation)]()", + "", + ["Watch7,15", "Watch7,16"], 2.0, (4,5), "Apple Watch SE (3rd generation) 44mm", "Apple Watch SE (3rd generation) 44mm", 326, False, False, False, False, False, False, False, True, False, False, 0, False, 0, False, "s9", False, False), + Device( "appleWatchSeries10_42mm", "Device is an [Apple Watch Series 10]()", From d2b5973db53762be4cc6823483f28871c02e5751 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 17 Nov 2025 20:57:05 +0000 Subject: [PATCH 3/6] Add test for Apple Watch SE 3rd generation device mapping Co-authored-by: Zandor300 <6069593+Zandor300@users.noreply.github.com> --- Tests/Tests.swift | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Tests/Tests.swift b/Tests/Tests.swift index f14418f..2c02bc1 100644 --- a/Tests/Tests.swift +++ b/Tests/Tests.swift @@ -723,6 +723,14 @@ class DeviceKitTests: XCTestCase { XCTAssertEqual(Device.mapToDevice(identifier: "AppleTV6,2").description, "Apple TV 4K") } + func testAppleWatchSE3Mapping() { + // Test Apple Watch SE 3rd generation identifier mapping + XCTAssertEqual(Device.mapToDevice(identifier: "Watch7,13"), .appleWatchSE3_40mm) + XCTAssertEqual(Device.mapToDevice(identifier: "Watch7,14"), .appleWatchSE3_40mm) + XCTAssertEqual(Device.mapToDevice(identifier: "Watch7,15"), .appleWatchSE3_44mm) + XCTAssertEqual(Device.mapToDevice(identifier: "Watch7,16"), .appleWatchSE3_44mm) + } + func testSafeDescription() { for device in Device.allRealDevices { XCTAssertEqual(device.description, device.safeDescription) From 0ea0488b28825e978945abbd2ff4ae105da51d95 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 17 Nov 2025 21:11:38 +0000 Subject: [PATCH 4/6] Update Apple Watch SE 3rd gen to use S10 chip instead of S9 Co-authored-by: Zandor300 <6069593+Zandor300@users.noreply.github.com> --- Source/Device.generated.swift | 4 ++-- Source/Device.swift.gyb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Device.generated.swift b/Source/Device.generated.swift index b72d54b..cc6e37b 100644 --- a/Source/Device.generated.swift +++ b/Source/Device.generated.swift @@ -2622,8 +2622,8 @@ extension Device { case .appleWatchSeries9_41mm: return .s9 case .appleWatchSeries9_45mm: return .s9 case .appleWatchUltra2: return .s9 - case .appleWatchSE3_40mm: return .s9 - case .appleWatchSE3_44mm: return .s9 + case .appleWatchSE3_40mm: return .s10 + case .appleWatchSE3_44mm: return .s10 case .appleWatchSeries10_42mm: return .s10 case .appleWatchSeries10_46mm: return .s10 case .appleWatchUltra3: return .s10 diff --git a/Source/Device.swift.gyb b/Source/Device.swift.gyb index 29339a1..83d3628 100644 --- a/Source/Device.swift.gyb +++ b/Source/Device.swift.gyb @@ -313,13 +313,13 @@ watches = [ "appleWatchSE3_40mm", "Device is an [Apple Watch SE (3rd generation)]()", "", - ["Watch7,13", "Watch7,14"], 1.8, (4,5), "Apple Watch SE (3rd generation) 40mm", "Apple Watch SE (3rd generation) 40mm", 326, False, False, False, False, False, False, False, True, False, False, 0, False, 0, False, "s9", False, False), + ["Watch7,13", "Watch7,14"], 1.8, (4,5), "Apple Watch SE (3rd generation) 40mm", "Apple Watch SE (3rd generation) 40mm", 326, False, False, False, False, False, False, False, True, False, False, 0, False, 0, False, "s10", False, False), Device( "appleWatchSE3_44mm", "Device is an [Apple Watch SE (3rd generation)]()", "", - ["Watch7,15", "Watch7,16"], 2.0, (4,5), "Apple Watch SE (3rd generation) 44mm", "Apple Watch SE (3rd generation) 44mm", 326, False, False, False, False, False, False, False, True, False, False, 0, False, 0, False, "s9", False, False), + ["Watch7,15", "Watch7,16"], 2.0, (4,5), "Apple Watch SE (3rd generation) 44mm", "Apple Watch SE (3rd generation) 44mm", 326, False, False, False, False, False, False, False, True, False, False, 0, False, 0, False, "s10", False, False), Device( "appleWatchSeries10_42mm", From 4e6c2c26349fd69b115f94e5b134e215a060512b Mon Sep 17 00:00:00 2001 From: Zandor Smith Date: Tue, 2 Dec 2025 11:00:13 +0100 Subject: [PATCH 5/6] Remove test. --- Tests/Tests.swift | 8 -------- 1 file changed, 8 deletions(-) diff --git a/Tests/Tests.swift b/Tests/Tests.swift index 2c02bc1..f14418f 100644 --- a/Tests/Tests.swift +++ b/Tests/Tests.swift @@ -723,14 +723,6 @@ class DeviceKitTests: XCTestCase { XCTAssertEqual(Device.mapToDevice(identifier: "AppleTV6,2").description, "Apple TV 4K") } - func testAppleWatchSE3Mapping() { - // Test Apple Watch SE 3rd generation identifier mapping - XCTAssertEqual(Device.mapToDevice(identifier: "Watch7,13"), .appleWatchSE3_40mm) - XCTAssertEqual(Device.mapToDevice(identifier: "Watch7,14"), .appleWatchSE3_40mm) - XCTAssertEqual(Device.mapToDevice(identifier: "Watch7,15"), .appleWatchSE3_44mm) - XCTAssertEqual(Device.mapToDevice(identifier: "Watch7,16"), .appleWatchSE3_44mm) - } - func testSafeDescription() { for device in Device.allRealDevices { XCTAssertEqual(device.description, device.safeDescription) From e01986471b53a980321bb5de8015ae1d34a85797 Mon Sep 17 00:00:00 2001 From: Zandor Smith Date: Wed, 3 Dec 2025 20:21:01 +0100 Subject: [PATCH 6/6] Add changelog entry. --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f96ba63..dda5968 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ ## Unreleased +### New devices + +- Add support for Apple Watch SE (3rd generation) ([#473](https://github.com/devicekit/DeviceKit/issues/473)) + +| Device | Case value | +| --- | --- | +| Apple Watch SE (3rd generation) 40mm | `Device.appleWatchSE3_40mm` | +| Apple Watch SE (3rd generation) 44mm | `Device.appleWatchSE3_44mm` | + ### Bug fixes - Fixed iPhone Air incorrectly marked as having ultra-wide camera. ([#463](https://github.com/devicekit/DeviceKit/issues/463))