chore(deps): bundle renovate updates + spec refresh#204
Conversation
Consolidates open Renovate PRs into a single update: - @biomejs/biome 2.4.12 -> 2.4.15 (#200, biome.json schema bumped to match) - @types/bun ^1.3.12 -> ^1.3.13 (#199) - @hey-api/openapi-ts ^0.96.0 -> ^0.97.1 (#195, regenerated clients) - typescript ^6.0.2 -> ^6.0.3 (#192) - @semantic-release/github ^12.0.6 -> ^12.0.8 (#202) - bun.lock regenerated (#194) - workflows: bun 1.3.12 -> 1.3.13 (#196), node 24.14.1 -> 24.15.0 (#191) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
📝 WalkthroughWalkthroughBumps dev tooling and CI toolchain versions (Bun 1.3.12→1.3.13, Node.js 24.14.1→24.15.0, Biome 2.4.12→2.4.15, and other devDependencies), expands the Seerr OpenAPI spec (mediaType filters, trending params, blocklist collection endpoints), adds a Bun build shim, and changes several client exports to type-only with regenerated client types. ChangesDependency, CI, and API changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related issues
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Pulls in the spec refresh from #201. After re-running generation with the bumped @hey-api/openapi-ts 0.97.1, only Seerr had actual API content changes; the other services' specs matched after formatting. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (3)
scripts/build-index.ts (2)
23-23: 💤 Low valueAdd error handling for file write operations.
The
Bun.writecall lacks error handling. If the write fails (due to permissions, disk space, or other I/O issues), the script will throw an unhandled promise rejection. While Bun will likely surface this, explicit error handling or a try-catch block would improve clarity and allow for better error messages.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/build-index.ts` at line 23, Wrap the await Bun.write('dist/index.js', shim) call in a try-catch to handle potential I/O errors: catch the thrown error from Bun.write, log a clear message including the error details and the target filename (referencing the Bun.write call and the shim data), and exit or rethrow with a non-zero status as appropriate so the build script fails fast with a helpful error instead of an unhandled rejection.
4-13: ⚖️ Poor tradeoffConsider extracting the service list to avoid duplication.
The
SERVICESarray is duplicated inpackage.json(line 123, in thebuild:jsscript), which creates a maintenance burden. Adding or removing a service requires updating both locations, increasing the risk of drift.Consider extracting this list to a shared configuration file (e.g.,
scripts/config.tsorpackage.jsonas a custom field) that both the build script andpackage.jsoncan reference.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/build-index.ts` around lines 4 - 13, Extract the duplicated SERVICES array into a single shared config module and have the build script and package.json reference that source: move the SERVICES constant out of its current file into a shared export (e.g., export const SERVICES = [...]) and update the code that currently uses SERVICES in build-index.ts to import it, then update the build:js entry to read the same exported list (either by importing the module in a small Node helper used by the npm script or by exposing the list in package.json via a single custom JSON field that both consumers read); ensure the unique symbol SERVICES is the single source of truth and update all usages to import/read that shared value.package.json (1)
123-123: ⚖️ Poor tradeoffLong build command duplicates service list and reduces maintainability.
The
build:jsscript is over 500 characters and manually repeats the samebun buildcommand for each of the eight services. This duplicates the service list fromscripts/build-index.ts(lines 4-13), creating the same drift risk flagged in that file.Consider refactoring
scripts/build-index.tsto also handle the client builds in a loop, which would allow this script to become simply:"build:js": "bun run scripts/build-index.ts"🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@package.json` at line 123, The build:js script duplicates the client list and should be simplified to call scripts/build-index.ts only; update package.json's "build:js" to "bun run scripts/build-index.ts" and refactor scripts/build-index.ts to also perform the per-client builds by iterating its existing services array (the services variable / array defined around lines 4-13) and invoking the bun build command for each client (using Bun.spawn/Bun.spawnSync or child_process.execSync) to output into dist/clients with the same flags; ensure the loop constructs the same build args used previously and reports errors so package.json no longer repeats the service list.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@package.json`:
- Line 16: You upgraded "@hey-api/openapi-ts" from ^0.96.0 to ^0.97.1 which
introduces breaking changes; review the migration guide and update affected
code: adjust any logic that constructs or uses runtimeConfigPath (now relative
to output folder), remove usages of the removed Biome "--apply" flag in
post-processor invocations, update callsites and types that access generated
request/response objects to handle them being optional (may be undefined), adapt
any error interceptors to accept the new signature that includes the previous
result, ensure request validation handling respects throwOnError:false, and
update client instantiation sites to satisfy new ky/kyOptions requirements and
defaults; search for symbols and usages referencing "@hey-api/openapi-ts"
outputs, runtimeConfigPath, post-processor/biome flags, generated
request/response types, error interceptor functions, validation options, and
client/kyOptions to apply fixes.
---
Nitpick comments:
In `@package.json`:
- Line 123: The build:js script duplicates the client list and should be
simplified to call scripts/build-index.ts only; update package.json's "build:js"
to "bun run scripts/build-index.ts" and refactor scripts/build-index.ts to also
perform the per-client builds by iterating its existing services array (the
services variable / array defined around lines 4-13) and invoking the bun build
command for each client (using Bun.spawn/Bun.spawnSync or
child_process.execSync) to output into dist/clients with the same flags; ensure
the loop constructs the same build args used previously and reports errors so
package.json no longer repeats the service list.
In `@scripts/build-index.ts`:
- Line 23: Wrap the await Bun.write('dist/index.js', shim) call in a try-catch
to handle potential I/O errors: catch the thrown error from Bun.write, log a
clear message including the error details and the target filename (referencing
the Bun.write call and the shim data), and exit or rethrow with a non-zero
status as appropriate so the build script fails fast with a helpful error
instead of an unhandled rejection.
- Around line 4-13: Extract the duplicated SERVICES array into a single shared
config module and have the build script and package.json reference that source:
move the SERVICES constant out of its current file into a shared export (e.g.,
export const SERVICES = [...]) and update the code that currently uses SERVICES
in build-index.ts to import it, then update the build:js entry to read the same
exported list (either by importing the module in a small Node helper used by the
npm script or by exposing the list in package.json via a single custom JSON
field that both consumers read); ensure the unique symbol SERVICES is the single
source of truth and update all usages to import/read that shared value.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 3f1486e5-9971-4b89-8351-3ea1b33b7aa8
📒 Files selected for processing (3)
package.jsonscripts/build-index.tssrc/index.ts
| "@biomejs/biome": "2.4.12", | ||
| "@hey-api/openapi-ts": "^0.96.0", | ||
| "@biomejs/biome": "2.4.15", | ||
| "@hey-api/openapi-ts": "^0.97.1", |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
What are the breaking changes or notable changes in @hey-api/openapi-ts version 0.97.0 and 0.97.1 compared to 0.96.0?
💡 Result:
The primary breaking and notable changes from v0.96.0 to v0.97.0 (published Apr 28, 2026) are documented in the official release notes, which list 15 breaking changes[1][2][3]. Key changes compared to prior versions (including 0.96.0) include: - Client: runtimeConfigPath now resolves relative to the output folder instead of pasting verbatim[1][2][3]. - Config: Removed --apply flag from Biome post-processor commands[1][2]. - Multiple clients (@hey-api/client-angular, client-fetch, client-ky, client-next, etc.): - request and response objects are now optionally typed (might be undefined)[1][2]. - Error interceptors now pass the previous result[1][2][3]. - Now respects throwOnError: false during request validation failures[1][2]. - @hey-api/client-ky specific: Respects ky instance defaults; some options must use kyOptions field, use undefined to unset[1][2][3]. - CLI: Now prints file count and generator speed[1][2]. v0.97.1 (published May 4, 2026) appears to be a patch release with no documented breaking or notable changes in available sources; no specific release notes found detailing differences from 0.97.0 or 0.96.0[4][5]. It likely includes minor fixes or dependency updates, as is common for patch versions. No migration notes for v0.97.1 were found[3]. Review the full release notes on GitHub before upgrading, as impact depends on used features[1][2].
Citations:
- 1: https://github.com/hey-api/openapi-ts/releases/tag/2026-04-28
- 2: https://github.com/hey-api/openapi-ts/releases
- 3: https://heyapi.dev/openapi-ts/migrating
- 4: https://www.npmjs.com/package/@hey-api/openapi-ts?activeTab=versions
- 5: https://www.npmjs.com/package/@hey-api/openapi-ts
This upgrade introduces 15 documented breaking changes—review the migration guide before merging.
The bump from ^0.96.0 to ^0.97.1 requires users to adopt v0.97.0, which includes significant breaking changes:
runtimeConfigPathnow resolves relative to the output folder- Removed
--applyflag from Biome post-processor commands requestandresponseobjects are now optionally typed (may be undefined)- Error interceptors now pass the previous result
- Request validation failures now respect
throwOnError: false - Client-specific changes (e.g., ky instance defaults, kyOptions field requirements)
The -92 line reduction in generated code aligns with these structural changes. Review the full migration guide to assess impact on your codebase.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@package.json` at line 16, You upgraded "@hey-api/openapi-ts" from ^0.96.0 to
^0.97.1 which introduces breaking changes; review the migration guide and update
affected code: adjust any logic that constructs or uses runtimeConfigPath (now
relative to output folder), remove usages of the removed Biome "--apply" flag in
post-processor invocations, update callsites and types that access generated
request/response objects to handle them being optional (may be undefined), adapt
any error interceptors to accept the new signature that includes the previous
result, ensure request validation handling respects throwOnError:false, and
update client instantiation sites to satisfy new ky/kyOptions requirements and
defaults; search for symbols and usages referencing "@hey-api/openapi-ts"
outputs, runtimeConfigPath, post-processor/biome flags, generated
request/response types, error interceptor functions, validation options, and
client/kyOptions to apply fixes.
cc09b7c to
4f16355
Compare
# [2.11.0](v2.10.0...v2.11.0) (2026-05-18) ### Bug Fixes * **deps:** bundle renovate updates + spec refresh ([#204](#204)) ([93e6cc7](93e6cc7)), closes [#200](#200) [#199](#199) [#195](#195) [#192](#192) [#202](#202) [#194](#194) [#196](#196) [#191](#191) * **qbittorrent:** rewrite cookie name on Request objects for qBT 5.x ([#208](#208)) ([f1aa83f](f1aa83f)), closes [#205](#205) ### Features * **cli:** add manual import commands for Radarr and Sonarr ([#198](#198)) ([33d8f68](33d8f68)), closes [#197](#197)
# [2.11.0](v2.10.0...v2.11.0) (2026-05-18) ### Bug Fixes * **deps:** bundle renovate updates + spec refresh ([#204](#204)) ([93e6cc7](93e6cc7)), closes [#200](#200) [#199](#199) [#195](#195) [#192](#192) [#202](#202) [#194](#194) [#196](#196) [#191](#191) * **qbittorrent:** rewrite cookie name on Request objects for qBT 5.x ([#208](#208)) ([f1aa83f](f1aa83f)), closes [#205](#205) ### Features * **cli:** add manual import commands for Radarr and Sonarr ([#198](#198)) ([33d8f68](33d8f68)), closes [#197](#197)
# [2.11.0](v2.10.0...v2.11.0) (2026-05-18) ### Bug Fixes * **deps:** bundle renovate updates + spec refresh ([#204](#204)) ([93e6cc7](93e6cc7)), closes [#200](#200) [#199](#199) [#195](#195) [#192](#192) [#202](#202) [#194](#194) [#196](#196) [#191](#191) * **qbittorrent:** rewrite cookie name on Request objects for qBT 5.x ([#208](#208)) ([f1aa83f](f1aa83f)), closes [#205](#205) ### Features * **cli:** add manual import commands for Radarr and Sonarr ([#198](#198)) ([33d8f68](33d8f68)), closes [#197](#197)
# [2.11.0](v2.10.0...v2.11.0) (2026-05-18) ### Bug Fixes * **deps:** bundle renovate updates + spec refresh ([#204](#204)) ([93e6cc7](93e6cc7)), closes [#200](#200) [#199](#199) [#195](#195) [#192](#192) [#202](#202) [#194](#194) [#196](#196) [#191](#191) * **qbittorrent:** rewrite cookie name on Request objects for qBT 5.x ([#208](#208)) ([f1aa83f](f1aa83f)), closes [#205](#205) ### Features * **cli:** add manual import commands for Radarr and Sonarr ([#198](#198)) ([33d8f68](33d8f68)), closes [#197](#197)
# [2.11.0](v2.10.0...v2.11.0) (2026-05-18) ### Bug Fixes * **deps:** bundle renovate updates + spec refresh ([#204](#204)) ([93e6cc7](93e6cc7)), closes [#200](#200) [#199](#199) [#195](#195) [#192](#192) [#202](#202) [#194](#194) [#196](#196) [#191](#191) * **qbittorrent:** rewrite cookie name on Request objects for qBT 5.x ([#208](#208)) ([f1aa83f](f1aa83f)), closes [#205](#205) ### Features * **cli:** add manual import commands for Radarr and Sonarr ([#198](#198)) ([33d8f68](33d8f68)), closes [#197](#197)
|
🎉 This PR is included in version 2.11.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
Summary
Consolidates the 8 open Renovate PRs and the OpenAPI spec refresh (#201) into a single update.
Renovate updates
@biomejs/biome@types/bun@hey-api/openapi-tstypescript@semantic-release/githubbun.lockAlso bumps the
biome.json\$schemaURL to match the new biome CLI version.OpenAPI spec refresh (#201)
Pulled all
specs/*-openapi.jsonfromchore/refresh-openapi-specsand re-ranbun run generate && bun run generate:types. After biome formatting, only Seerr had upstream API changes (new fields insrc/clients/seerr-types.tsandsrc/generated/seerr/); the other six services' specs matched the existing checked-in versions byte-for-byte after normalization.The
@hey-api/openapi-ts0.96 → 0.97 bump produces drift in allsrc/generated/*/client/{client,types,utils}.gen.tsfiles (smaller output, net −92 lines). These are committed so the CI generator-drift check stays green.Note: latent top-level entry bug, not addressed here
While validating, I discovered that
dist/index.js(the top-level `import { RadarrClient } from 'tsarr'` entry) is broken — it ships dangling exports that throw `SyntaxError` on import. This is pre-existing in 2.11.0 on `main`, not caused by this PR. It's latent: CLI users and per-service subpath users (`tsarr/radarr`, etc.) are unaffected. Tracking it for a separate focused PR rather than bundling here.Test plan
bun install --frozen-lockfile(CI parity)rm -rf dist src/generated && bun run buildsucceeds end-to-endbun run generate && bun run generate:typesis idempotentbun run lint— cleanbun run typecheck— cleanbun run typecheck:coverage— 98.15% (gate: 98%)bun test— 283 / 283 pass--help,radarr --help,config --help,--versiontsarr/radarr…tsarr/seerr)Closes #191, #192, #194, #195, #196, #199, #200, #201, #202.
🤖 Generated with Claude Code