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.4
(chore): Publish new ruby-v2 generator version.
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.