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.