Skip to content

release: 0.79.0 - #347

Open
openai-sdks[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main--components--openai
Open

release: 0.79.0#347
openai-sdks[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main--components--openai

Conversation

@openai-sdks

@openai-sdks openai-sdks Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Automated Release PR

0.79.0 (2026-08-12)

Features

Bug Fixes

  • api: Add new model identifiers and remove audit log source (#360) (e0a4bc5)
  • api: allow nil timeout in client signatures (#363) (e52ca61)
  • api: document file upload metadata defaults (#361) (b4bc1ea)
  • coerce nested BaseModel fields (#295) (e5152a9)
  • encode multipart array and nested fields (#348) (1c71a1e)
  • loading after ActiveSupport 6 subclass extensions (#346) (20fbb09)
  • preserve binary multipart stream reads (#354) (b3a1ba7)
  • return values from interruptible enumerator (#350) (327dad7)
  • tighten JSON, JSONL, and SSE content type matching (#277) (66359a0)

Chores

Documentation


This PR was generated with Release Please. See documentation.

@openai-sdks
openai-sdks Bot requested a review from a team as a code owner August 9, 2026 18:29
@openai-sdks

openai-sdks Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor Author

OkTest Summary

237/237 SDK tests passed in 11.017s for Ruby SDK PR #347.

Test results — 42 files
Test Result Time
tests/chat-completions-complex-body.test.ts ✅ Passed 335ms
tests/chat-completions-create.test.ts ✅ Passed 377ms
tests/chat-completions-stream.test.ts ✅ Passed 149ms
tests/files-content-binary.test.ts ✅ Passed 346ms
tests/files-create-multipart.test.ts ✅ Passed 373ms
tests/files-list-pagination.test.ts ✅ Passed 188ms
tests/initialize-config.test.ts ✅ Passed 376ms
tests/instance-isolation.test.ts ✅ Passed 300ms
tests/models-list.test.ts ✅ Passed 351ms
tests/responses-background-lifecycle.test.ts ✅ Passed 280ms
tests/responses-body-method-errors.test.ts ✅ Passed 560ms
tests/responses-cancel-timeout.test.ts ✅ Passed 253ms
tests/responses-cancel.test.ts ✅ Passed 304ms
tests/responses-compact-retries.test.ts ✅ Passed 401ms
tests/responses-compact.test.ts ✅ Passed 395ms
tests/responses-create-advanced-stream.test.ts ✅ Passed 246ms
tests/responses-create-advanced.test.ts ✅ Passed 308ms
tests/responses-create-disconnect.test.ts ✅ Passed 173ms
tests/responses-create-errors.test.ts ✅ Passed 380ms
tests/responses-create-malformed-api-responses.test.ts ✅ Passed 261ms
tests/responses-create-retries.test.ts ✅ Passed 453ms
tests/responses-create-stream-failures.test.ts ✅ Passed 164ms
tests/responses-create-stream-timeout.test.ts ✅ Passed 226ms
tests/responses-create-stream-wire.test.ts ✅ Passed 2.037s
tests/responses-create-stream.test.ts ✅ Passed 146ms
tests/responses-create-terminal-states.test.ts ✅ Passed 461ms
tests/responses-create-timeout.test.ts ✅ Passed 304ms
tests/responses-create.test.ts ✅ Passed 387ms
tests/responses-delete.test.ts ✅ Passed 420ms
tests/responses-input-items-errors.test.ts ✅ Passed 196ms
tests/responses-input-items-list.test.ts ✅ Passed 205ms
tests/responses-input-items-options.test.ts ✅ Passed 247ms
tests/responses-input-tokens-count-timeout.test.ts ✅ Passed 338ms
tests/responses-input-tokens-count.test.ts ✅ Passed 383ms
tests/responses-malformed-inputs.test.ts ✅ Passed 2.347s
tests/responses-not-found-errors.test.ts ✅ Passed 451ms
tests/responses-parse.test.ts ✅ Passed 316ms
tests/responses-retrieve-retries.test.ts ✅ Passed 468ms
tests/responses-retrieve.test.ts ✅ Passed 314ms
tests/responses-stored-method-errors.test.ts ✅ Passed 1.051s
tests/retry-behavior.test.ts ✅ Passed 2.031s
tests/sdk-error-shape.test.ts ✅ Passed 456ms

View OkTest run #31550205658

SDK merge (10c985f3d44d) · head (6c14d142c3bb) · base (d516874ebca3) · OkTest (91635c6a2723)

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Release metadata is consistent for 0.78.1, the changelog covers the sole commit since v0.78.0, the gem builds successfully, and exact-head CI is green.

@jbeckwith-oai jbeckwith-oai added the generator Touches generated SDK files label Aug 9, 2026
@openai-sdks
openai-sdks Bot force-pushed the release-please--branches--main--components--openai branch 2 times, most recently from 09dfc58 to 1690f68 Compare August 10, 2026 19:00

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Release metadata is consistent for 0.78.1, the changelog now covers all three user-facing fixes since v0.78.0 while correctly omitting the test-only commit, the gem builds successfully with the expected package metadata, targeted load-order and multipart/IO tests pass, lint/type validation passes, and exact-head CI is green across Ruby 3.3, 3.4, and 4.0.

@openai-sdks
openai-sdks Bot force-pushed the release-please--branches--main--components--openai branch from 1690f68 to cec65a3 Compare August 10, 2026 21:03

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewed the complete 0.78.1 release at this refreshed head. The manifest, runtime version, README install version, lockfile path version, changelog heading/date, and compare link are consistent. The changelog covers all four user-facing fixes since v0.78.0 and correctly omits the test-only commit; the newly included binary multipart stream-read fix has matching runtime, RBI/RBS, and regression-test coverage. Exact-head package, RuboCop, Sorbet, RBS, Ruby 3.3/3.4/4.0, required CI, and CodeQL checks are green. I found no release-integrity, compatibility, security, supply-chain, architecture, file-size, or maintainability blocker.

@openai-sdks openai-sdks Bot changed the title release: 0.78.1 release: 0.79.0 Aug 10, 2026
@openai-sdks
openai-sdks Bot force-pushed the release-please--branches--main--components--openai branch from cec65a3 to 3f76599 Compare August 10, 2026 21:06

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fresh review of the complete 0.79.0 release at this exact head. The minor version is appropriate for the new Azure OpenAI v1 provider; manifest, runtime version, README install version, lockfile path version, changelog heading/date, and compare link all agree. The changelog covers the Azure feature and all four user-facing fixes since v0.78.0 while correctly omitting the test-only commit. The Azure implementation stays behind the existing provider boundary, refreshes tokens per attempt, validates origin before attaching credentials, rejects custom-auth ambiguity, normalizes endpoints explicitly, and includes aligned RBI/RBS plus focused configuration, retry, origin, and authentication coverage. The multipart stream-read addition likewise has matching runtime/type/test coverage. Exact-head package, RuboCop, Sorbet, RBS, Ruby 3.3/3.4/4.0, required CI, and CodeQL are green. No release-integrity, compatibility, security, supply-chain, architecture, file-size, or maintainability blocker found.

@openai-sdks
openai-sdks Bot force-pushed the release-please--branches--main--components--openai branch 2 times, most recently from 03a067e to b87fca1 Compare August 10, 2026 21:11

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fresh thermo-nuclear review of the complete 0.79.0 release at this exact head. The new delta since the prior approval cleanly exposes request IDs on successful top-level models/pages and API errors without leaking metadata into model serialization, with aligned runtime, RBI/RBS, documentation, and regression coverage. The fiber-scheduler documentation matches the existing Net::HTTP behavior and is backed by an integration test that proves concurrent progress on one scheduler thread. The manifest, runtime version, README install version, lockfile path version, changelog heading/date/compare link, and built gem metadata are consistent; the changelog covers all user-facing commits since v0.78.0 and omits the test-only commit. The earlier Azure, multipart, nested-form, interruptible-enumerator, and load-order deltas remain coherent. Exact-head package, RuboCop, Sorbet, RBS, Ruby 3.3/3.4/4.0, required CI, and CodeQL checks are green. No release-integrity, compatibility, security, supply-chain, architecture, file-size, or maintainability blocker found.

@openai-sdks
openai-sdks Bot force-pushed the release-please--branches--main--components--openai branch from b87fca1 to adefbbf Compare August 10, 2026 21:45

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fresh thermo-nuclear review of the complete 0.79.0 release at this exact head. The new delta cleanly tightens JSON, JSONL, and SSE content-type matching: matching is anchored, case-insensitive, parameter-aware, and avoids false-positive prefixes, with aligned RBI declarations and focused matcher/dispatch regression coverage. The manifest, runtime version, README install version, lockfile path version, changelog heading/date/compare link, and built gem metadata remain consistent. The changelog now covers all nine user-facing commits since v0.78.0 and correctly omits the test-only commit. Previously reviewed Azure, request-ID, multipart, enumerator, load-order, and scheduler-documentation changes remain coherent. Exact-head package, RuboCop, Sorbet, RBS, Ruby 3.3/3.4/4.0, required CI, and CodeQL checks are green. No release-integrity, runtime/API compatibility, security, architecture, file-size, or maintainability blocker found.

@openai-sdks
openai-sdks Bot force-pushed the release-please--branches--main--components--openai branch from adefbbf to c3415b0 Compare August 11, 2026 03:14

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The newly accumulated nested-model coercion change adds the cross-component OpenAI::Internal::Type::Converter.coerce_with_error singleton method in lib/openai/internal/type/converter.rb, and calls it from ArrayOf, HashOf, BaseModel, and Union, but the shipped declarations in rbi/openai/internal/type/converter.rbi and sig/openai/internal/type/converter.rbs do not declare it. That leaves the runtime and the SDK's RBI/RBS surface out of sync and conflicts with this repository's contributor rule that public @api private methods used across components retain declarations at the same visibility. Please add matching singleton declarations (including the coerced-value/error tuple return), validate Sorbet and RBS, and regenerate this release. The exact-head package build, 568-test suite, targeted 13-test/95-assertion nested-coercion suite, diff check, and CI matrix are otherwise clean.

@openai-sdks
openai-sdks Bot force-pushed the release-please--branches--main--components--openai branch from c3415b0 to 5436b93 Compare August 11, 2026 03:49

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The prior blocker remains unresolved on this refreshed release head. OpenAI::Internal::Type::Converter.coerce_with_error still exists only in lib/openai/internal/type/converter.rb and is still absent from both shipped declaration files, rbi/openai/internal/type/converter.rbi and sig/openai/internal/type/converter.rbs, even though ArrayOf, HashOf, BaseModel, and Union call it across components. Please add matching singleton declarations, including the coerced-value/error tuple return, then run Sorbet/RBS validation and regenerate the release. The newly accumulated file-upload documentation accurately describes the SDK's fallback filename/content types and FilePart escape hatch; version/changelog/compare metadata is consistent; the local 568-test suite, gem package build, diff check, exact-head CI matrix, and file-threshold audit are otherwise clean.

@openai-sdks
openai-sdks Bot force-pushed the release-please--branches--main--components--openai branch from 5436b93 to 4b5b5c7 Compare August 11, 2026 16:38

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two release blockers remain on this exact head:

  1. OpenAI::Internal::Type::Converter.coerce_with_error is shipped in lib/openai/internal/type/converter.rb and is called by ArrayOf, HashOf, BaseModel, and Union, but the packaged declarations still omit it from both rbi/openai/internal/type/converter.rbi and sig/openai/internal/type/converter.rbs. Please add matching singleton declarations with the (coerced value, nullable StandardError) tuple return, then rerun Sorbet/RBS validation and regenerate the release. The built 0.79.0 gem confirms the mismatch: the runtime method is present while neither declaration contains it.

  2. The 0.79.0 changelog lists commit e0a4bc5 twice for the same “Add new model identifiers and remove audit log source” change: once under Features and again under Bug Fixes. Please keep the entry once under the intended category and regenerate the release notes.

The remaining release metadata is internally consistent; the targeted 131-test/750-assertion release-delta suite, RuboCop (2,601 files), Sorbet, RBS (1,211 files), gem build/inspection, diff check, exact-head Ruby 3.3/3.4/4.0 CI, required CI, and CodeQL are otherwise clean.

@openai-sdks
openai-sdks Bot force-pushed the release-please--branches--main--components--openai branch from 4b5b5c7 to 02b100b Compare August 11, 2026 17:00

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both blockers from the previous release head remain unresolved:

  1. OpenAI::Internal::Type::Converter.coerce_with_error is still shipped in lib/openai/internal/type/converter.rb and called across ArrayOf, HashOf, BaseModel, and Union, but it remains absent from both packaged declaration files: rbi/openai/internal/type/converter.rbi and sig/openai/internal/type/converter.rbs. Please add matching singleton declarations with the coerced-value / nullable StandardError tuple return, validate Sorbet and RBS, and regenerate the release.

  2. The 0.79.0 changelog still lists commit e0a4bc5 twice for the same “Add new model identifiers and remove audit log source” change, once under Features and once under Bug Fixes. Please retain a single PR-linked entry under the intended category and regenerate the release notes.

The newly accumulated upload-metadata documentation is consistent with the runtime fallback filename/content types and FilePart escape hatch. The remaining version/package metadata, all 12 other user-facing release entries, complete v0.78.0 release delta, file thresholds, and diff hygiene look clean. Local 568-test/1,971-assertion suite, targeted nested-coercion tests, RuboCop, Sorbet, RBS, and 0.79.0 gem build/inspection pass; exact-head package, Ruby 3.3/3.4/4.0, required CI, and CodeQL checks are green.

@openai-sdks
openai-sdks Bot force-pushed the release-please--branches--main--components--openai branch 3 times, most recently from fca6b46 to 8788fc6 Compare August 11, 2026 22:07

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both previously reported release blockers remain unresolved on exact head 8788fc66189f4e417276d8a5c85d4feadb123842:

  1. OpenAI::Internal::Type::Converter.coerce_with_error is still shipped at

    def coerce_with_error(target, value, state:)
    and directly called by ArrayOf/HashOf/BaseModel/Union, but both packaged declaration files still omit the public singleton method: and . This violates the repository cross-component visibility/declaration rule and leaves the runtime and type surfaces inconsistent. Add matching singleton declarations with target, value, and state parameters and tuple returns [T.anything, T.nilable(StandardError)] / [top, StandardError?], run Sorbet/RBS, and regenerate the release.

  2. CHANGELOG.md still lists commit e0a4bc5 twice with identical text/hash under both Features and Bug Fixes:

    * **api:** Add new model identifiers and remove audit log source ([e0a4bc5](https://github.com/openai/openai-ruby/commit/e0a4bc56d5280c45a12e44adc49b6c34e182b33f))
    and
    * **api:** Add new model identifiers and remove audit log source ([#360](https://github.com/openai/openai-ruby/issues/360)) ([e0a4bc5](https://github.com/openai/openai-ruby/commit/e0a4bc56d5280c45a12e44adc49b6c34e182b33f))
    . Keep one entry, preferably the Bug Fixes entry linked to #360, and regenerate the release notes.

The newly accumulated Tapioca typing, root lint coverage, and nil-timeout changes are otherwise coherent, and release metadata is aligned. Local validation passed 169 tests / 901 assertions, RuboCop over 2,607 files, Sorbet, RBS validation over 1,211 files, gem build/package inspection, diff checks, and file-threshold checks. Exact-head Ruby-matrix CI, required CI, CodeQL, and 237/237 OkTest SDK tests are green.

@openai-sdks
openai-sdks Bot force-pushed the release-please--branches--main--components--openai branch from 8788fc6 to f81ea9b Compare August 11, 2026 22:28

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Three release blockers remain on exact head f81ea9b9770f85ef31b5719e3541f5a4f0fd94da:

  1. The new purportedly safe info/error summaries disclose non-credential query values. Both completion and failure logs use safe_path(@url), but safe_path preserves every query value whose key does not match the credential regex. For example, the generated organization-users list accepts emails, and an info/error log emits /v1/organization/users?emails%5B%5D=alice%40example.com; other generated query fields include actor_emails and user-provided name. That conflicts with the README description of :info as a safe summary and its warning that sensitive-content disclosure is limited to debug diagnostics. Please make the non-debug path omit the query or redact every query value, keep selective query rendering in debug-only safe_url, and add info/error regression coverage with a PII query.

  2. The prior type-surface blocker remains. Runtime still ships public Converter.coerce_with_error, called by four SDK components, but the packaged RBI and RBS still omit it. The same declarations type CoerceState#error as a class even though runtime initializes it to nil and stores StandardError instances. Add matching singleton declarations with the coerced-value / nullable-error tuple return and model the state member as nullable StandardError, then rerun both type validations and regenerate the release.

  3. CHANGELOG.md:10 and CHANGELOG.md:17 still list the same e0a4bc5 change under both Features and Bug Fixes. Remove the unlinked Features duplicate and retain the complete PR-linked Bug Fixes entry.

The rest of the new observability delta is cohesive, version/package metadata is aligned, no file crossed 1,000 lines, and exact-head CI plus 237/237 OkTest cases are green. Local validation passed 136 targeted tests / 770 assertions, RuboCop across 2,611 files, Sorbet, all 1,212 RBS files, gem build/package inspection, syntax, and diff checks.

@openai-sdks
openai-sdks Bot force-pushed the release-please--branches--main--components--openai branch from f81ea9b to a00e645 Compare August 11, 2026 23:23

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requesting changes on exact head a00e645f84178192a06417d3f2f7ff1365c3c6db after a full v0.78.0-to-v0.79.0 release-delta review.

  1. High — keep query values out of default info/error logs. Context#completed and request_failed log safe_path, but that helper preserves every query value not matched by the credential-key denylist. This includes generated filters such as emails, actor_emails, and name; an exact-head reproduction returned those PII/resource values while redacting only api_key. The README calls info summaries safe and reserves its sensitive-content warning for debug, so ordinary production success and failure logs can persist customer data. Please make safe_path path-only for info/error, keep sanitized query diagnostics confined to debug safe_url, and add success/failure PII regressions. Expanding the denylist remains brittle.

  2. Medium — complete and correct the shipped Converter signatures. Converter.coerce_with_error is directly shared by BaseModel, ArrayOf, HashOf, and Union, but neither packaged RBI nor RBS declares it. The runtime CoerceState#error, RBI, and RBS also describe an error class even though runtime state starts as nil and stores exception instances. Please add matching singleton declarations returning a value plus nullable StandardError, and type the state as a nullable StandardError instance across runtime/RBI/RBS (including the YARD option docs).

  3. Low — remove the duplicate release note. Changelog line 10 and line 17 list the same e0a4bc5 change under both Features and Bug Fixes. Keep the complete PR-linked Bug Fix entry and remove the duplicate; adjust generator inputs only if regeneration brings it back.

Validation otherwise looks healthy: full local suite 612 runs / 2,307 assertions; RuboCop clean across 2,611 files; Sorbet clean; 1,212 RBS files valid; gem builds; git diff --check passes; exact-head GitHub CI and OkTest 237/237 are green; version/manifest/README/lockfile align at 0.79.0; no file crossed the 1,000-line threshold.

@openai-sdks
openai-sdks Bot force-pushed the release-please--branches--main--components--openai branch from a00e645 to 6c14d14 Compare August 12, 2026 00:26

@jbeckwith-oai jbeckwith-oai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requesting changes on exact head 6c14d142c3bb5366d6a6e0e822c60500fe0b88e7 after a full v0.78.0-to-v0.79.0 release review.

  1. High — keep query values out of default info/error logs. Context#completed and request_failed log safe_path, which preserves every query value outside a narrow credential-key denylist. An exact-head reproduction emitted emails, actor_emails, and name while redacting only api_key. Since README describes info summaries as safe and warns about sensitive content only for debug, ordinary success/failure logs can persist customer PII. Please make safe_path path-only for info/error, keep sanitized query diagnostics confined to debug safe_url, and add success/failure PII regressions. Expanding the denylist remains brittle.

  2. Medium — complete and correct the shipped Converter signatures. Converter.coerce_with_error is directly shared by BaseModel, ArrayOf, HashOf, and Union, but neither packaged RBI nor RBS declares it. Runtime initializes the state error to nil and stores exception instances, while the runtime alias, RBI, and RBS describe an error class. Please add matching singleton declarations returning a value plus nullable StandardError, and type the state as a nullable StandardError instance across runtime/RBI/RBS, including the YARD option docs.

  3. Low — remove the duplicate release note. Changelog line 10 and line 18 list the same e0a4bc5 change under Features and Bug Fixes. Keep the complete PR-linked Bug Fix entry and remove the duplicate; adjust release generation only if it reappears.

The new default_headers API looks sound: normalization/removal semantics, merge precedence, provider authentication, docs, RBI/RBS, and coverage align. Validation otherwise passes: targeted 114 runs / 675 assertions, diff and syntax checks, exact-head GitHub CI, and OkTest 237/237; release metadata aligns at 0.79.0 and no file crossed the 1,000-line threshold.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autorelease: pending generator Touches generated SDK files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Error using StringIO in audio transcription

1 participant