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.
1.4.2
(chore): Bump @fern-api/generator-cli to 0.9.8. Changelog URLs in generated PRs
now use the commit SHA instead of the PR branch name, keeping the link
valid after the branch is deleted or squash-merged.
1.4.1
(chore): Add Severity to Naming/VariableNumber in generated .rubocop.yml config.
Defaults to warning for customer SDKs. Configurable via rubocopSeverity custom config.
1.2.1
(fix): Fix rubocop not running in local mode by running bundle install
before bundle exec rubocop -A and clearing conflicting nix/devbox
Ruby environment variables. Previously, rubocop ran before dependencies
were installed and relied on a system-level rubocop that could be
broken or absent outside Docker.
1.3.0-rc.1
(fix): Ensure extraDependencies and extraDevDependencies override bundled dependency
versions instead of creating duplicates. Previously, specifying a bundled gem
(e.g., base64, rake) in extra dependencies would result in duplicate entries
in the gemspec or Gemfile. The user-specified version now takes precedence.
1.4.0
(feat): Support omitting username or password from basic auth when configured via
usernameOmit or passwordOmit in the IR. Omitted fields are removed from
the SDK’s public API and treated as empty strings internally (e.g., omitting
password encodes username:, omitting username encodes :password). When
both are omitted, the Authorization header is skipped entirely.
1.2.0
(feat): Add maxRetries custom config option to override the default maximum
number of retries for failed requests. The default remains 2 when not
specified.
1.1.13
(chore): Remove legacy dollar-sign workaround in generated CI workflow now that Eta
template engine does not interpret ${} syntax.
1.1.12
(chore): Migrate template engine from lodash to Eta for consistency with other generators.
1.3.0-rc.0
(feat): Upgrade to IR v66 which compresses the IR Name type, reducing IR size and increasing performance.
1.1.11
(chore): Change default rubocopVariableNumberStyle from snake_case to normalcase,
so field names with embedded digits (e.g., recaptcha_v2, office365) no longer
trigger RuboCop warnings by default.
1.1.10
(fix): Add explicit return in Boolean.coerce for TrueClass/FalseClass
branch and suppress RuboCop Lint/Void warnings on bare value
expressions in the utils coerce fallback paths.
1.1.9
(chore): Add rubocopVariableNumberStyle config option to control RuboCop Naming/VariableNumber style.
Supported values: snake_case (default, requires underscores before numbers like recaptcha_v_2),
normalcase (allows numbers without underscores like recaptcha_v2, office365), or disabled.
This allows APIs with field names containing embedded digits to configure the appropriate style.
1.1.8
(fix): Support multiple Basic Auth schemes with AuthSchemesRequirement.Any.
When an API defines more than one basic auth scheme (e.g.,
accountId/authToken and apiKey/apiKeySecret), the generated client now
produces conditional if/elsif blocks that check which credential pair
was provided and sets the Authorization header accordingly. Previously,
only the first basic auth scheme was used.
1.1.7
(fix): Add explicit base64 gem dependency for APIs using Basic Auth.
The gemspec now conditionally includes spec.add_dependency "base64"
when the API definition contains a basic auth scheme, ensuring the
Base64.strict_encode64 call in the generated client works on all
Ruby versions where base64 is a bundled gem.
1.1.6
(chore): Pretty-print generated wiremock-mappings.json with 2-space indentation
to reduce diff sizes on subsequent SDK generations.
1.1.5
(fix): Prevent additional_headers in request options from overriding
SDK-set headers such as Authorization, Content-Type, and SDK
metadata. Headers set by the SDK or the API definition are now
protected (case-insensitively) and silently filtered from
additional_headers.
(fix): Reject HTTP URLs for non-localhost hosts. Requests to http://
URLs now raise ArgumentError unless the host is localhost,
127.0.0.1, or [::1], preventing accidental transmission of
authentication credentials in plaintext.
(fix): Explicitly set verify_mode = OpenSSL::SSL::VERIFY_PEER on
HTTPS connections. This was already the Ruby default but is now
stated in code to satisfy security audits.