0.35.8

(fix): Dynamic snippets now render path-parameter arguments in IR (URL / SDK signature) order rather than in the order they happen to appear in the input request, so generated examples line up with the actual SDK method signature even when the spec lists path parameters in a different order.


0.35.7

(chore): Patch the bundled ip-address to v10.2.0 in the swift-sdk container to address CVE-2026-42338 / GHSA-v2v4-37r5-5v8g (XSS in Address6 HTML- emitting methods). npm 11.12.1 (shipped with node:24.15) bundles ip-address@10.1.0 via socks; this overlays the published 10.2.0 tarball in place at image build time.


0.35.6

(chore): Patch Swift SDK + Swift model generator container CVEs flagged in the AWS ECR / grype scan. Patch npm’s bundled picomatch@4.0.3 -> 4.0.4 and brace-expansion@5.0.4 -> 5.0.5 via tarball replacement so the published image no longer ships the vulnerable bundled JS dependencies that grype flags.


0.35.5

(chore): Bump the Swift SDK and Swift model generator containers’ Node base image from node:22.22-alpine3.23 to node:24.15-alpine3.23. Aligns the generators with the rest of the Fern generator containers on a single Node major version (Node 24) and picks up Node 24’s CVE patches.


0.35.4

(chore): Bump generator container Node.js base image to node:22.22-alpine3.23 and apply latest Alpine package security updates at build time.


0.35.3

(fix): Fix Swift wire-test runtime equality failures when a response body contains a map (Dictionary<String, T>) whose value is an explicit-null nullable, or an Optional<Nullable<T>> field whose example is explicit-null. Previously the generator embedded the IR’s jsonExample for the response body, which silently dropped keys whose value resolved to JS undefined (e.g. an unresolved nullable<T>), and the expected-struct generator filtered optional properties using the same jsonExample === undefined check, which matched both “truly absent” and “explicit-null nullable” examples. The wire- test JSON body is now built by walking the typed example shape directly, and the expected-struct generator skips a property only when the typed optional container is genuinely empty — so an explicit-null nullable inside an optional now renders as Optional(.null) in both the embedded JSON body and the expected struct.

0.35.2

(chore): Update the Swift SDK generator container base image from node:22.12-alpine3.20 to node:22.22-alpine3.22 to address 92 container vulnerabilities (3 Critical, 48 High, 30 Medium, 11 Low) reported by Grype. The bump pulls in newer Alpine packages (libcrypto3/libssl3, musl, busybox, zlib), Node.js 22.22.x, and the bundled npm transitive dependencies (cross-spawn, minimatch, glob, tar, brace-expansion, ip-address, diff).


0.35.1

(fix): Apply canonical “all user-specified examples, else first autogenerated” selection in the Swift SDK snippet output path. README examples now use the user-specified example value (when one exists) instead of the autogenerated placeholder, matching TS-v1 / Python-v1 behavior.

0.35.0

(feat): Generate CONTRIBUTING.md for Swift SDKs.


0.34.2

(fix): Emit wire-test response bodies as Swift raw multi-line string literals (#"""..."""#) so that JSON escape sequences such as \n survive verbatim into the runtime String and reach JSONDecoder as valid JSON. The previous regular triple-quoted literal caused Swift to unescape \n into real newline characters at runtime, which produced invalid JSON (RFC 8259 disallows raw control characters inside JSON string values) and made JSONDecoder reject the body with dataCorrupted("The given data was not valid JSON.").


0.34.1

(fix): Properly escape control characters, real newlines, real backslashes, and real double quotes when emitting Swift string literals that wrap raw user data (example values, dynamic snippet inputs, JSON wire test fixtures). Previously, an example value containing a real newline (e.g. a multi-line iCalendar string) caused the generated SDK to fail Swift compilation with error: unterminated string literal.


0.34.0

(feat): Add retryStatusCodes configuration option ("legacy" | "recommended"). Legacy (default) preserves existing behavior (408, 429, >= 500). Recommended retries only transient codes (408, 429, 502, 503, 504), excluding 500 Internal Server Error to avoid retrying non-idempotent failures.