Skip to content

Tags: unraid/api

Tags

4.31.1-build-number-85

Toggle 4.31.1-build-number-85's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge d06d533 into 64daf69

4.31.0-build-number-17

Toggle 4.31.0-build-number-17's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge 4f87811 into 6471b3f

4.30.1-build-number-56

Toggle 4.30.1-build-number-56's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat(onboarding): add shared loading states (#1945)

## Summary

This PR adds a shared onboarding loading state and reuses it anywhere
the onboarding modal can feel stalled while waiting on async work.

## Problem

We had a few spots in onboarding where the UI could appear to hang:

- Closing the modal from the `x` could lag while the close flow
completed.
- Some onboarding steps depend on server data before they can render
useful content.
- Those waits did not have a consistent loading treatment, so the modal
could feel unresponsive.

## What changed

- Added a reusable `OnboardingLoadingState` component for
onboarding-specific loading UI.
- Updated `OnboardingModal` to swap into that loading state while the
exit flow is finishing.
- Reused the same loading state when the modal is waiting on enough
onboarding context to resolve the next step.
- Reused the loading state in the internal boot step while internal boot
context is loading.
- Reused the loading state in the plugins step while installed plugin
data is loading.
- Added English localization strings for the new loading copy.
- Extended onboarding tests to cover the new loading behavior.

## User-facing behavior

Users can now see the loading state in these places:

- After confirming exit from the onboarding modal via the `x` flow.
- While the modal is still waiting on onboarding context needed to
determine which step to render.
- In the plugins step while the installed plugins query is still
pending.
- In the internal boot step while storage boot options are still
loading.

## Not in scope

The core settings step still renders immediately from default or draft
values and then hydrates server-backed values as queries resolve. This
PR does not add a full loading screen for that step.

## Files of interest

- `web/src/components/Onboarding/components/OnboardingLoadingState.vue`
- `web/src/components/Onboarding/OnboardingModal.vue`
- `web/src/components/Onboarding/steps/OnboardingInternalBootStep.vue`
- `web/src/components/Onboarding/steps/OnboardingPluginsStep.vue`
- `web/src/locales/en.json`
- `web/__test__/components/Onboarding/OnboardingModal.test.ts`
- `web/__test__/components/Onboarding/OnboardingPluginsStep.test.ts`

## Verification

Passed locally:

- `cd web && pnpm type-check`
- `cd web && pnpm lint`
- `cd web && pnpm exec vitest run
__test__/components/Onboarding/OnboardingModal.test.ts
__test__/components/Onboarding/internalBoot.test.ts
__test__/components/Onboarding/OnboardingPluginsStep.test.ts`
- `cd api && pnpm type-check`
- `cd api && pnpm lint`
- `cd api && pnpm test`

Known local note:

- `cd web && pnpm test` still fails in this worktree because of a local
`@unraid/ui` build/module-resolution issue in the worktree setup. The
failure reproduced across unrelated suites and did not point back to the
onboarding change itself.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added a reusable onboarding loading-state UI and used it in the modal,
plugin list, and internal boot step.
* Modal now shows a closing/loading state and disables interaction while
the close flow is in progress.

* **Tests**
* Tests added/updated to assert the modal shows the loading state while
close is pending; test mocks include a spinner.

* **Localization**
  * Added i18n strings for loading and closing states.

* **Chores**
  * Registered the new global component type.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

v4.31.1

Toggle v4.31.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore(main): release 4.31.1 (#1951)

🤖 I have created a release *beep* *boop*
---


## [4.31.1](v4.31.0...v4.31.1)
(2026-03-23)


### Bug Fixes

* **onboarding:** separate apply and completion flows
([#1948](#1948))
([5be53a4](5be53a4))
* reload var state when emhttp writes temp files
([#1950](#1950))
([7265105](7265105))
* **state-watch:** watch canonical ini files atomically
([#1953](#1953))
([6471b3f](6471b3f))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

v4.31.0

Toggle v4.31.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore(main): release 4.31.0 (#1939)

🤖 I have created a release *beep* *boop*
---


## [4.31.0](v4.30.1...v4.31.0)
(2026-03-23)


### Features

* **api:** support encrypted array start inputs
([#1944](#1944))
([018a8d5](018a8d5))
* **onboarding:** add shared loading states
([#1945](#1945))
([776c8cc](776c8cc))
* Serverside state for onboarding display
([#1936](#1936))
([682d51c](682d51c))


### Bug Fixes

* **api:** reconcile emhttp state without spinning disks
([#1946](#1946))
([d3e0b95](d3e0b95))
* **onboarding:** auto-open incomplete onboarding on 7.3+
([#1940](#1940))
([f0241a8](f0241a8))
* **onboarding:** replace internal boot native selects
([#1942](#1942))
([d6ea032](d6ea032))
* preserve onboarding resume state on reload
([#1941](#1941))
([91f7fe9](91f7fe9))
* recover VM availability after reconnect
([#1947](#1947))
([e064de7](e064de7))
* Unify callback server payloads
([#1938](#1938))
([f58fcc0](f58fcc0))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

4.30.0-build-number-7

Toggle 4.30.0-build-number-7's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix(web): unify UPC license actions into manage/trial entry (#1929)

## Summary
- Collapse UPC legacy license actions (`redeem`, `purchase`, `recover`,
`activate`) into a single entry.
- Show a single button label of `Manage License / Start Trial` when
trial start is available.
- Keep the action routed through Manage License (`myKeys`) to preserve
one-click behavior.
- Restore `trialStart` account/server action plumbing so trial
availability can be represented in UPC state/action lists.

## Testing
- `pnpm exec vitest run __test__/store/account.test.ts
__test__/components/Registration.test.ts __test__/store/server.test.ts`
- `pnpm type-check`


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Introduced a new "Start Trial" action available from the license
management menu, allowing users to begin a trial period even without an
active license key.
* Enhanced the license management interface by consolidating multiple
license-related actions (activate, recover, purchase, redeem, and start
trial) into a unified "Manage License" view with dynamic, context-aware
menu labels.

* **Tests**
* Added test coverage for the new trial start functionality across
account and component tests.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

4.29.2-build-number-437

Toggle 4.29.2-build-number-437's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix(onboarding): add explicit EFI loader path for flash entry (#1926)

## Summary
- update API onboarding internal-boot BIOS update flow to create the
flash UEFI entry with an explicit loader path
- keep scope API-only (no webgui repo changes)
- update onboarding internal-boot service spec to assert the new
efibootmgr args

## Why
Some motherboards fail to boot the USB entry in UEFI mode when the NVRAM
boot entry is created without an explicit loader path, even when
`EFI/BOOT/BOOTX64.EFI` exists.

## Change Details
- flash boot entry command now includes `-l \EFI\BOOT\BOOTX64.EFI`
- internal boot entry behavior is unchanged

## Testing
- attempted: `pnpm --filter ./api test
src/unraid-api/graph/resolvers/onboarding/onboarding-internal-boot.service.spec.ts`
- note: not executed in this fresh worktree because dependencies are not
installed (`vitest: command not found`)


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes**
* Boot entry creation now includes the EFI loader path, improving
reliability of system boot setup.
* Skips creating BIOS entries for disks that cannot be resolved from
assignable disks and avoids adding invalid boot entries.

* **Improvements**
* Internal-boot UI now prefers disk serial number first (then disk ID,
then device) for more consistent selection.
* Expanded diagnostic and debug logging around boot device resolution
and BIOS/boot update flows.

* **Tests**
* Tests updated to cover assignable-disk resolution, expected output
messages for unresolved disks, and BIOS update paths.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

v4.30.1

Toggle v4.30.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore(main): release 4.30.1 (#1931)

🤖 I have created a release *beep* *boop*
---


## [4.30.1](v4.30.0...v4.30.1)
(2026-03-18)


### Bug Fixes

* **web:** unify UPC license actions into manage/trial entry
([#1929](#1929))
([164198c](164198c))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

v4.30.0

Toggle v4.30.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore(main): release 4.30.0 (#1858)

🤖 I have created a release *beep* *boop*
---


## [4.30.0](v4.29.2...v4.30.0)
(2026-03-18)


### Features

* add internal boot step to onboarding flow
([#1881](#1881))
([337aecc](337aecc))
* Add TPM licensing availability to registration
([#1908](#1908))
([aa162eb](aa162eb))
* add UPS power ([#1874](#1874))
([b531aed](b531aed))
* **api:** alert when usb boot has internal boot target
([#1898](#1898))
([b94df47](b94df47))
* **api:** expose internal boot devices in array GraphQL
([#1894](#1894))
([0736709](0736709))
* docker overview ([#1855](#1855))
([9ef1cf1](9ef1cf1))
* **docker:** add update actions to container context menu
([#1867](#1867))
([4ca3e06](4ca3e06))
* **docker:** disable containers page file modification
([#1870](#1870))
([aaa0372](aaa0372))
* issues/1597: Temperature Monitoring - Thanks @MitchellThompkins
([a1be458](a1be458))
* New Crowdin updates
([#1809](#1809))
([a7b3f07](a7b3f07))
* New Crowdin updates
([#1883](#1883))
([14a8fa8](14a8fa8))
* **onboarding:** add new onboarding flows for Unraid OS
([#1746](#1746))
([15bd747](15bd747))
* registration and trial actions use Account app
([#1928](#1928))
([c2c0425](c2c0425))
* share internal boot state
([#1921](#1921))
([8e4d44d](8e4d44d))
* **web:** show TPM move control for trial licenses
([#1911](#1911))
([d00fb63](d00fb63))


### Bug Fixes

* Add dedicated TPM license move option
([#1909](#1909))
([36c56f7](36c56f7))
* allow free USB targets in onboarding internal boot setup
([#1903](#1903))
([298da54](298da54))
* API key key display truncation
([#1890](#1890))
([b12f75c](b12f75c))
* **api:** harden PHP wrapper args for newer PHP versions
([#1901](#1901))
([849f177](849f177))
* **api:** prevent flash notification startup fd exhaustion
([#1893](#1893))
([4b231ad](4b231ad))
* clear stale onboarding modal session state
([#1904](#1904))
([23f7836](23f7836))
* consistently clear onboarding draft
([#1916](#1916))
([199d803](199d803))
* correct graphql-api.log timestamp formatting
([#1918](#1918))
([243c5a8](243c5a8))
* **deps:** pin dependencies
([#1878](#1878))
([db88eb8](db88eb8))
* **docker:** change "visit" to "webui" & use correct link
([#1863](#1863))
([cab0880](cab0880))
* **docker:** improve start/stop UX with visual feedback
([#1865](#1865))
([c084e25](c084e25))
* **docker:** remove aggressive caching to ensure data correctness
([#1864](#1864))
([1c1bae8](1c1bae8))
* **docker:** sync template mappings in organizer to prevent false
orphan warnings ([#1866](#1866))
([38a6f0c](38a6f0c))
* onboarding internal-boot warning panel contrast and semantics
([#1927](#1927))
([bb6f241](bb6f241))
* **onboarding:** add explicit EFI loader path for flash entry
([#1926](#1926))
([429b438](429b438))
* **onboarding:** extend onboarding refresh timeout
([#1925](#1925))
([e2a5f44](e2a5f44))
* **onboarding:** persist installed plugins in summary
([#1915](#1915))
([07f4ebd](07f4ebd))
* **onboarding:** refine storage boot setup UX
([#1900](#1900))
([1108d0a](1108d0a))
* polish onboarding flow
([#1902](#1902))
([8742cac](8742cac))
* preserve registration device limits after refresh
([#1905](#1905))
([234bfc7](234bfc7))
* prevent onboarding on API errors
([#1917](#1917))
([540d6f9](540d6f9))
* remap TPM guid prefix to 01
([#1924](#1924))
([5360b5b](5360b5b))
* Return null for corrupted/invalid API key files and add Connect
fixtures test ([#1886](#1886))
([013e6c5](013e6c5))
* share internal boot state across onboarding
([#1920](#1920))
([f9b293f](f9b293f))
* too many file descriptors with thousands of notifications
([#1887](#1887))
([7956987](7956987))
* Treat onboarding patch updates as completed
([#1884](#1884))
([d03b25e](d03b25e))
* unify onboarding internal boot state refresh
([#1923](#1923))
([d3032c1](d3032c1))
* **web:** refresh internal boot onboarding state
([#1913](#1913))
([1ca2129](1ca2129))
* **web:** stop showing callback errors after successful key installs
([#1892](#1892))
([45f1402](45f1402))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

4.29.1-build-number-5

Toggle 4.29.1-build-number-5's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: unraid-connect plugin not loaded when connect is installed (#1856)

Previously, api plugins could only be installed as `peerDependencies` in
the api. This change allows them to be listed as `dependencies` as well.
This makes plugin loading (eg loading Connect) more robust.

Tests:

- [x] Re-logging on 7.3.0-beta.0.5