mirror of
https://github.com/unraid/api.git
synced 2026-01-01 06:01:18 -06:00
3d4f193fa427a512529c3e2cf65fd601a34f37c8
447 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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)) ([ |
||
|
|
d18eaf2364 |
fix: detection of flash backup activation state (#1769)
Resolves #1767
plugin/source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/include/UpdateFlashBackup.php:415
still reads the API version from _var($mystatus,'version'), but commit
|
||
|
|
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> |
||
|
|
8cd2a4c124 | chore: add translations.php to backup and restore lists | ||
|
|
10f048ee1f | chore: re-add translations.php to prevent breaking uninstalls | ||
|
|
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)) ([ |
||
|
|
d73953f8ff |
fix: Connect won't appear within Apps - Previous Apps (#1727)
Manual removal of the .plg is never necessary. plugin script will automatically move the .plg to /config/plugins-removed Manual removal results in PHP errors and possible indeterminate state <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - Bug Fixes - Updated plugin removal on Unraid 7.2+ to no longer delete the plugin file during boot. You’ll now be clearly prompted to reboot to complete uninstallation, reducing unexpected removals and improving guidance. Behavior on earlier Unraid versions remains unchanged. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
0d165a6087 |
fix: add cache busting to web component extractor (#1731)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - Bug Fixes - Ensures UI assets use content-hashed filenames so browsers load the latest scripts and styles after updates, reducing stale-cache issues. - Keeps scripts and their related styles in sync for consistent rendering and fewer cache-related glitches. - Ignores non-asset manifest entries to prevent accidental inclusion of invalid items and ensure correct asset loading. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
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)) ([ |
||
|
|
b7afaf4632 |
feat: add Tailwind scoping plugin and integrate into Vite config (#1722)
- Introduced a new PostCSS plugin, `scopeTailwindToUnapi`, to scope Tailwind CSS classes to specific elements. - Updated Vite configuration to include the new PostCSS plugin for CSS processing. - Enhanced theme management in the theme store to apply scoped classes and dynamic CSS variables to multiple targets, including the document root and elements with the `.unapi` class. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Scoped styling for embedded (.unapi) contexts and a PostCSS plugin to automate it. * Theme refresh after mount to propagate CSS variables to embedded roots. * Exposed idempotent restart action for the Unraid API when offline. * **Bug Fixes** * Consistent dark mode and theme variable application across main and embedded views. * Interactive element and SSO styles now apply in embedded contexts. * Simplified changelog iframe with a reliable fallback renderer; improved logs styling scope. * **Tests** * New unit tests for the scoping plugin, changelog iframe, and related components. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
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)) ([ |
||
|
|
d9c561bfeb |
fix: enhance version comparison logic in installation script
- Added normalization for version strings to improve semantic versioning comparisons. - Updated the version comparison function to handle leading 'v' and ignore build metadata, ensuring accurate version checks during installation. |
||
|
|
9972a5f178 |
fix: cleanup leftover removed packages on upgrade (#1719)
--- - To see the specific tasks where the Asana app for GitHub is being used, see below: - https://app.asana.com/0/0/1211428391025524 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Adds API version awareness for Unraid Connect: detects server vs. connector API versions, notifies users, and skips installation to avoid downgrades. * **Bug Fixes** * Enhanced pre-install cleanup removing stale files and leftovers to improve install/upgrade reliability and clearer status reporting. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
a44473c1d1 |
chore(api): update API version and enhance installation script (#1685)
- Enhanced the installation script in `dynamix.unraid.net.plg` to include version comparison logic, preventing downgrades if a newer API version is already installed. - Added functionality to notify users of version conflicts during installation. This update improves the robustness of the installation process and ensures compatibility with existing API versions. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Version-aware installation for the Connect API to prevent downgrades when the server API is newer. * Web GUI notification when a version conflict is detected. * **Improvements** * Clearer install messaging when API installation is skipped or proceeds. * Safer, guarded install flow that only performs cleanup and installation when appropriate. * Preserves existing behavior for README updates when applicable. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
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)) ([ |
||
|
|
1d9ce0aa3d |
feat: add unraid api status manager (#1708)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - New Features - Added “Unraid API Status” page under Management Access to view current API status, refresh it, and restart the API with confirmation. - Status view shows running state, detailed output, and in-app success/error messages after actions. - Style - Minor theme adjustments to border colors; no layout changes expected. - Chores - Updated UI text: “Unraid API” → “Unraid API Settings” in settings. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
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)) ([ |
||
|
|
31a255c928 |
fix: false positive on verify_install script being external shell (#1704)
- Introduced a new test script for shell detection logic in `verify_install.sh`. - Updated the `package.json` to include a new test command for shell detection. - Enhanced the `verify_install.sh` script to accurately check the current shell interpreter using `/proc` and fallback methods. This improves the testing framework and ensures better validation of shell detection functionality. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - Bug Fixes - Installer now detects the actual interpreter more robustly and strictly requires Bash; non-Bash environments produce clear error messages and abort installation. - Tests - Added automated shell-detection tests to validate behavior across environments. - Test suite expanded to run the new shell-detection checks as part of the standard test command. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> |
||
|
|
9a86c615da |
fix(deps): pin dependency conventional-changelog-conventionalcommits to 9.1.0 (#1697)
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [conventional-changelog-conventionalcommits](https://redirect.github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-conventionalcommits#readme) ([source](https://redirect.github.com/conventional-changelog/conventional-changelog/tree/HEAD/packages/conventional-changelog-conventionalcommits)) | dependencies | pin | [`^9.1.0` -> `9.1.0`](https://renovatebot.com/diffs/npm/conventional-changelog-conventionalcommits/9.1.0/9.1.0) | 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. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- 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> |
||
|
|
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)) ([ |
||
|
|
3f4af09db5 |
chore(deps): update conventional commit (#1693)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Updated changelog tooling dependencies and CI to fetch full Git history; added conventional-changelog-conventionalcommits. * **Tests** * Added comprehensive tests for changelog output, header/tag handling, fallback behavior, and compatibility with the updated changelog API. * **Refactor** * Reworked changelog generation to use the newer changelog API, improve tag-aware headers, and support deriving PR-style changelogs with graceful fallbacks. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
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)) ([ |
||
|
|
50ea2a3ffb |
feat: add zsh shell detection to install script (#1539)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Installer now detects when the environment is using Zsh and halts with clear error messages and guidance so users can move Zsh configuration to interactive-only files. * **Bug Fixes** * Prevents running the installer under unsupported shell setups, improving installation reliability and avoiding misconfigured runs. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> |
||
|
|
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`]( |
||
|
|
daeeba8c1f | chore: add public notice to unraid-components directory | ||
|
|
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)) ([ |
||
|
|
797bf50ec7 | fix(plugin): add fallback for unraid-api stop in deprecation cleanup (#1668) | ||
|
|
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)) ([ |
||
|
|
534a07788b |
fix(plugin): restore cleanup behavior for unsupported unraid versions (#1658)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Adds guided warnings and an explicit cleanup/uninstall workflow for unsupported Unraid versions, with safer removal paths by OS release. * **Bug Fixes** * Detects and removes both new and legacy Connect configurations, ensuring proper sign-out and web-server reload. * Strengthens version gating to avoid problematic pre-release builds and advises uninstall/upgrade when needed. * **Chores** * Lowers declared minimum Unraid version to broaden compatibility. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
6cf7c88242 |
fix: enhance DOM validation and cleanup in vue-mount-app
- Improved validation logic for mounted elements to ensure stable DOM connections and prevent manipulation issues. - Added cleanup step to clear existing unraid-components directory before installation, ensuring a clean setup. This update aims to enhance the reliability of component mounting and reduce potential UI issues. |
||
|
|
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)) ([ |
||
|
|
bc15bd3d70 | fix(plugin): raise minimum unraid os version to 6.12.15 (#1649) | ||
|
|
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)) ([ |
||
|
|
0fe2c2c1c8 | fix: OIDC and API Key management 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)) ([ |
||
|
|
4e945f5f56 |
feat(api): enhance OIDC redirect URI handling in service and tests (#1618)
- Updated `getRedirectUri` method in `OidcAuthService` to handle various edge cases for redirect URIs, including full URIs, malformed URLs, and default ports. - Added comprehensive tests for `OidcAuthService` to validate redirect URI construction and error handling. - Modified `RestController` to utilize `redirect_uri` query parameter for authorization requests. - Updated frontend components to include `redirect_uri` in authorization URLs, ensuring correct handling of different protocols and ports. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Stronger OIDC redirect_uri validation and an admin GraphQL endpoint to view full OIDC configuration. * OIDC Debug Logs UI (panel, button, modal), enhanced log viewer with presets/filters, ANSI-colored rendering, and a File Viewer component. * New GraphQL queries to list and fetch config files; API Config Download page. * **Refactor** * Centralized, modular OIDC flows and safer redirect handling; topic-based log subscriptions with a watcher manager for scalable live logs. * **Documentation** * Cache TTL guidance clarified to use milliseconds. * **Chores** * Added ansi_up and escape-html deps; improved log formatting; added root codegen script. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> |