1.0.0-rc85

(fix): Fix detached HEAD error in publish workflow. When triggered by a tag push, the workflow enters detached HEAD state, causing rubygems/release-gem@v1 (which runs rake release) to fail when pushing to a non-existent branch. Replaced with manual build/push steps using rubygems/configure-rubygems-credentials@v1.0.0 for OIDC auth, bundle exec rake build, and gem push pkg/*.gem. Also replaced bundler-cache: true with explicit bundle install for more reliable dependency installation.

1.0.0-rc84

(fix): Fix packageName being incorrectly used for folder/module naming. The packageName from publish config (e.g., output.publish.rubygems.packageName) is now only used for the gemspec spec.name field, not for folder structure or Ruby module names. This fixes issues where gems with special characters in their package name (e.g., “square.rb”) would have incorrect folder structures (lib/square_rb/ instead of lib/square/) and normalized gemspec names. The folder and module naming now correctly uses only the custom config moduleName option or the organization name as fallback.

(fix): Fix organization names with digits (e.g., “auth0”) being incorrectly transformed to “auth_0” in folder names. The snake_case transformation now preserves letter-digit sequences, so “auth0” stays “auth0” and “OAuth2” becomes “oauth2” instead of “o_auth_2”.

1.0.0-rc83

(fix): Fix request body serialization bug where path/query/header parameters were incorrectly serialized as nil values in the request body. For endpoints with inlined request bodies that also have path, query, or header parameters, the wrapper type (which includes all endpoint parameters) was being created with only body properties, causing non-body fields to be nil and serialized as null in the JSON body. The fix uses a serialize-then-split pattern: serialize ALL params through the wrapper type first, then remove non-body params from the serialized result. This ensures proper type conversion while keeping non-body params out of the request body.


1.0.0-rc82

(feat): Implement HTTP status code-based retry logic with exponential backoff. The SDK now automatically retries requests that fail with retryable HTTP status codes (408, 429, 500, 502, 503, 504, 521, 522, 524) using exponential backoff with jitter. The retry logic respects Retry-After headers when present. This addresses the feature gap where the SDK previously only used Net::HTTP’s network-level retries, which don’t handle HTTP status codes like 429 (Too Many Requests). The max_retries parameter now controls application-level retries with proper backoff, enabling compliance with rate-limiting requirements like Square App Marketplace.


1.0.0-rc81

(feat): Add support for self-hosted mode. When enabled, the generator can clone the user’s GitHub repository, generate SDK code, and commit/push changes or create a PR directly to the user’s repo. This feature respects .fernignore files to preserve user customizations. The generator now passes ir.selfHosted to the base generator agent instead of hardcoding false.


1.0.0-rc80

(fix): Add support for clientModuleName config option to customize the root client class name. When clientModuleName is set (e.g., “PinnacleBaseClient”), the generated root client class will use that name instead of the default “Client”. This restores functionality that existed in the original Ruby SDK generator.

(fix): Add support for packageName from publish config to set the gem name and module name. The gem name (folder name) and module name now use the packageName from the RubyGems publish config (e.g., output.publish.rubygems.packageName) as a fallback when the custom config module option is not set. This restores functionality from the original Ruby SDK generator where the gem name could be configured via the publish target.


1.0.0-rc79

(feat): Add support for additional_query_parameters in request options. Users can now pass additional query parameters via request_options[:additional_query_parameters] which will be merged with the endpoint’s query parameters when making HTTP requests.


1.0.0-rc78

(chore): Update Dockerfile to use the latest generator-cli with improve reference.md generation.

1.0.0-rc77

(feat): Add RETRIES, ADDITIONAL_HEADERS, and ADDITIONAL_QUERY_PARAMETERS sections to generated README.md. These sections document how to configure automatic retries, add custom headers, and add custom query parameters to API requests. The features were previously removed because they had Go-specific descriptions; they are now restored with Ruby-specific documentation and code snippets.


1.0.0-rc76

(fix): Fix wire tests for paginated endpoints not triggering HTTP requests. Cursor and offset pagination endpoints return lazy iterators that don’t make HTTP requests until iterated. Wire tests now call .pages.next_page on the returned iterator to trigger the first HTTP request, ensuring WireMock receives the expected request for verification.

(fix): Fix pagination field names to use Ruby-safe method names instead of wire values. Fields like cursor_field, item_field, and has_next_field are used to call Ruby methods on response objects via send(). Previously these used wireValue which doesn’t account for Ruby reserved word escaping (e.g., “next” -> “next_”). Now uses snakeCase.safeName which matches the actual Ruby accessor names.

1.0.0-rc75

(fix): Fix inconsistent module naming for organization names containing digits (e.g., “auth0”). Previously, internal types used module Auth0 while public types used module Auth_0 due to lodash’s snakeCase inserting underscores before digits. Now all code paths use upperFirst directly on the organization name, producing consistent module names like Auth0. Also fixes test_helper.rb require path to use the correct folder name (e.g., auth_0) instead of the module name (e.g., auth0), preventing LoadError when running tests.



1.0.0-rc74

(feat): Add opt-in requirePaths config option for auto-loading user-defined files when the gem is required. When configured (e.g., requirePaths: ["custom_integration", "sentry_integration"]), the gem entrypoint will auto-load each file from lib/<gem>/<path>.rb if it exists. This allows users to add custom code (e.g., Sentry integration) without needing to fernignore generated files. Uses file existence check to avoid silently swallowing real errors.


1.0.0-rc73

(fix): Fix endpoint header parameters being included in request body instead of HTTP headers. Header parameters (like Idempotency-Key) are now properly extracted from params and passed via the headers parameter in Request.new() calls.

(feat): Add normalize_keys utility to accept both snake_case and camelCase parameter keys. SDK endpoint methods now automatically convert camelCase keys (e.g., refundMethod) to snake_case (e.g., refund_method) at the start of each method. This allows users to pass JSON data with camelCase keys directly to SDK methods without manual conversion.

1.0.0-rc72

(chore): Add sdkVersion as a top-level field in the generated metadata.json file.