1.1.0

(feat): Add omitFernHeaders configuration option. When enabled, Fern platform headers (X-Fern-Language, X-Fern-SDK-Name, X-Fern-SDK-Version, User-Agent) are omitted from generated SDK requests.


1.0.9

(chore): Add concurrency configuration to generated CI workflow with cancel-in-progress: false to prevent stacked runs from being cancelled when a newer run starts.


1.0.8

(fix): Re-throw errors after logging for README.md and reference.md generation failures. Documentation generation errors now break the generation flow so they are treated as important to fix.

1.0.7

(fix): Fix dynamic snippets to include global headers in generated code examples. Previously, required global headers (e.g., X-Organization-ID) configured via x-fern-global-headers were missing from dynamic snippet output. Also fixes header value lookup to use wire values instead of a non-existent property.


1.0.6

(chore): Improve error logging for reference.md generation failures. The generator now logs the actual error message and stack trace instead of a generic “this is OK” message, making it easier to diagnose generation issues.


1.0.5

(chore): Parallelize endpoint snippet generation in populateSnippetsCache(). All endpoints are now processed concurrently via Promise.all instead of sequentially, reducing snippet generation time for large APIs.


1.0.4

(chore): Standardize WireMock configuration to use WIREMOCK_URL environment variable (e.g., http://localhost:8080) instead of a hardcoded constant. Docker Compose now uses dynamic port mapping (0:8080) to avoid port conflicts when running multiple SDK tests in parallel. Falls back to http://localhost:8080 if the variable is not set.


1.0.3

(chore): Use generator-cli JS API directly instead of subprocess spawning. Remove generator-cli from Docker image since it is now bundled via esbuild.


1.0.2

(fix): Rename Union#member? to Union#type_member? to avoid rubocop-minitest’s Minitest/AssertIncludes cop incorrectly autocorrecting assert obj.member?(x) to assert_includes obj, x. The autocorrected form calls Module#include? which raises TypeError: wrong argument type Class (expected Module) on union type tests.


1.0.1

(fix): Fix wire test generator to respect clientModuleName custom config instead of hardcoding Client.

1.0.0

(feat): 💎 The Ruby SDK generator v2 is officially stable! 🎉🥂 After 87 release candidates, this ground-up rewrite ships with a modern AST-based architecture and full feature parity. 🔒 Stable, production-ready, and 100% backward-compatible with the legacy generator — existing configs, gem names, and modules just work. ✅

Highlights

  • 🔐 Bearer, API key, OAuth 2.0 & inferred auth with automatic token refresh
  • 🌐 Exponential-backoff retries, per-request base_url override, multipart uploads
  • 📄 Discriminated & undiscriminated unions, correct non-snake_case wire serialization
  • 📦 Cursor & offset pagination with lazy iterators, custom pager support
  • 🏗️ YARD docs, RuboCop-clean output, CI with RubyGems OIDC publishing, wire tests
  • ⚙️ Rich config: moduleName, requirePaths, extraDependencies, enableWireTests, and more
  • 🌍 Multiple named environments and multi-URL environment support
  • 🚀 RubyGems OIDC publishing and self-hosted mode with .fernignore support

1.0.0-rc87

(feat): Add support for useDefaultRequestParameterValues custom config option. When enabled, query parameters and headers with IR-defined default values use Ruby’s params.fetch(:key, default) idiom instead of conditional assignment, matching the behavior of other Fern generators.