|
| 1 | +/** |
| 2 | + * Device model identifier to marketing name mapping. |
| 3 | + * Mirrors Sources/macOSdbKit/Models/DeviceRegistry.swift — keep in sync. |
| 4 | + */ |
| 5 | +const deviceNames: Record<string, string> = { |
| 6 | + // M1 |
| 7 | + 'MacBookAir10,1': 'MacBook Air (M1, Late 2020)', |
| 8 | + 'MacBookPro17,1': 'MacBook Pro (13-inch, M1, Late 2020)', |
| 9 | + 'Macmini9,1': 'Mac mini (M1, Late 2020)', |
| 10 | + 'iMac21,1': 'iMac (24-inch, M1, 2021) 2-port', |
| 11 | + 'iMac21,2': 'iMac (24-inch, M1, 2021) 4-port', |
| 12 | + |
| 13 | + // M1 Pro |
| 14 | + 'MacBookPro18,1': 'MacBook Pro (16-inch, M1 Pro, Late 2021)', |
| 15 | + 'MacBookPro18,3': 'MacBook Pro (14-inch, M1 Pro, Late 2021)', |
| 16 | + |
| 17 | + // M1 Max |
| 18 | + 'MacBookPro18,2': 'MacBook Pro (16-inch, M1 Max, Late 2021)', |
| 19 | + 'MacBookPro18,4': 'MacBook Pro (14-inch, M1 Max, Late 2021)', |
| 20 | + 'Mac13,1': 'Mac Studio (M1 Max, 2022)', |
| 21 | + |
| 22 | + // M1 Ultra |
| 23 | + 'Mac13,2': 'Mac Studio (M1 Ultra, 2022)', |
| 24 | + |
| 25 | + // M2 |
| 26 | + 'Mac14,2': 'MacBook Air (13-inch, M2, 2022)', |
| 27 | + 'Mac14,7': 'MacBook Pro (13-inch, M2, 2022)', |
| 28 | + 'Mac14,3': 'Mac mini (M2, 2023)', |
| 29 | + 'Mac14,15': 'MacBook Air (15-inch, M2, 2023)', |
| 30 | + |
| 31 | + // M2 Pro |
| 32 | + 'Mac14,9': 'MacBook Pro (14-inch, M2 Pro, 2023)', |
| 33 | + 'Mac14,10': 'MacBook Pro (16-inch, M2 Pro, 2023)', |
| 34 | + 'Mac14,12': 'Mac mini (M2 Pro, 2023)', |
| 35 | + |
| 36 | + // M2 Max |
| 37 | + 'Mac14,5': 'MacBook Pro (14-inch, M2 Max, 2023)', |
| 38 | + 'Mac14,6': 'MacBook Pro (16-inch, M2 Max, 2023)', |
| 39 | + 'Mac14,13': 'Mac Studio (M2 Max, 2023)', |
| 40 | + |
| 41 | + // M2 Ultra |
| 42 | + 'Mac14,14': 'Mac Studio (M2 Ultra, 2023)', |
| 43 | + 'Mac14,8': 'Mac Pro (M2 Ultra, 2023)', |
| 44 | + |
| 45 | + // M3 |
| 46 | + 'Mac15,3': 'MacBook Pro (14-inch, M3, Late 2023)', |
| 47 | + 'Mac15,4': 'iMac (24-inch, M3, 2023) 2-port', |
| 48 | + 'Mac15,5': 'iMac (24-inch, M3, 2023) 4-port', |
| 49 | + 'Mac15,12': 'MacBook Air (13-inch, M3, 2024)', |
| 50 | + 'Mac15,13': 'MacBook Air (15-inch, M3, 2024)', |
| 51 | + |
| 52 | + // M3 Pro |
| 53 | + 'Mac15,6': 'MacBook Pro (14-inch, M3 Pro, Late 2023)', |
| 54 | + 'Mac15,7': 'MacBook Pro (16-inch, M3 Pro, Late 2023)', |
| 55 | + |
| 56 | + // M3 Max |
| 57 | + 'Mac15,8': 'MacBook Pro (14-inch, M3 Max, Late 2023)', |
| 58 | + 'Mac15,9': 'MacBook Pro (16-inch, M3 Max, Late 2023)', |
| 59 | + 'Mac15,10': 'MacBook Pro (14-inch, M3 Max, Late 2023)', |
| 60 | + 'Mac15,11': 'MacBook Pro (16-inch, M3 Max, Late 2023)', |
| 61 | + |
| 62 | + // M3 Ultra |
| 63 | + 'Mac15,14': 'Mac Studio (M3 Ultra, 2025)', |
| 64 | + |
| 65 | + // M4 |
| 66 | + 'Mac16,1': 'MacBook Pro (14-inch, M4, Late 2024)', |
| 67 | + 'Mac16,2': 'iMac (24-inch, M4, 2024) 2-port', |
| 68 | + 'Mac16,3': 'iMac (24-inch, M4, 2024) 4-port', |
| 69 | + 'Mac16,10': 'Mac mini (M4, 2024)', |
| 70 | + 'Mac16,12': 'MacBook Air (13-inch, M4, 2025)', |
| 71 | + 'Mac16,13': 'MacBook Air (15-inch, M4, 2025)', |
| 72 | + |
| 73 | + // M4 Pro |
| 74 | + 'Mac16,7': 'MacBook Pro (16-inch, M4 Pro, Late 2024)', |
| 75 | + 'Mac16,8': 'MacBook Pro (14-inch, M4 Pro, Late 2024)', |
| 76 | + 'Mac16,11': 'Mac mini (M4 Pro, 2024)', |
| 77 | + |
| 78 | + // M4 Max |
| 79 | + 'Mac16,5': 'MacBook Pro (16-inch, M4 Max, Late 2024)', |
| 80 | + 'Mac16,6': 'MacBook Pro (14-inch, M4 Max, Late 2024)', |
| 81 | + 'Mac16,9': 'Mac Studio (M4 Max, 2025)', |
| 82 | + |
| 83 | + // M5 |
| 84 | + 'Mac17,2': 'MacBook Pro (14-inch, M5, 2025)', |
| 85 | + 'Mac17,3': 'MacBook Air (13-inch, M5, 2026)', |
| 86 | + 'Mac17,4': 'MacBook Air (15-inch, M5, 2026)', |
| 87 | + |
| 88 | + // M5 Pro |
| 89 | + 'Mac17,6': 'MacBook Pro (16-inch, M5 Pro, 2026)', |
| 90 | + 'Mac17,7': 'MacBook Pro (14-inch, M5 Pro, 2026)', |
| 91 | + |
| 92 | + // M5 Max |
| 93 | + 'Mac17,8': 'MacBook Pro (16-inch, M5 Max, 2026)', |
| 94 | + 'Mac17,9': 'MacBook Pro (14-inch, M5 Max, 2026)', |
| 95 | + |
| 96 | + // A18 Pro |
| 97 | + 'Mac17,5': 'MacBook Neo (13-inch, 2026)', |
| 98 | + |
| 99 | + // Virtual Mac |
| 100 | + 'VirtualMac2,1': 'Apple Virtual Machine', |
| 101 | +}; |
| 102 | + |
| 103 | +export function deviceDisplayName(model: string): string { |
| 104 | + return deviceNames[model] ?? model; |
| 105 | +} |
0 commit comments