mirror of
https://github.com/unraid/api.git
synced 2026-02-05 15:39:05 -06:00
91a9946271cb62f7274d52e2e1509bc4ffded29a
207 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
3a21b6200d |
feat(activation): enhance activation modal with timezone selection and system time mutation
- Added a new `ActivationTimezoneStep` component for selecting time zones during the activation process. - Integrated timezone selection with the `updateSystemTime` mutation to update the system's timezone settings. - Updated the `ActivationModal` and `ActivationSteps` components to accommodate the new timezone step. - Improved visibility logic for the activation modal based on the presence of an activation code. - Introduced a new GraphQL mutation for updating system time, enhancing the API's capability to manage time settings. This update streamlines the activation process by allowing users to set their timezone, ensuring accurate timestamps across the system. |
||
|
|
a0745e15ca |
Revert "fix: revert replace docker overview table with web component (7.3+) (#1853)"
This reverts commit
|
||
|
|
c39b0b267c |
chore(main): release 4.29.2 (#1857)
🤖 I have created a release *beep* *boop* --- ## [4.29.2](https://github.com/unraid/api/compare/v4.29.1...v4.29.2) (2025-12-19) ### Bug Fixes * unraid-connect plugin not loaded when connect is installed ([#1856](https://github.com/unraid/api/issues/1856)) ([ |
||
|
|
e42d619b6d |
chore(main): release 4.29.1 (#1854)
🤖 I have created a release *beep* *boop* --- ## [4.29.1](https://github.com/unraid/api/compare/v4.29.0...v4.29.1) (2025-12-19) ### Bug Fixes * revert replace docker overview table with web component (7.3+) ([#1853](https://github.com/unraid/api/issues/1853)) ([ |
||
|
|
560db880cc |
fix: revert replace docker overview table with web component (7.3+) (#1853)
Reverts unraid/api#1764 |
||
|
|
d6055f102b |
chore(main): release 4.29.0 (#1849)
🤖 I have created a release *beep* *boop* --- ## [4.29.0](https://github.com/unraid/api/compare/v4.28.2...v4.29.0) (2025-12-19) ### Features * replace docker overview table with web component (7.3+) ([#1764](https://github.com/unraid/api/issues/1764)) ([ |
||
|
|
0e44e73bf7 |
chore(web): mv predev call to prebuild step (#1850)
Fixes #1848 ## Background The `build:dev` script is used for the `unraid:deploy` workflow, and it implicitly triggered the `predev` script to build the `unraid-ui` package as needed. `web` builds depend on `unraid-ui`. In the past, `unraid-ui` was built during `pnpm install` via a `prepare` step in its `package.json`. However, this approach doesn't ensure that `web` builds correctly; stale `unraid-ui` builds could cause false-positives. So, instead of doing that, we call `predev` from `prebuild`, ensuring that both local builds and the `unraid:deploy` workflow lazily get the correct build of `unraid-ui`. |
||
|
|
277ac42046 |
feat: replace docker overview table with web component (7.3+) (#1764)
## Summary Introduces a new Vue-based Docker container management interface replacing the legacy webgui table. ### Container Management - Start, stop, pause, resume, and remove containers via GraphQL mutations - Bulk actions for managing multiple containers at once - Container update detection with one-click updates - Real-time container statistics (CPU, memory, I/O) ### Organization & Navigation - Folder-based container organization with drag-and-drop support - Accessible reordering via keyboard controls - Customizable column visibility with persistent preferences - Column resizing and reordering - Filtering and search across container properties ### Auto-start Configuration - Dedicated autostart view with delay configuration - Drag-and-drop reordering of start/stop sequences ### Logs & Console - Integrated log viewer with filtering and download - Persistent console sessions with shell selection - Slideover panel for quick access ### Networking - Port conflict detection and alerts - Tailscale integration for container networking status - LAN IP and port information display ### Additional Features - Orphaned container detection and cleanup - Template mapping management - Critical notifications system - WebUI visit links with Tailscale support <sub>PR Summary by Claude Opus 4.5</sub> |
||
|
|
d13a1f6174 |
chore(main): release 4.28.2 (#1845)
🤖 I have created a release *beep* *boop* --- ## [4.28.2](https://github.com/unraid/api/compare/v4.28.1...v4.28.2) (2025-12-16) ### Bug Fixes * **api:** timeout on startup on 7.0 and 6.12 ([#1844](https://github.com/unraid/api/issues/1844)) ([ |
||
|
|
01a63fd86b |
chore(main): release 4.28.1 (#1843)
🤖 I have created a release *beep* *boop* --- ## [4.28.1](https://github.com/unraid/api/compare/v4.28.0...v4.28.1) (2025-12-16) ### Bug Fixes * empty commit to release as 4.28.1 ([ |
||
|
|
ca3bee4ad5 |
chore(main): release 4.28.0 (#1807)
🤖 I have created a release *beep* *boop* --- ## [4.28.0](https://github.com/unraid/api/compare/v4.27.2...v4.28.0) (2025-12-15) ### Features * when cancelling OS upgrade, delete any plugin files that were d… ([#1823](https://github.com/unraid/api/issues/1823)) ([ |
||
|
|
73b2ce360c |
fix: update @unraid/shared-callbacks to version 3.0.0 (#1831)
…on and pnpm-lock.yaml
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added a standalone redirect page that shows "Redirecting..." and
navigates automatically.
* **Improvements**
* Redirect preserves hash callback data, validates targets, and logs the
computed redirect.
* Purchase callback origin changed to a different account host.
* Date/time formatting now tolerates missing or empty server formats
with safe fallbacks.
* Redirect page included in backup/restore.
* **Tests**
* Added tests covering date/time formatting fallbacks.
* **Chores**
* Dependency @unraid/shared-callbacks upgraded.
* Removed multiple demo/debug pages and related test UIs.
<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
|
||
|
|
375dcd0598 |
chore(main): release 4.27.2 (#1802)
🤖 I have created a release *beep* *boop* --- ## [4.27.2](https://github.com/unraid/api/compare/v4.27.1...v4.27.2) (2025-11-21) ### Bug Fixes * issue with header flashing + issue with trial date ([ |
||
|
|
330e81a484 |
chore(main): release 4.27.1 (#1797)
🤖 I have created a release *beep* *boop* --- ## [4.27.1](https://github.com/unraid/api/compare/v4.27.0...v4.27.1) (2025-11-21) ### Bug Fixes * missing translations for expiring trials ([#1800](https://github.com/unraid/api/issues/1800)) ([ |
||
|
|
c71b0487ad |
chore(main): release 4.27.0 (#1795)
🤖 I have created a release *beep* *boop* --- ## [4.27.0](https://github.com/unraid/api/compare/v4.26.2...v4.27.0) (2025-11-19) ### Features * remove Unraid API log download functionality ([#1793](https://github.com/unraid/api/issues/1793)) ([ |
||
|
|
6b6b78fa2e | chore(main): release 4.26.2 (#1794) | ||
|
|
3d4f193fa4 |
chore(main): release 4.26.1 (#1790)
🤖 I have created a release *beep* *boop* --- ## [4.26.1](https://github.com/unraid/api/compare/v4.26.0...v4.26.1) (2025-11-18) ### Bug Fixes * **theme:** update theme class naming and scoping logic ([ |
||
|
|
ee0f240233 |
chore(main): release 4.26.0 (#1744)
🤖 I have created a release *beep* *boop* --- ## [4.26.0](https://github.com/unraid/api/compare/v4.25.3...v4.26.0) (2025-11-17) ### Features * add cpu power query & subscription ([#1745](https://github.com/unraid/api/issues/1745)) ([ |
||
|
|
854b403fbd |
feat: use persisted theme css to fix flashes on header (#1784)
## Summary - install the pinia-plugin-persistedstate integration directly inside the theme store and hydrate cached themes before applying CSS variables - fall back to the active/global Pinia instance while ensuring persisted state is only wired once per store instance - update the theme store tests to reset the shared Pinia state between runs and rely on the plugin-backed persistence ## Testing - pnpm --filter web test __test__/store/theme.test.ts ------ [Codex Task](https://chatgpt.com/codex/tasks/task_e_69156c5e8de48323841f7dbfdadec51d) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Theme preferences now persist across sessions and are restored on return. * **Behavior Change** * Theme switching may now update the URL/address bar to reflect the selected theme. * **Chores** * Added a persistence integration to enable storing/restoring theme data. * **Tests** * Updated/added tests covering hydration from storage and persistence of server-provided themes. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
45cda4af80 | chore: nunjucks template engine for test pages (#1783) | ||
|
|
11d2de5d08 |
chore(web): reduce lint duration by 90% (#1766)
Replace the eslint prettier plugin (which profiling revealed to be the bottleneck) with separate `prettier` invocations. This yielded a 73 second reduction (89%) in the environment described below. Before: ``` pnpm --filter web lint:fix 81.79s user 1.85s system 110% cpu 1:15.81 total ``` After: ``` pnpm --filter web lint:fix 8.83s user 0.93s system 170% cpu 5.737 total ``` System specs (Nov 5 2025): ``` OS: macOS Sequoia 15.6.1 (24G90) arm64 Host: MacBook Air (15-inch, M2, 2023) Kernel: Darwin 24.6.0 Uptime: 44 days, 5 hours, 22 mins Packages: 52 (nix-default), 195 (brew), 4 (brew-cask) Shell: zsh 5.9 CPU: Apple M2 (8) @ 3.50 GHz GPU: Apple M2 (10) @ 1.40 GHz [Integrated] Memory: 19.51 GiB / 24.00 GiB (81%) Swap: 4.83 GiB / 6.00 GiB (80%) ``` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Separated code formatting and linting tools into independent workflows for improved developer efficiency * Updated development tool configuration to streamline the linting and formatting process <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
34075e44c5 |
fix: flaky watch on boot drive's dynamix config (#1753)
On FAT32, `fs.stat()` updates accesstime, which means file reads are also writes, which means we can't use `usePoll` without degrading users' flash drives. To keep file reads lazy without a larger refactor, I override `getters.dynamix()` as the entrypoint to re-read the boot drive's dynamix config. Consecutive calls to `getters.dynamix()` are a common access pattern, which means we have to memoize to avoid many redundant file reads, so I used a TTL cache with a 250ms lifetime, hoping to scope config files to each request. `getters.dynamix()` is also used synchonously, so bit the bullet and switched away from async reads for simplicity, considering that most reads will be occurring from memory, even during cache misses. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added a TTL memoized loader utility with exported types. * Added a public function to load Dynamix configuration at startup. * **Refactor** * Startup now uses the deterministic, cached config loader; runtime file-watch for Dynamix config removed. * Simplified config state handling and load-status reporting for more predictable startup behavior. * **Tests** * Added tests for TTL caching, eviction, keying, and conditional caching. * **Chores** * Bumped package versions and updated changelog. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
31c41027fc |
feat: translations now use crowdin (translate.unraid.net) (#1739)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - App-wide internationalization: dynamic locale detection/loading, many new locale bundles, and CLI helpers to extract/sort translation keys. - **Accessibility** - Brand button supports keyboard activation (Enter/Space). - **Documentation** - Internationalization guidance added to API and Web READMEs. - **Refactor** - UI updated to use centralized i18n keys and a unified locale loading approach. - **Tests** - Test utilities updated to support i18n and localized assertions. - **Chores** - Crowdin config and i18n scripts added; runtime locale exposed for selection. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
50d83313a1 |
chore(main): release 4.25.2 (#1734)
🤖 I have created a release *beep* *boop* --- ## [4.25.2](https://github.com/unraid/api/compare/v4.25.1...v4.25.2) (2025-09-30) ### Bug Fixes * enhance activation code modal visibility logic ([#1733](https://github.com/unraid/api/issues/1733)) ([ |
||
|
|
84f4a7221d |
chore(main): release 4.25.1 (#1732)
🤖 I have created a release *beep* *boop* --- ## [4.25.1](https://github.com/unraid/api/compare/v4.25.0...v4.25.1) (2025-09-30) ### Bug Fixes * add cache busting to web component extractor ([#1731](https://github.com/unraid/api/issues/1731)) ([ |
||
|
|
f4f3e3c44b |
chore(main): release 4.25.0 (#1725)
🤖 I have created a release *beep* *boop* --- ## [4.25.0](https://github.com/unraid/api/compare/v4.24.1...v4.25.0) (2025-09-26) ### Features * add Tailwind scoping plugin and integrate into Vite config ([#1722](https://github.com/unraid/api/issues/1722)) ([ |
||
|
|
b3ca40c639 |
chore(main): release 4.24.1 (#1721)
🤖 I have created a release *beep* *boop* --- ## [4.24.1](https://github.com/unraid/api/compare/v4.24.0...v4.24.1) (2025-09-23) ### Bug Fixes * cleanup leftover removed packages on upgrade ([#1719](https://github.com/unraid/api/issues/1719)) ([ |
||
|
|
ed9a5c5ff9 |
chore(main): release 4.24.0 (#1717)
🤖 I have created a release *beep* *boop* --- ## [4.24.0](https://github.com/unraid/api/compare/v4.23.1...v4.24.0) (2025-09-18) ### Features * improve dom content loading by being more efficient about component mounting ([#1716](https://github.com/unraid/api/issues/1716)) ([ |
||
|
|
8b862ecef5 |
chore(main): release 4.23.1 (#1715)
🤖 I have created a release *beep* *boop* --- ## [4.23.1](https://github.com/unraid/api/compare/v4.23.0...v4.23.1) (2025-09-17) ### Bug Fixes * cleanup ini parser logic with better fallbacks ([#1713](https://github.com/unraid/api/issues/1713)) ([ |
||
|
|
810be7a679 |
chore(main): release 4.23.0 (#1707)
🤖 I have created a release *beep* *boop* --- ## [4.23.0](https://github.com/unraid/api/compare/v4.22.2...v4.23.0) (2025-09-16) ### Features * add unraid api status manager ([#1708](https://github.com/unraid/api/issues/1708)) ([ |
||
|
|
45d9d65c13 |
chore(main): release 4.22.2 (#1699)
🤖 I have created a release *beep* *boop* --- ## [4.22.2](https://github.com/unraid/api/compare/v4.22.1...v4.22.2) (2025-09-15) ### Bug Fixes * **deps:** pin dependency conventional-changelog-conventionalcommits to 9.1.0 ([#1697](https://github.com/unraid/api/issues/1697)) ([ |
||
|
|
ba4a43aec8 | fix(deps): update graphqlcodegenerator monorepo (major) (#1689) | ||
|
|
c4ca761dfc |
chore(main): release 4.22.1 (#1698)
🤖 I have created a release *beep* *boop* --- ## [4.22.1](https://github.com/unraid/api/compare/v4.22.0...v4.22.1) (2025-09-12) ### Bug Fixes * set input color in SSO field rather than inside of the main.css ([ |
||
|
|
0b20e3ea9f |
chore(main): release 4.22.0 (#1692)
🤖 I have created a release *beep* *boop* --- ## [4.22.0](https://github.com/unraid/api/compare/v4.21.0...v4.22.0) (2025-09-12) ### Features * improved update ui ([#1691](https://github.com/unraid/api/issues/1691)) ([ |
||
|
|
88a924c84f |
chore(main): release 4.21.0 (#1684)
🤖 I have created a release *beep* *boop* --- ## [4.21.0](https://github.com/unraid/api/compare/v4.20.4...v4.21.0) (2025-09-10) ### Features * add zsh shell detection to install script ([#1539](https://github.com/unraid/api/issues/1539)) ([ |
||
|
|
abc22bdb87 |
chore(main): release 4.20.4 (#1681)
🤖 I have created a release *beep* *boop* --- ## [4.20.4](https://github.com/unraid/api/compare/v4.20.3...v4.20.4) (2025-09-09) ### Bug Fixes * staging PR plugin fixes + UI issues on 7.2 beta ([ |
||
|
|
838be2c52e |
chore(main): release 4.20.3 (#1677)
🤖 I have created a release *beep* *boop* --- ## [4.20.3](https://github.com/unraid/api/compare/v4.20.2...v4.20.3) (2025-09-09) ### Bug Fixes * header background color issues fixed on 7.2 - thanks Nick! ([ |
||
|
|
434e331384 |
chore(main): release 4.20.2 (#1676)
🤖 I have created a release *beep* *boop* --- ## [4.20.2](https://github.com/unraid/api/compare/v4.20.1...v4.20.2) (2025-09-09) ### Bug Fixes * trigger deployment ([ |
||
|
|
6c2c51ae1d |
chore(main): release 4.20.1 (#1674)
🤖 I have created a release *beep* *boop* --- ## [4.20.1](https://github.com/unraid/api/compare/v4.20.0...v4.20.1) (2025-09-09) ### Bug Fixes * adjust header styles to fix flashing and width issues - thanks ZarZ ([ |
||
|
|
d10c12035e |
chore: Revert "fix(deps): update all non-major dependencies" (#1675)
Reverts unraid/api#1633 |
||
|
|
5dd6f42550 |
fix(deps): update all non-major dependencies (#1633)
This PR contains the following updates: | Package | Change | Age | Confidence | Type | Update | |---|---|---|---|---|---| | [@eslint/js](https://eslint.org) ([source](https://redirect.github.com/eslint/eslint/tree/HEAD/packages/js)) | [`9.34.0` -> `9.35.0`](https://renovatebot.com/diffs/npm/@eslint%2fjs/9.34.0/9.35.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [@graphql-codegen/typescript-resolvers](https://redirect.github.com/dotansimha/graphql-code-generator) ([source](https://redirect.github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/plugins/typescript/resolvers)) | [`4.5.1` -> `4.5.2`](https://renovatebot.com/diffs/npm/@graphql-codegen%2ftypescript-resolvers/4.5.1/4.5.2) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@ianvs/prettier-plugin-sort-imports](https://redirect.github.com/ianvs/prettier-plugin-sort-imports) | [`4.6.3` -> `4.7.0`](https://renovatebot.com/diffs/npm/@ianvs%2fprettier-plugin-sort-imports/4.6.3/4.7.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [@manypkg/cli](https://redirect.github.com/Thinkmill/manypkg) ([source](https://redirect.github.com/Thinkmill/manypkg/tree/HEAD/packages/cli)) | [`0.25.0` -> `0.25.1`](https://renovatebot.com/diffs/npm/@manypkg%2fcli/0.25.0/0.25.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [@nuxt/ui](https://ui.nuxt.com) ([source](https://redirect.github.com/nuxt/ui)) | [`4.0.0-alpha.0` -> `4.0.0-alpha.1`](https://renovatebot.com/diffs/npm/@nuxt%2fui/4.0.0-alpha.0/4.0.0-alpha.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [@reduxjs/toolkit](https://redux-toolkit.js.org) ([source](https://redirect.github.com/reduxjs/redux-toolkit)) | [`2.8.2` -> `2.9.0`](https://renovatebot.com/diffs/npm/@reduxjs%2ftoolkit/2.8.2/2.9.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [@rollup/rollup-linux-x64-gnu](https://rollupjs.org/) ([source](https://redirect.github.com/rollup/rollup)) | [`4.49.0` -> `4.50.1`](https://renovatebot.com/diffs/npm/@rollup%2frollup-linux-x64-gnu/4.49.0/4.50.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | optionalDependencies | minor | | [@storybook/addon-docs](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/docs) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/docs)) | [`9.1.3` -> `9.1.5`](https://renovatebot.com/diffs/npm/@storybook%2faddon-docs/9.1.3/9.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@storybook/addon-links](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/links) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/links)) | [`9.1.3` -> `9.1.5`](https://renovatebot.com/diffs/npm/@storybook%2faddon-links/9.1.3/9.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@storybook/builder-vite](https://redirect.github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/builders/builder-vite)) | [`9.1.3` -> `9.1.5`](https://renovatebot.com/diffs/npm/@storybook%2fbuilder-vite/9.1.3/9.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@storybook/vue3-vite](https://redirect.github.com/storybookjs/storybook/tree/next/code/frameworks/vue3-vite) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/frameworks/vue3-vite)) | [`9.1.3` -> `9.1.5`](https://renovatebot.com/diffs/npm/@storybook%2fvue3-vite/9.1.3/9.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@tailwindcss/cli](https://tailwindcss.com) ([source](https://redirect.github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-cli)) | [`4.1.12` -> `4.1.13`](https://renovatebot.com/diffs/npm/@tailwindcss%2fcli/4.1.12/4.1.13) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [@tailwindcss/vite](https://tailwindcss.com) ([source](https://redirect.github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite)) | [`4.1.12` -> `4.1.13`](https://renovatebot.com/diffs/npm/@tailwindcss%2fvite/4.1.12/4.1.13) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`22.18.0` -> `22.18.1`](https://renovatebot.com/diffs/npm/@types%2fnode/22.18.0/22.18.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@types/semver](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/semver) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/semver)) | [`7.7.0` -> `7.7.1`](https://renovatebot.com/diffs/npm/@types%2fsemver/7.7.0/7.7.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)) | [`8.41.0` -> `8.43.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/8.41.0/8.43.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [@vueuse/components](https://redirect.github.com/vueuse/vueuse/tree/main/packages/components#readme) ([source](https://redirect.github.com/vueuse/vueuse/tree/HEAD/packages/components)) | [`13.8.0` -> `13.9.0`](https://renovatebot.com/diffs/npm/@vueuse%2fcomponents/13.8.0/13.9.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [@vueuse/core](https://redirect.github.com/vueuse/vueuse) ([source](https://redirect.github.com/vueuse/vueuse/tree/HEAD/packages/core)) | [`13.8.0` -> `13.9.0`](https://renovatebot.com/diffs/npm/@vueuse%2fcore/13.8.0/13.9.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [@vueuse/core](https://redirect.github.com/vueuse/vueuse) ([source](https://redirect.github.com/vueuse/vueuse/tree/HEAD/packages/core)) | [`13.8.0` -> `13.9.0`](https://renovatebot.com/diffs/npm/@vueuse%2fcore/13.8.0/13.9.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [@vueuse/integrations](https://redirect.github.com/vueuse/vueuse/tree/main/packages/integrations#readme) ([source](https://redirect.github.com/vueuse/vueuse/tree/HEAD/packages/integrations)) | [`13.8.0` -> `13.9.0`](https://renovatebot.com/diffs/npm/@vueuse%2fintegrations/13.8.0/13.9.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [chalk](https://redirect.github.com/chalk/chalk) | [`5.6.0` -> `5.6.2`](https://renovatebot.com/diffs/npm/chalk/5.6.0/5.6.2) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [dayjs](https://day.js.org) ([source](https://redirect.github.com/iamkun/dayjs)) | [`1.11.14` -> `1.11.18`](https://renovatebot.com/diffs/npm/dayjs/1.11.14/1.11.18) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [dockerode](https://redirect.github.com/apocas/dockerode) | [`4.0.7` -> `4.0.8`](https://renovatebot.com/diffs/npm/dockerode/4.0.7/4.0.8) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [dotenv](https://redirect.github.com/motdotla/dotenv) | [`17.2.1` -> `17.2.2`](https://renovatebot.com/diffs/npm/dotenv/17.2.1/17.2.2) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [eslint](https://eslint.org) ([source](https://redirect.github.com/eslint/eslint)) | [`9.34.0` -> `9.35.0`](https://renovatebot.com/diffs/npm/eslint/9.34.0/9.35.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [eslint-plugin-storybook](https://redirect.github.com/storybookjs/storybook/code/lib/eslint-plugin#readme) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/lib/eslint-plugin)) | [`9.1.3` -> `9.1.5`](https://renovatebot.com/diffs/npm/eslint-plugin-storybook/9.1.3/9.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [fast-check](https://fast-check.dev/) ([source](https://redirect.github.com/dubzzz/fast-check/tree/HEAD/packages/fast-check)) | [`4.2.0` -> `4.3.0`](https://renovatebot.com/diffs/npm/fast-check/4.2.0/4.3.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [fastify](https://fastify.dev/) ([source](https://redirect.github.com/fastify/fastify)) | [`5.5.0` -> `5.6.0`](https://renovatebot.com/diffs/npm/fastify/5.5.0/5.6.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [got](https://redirect.github.com/sindresorhus/got) | [`14.4.7` -> `14.4.8`](https://renovatebot.com/diffs/npm/got/14.4.7/14.4.8) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | peerDependencies | patch | | [got](https://redirect.github.com/sindresorhus/got) | [`14.4.7` -> `14.4.8`](https://renovatebot.com/diffs/npm/got/14.4.7/14.4.8) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [got](https://redirect.github.com/sindresorhus/got) | [`14.4.7` -> `14.4.8`](https://renovatebot.com/diffs/npm/got/14.4.7/14.4.8) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [jose](https://redirect.github.com/panva/jose) | [`6.0.13` -> `6.1.0`](https://renovatebot.com/diffs/npm/jose/6.0.13/6.1.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | peerDependencies | minor | | [jose](https://redirect.github.com/panva/jose) | [`6.0.13` -> `6.1.0`](https://renovatebot.com/diffs/npm/jose/6.0.13/6.1.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [jose](https://redirect.github.com/panva/jose) | [`6.0.13` -> `6.1.0`](https://renovatebot.com/diffs/npm/jose/6.0.13/6.1.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [lint-staged](https://redirect.github.com/lint-staged/lint-staged) | [`16.1.5` -> `16.1.6`](https://renovatebot.com/diffs/npm/lint-staged/16.1.5/16.1.6) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [lucide-vue-next](https://lucide.dev) ([source](https://redirect.github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-vue-next)) | [`0.542.0` -> `0.543.0`](https://renovatebot.com/diffs/npm/lucide-vue-next/0.542.0/0.543.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [nest-commander](https://nest-commander.jaymcdoniel.dev) ([source](https://redirect.github.com/jmcdo29/nest-commander/tree/HEAD/pacakges/nest-commander)) | [`3.19.0` -> `3.19.1`](https://renovatebot.com/diffs/npm/nest-commander/3.19.0/3.19.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [node](https://nodejs.org) ([source](https://redirect.github.com/nodejs/node)) | `22.18.0` -> `22.19.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | | minor | | [node](https://redirect.github.com/actions/node-versions) | `22.18.0` -> `22.19.0` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | uses-with | minor | | [node](https://redirect.github.com/nodejs/node) | `22.18.0-bookworm-slim` -> `22.19.0-bookworm-slim` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | final | minor | | [openid-client](https://redirect.github.com/panva/openid-client) | [`6.6.4` -> `6.7.1`](https://renovatebot.com/diffs/npm/openid-client/6.6.4/6.7.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [pino](https://getpino.io) ([source](https://redirect.github.com/pinojs/pino)) | [`9.9.0` -> `9.9.4`](https://renovatebot.com/diffs/npm/pino/9.9.0/9.9.4) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [pm2](http://pm2.keymetrics.io/) ([source](https://redirect.github.com/Unitech/pm2)) | [`6.0.8` -> `6.0.10`](https://renovatebot.com/diffs/npm/pm2/6.0.8/6.0.10) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [pnpm](https://pnpm.io) ([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm)) | [`10.15.0` -> `10.15.1`](https://renovatebot.com/diffs/npm/pnpm/10.15.0/10.15.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | packageManager | patch | | [pnpm](https://pnpm.io) ([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm)) | [`10.15.0` -> `10.15.1`](https://renovatebot.com/diffs/npm/pnpm/10.15.0/10.15.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | engines | patch | | [pnpm](https://pnpm.io) ([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm)) | `10.15.0` -> `10.15.1` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | uses-with | patch | | [rollup-plugin-node-externals](https://redirect.github.com/Septh/rollup-plugin-node-externals) | [`8.1.0` -> `8.1.1`](https://renovatebot.com/diffs/npm/rollup-plugin-node-externals/8.1.0/8.1.1) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [storybook](https://storybook.js.org) ([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/core)) | [`9.1.3` -> `9.1.5`](https://renovatebot.com/diffs/npm/storybook/9.1.3/9.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [tailwindcss](https://tailwindcss.com) ([source](https://redirect.github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss)) | [`4.1.12` -> `4.1.13`](https://renovatebot.com/diffs/npm/tailwindcss/4.1.12/4.1.13) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [tailwindcss](https://tailwindcss.com) ([source](https://redirect.github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss)) | [`4.1.12` -> `4.1.13`](https://renovatebot.com/diffs/npm/tailwindcss/4.1.12/4.1.13) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | peerDependencies | patch | | [terser](https://terser.org) ([source](https://redirect.github.com/terser/terser)) | [`5.43.1` -> `5.44.0`](https://renovatebot.com/diffs/npm/terser/5.43.1/5.44.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [tw-animate-css](https://redirect.github.com/Wombosvideo/tw-animate-css) | [`1.3.7` -> `1.3.8`](https://renovatebot.com/diffs/npm/tw-animate-css/1.3.7/1.3.8) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [tw-animate-css](https://redirect.github.com/Wombosvideo/tw-animate-css) | [`1.3.7` -> `1.3.8`](https://renovatebot.com/diffs/npm/tw-animate-css/1.3.7/1.3.8) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [typescript-eslint](https://typescript-eslint.io/packages/typescript-eslint) ([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)) | [`8.41.0` -> `8.43.0`](https://renovatebot.com/diffs/npm/typescript-eslint/8.41.0/8.43.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [vite](https://vite.dev) ([source](https://redirect.github.com/vitejs/vite/tree/HEAD/packages/vite)) | [`7.1.3` -> `7.1.5`](https://renovatebot.com/diffs/npm/vite/7.1.3/7.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [vue](https://redirect.github.com/vuejs/core/tree/main/packages/vue#readme) ([source](https://redirect.github.com/vuejs/core)) | [`3.5.20` -> `3.5.21`](https://renovatebot.com/diffs/npm/vue/3.5.20/3.5.21) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [vue](https://redirect.github.com/vuejs/core/tree/main/packages/vue#readme) ([source](https://redirect.github.com/vuejs/core)) | [`3.5.20` -> `3.5.21`](https://renovatebot.com/diffs/npm/vue/3.5.20/3.5.21) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | peerDependencies | patch | | [vue-i18n](https://redirect.github.com/intlify/vue-i18n/tree/master/packages/vue-i18n#readme) ([source](https://redirect.github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n)) | [`11.1.11` -> `11.1.12`](https://renovatebot.com/diffs/npm/vue-i18n/11.1.11/11.1.12) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [vuetify](https://vuetifyjs.com) ([source](https://redirect.github.com/vuetifyjs/vuetify/tree/HEAD/packages/vuetify)) | [`3.9.6` -> `3.9.7`](https://renovatebot.com/diffs/npm/vuetify/3.9.6/3.9.7) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [wrangler](https://redirect.github.com/cloudflare/workers-sdk) ([source](https://redirect.github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler)) | [`4.33.0` -> `4.34.0`](https://renovatebot.com/diffs/npm/wrangler/4.33.0/4.34.0) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | --- ### Release Notes <details> <summary>eslint/eslint (@​eslint/js)</summary> ### [`v9.35.0`](https://redirect.github.com/eslint/eslint/compare/v9.34.0...af2a0870fdc646091d027516601888923e5bc202) [Compare Source](https://redirect.github.com/eslint/eslint/compare/v9.34.0...v9.35.0) </details> <details> <summary>dotansimha/graphql-code-generator (@​graphql-codegen/typescript-resolvers)</summary> ### [`v4.5.2`](https://redirect.github.com/dotansimha/graphql-code-generator/blob/HEAD/packages/plugins/typescript/resolvers/CHANGELOG.md#452) [Compare Source](https://redirect.github.com/dotansimha/graphql-code-generator/compare/@graphql-codegen/typescript-resolvers@4.5.1...@graphql-codegen/typescript-resolvers@4.5.2) ##### Patch Changes - [#​10419](https://redirect.github.com/dotansimha/graphql-code-generator/pull/10419) [`2fc3869`]( |
||
|
|
196bd52628 |
chore(main): release 4.20.0 (#1666)
🤖 I have created a release *beep* *boop* --- ## [4.20.0](https://github.com/unraid/api/compare/v4.19.1...v4.20.0) (2025-09-08) ### Features * **disks:** add isSpinning field to Disk type ([#1527](https://github.com/unraid/api/issues/1527)) ([ |
||
|
|
413db4bd30 |
fix(deps): pin dependencies (#1669)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [ajv-errors](https://redirect.github.com/epoberezkin/ajv-errors) | dependencies | pin | [`^3.0.0` -> `3.0.0`](https://renovatebot.com/diffs/npm/ajv-errors/3.0.0/3.0.0) | | [ansi_up](https://redirect.github.com/drudru/ansi_up) | dependencies | pin | [`^6.0.6` -> `6.0.6`](https://renovatebot.com/diffs/npm/ansi_up/6.0.6/6.0.6) | | [globals](https://redirect.github.com/sindresorhus/globals) | devDependencies | pin | [`^16.3.0` -> `16.3.0`](https://renovatebot.com/diffs/npm/globals/16.3.0/16.3.0) | | [pify](https://redirect.github.com/sindresorhus/pify) | devDependencies | pin | [`^6.1.0` -> `6.1.0`](https://renovatebot.com/diffs/npm/pify/6.1.0/6.1.0) | | [vue-router](https://redirect.github.com/vuejs/router) | dependencies | pin | [`^4.5.1` -> `4.5.1`](https://renovatebot.com/diffs/npm/vue-router/4.5.1/4.5.1) | Add the preset `:preserveSemverRanges` to your config if you don't want to pin your dependencies. --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/unraid/api). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ny4xMCIsInVwZGF0ZWRJblZlciI6IjQxLjk3LjEwIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> |
||
|
|
af5ca11860 |
Feat/vue (#1655)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - New Features - Introduced Docker management UI components: Overview, Logs, Console, Preview, and Edit. - Added responsive Card/Detail layouts with grouping, bulk actions, and tabs. - New UnraidToaster component and global toaster configuration. - Component auto-mounting improved with async loading and multi-selector support. - UI/UX - Overhauled theme system (light/dark tokens, primary/orange accents) and added theme variants. - Header OS version now includes integrated changelog modal. - Registration displays warning states; multiple visual polish updates. - API - CPU load now includes percentGuest and percentSteal metrics. - Chores - Migrated web app to Vite; updated artifacts and manifests. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: mdatelle <mike@datelle.net> Co-authored-by: Michael Datelle <mdatelle@icloud.com> |
||
|
|
16905dd3a6 |
chore(main): release 4.19.1 (#1665)
🤖 I have created a release *beep* *boop* --- ## [4.19.1](https://github.com/unraid/api/compare/v4.19.0...v4.19.1) (2025-09-05) ### Bug Fixes * custom path detection to fix setup issues ([#1664](https://github.com/unraid/api/issues/1664)) ([ |
||
|
|
d3459ecbc6 |
chore(main): release 4.19.0 (#1650)
🤖 I have created a release *beep* *boop* --- ## [4.19.0](https://github.com/unraid/api/compare/v4.18.2...v4.19.0) (2025-09-04) ### Features * mount vue apps, not web components ([#1639](https://github.com/unraid/api/issues/1639)) ([ |
||
|
|
88087d5201 |
feat: mount vue apps, not web components (#1639)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Standalone web bundle with auto-mount utilities and a self-contained test page. * New responsive modal components for consistent mobile/desktop dialogs. * Header actions to copy OS/API versions. * **Improvements** * Refreshed UI styles (muted borders), accessibility and animation refinements. * Theming updates and Tailwind v4–aligned, component-scoped styles. * Runtime GraphQL endpoint override and CSRF header support. * **Bug Fixes** * Safer network fetching and improved manifest/asset loading with duplicate protection. * **Tests/Chores** * Parallel plugin tests, new extractor test suite, and updated build/test scripts. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
5d89682a3f |
chore(main): release 4.18.2 (#1643)
🤖 I have created a release *beep* *boop* --- ## [4.18.2](https://github.com/unraid/api/compare/v4.18.1...v4.18.2) (2025-09-03) ### Bug Fixes * add missing CPU guest metrics to CPU responses ([#1644](https://github.com/unraid/api/issues/1644)) ([ |
||
|
|
0d1d27064e |
chore(main): release 4.18.1 (#1641)
🤖 I have created a release *beep* *boop* --- ## [4.18.1](https://github.com/unraid/api/compare/v4.18.0...v4.18.1) (2025-09-03) ### Bug Fixes * OIDC and API Key management issues ([#1642](https://github.com/unraid/api/issues/1642)) ([ |
||
|
|
372a4ebb42 |
chore(main): release 4.18.0 (#1636)
🤖 I have created a release *beep* *boop* --- ## [4.18.0](https://github.com/unraid/api/compare/v4.17.0...v4.18.0) (2025-09-02) ### Features * **api:** enhance OIDC redirect URI handling in service and tests ([#1618](https://github.com/unraid/api/issues/1618)) ([ |