Skip to content

chore(deps): bundle renovate updates + spec refresh#204

Merged
robbeverhelst merged 2 commits into
mainfrom
robbeverhelst/renovate-updates
May 13, 2026
Merged

chore(deps): bundle renovate updates + spec refresh#204
robbeverhelst merged 2 commits into
mainfrom
robbeverhelst/renovate-updates

Conversation

@robbeverhelst

@robbeverhelst robbeverhelst commented May 11, 2026

Copy link
Copy Markdown
Owner

Summary

Consolidates the 8 open Renovate PRs and the OpenAPI spec refresh (#201) into a single update.

Renovate updates

Update From To Renovate PR
@biomejs/biome 2.4.12 2.4.15 #200
@types/bun ^1.3.12 ^1.3.13 #199
@hey-api/openapi-ts ^0.96.0 ^0.97.1 #195
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
Workflows: node 24.14.1 24.15.0 #191

Also bumps the biome.json \$schema URL to match the new biome CLI version.

OpenAPI spec refresh (#201)

Pulled all specs/*-openapi.json from chore/refresh-openapi-specs and re-ran bun run generate && bun run generate:types. After biome formatting, only Seerr had upstream API changes (new fields in src/clients/seerr-types.ts and src/generated/seerr/); the other six services' specs matched the existing checked-in versions byte-for-byte after normalization.

The @hey-api/openapi-ts 0.96 → 0.97 bump produces drift in all src/generated/*/client/{client,types,utils}.gen.ts files (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 build succeeds end-to-end
  • bun run generate && bun run generate:types is idempotent
  • bun run lint — clean
  • bun run typecheck — clean
  • bun run typecheck:coverage — 98.15% (gate: 98%)
  • bun test — 283 / 283 pass
  • CLI smoke: --help, radarr --help, config --help, --version
  • Per-service subpath imports verified (tsarr/radarrtsarr/seerr)
  • CI green on PR
  • Merge — semantic-release will not cut a release (all commits are `chore:`)

Closes #191, #192, #194, #195, #196, #199, #200, #201, #202.

🤖 Generated with Claude Code

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>
@coderabbitai

coderabbitai Bot commented May 11, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Bumps 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.

Changes

Dependency, CI, and API changes

Layer / File(s) Summary
Dev Dependencies
package.json
Bumped devDependencies: @biomejs/biome, @hey-api/openapi-ts, @semantic-release/github, @types/bun, and typescript.
Configuration Schema Alignment
biome.json
Updated $schema reference to Biome 2.4.15.
CI/CD Workflow Toolchain Updates
.github/workflows/ci.yml, .github/workflows/docs.yml, .github/workflows/refresh-specs.yml, .github/workflows/release.yml, .github/workflows/clawhub-skill.yml
Updated Bun to 1.3.13 across workflows; updated Node.js to 24.15.0 in release and ClawHub validate/publish jobs.
OpenAPI spec changes
specs/seerr-openapi.json
PublicSettings now requires plexClientIdentifier (UUID); added/changed mediaType query params for blocklist/blacklist/watchlist endpoints; added /blocklist/collection/{collectionId} POST and DELETE; expanded /discover/trending with mediaType and timeWindow; extended /user sort options.
Generated client types
src/clients/seerr-types.ts
Added re-exports for PostBlocklistCollectionByCollectionId* and DeleteBlocklistCollectionByCollectionId* types corresponding to the new spec paths.
Build shim & index exports
scripts/build-index.ts, package.json, src/index.ts
Added Bun build helper to generate dist/index.js, updated build:js to run it, and changed generated client namespace exports in src/index.ts to export type * as ....

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related issues

Poem

🐰
Bun hops up a careful flight,
Tooling tuned to newer light,
Specs grow filters, collections sing,
Types align — the build takes wing,
I nibble updates — code feels right.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR successfully addresses the linked issue #191 by updating Node.js version from 24.14.1 to 24.15.0 in GitHub Actions workflows (clawhub-skill.yml and release.yml), plus six additional Renovate updates and a spec refresh covering issues #192, #194, #195, #196, #199, #200, #202.
Out of Scope Changes check ✅ Passed All changes are scoped to the stated objectives: build system fixes, dependency updates across workflows and package.json, OpenAPI spec refreshes, and generated type updates aligned with the Seerr API changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check ✅ Passed The title accurately summarizes the main change: consolidating Renovate dependency updates and OpenAPI spec refresh into a single PR.
Description check ✅ Passed The description is comprehensive and well-structured, covering summary, detailed changelog, test plan, and related issues; all template sections are addressed.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch robbeverhelst/renovate-updates

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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>
@robbeverhelst robbeverhelst changed the title chore(deps): bundle renovate updates chore(deps): bundle renovate updates + spec refresh May 12, 2026
@robbeverhelst robbeverhelst changed the title chore(deps): bundle renovate updates + spec refresh fix(build): repair top-level entry + bundle renovate updates + spec refresh May 12, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (3)
scripts/build-index.ts (2)

23-23: 💤 Low value

Add error handling for file write operations.

The Bun.write call 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 tradeoff

Consider extracting the service list to avoid duplication.

The SERVICES array is duplicated in package.json (line 123, in the build:js script), 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.ts or package.json as a custom field) that both the build script and package.json can 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 tradeoff

Long build command duplicates service list and reduces maintainability.

The build:js script is over 500 characters and manually repeats the same bun build command for each of the eight services. This duplicates the service list from scripts/build-index.ts (lines 4-13), creating the same drift risk flagged in that file.

Consider refactoring scripts/build-index.ts to 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

📥 Commits

Reviewing files that changed from the base of the PR and between 4f16355 and cc09b7c.

📒 Files selected for processing (3)
  • package.json
  • scripts/build-index.ts
  • src/index.ts

Comment thread package.json
"@biomejs/biome": "2.4.12",
"@hey-api/openapi-ts": "^0.96.0",
"@biomejs/biome": "2.4.15",
"@hey-api/openapi-ts": "^0.97.1",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 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:


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:

  • runtimeConfigPath now resolves relative to the output folder
  • Removed --apply flag from Biome post-processor commands
  • request and response objects 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.

@robbeverhelst robbeverhelst force-pushed the robbeverhelst/renovate-updates branch from cc09b7c to 4f16355 Compare May 12, 2026 12:47
@robbeverhelst robbeverhelst changed the title fix(build): repair top-level entry + bundle renovate updates + spec refresh chore(deps): bundle renovate updates + spec refresh May 12, 2026
@robbeverhelst robbeverhelst merged commit 93e6cc7 into main May 13, 2026
5 checks passed
github-actions Bot pushed a commit that referenced this pull request May 13, 2026
## [2.11.1](v2.11.0...v2.11.1) (2026-05-13)

### 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)
github-actions Bot pushed a commit that referenced this pull request May 18, 2026
# [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)
github-actions Bot pushed a commit that referenced this pull request May 18, 2026
# [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)
github-actions Bot pushed a commit that referenced this pull request May 18, 2026
# [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)
github-actions Bot pushed a commit that referenced this pull request May 18, 2026
# [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)
github-actions Bot pushed a commit that referenced this pull request May 18, 2026
# [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)
@github-actions

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 2.11.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant