chore(screenshots): use iPhone 18 Pro Max and iOS 27.1

This commit is contained in:
Kaede Akino committed 2026-10-06 23:32:31 +08:00
1 parent 6a84ab04b4
commit bb1a15ed0d
3 files changed
+12 -12

No files matched your search

+6 -6
View File
@@ -71,7 +71,7 @@ matrix without building or opening windows:
```sh
bundle exec fastlane mac screenshots scenes:agent locales:zh-Hant
bundle exec fastlane ios screenshots scenes:ssh,sftp devices:ipad locales:zh-Hans,zh-Hant
bundle exec fastlane ios screenshots devices:ipad runtime:com.apple.CoreSimulator.SimRuntime.iOS-27-0
bundle exec fastlane ios screenshots devices:ipad runtime:com.apple.CoreSimulator.SimRuntime.iOS-27-1
bundle exec fastlane ios screenshots plan:true
```
@@ -95,19 +95,19 @@ the downstream workflow described below.
produces Command Generator, and `agent` produces Assistant. Metrics detail is a
development demo only; do not retain its captures as marketing assets.
The mobile lane requires iOS/iPadOS 27 and defaults to the 27.0 runtime.
The mobile lane requires iOS/iPadOS 27 and defaults to the 27.1 runtime.
It checks both the simulator model identifier and the raw pixel dimensions:
| Selector | Capture device | Native capture size |
| --- | --- | --- |
| `iphone` | iPhone 17 Pro Max (6.9-inch), portrait | 1320×2868 |
| `iphone` | iPhone 18 Pro Max (6.9-inch), portrait | 1320×2868 |
| `ipad` | iPad Pro 13-inch (M5), landscape | 2752×2064 |
Create the exact simulators once if they are missing:
```sh
xcrun simctl create "iPhone 17 Pro Max" com.apple.CoreSimulator.SimDeviceType.iPhone-17-Pro-Max com.apple.CoreSimulator.SimRuntime.iOS-27-0
xcrun simctl create "iPad Pro 13-inch (M5)" com.apple.CoreSimulator.SimDeviceType.iPad-Pro-13-inch-M5-12GB com.apple.CoreSimulator.SimRuntime.iOS-27-0
xcrun simctl create "iPhone 18 Pro Max" com.apple.CoreSimulator.SimDeviceType.iPhone-18-Pro-Max com.apple.CoreSimulator.SimRuntime.iOS-27-1
xcrun simctl create "iPad Pro 13-inch (M5)" com.apple.CoreSimulator.SimDeviceType.iPad-Pro-13-inch-M5-12GB com.apple.CoreSimulator.SimRuntime.iOS-27-1
```
The lane does not resize iPhone captures or substitute another device. Existing
@@ -159,7 +159,7 @@ iPhone Assistant/SSH/Vault, iPad Metrics/SFTP/Vault, and Mac Workspace, in all t
locales. Use `scenes:` explicitly when another composition is needed.
The lane stages source copies and publishes
`<locale>/<device>/<feature>.png` only after every selected output succeeds. Old Pro captures
must be recaptured on iPhone 17 Pro Max before framing; they are rejected by size.
must be recaptured on iPhone 18 Pro Max before framing; they are rejected by size.
- iPhone uses frameit's iPhone 17 Pro Max Silver frame at native screenshot size.
- iPad uses Apple's official iPad Pro (M5) 13-inch Space Black PNG as a custom
+4 -4
View File
@@ -39,7 +39,7 @@ class ScreenshotsTests < Minitest::Test
capture = runner(:ios, { devices: "ipad", locales: "zh-Hant", scenes: "ssh,sftp" },
{ "TERMIND_SCREENSHOT_DEVICES" => "iphone", "TERMIND_SCREENSHOT_LOCALES" => "en" })
capture.define_singleton_method(:command) do |*args|
JSON.generate("devices" => { "com.apple.CoreSimulator.SimRuntime.iOS-27-0" => [
JSON.generate("devices" => { "com.apple.CoreSimulator.SimRuntime.iOS-27-1" => [
{ "name" => "iPad Pro 13-inch (M5)", "udid" => "ipad-id",
"deviceTypeIdentifier" => "com.apple.CoreSimulator.SimDeviceType.iPad-Pro-13-inch-M5-12GB" }
] })
@@ -52,9 +52,9 @@ class ScreenshotsTests < Minitest::Test
def test_a_renamed_pro_cannot_be_used_as_the_pro_max_capture_device
capture = runner(:ios, devices: "iphone")
capture.define_singleton_method(:command) do |*args|
JSON.generate("devices" => { "com.apple.CoreSimulator.SimRuntime.iOS-27-0" => [
{ "name" => "iPhone 17 Pro Max", "udid" => "wrong-model",
"deviceTypeIdentifier" => "com.apple.CoreSimulator.SimDeviceType.iPhone-17-Pro" }
JSON.generate("devices" => { "com.apple.CoreSimulator.SimRuntime.iOS-27-1" => [
{ "name" => "iPhone 18 Pro Max", "udid" => "wrong-model",
"deviceTypeIdentifier" => "com.apple.CoreSimulator.SimDeviceType.iPhone-18-Pro" }
] })
end
assert_raises(RuntimeError) { capture.find_devices }
+2 -2
View File
@@ -27,7 +27,7 @@ class Screenshots
}.freeze
MOBILE_SCENES = %w[vault sftp ssh metrics assistant].freeze
DEVICES = {
"iphone" => { name: "iPhone 17 Pro Max", type: "com.apple.CoreSimulator.SimDeviceType.iPhone-17-Pro-Max",
"iphone" => { name: "iPhone 18 Pro Max", type: "com.apple.CoreSimulator.SimDeviceType.iPhone-18-Pro-Max",
dimensions: [1320, 2868] },
"ipad" => { name: "iPad Pro 13-inch (M5)", type: "com.apple.CoreSimulator.SimDeviceType.iPad-Pro-13-inch-M5-12GB",
dimensions: [2752, 2064] }
@@ -47,7 +47,7 @@ class Screenshots
@devices = platform == :mac ? ["mac"] : selection(
options[:devices] || environment["TERMIND_SCREENSHOT_DEVICES"], DEVICES.keys, DEVICES.keys, "devices"
)
@runtime = options[:runtime] || environment["TERMIND_SCREENSHOT_RUNTIME"] || "com.apple.CoreSimulator.SimRuntime.iOS-27-0"
@runtime = options[:runtime] || environment["TERMIND_SCREENSHOT_RUNTIME"] || "com.apple.CoreSimulator.SimRuntime.iOS-27-1"
if platform == :ios && !@runtime.match?(/\Acom\.apple\.CoreSimulator\.SimRuntime\.iOS-27-\d+(?:-\d+)?\z/)
raise ArgumentError, "Screenshots require an iOS/iPadOS 27 runtime: #{@runtime}"
end