From 33d71f0108711f280bf7d552cd18c292cc0233a0 Mon Sep 17 00:00:00 2001 From: finalerock44 <77282157+finalerock44@users.noreply.github.com> Date: Mon, 24 Aug 2026 11:02:57 +0100 Subject: [PATCH] feat!: remove iOS 16 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit iOS 16 was removed from the platform on 2026-08-24 (dcd). Dropping it from the CLI's enum means `--ios-version 16` now fails client-side with a validation error naming the supported set, instead of travelling to the API for a 400. Old CLIs still get the server-side rejection, so this is defence in depth rather than the gate. The --help text at config/flags/device.flags.ts derives from this enum, so it follows automatically; it now reads "options: 18, 17, 26". Defaults were already iphone-14 / 17 in device-validation.service.ts and are unaffected — iPhone 14 keeps iOS 17 and 18. src/types/generated/schema.types.ts is regenerated against the new API swagger. As well as narrowing iOSVersion it picks up the API-side drift that had accumulated since the artifact was last built on 2026-08-06. Not touched: iphone-14-pro / iphone-15-pro are still in EiOSDevices despite having been removed from the platform in January. That is a separate drift with the same shape, and folding it in here would hide it inside an iOS 16 change. --- src/types/domain/device.types.ts | 1 - src/types/generated/schema.types.ts | 79 ++++++++++++++++++++++------- 2 files changed, 62 insertions(+), 18 deletions(-) diff --git a/src/types/domain/device.types.ts b/src/types/domain/device.types.ts index 4f1ce7d..5c808a7 100644 --- a/src/types/domain/device.types.ts +++ b/src/types/domain/device.types.ts @@ -26,7 +26,6 @@ export enum EAndroidDevices { export enum EiOSVersions { 'eighteen' = '18', 'seventeen' = '17', - 'sixteen' = '16', 'twentySix' = '26', } diff --git a/src/types/generated/schema.types.ts b/src/types/generated/schema.types.ts index 574e604..a1dabd0 100644 --- a/src/types/generated/schema.types.ts +++ b/src/types/generated/schema.types.ts @@ -140,9 +140,10 @@ export interface paths { * never touches credits. Lets the CLI print the cell count and estimated cost, * and surface validation errors, before uploading the flow ZIP. * - * The dollar estimate is exact for non-Google-Play cells; a Google Play - * column's price is path-dependent until #1100 unifies the parallel and - * sequential Play tiering. + * The dollar estimate is exact for every cell, Google Play included: quote + * and charge both run buildBaseCostByTuple -> calculateCost -> the shared + * resolvePricingTier over the same typed device, and so do the parallel and + * sequential submit paths (#1100). */ post: operations["UploadsController_estimateMatrix"]; delete?: never; @@ -689,6 +690,29 @@ export interface paths { patch?: never; trace?: never; }; + "/webhooks/notify-on-retry": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Toggle re-delivery when a retry finishes on an already-reported run (#1277). + * + * Defaults to on, unlike the Slack and email equivalents: this endpoint exists + * for the consumer that would rather NOT be called twice, while automations + * that want the current state keep working untouched. + */ + post: operations["WebhooksController_setNotifyOnRetry"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/webhooks/regenerate-secret": { parameters: { query?: never; @@ -1626,7 +1650,7 @@ export interface components { appFile?: string; env: string; /** @enum {string} */ - iOSVersion?: "16" | "17" | "18" | "26"; + iOSVersion?: "17" | "18" | "26"; /** @enum {string} */ iOSDevice?: "iphone-14" | "iphone-15" | "iphone-16" | "iphone-16-plus" | "iphone-16-pro" | "iphone-16-pro-max" | "ipad-pro-6th-gen"; platform?: string; @@ -1666,7 +1690,7 @@ export interface components { appFile?: string; env: string; /** @enum {string} */ - iOSVersion?: "16" | "17" | "18" | "26"; + iOSVersion?: "17" | "18" | "26"; /** @enum {string} */ iOSDevice?: "iphone-14" | "iphone-15" | "iphone-16" | "iphone-16-plus" | "iphone-16-pro" | "iphone-16-pro-max" | "ipad-pro-6th-gen"; platform?: string; @@ -1717,7 +1741,7 @@ export interface components { appFile?: string; env: string; /** @enum {string} */ - iOSVersion?: "16" | "17" | "18" | "26"; + iOSVersion?: "17" | "18" | "26"; /** @enum {string} */ iOSDevice?: "iphone-14" | "iphone-15" | "iphone-16" | "iphone-16-plus" | "iphone-16-pro" | "iphone-16-pro-max" | "ipad-pro-6th-gen"; platform?: string; @@ -2300,9 +2324,7 @@ export interface operations { OrgController_handlePaddleWebhook: { parameters: { query?: never; - header: { - "paddle-signature": string; - }; + header?: never; path?: never; cookie?: never; }; @@ -2933,7 +2955,6 @@ export interface operations { * "iphone-14": { * "name": "iPhone 14", * "versions": [ - * "16", * "17", * "18" * ], @@ -2997,8 +3018,7 @@ export interface operations { * "33", * "34", * "35", - * "36", - * "37" + * "36" * ], * "deprecated": false * }, @@ -3016,8 +3036,7 @@ export interface operations { * "33", * "34", * "35", - * "36", - * "37" + * "36" * ], * "deprecated": false * }, @@ -3027,8 +3046,7 @@ export interface operations { * "33", * "34", * "35", - * "36", - * "37" + * "36" * ], * "deprecated": false * }, @@ -3139,6 +3157,8 @@ export interface operations { secret_key?: string; /** @description Masked secret (default) */ secret_key_masked?: string; + /** @description Re-deliver when retried tests finish (default true) */ + notify_on_retry?: boolean; /** Format: date-time */ created_at?: string; /** Format: date-time */ @@ -3198,6 +3218,32 @@ export interface operations { }; }; }; + WebhooksController_setNotifyOnRetry: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": { + notifyOnRetry: boolean; + }; + }; + }; + responses: { + /** @description Retry re-delivery setting updated */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": Record; + }; + }; + }; + }; WebhooksController_regenerateWebhookSecret: { parameters: { query?: never; @@ -3882,7 +3928,6 @@ export interface operations { query?: never; header: { authorization: string; - "x-dcd-org": string; }; path?: never; cookie?: never;