1.12.5

(chore): Bump ruby-v2 model container Ruby base image to ruby:3.3-alpine3.23 (matching the ruby-v2 SDK container) and apply latest Alpine package security updates at build time.

1.12.4

(chore): Remediate container vulnerabilities flagged by the May 2026 Grype scan of the fernapi/fern-ruby-sdk image. Bumps the base image from ruby:3.3-alpine3.20 (EOL) to ruby:3.3-alpine3.23, picking up updated openssl, musl, busybox, zlib, curl, git, c-ares, ada-libs, sqlite-libs, and a Ruby 3.3.11 with newer default gems (resolv, zlib, rexml, uri). Also patches erb and net-imap over the base image (with stale gemspec cleanup so SBOM scanners see the fixed versions), upgrades npm’s bundled vulnerable packages (tar, minimatch, ip-address, picomatch, brace-expansion, @isaacs/brace-expansion, diff), and drops build-base from the runtime image (added as a virtual install-time package and removed after gem install) so binutils CVEs no longer ship in the final image. Reduces grype findings from 78 to 15 (all remaining are upstream Alpine packages with no fix available yet).


1.12.3

(fix): Apply canonical “all user-specified examples, else first autogenerated” selection in the Ruby v2 SDK snippet output path. Aligns the generator’s snippet.json / README example selection with TS-v1 / Python-v1 behavior so dynamic-IR-driven snippets are deterministic across runs.

1.12.2

(fix): Fix circular require in generated barrel file by excluding test/wire files from the main lib require list.


1.12.1

(fix): Fix duplicate root client generation that caused a lint error.

1.12.0

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


1.11.1

(fix): Strip trailing whitespace from generated comment lines so spec-controlled docstrings no longer trip Layout/TrailingWhitespace after the rubocop -A autocorrect pass was removed in #15202. Caught on the Square nightly baseline benchmark.

1.11.0

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

1.10.0

(fix): Fix Ruby string interpolation injection vulnerability in TypeLiteral string emitter. Untrusted API spec default values containing #{} are now properly escaped in generated double-quoted Ruby strings.

(feat): Generate fully rubocop-compliant code at emitter level, eliminating all remaining rubocop offenses in generated output so rubocop -A is no longer needed at generation time. Covers Style/IfUnlessModifier (modifier-form detection added to ruby.IfElse AST), Style/RedundantInterpolation (bare .to_s for single-interpolation URL paths and header values), Lint/DuplicateHashKey (dedupe by key in TypeLiteral hash emit and by name in dynamic-snippet keyword arguments), and Layout/FirstHashElementIndentation / Layout/FirstArgumentIndentation (EnforcedStyle: consistent + correct wire-test pagination continuation indent). Rubocop runs as a CI regression gate (check-only, no -A).


1.9.0

(feat): Support x-fern-default as fallback value for parameters in generated Ruby SDKs. When a header, query parameter, or path parameter has a clientDefault value in the IR, the generated Ruby SDK makes that parameter optional with the default value automatically applied.


1.8.0

(feat): Use auth scheme placeholder values in README snippets when configured via placeholder field on auth schemes.


1.7.1

(chore): Bump @fern-api/generator-cli to 0.9.11. The GitHub pipeline step now creates signed commits via the GitHub REST API (matching fiddle’s legacy InMemoryGitRepo push path), restoring verified fern-api[bot] commits on replay-enabled orgs.

1.7.0

(feat): Add offsetSemantics config option. When set to "page-index", offset pagination increments by 1 each page instead of by the number of items returned ("item-index", the default).

1.6.3

(chore): Publish the Ruby SDK generator to fernapi/fern-ruby-sdk on Docker Hub. The fernapi/fern-ruby-sdk-v2 image is still pushed as an alias for backward compatibility.

1.6.2

(fix): Fix wire test verification for endpoints with multi-value array query parameters.

1.6.1

(chore): Add crash reporting via Sentry to the generator runtime, and classify thrown errors using the new shared GeneratorError taxonomy so user-facing failures (config, validation, auth, network, environment) are kept distinct from internal Fern bugs — only the latter are forwarded to Sentry. No change to generated output.


1.6.0

(feat): Expose HTTP response metadata (status code, headers, and raw HTTP response) on paginated iterators. CursorPageIterator, OffsetPageIterator, CustomPager, and ItemIterator now expose status_code, headers, and http_response methods that return metadata from the most recent page load.

1.5.0

(feat): Improve Ruby SDK generation performance by generating rubocop-compliant code directly. Generator time reduced by ~49% on a large real-world OAS (122s → 62s) by fixing the top rubocop offense categories so rubocop -A has very little to auto-correct.



1.4.3

(fix): Fix Ruby dynamic snippet generation to synthesize default values for required properties missing from examples. Previously, empty objects and arrays were rendered as {} and [{}]; now required fields are populated with reasonable placeholder values matching the behavior of the Python generator.