0.35.17

(fix): Fix generated code for set-typed request bodies and response values. The Swift SDK represents set as JSONValue, so set example values now render as JSONValue literals (e.g. JSONValue.array([...])) in snippets and wire tests instead of being dropped or emitted as untyped Swift array literals.

(fix): Fix wire tests for endpoints that return an enum. The expected-response value is now referenced through its enum type (e.g. WeatherReport.sunny) rather than via shorthand (.sunny), which has no contextual type to resolve against when the response itself is an enum.

0.35.16

(fix): Fix generated snippets and wire tests omitting path parameters bound to API-level variables. Path parameters are always required arguments on the generated endpoint method, so a placeholder value (e.g. <endpointParam>) is now emitted for any path parameter whose value is absent from the example, keeping the generated SDK, snippets, and wire tests compiling.

0.35.15

(fix): Fix endpoints with a stream-parameter response generating a JSONValue return type, which broke generated wire tests that compared the result against the concrete response model. The Swift SDK does not yet implement response streaming, so these endpoints are now generated against their non-streaming response shape (e.g. the declared JSON response model).

0.35.14

(fix): Fully qualify Foundation.Data in the generated HTTP client and test templates. When an API defined a type named Data, the generated top-level Data type shadowed Foundation.Data in those templates, so the request-body builder and stub helpers resolved to the wrong type and failed to compile. The remaining bare Data references now use Foundation.Data, matching the convention already used elsewhere in the runtime.

0.35.13

(fix): Fixed argument ordering in generated wire tests and snippets so they match the order in which the corresponding Swift types declare their memberwise initializer parameters. Example object properties were previously emitted in the example’s authoring order, and file-upload fields were grouped by kind (files before body properties), both of which could produce arguments in the wrong positional order and fail to compile. Wire-test response objects are now reordered to match the generated struct’s declaration order, and file-upload request snippets preserve the original schema declaration order.

0.35.12

(fix): Fixed wire-test stub response bodies so they are valid JSON for every response type. The generated SDK reads String-typed response bodies as raw UTF-8 but decodes every other type via JSONDecoder. Wire tests now mirror that: String-decoded responses (string/bigInteger/base64 primitives) emit the raw payload, while all other types (objects, enums, dates, UUIDs, numbers, unions, etc.) are JSON-encoded. Previously bare scalars such as a UUID or enum value were emitted unquoted, producing invalid JSON that failed to decode.

0.35.11

(fix): Fixed several Swift code generation bugs around identifier and string escaping:

  • Enum raw values are now escaped as raw Swift string content rather than being JSON-encoded, fixing invalid literals (e.g. unterminated strings and bogus escapes).
  • Reserved keywords used as type names, enum/case names, property names, and type references are now backtick-escaped (e.g. Type), and identifiers that start with a digit are sanitized (e.g. 3D -> _3D).
  • String-typed literals that are not registered as nested literal enums (such as endpoint header/query literals) now fall back to JSONValue instead of crashing generation.

0.35.10

(fix): Fix enum query parameters wrapped in Nullable<> to emit .rawValue for proper Swift compilation. Previously, nullable enum query params generated .string(0)insteadof.string(0) instead of .string(0.rawValue), causing type errors.

0.35.9

(chore): Bump Node.js base image from 24.15 to 24.16.

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): 在发出包装原始用户数据(示例值、动态代码片段输入、JSON 线路测试 fixture)的 Swift 字符串字面量时,正确转义控制字符、真实换行、真实反斜杠和真实双引号。此前,包含真实换行的示例值(例如多行 iCalendar 字符串)会导致生成的 SDK Swift 编译失败,并报错 error: unterminated string literal