Commit Graph

2466 Commits

Author SHA1 Message Date
Eli Bosley
ae8c8a46e2 feat(onboarding): introduce onboarding state management and enhancements
- Added new `OnboardingState` and `OnboardingOverride` types to manage onboarding states and overrides.
- Implemented `OnboardingOverrideService` and `OnboardingStateService` for handling onboarding state logic.
- Updated GraphQL schema to include onboarding state queries and mutations, enhancing the onboarding process.
- Enhanced existing components to utilize the new onboarding state management features, improving user experience.
- Removed deprecated `Customization` type and refactored related components for better clarity and maintainability.

This update significantly improves the onboarding experience by providing robust state management and clearer component interactions.
2025-12-23 17:21:40 -05:00
Eli Bosley
31c338373c feat(onboarding): implement onboarding reset functionality and new admin panel
- Added a new `resetUpgradeOnboarding` mutation to reset onboarding progress for the current OS version.
- Introduced an `OnboardingAdminPanel` component for managing onboarding states and resetting progress.
- Created a test harness for simulating onboarding flows with client-side overrides.
- Updated GraphQL schema to include the new `ThemeName` enum and onboarding reset mutation.
- Enhanced existing components to support the new onboarding features and improve user experience.

This update significantly enhances the onboarding process by providing tools for managing and resetting onboarding states, improving overall usability.
2025-12-23 15:34:40 -05:00
Eli Bosley
0df7926461 refactor(theme): update theme store methods in tests to use fetchTheme
- Replaced instances of `setTheme` with `fetchTheme` in the `ActivationModal.test.ts` and `WelcomeModal.test.ts` files to align with recent changes in theme management.
- Updated test assertions and error messages to reflect the new method, enhancing clarity and consistency in theme loading tests.

This update ensures that the tests accurately reflect the current implementation of theme management across components.
2025-12-22 17:06:20 -05:00
Eli Bosley
f959f9564c refactor(theme): standardize theme loading method across components
- Replaced `setTheme` with `fetchTheme` in `ActivationModal.vue`, `WelcomeModal.standalone.vue`, and `themeInitializer.ts` to ensure consistent theme loading.
- Updated error logging messages for clarity when loading themes.
- Simplified the `fetchTheme` function in `theme.ts` for improved readability.

This update enhances the consistency and clarity of theme management across the application.
2025-12-22 16:56:39 -05:00
Eli Bosley
77d001c361 fix(imports): standardize import statements and correct module order
- Updated import statements in `index.ts` and `info.module.ts` to use consistent single quotes for string literals.
- Reordered the import of `CpuModule` in `info.module.ts` to maintain a logical structure.
- Ensured proper export syntax in `gql/index.ts` for consistency across the codebase.

This update enhances code readability and maintains uniformity in import styles.
2025-12-22 16:27:46 -05:00
Eli Bosley
b40e733db7 feat(activation): improve plugin installation status handling and UI feedback
- Enhanced the `ActivationPluginsStep` component to track and display the installation status of plugins, including states for pending, installing, success, and error.
- Updated the UI to provide real-time feedback during the installation process, including dynamic status messages and logs for each plugin.
- Improved unit tests to verify the new status handling and ensure accurate UI updates based on installation progress.
- Added new localization strings for installation status messages to enhance user experience.

This update significantly improves the clarity and responsiveness of the plugin installation process, providing users with better insights into the status of their selected plugins.
2025-12-22 16:24:46 -05:00
Eli Bosley
3f41cf1574 fix(plugins): refine error and success handling during plugin installation
- Updated the `UnraidPluginsService` to ensure that error and success handling for plugin installations only occurs when the operation status is RUNNING.
- Added checks in the `handleFailure` and `handleSuccess` methods to prevent state changes if the operation is not in progress.
- This change improves the reliability of the plugin installation process by preventing unintended state updates after the operation has completed or failed.
2025-12-22 16:24:45 -05:00
Eli Bosley
2decc234b8 feat(activation): enhance plugin installation flow and UI feedback
- Updated the `ActivationPluginsStep` component to improve the handling of plugin installations, including better state management for installation completion.
- Introduced a new primary action button that dynamically updates based on installation status and selected plugins.
- Enhanced unit tests to cover new checkbox interactions and verify the correct behavior of the installation process.
- Updated localization files to include new messages related to the installation process.

This update significantly improves user experience by providing clearer feedback during plugin installations and ensuring proper state management throughout the process.
2025-12-22 16:24:45 -05:00
Eli Bosley
da381b5f95 feat(plugin): implement plugin installation tracking and management
- Introduced a new `UnraidPlugins` module to manage plugin installations, including tracking installation progress and status updates.
- Added GraphQL types and mutations for installing plugins, retrieving installation operations, and subscribing to installation updates.
- Enhanced the `ActivationPluginsStep` component to support real-time feedback during plugin installations, displaying logs and status messages.
- Updated localization files to include messages related to plugin installation processes.
- Implemented unit tests for the new plugin installation service and component interactions, ensuring reliability and correctness.

This update significantly enhances the user experience by providing a robust mechanism for managing plugin installations, improving the overall onboarding process.
2025-12-22 16:24:45 -05:00
Eli Bosley
d4e93f1fd3 feat(activation): add titles, descriptions, and icons to upgrade steps in ActivationModal tests
- Enhanced the test cases for the `ActivationModal` component by adding titles, descriptions, and icons for the upgrade steps.
- This update improves the clarity and context of the upgrade steps in the tests, facilitating better understanding and maintenance of the onboarding process.
2025-12-22 16:24:45 -05:00
Eli Bosley
3f4ac7a926 feat(activation): enhance upgrade step handling in ActivationModal
- Updated the `ActivationModal` component to include a new method for completing pending upgrade steps, improving the onboarding experience.
- Modified the `closeModal` function to ensure pending steps are marked as complete before closing the modal.
- Enhanced tests to verify the correct behavior of upgrade step completion and modal interactions.
- Updated documentation to reflect changes in upgrade onboarding behavior.

This update improves the user experience by ensuring that all pending upgrade steps are properly handled during the activation process.
2025-12-22 16:24:45 -05:00
Eli Bosley
f612aaa710 refactor(activation): clean up ActivationModal component and remove unused pages
- Removed the `onComplete` prop from the `ActivationModal` component to streamline its functionality.
- Deleted several unused pages including `apikeys.vue`, `changelog.vue`, `flashbackup.vue`, `index.vue`, `login.query.ts`, `login.vue`, `redirect.vue`, `welcome.vue`, `apikeyauthorize.vue`, and `test-update-modal.vue` to improve codebase maintainability.
- This update enhances the clarity and performance of the application by eliminating unnecessary files and simplifying the component structure.
2025-12-22 16:24:45 -05:00
Eli Bosley
b2d89b2506 fix(log): update time format in logging configuration
- Changed the time format in the logging configuration from 'HH:mm:ss' to 'SYS:HH:MM:ss' to ensure compatibility with system time settings.
- This update improves the accuracy of log timestamps, enhancing the overall logging functionality.
2025-12-22 16:24:45 -05:00
Eli Bosley
e0a442a308 feat(onboarding): implement first boot completion tracking in OnboardingTracker
- Added functionality to the OnboardingTracker to manage first boot completion state, ensuring accurate onboarding flow.
- Introduced tests to verify the behavior of first boot completion logic, including scenarios for both new and existing states.
- Updated the OnboardingService to utilize the new first boot completion check, enhancing the onboarding process by preventing redundant setups.

This update improves the onboarding experience by accurately tracking first boot completion, ensuring a smoother initialization process for users.
2025-12-22 16:24:45 -05:00
Eli Bosley
cae5111aa6 feat(onboarding): enhance version tracking and upgrade marker handling
- Introduced unlink functionality to manage the upgrade marker file, allowing for better cleanup during onboarding processes.
- Updated the OnboardingTracker to conditionally write the upgrade marker based on the completion of required steps, improving version tracking accuracy.
- Added logic to clear the upgrade marker when all onboarding steps are completed, ensuring a clean state for future upgrades.
- Enhanced tests to verify the correct behavior of version persistence and upgrade marker management during application shutdown.

This update improves the onboarding experience by ensuring accurate version tracking and state management during upgrades.
2025-12-22 16:24:30 -05:00
Eli Bosley
1abaf2ce96 feat(onboarding): implement upgrade marker for version tracking
- Added functionality to read and write an upgrade marker file, allowing the OnboardingTracker to manage version states more effectively.
- Enhanced the OnboardingTracker to infer the last tracked version from the upgrade marker, improving the onboarding experience during version upgrades.
- Updated tests to verify the correct behavior of the upgrade marker handling, ensuring that version information is accurately persisted and retrieved.

This update enhances the onboarding process by providing a reliable mechanism for tracking version upgrades, improving user experience during transitions between versions.
2025-12-22 16:24:30 -05:00
Eli Bosley
b5215141c5 feat(config): enhance config parsing and state management
- Added a test to infer config type from file extension when not provided, improving flexibility in config loading.
- Introduced a normalization function for file extensions to ensure consistent validation of config types.
- Refactored state file update handling in the StateManager to streamline event processing and improve error logging.
- Enhanced OnboardingTracker to handle cases where the version is unavailable, ensuring onboarding steps are still surfaced.

This update improves the robustness and maintainability of the configuration and onboarding processes.
2025-12-22 16:24:30 -05:00
Eli Bosley
0d9b4c3b98 refactor(activation): remove unused i18n import from WelcomeModal component
- Eliminated the unused `useI18n` import from the `WelcomeModal.standalone.vue` file to clean up the code.
- This update enhances the clarity and maintainability of the component by removing unnecessary dependencies.
2025-12-22 16:24:30 -05:00
Eli Bosley
7d95884908 test(customization): add test for omitting upgrade metadata with incomplete snapshot versions
- Introduced a new test case in `customization.resolver.spec.ts` to verify that upgrade metadata is omitted when snapshot versions are incomplete.
- Updated the `CustomizationResolver` logic to handle cases where either `currentVersion` or `lastTrackedVersion` is undefined, ensuring accurate response structure.
- This update enhances the robustness of the onboarding process by ensuring correct behavior under incomplete version scenarios.
2025-12-22 16:24:30 -05:00
Eli Bosley
e0f6ee5721 feat(onboarding): add permissions for completing upgrade steps
- Introduced permission checks for the `completeUpgradeStep` mutation in the onboarding process.
- Utilized `UsePermissions` directive to enforce authorization based on `AuthAction.UPDATE_ANY` for the `Resource.WELCOME`.
- This update enhances security by ensuring only authorized users can mark onboarding steps as completed.
2025-12-22 16:24:30 -05:00
Eli Bosley
ff6c4af8ff refactor(system-time): integrate ConfigService for state management
- Replaced direct state access with ConfigService in SystemTimeService to improve dependency management and testability.
- Updated unit tests to mock ConfigService for retrieving system time settings, enhancing test isolation.
- Removed unnecessary getters and store dispatch calls, streamlining the service logic.

This update enhances the maintainability and clarity of the SystemTimeService by leveraging NestJS's configuration management capabilities.
2025-12-22 16:24:30 -05:00
Eli Bosley
e7828c316f refactor(onboarding): remove unnecessary fields from UpgradeStep type
- Removed `title`, `description`, and `icon` fields from the `UpgradeStep` type in the GraphQL schema and related TypeScript definitions to simplify the onboarding process.
- Updated documentation to reflect changes in how onboarding steps are tracked and displayed.
- Adjusted related tests and components to ensure compatibility with the updated schema.

This update streamlines the onboarding experience by focusing on essential information for upgrade steps.
2025-12-22 16:24:30 -05:00
Eli Bosley
99bb59d8bf fix: pnpm lock 2025-12-22 16:24:30 -05:00
Eli Bosley
0b3e78ecd0 test(activation): enhance ActivationCodeModal tests with Vue app integration
- Updated the `activationCodeModal.test.ts` file to integrate Vue app setup for testing the activation code modal store.
- Refactored test initialization to use a defined component and mount the app, improving the test structure and ensuring proper store usage.
- Added cleanup logic to unmount the app after each test, enhancing test isolation and reliability.

This update improves the testing framework for the activation code modal, ensuring better integration with Vue's reactivity system.
2025-12-22 16:24:30 -05:00
Eli Bosley
9a06af2b51 refactor(activation): update activation components for improved localization
- Refactored activation-related components to utilize new translation keys for better localization support.
- Updated `ActivationModal`, `ActivationLicenseStep`, `ActivationPluginsStep`, and others to replace hardcoded strings with translation keys.
- Enhanced test cases to reflect changes in localization, ensuring consistency across the activation flow.
- Added new translation keys in `en.json` for various activation steps and messages.

This update improves the internationalization of the activation process, making it easier to manage translations and enhancing the user experience for non-English speakers.
2025-12-22 16:24:30 -05:00
Eli Bosley
cb06648d2b feat: onboarding flows simplified 2025-12-22 16:24:30 -05:00
Eli Bosley
dea4b89fa5 feat(onboarding): update OnboardingTracker to support dynamic OS version path
- Refactored `OnboardingTracker` to utilize a configurable OS version file path based on the data directory.
- Enhanced tests to verify behavior when the data directory is unavailable, ensuring fallback to the default version path.
- Updated related logic to improve version tracking and persistence during application bootstrap.

This update improves flexibility in OS version management and enhances the reliability of onboarding processes.
2025-12-22 16:22:05 -05:00
Eli Bosley
b1337fd50c refactor(api-schema): reorganize RClone types in generated schema
- Moved RClone related types and inputs back into the generated schema for better structure and clarity.
- Removed legacy references to RClone tracking in the onboarding tracker module to streamline the codebase.
- Updated API configuration to ensure proper formatting and consistency.

This update enhances the organization of the API schema and improves maintainability by removing outdated code references.
2025-12-22 16:22:05 -05:00
Eli Bosley
f5564a4e23 feat(onboarding): implement upgrade step completion tracking
- Introduced `OnboardingMutations` to manage the completion of upgrade onboarding steps.
- Added `completeUpgradeStep` mutation to mark specific onboarding steps as completed, returning relevant upgrade information.
- Enhanced `UpgradeInfo` type to include completed steps for better tracking of user progress during OS upgrades.
- Updated `OsVersionTracker` to persist completed onboarding steps alongside OS version tracking.
- Integrated new GraphQL queries and mutations in the frontend to support the onboarding process.

This update improves the user experience by providing a structured way to track and manage onboarding steps during OS upgrades, ensuring users receive appropriate guidance throughout the process.
2025-12-22 16:22:05 -05:00
Eli Bosley
68cd5e4f47 feat(api-config): integrate OS version tracking with new OsVersionTracker module
- Introduced `OsVersionTracker` to manage and persist the current OS version during application bootstrap.
- Updated `ApiConfigPersistence` to remove shutdown handling for OS version tracking, streamlining the logic.
- Enhanced tests for `ApiConfigPersistence` and added tests for `OsVersionTracker` to ensure proper functionality.
- Registered `OsVersionTrackerModule` in `ApiConfigModule` to facilitate OS version management.

This update improves the reliability of OS version tracking and simplifies the configuration persistence logic.
2025-12-22 16:21:06 -05:00
Eli Bosley
7834c49bef feat(api-config): enhance ApiConfigPersistence with shutdown handling
- Added `OnApplicationShutdown` lifecycle hook to `ApiConfigPersistence` for managing OS version tracking during application shutdown.
- Removed the previous method for tracking OS version upgrades and streamlined the logic to set the last seen OS version directly during shutdown.
- Introduced a private variable to store the current OS version for improved state management.

This update improves the reliability of OS version tracking by ensuring it is properly handled during application shutdown, enhancing overall configuration persistence.
2025-12-22 16:21:06 -05:00
Eli Bosley
c25eca8cc3 feat(activation): enhance ActivationPluginsStep and update tests
- Added `ActivationPluginsStep` component to the activation process, allowing users to select and install essential plugins.
- Updated `ActivationModal` and related test files to incorporate the new plugins step, ensuring proper navigation and functionality.
- Improved state management for selected plugins in `ActivationPluginsStep.vue` to optimize performance.
- Mocked new upgrade onboarding store in tests to support the latest activation flow.

This update improves the activation experience by integrating plugin selection, streamlining the setup process for users.
2025-12-22 16:21:06 -05:00
Eli Bosley
d2ce62729b feat(upgrade): implement upgrade onboarding system for Unraid OS
- Added `UpgradeInfo` type to track OS version changes, including current and previous versions.
- Enhanced `InfoVersions` and GraphQL resolvers to expose upgrade information.
- Introduced `upgradeOnboarding` store to manage visibility and steps for users upgrading their OS.
- Updated `ActivationModal` to handle both fresh installs and upgrade onboarding, displaying relevant steps based on the user's upgrade path.
- Created configuration for defining upgrade steps and conditions in `releaseConfigs.ts`.
- Added new components and logic to facilitate the upgrade onboarding experience, improving user guidance during OS upgrades.

This update streamlines the upgrade process, ensuring users receive contextual onboarding steps when upgrading their Unraid OS, enhancing overall user experience.
2025-12-22 16:21:06 -05:00
Eli Bosley
58f4c171c6 fix(emcmd): improve error logging for CSRF token retrieval
- Updated the error logging in the `readCsrfTokenFromVarIni` function to log the error object directly, enhancing the clarity and detail of the logs when CSRF token retrieval fails.

This change improves debugging capabilities by providing more structured error information.
2025-12-22 16:17:59 -05:00
Eli Bosley
803824c9a7 feat(activation): add Plugins Step to activation process
- Introduced a new `ActivationPluginsStep` component for selecting and installing essential plugins during the activation process.
- Updated the `ActivationModal` to include the new plugins step, allowing users to navigate to it after the timezone selection.
- Enhanced the `ActivationSteps` component to reflect the new step in the activation flow.
- Added a button in the test pages to facilitate testing of the new plugins step functionality.
- Improved visibility logic and step handling in the activation modal to accommodate the new workflow.

This update enhances the user experience by allowing for plugin installation as part of the activation process, streamlining setup and configuration.
2025-12-22 16:17:59 -05:00
Eli Bosley
ed8c5a9d77 test(activation): update tests for activation modal and steps
- Enhanced `ActivationModal.test.ts` to verify rendering of the new `ActivationTimezoneStep` when an activation code is present.
- Modified `ActivationSteps.test.ts` to reflect the addition of a fourth step and updated titles/descriptions accordingly.
- Adjusted visibility logic in `activationCodeModal.test.ts` to ensure the modal is visible during fresh installs when the activation code is missing, aligning with the new user flow.

These changes improve test coverage and ensure the activation process behaves as expected with the recent updates.
2025-12-22 16:17:59 -05:00
Eli Bosley
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.
2025-12-22 16:17:59 -05:00
Eli Bosley
932d2cf389 feat(system-time): add SystemTime type and update resolvers for system time configuration
- Introduced a new GraphQL type `SystemTime` to manage system time settings, including current time, timezone, NTP status, and NTP servers.
- Added `systemTime` query to retrieve current system time configuration.
- Implemented `updateSystemTime` mutation to modify system time settings.
- Created corresponding service and resolver for handling system time logic.
- Added input validation for updating system time, including manual date/time handling.
- Integrated new module into the main resolver module for accessibility.

This update enhances the API's capability to manage and retrieve system time configurations effectively.
2025-12-22 16:16:10 -05:00
Eli Bosley
9ef1cf1eca feat: docker overview (#1855)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

## Release Notes v4.29.2

* **New Features**
* Added iframe mode support with UI adjustments for embedded deployments
  * Introduced modal portal system with dark mode integration

* **Bug Fixes**
* Fixed log line deduplication sync issue in Docker log viewer to
prevent orphaned entries

* **Improvements**
  * Enhanced table header rendering for consistent behavior and resizing
  * Improved notification subscription handling for better stability
  * Optimized log viewer initialization behavior
  * Simplified organizer API parameter handling

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Pujit Mehrotra <pujit@lime-technology.com>
2025-12-22 13:18:16 -05:00
Eli Bosley
a0745e15ca Revert "fix: revert replace docker overview table with web component (7.3+) (#1853)"
This reverts commit 560db880cc.
2025-12-19 15:28:19 -05:00
github-actions[bot]
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))
([73135b8](73135b8328))

---
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.29.2
2025-12-19 15:13:29 -05:00
Pujit Mehrotra
73135b8328 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
4.29.1-build-number-5
2025-12-19 15:06:52 -05:00
github-actions[bot]
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))
([560db88](560db880cc))

---
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.29.1
2025-12-19 12:19:44 -05:00
Eli Bosley
560db880cc fix: revert replace docker overview table with web component (7.3+) (#1853)
Reverts unraid/api#1764
2025-12-19 12:12:41 -05:00
github-actions[bot]
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))
([277ac42](277ac42046))


### Bug Fixes

* handle race condition between guid loading and license check
([#1847](https://github.com/unraid/api/issues/1847))
([8b155d1](8b155d1f1c))
* resolve issue with "Continue" button when updating
([#1852](https://github.com/unraid/api/issues/1852))
([d099e75](d099e7521d))
* update myservers config references to connect config references
([#1810](https://github.com/unraid/api/issues/1810))
([e1e3ea7](e1e3ea7eb6))

---
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.29.0
2025-12-19 11:53:48 -05:00
Eli Bosley
d099e7521d fix: resolve issue with "Continue" button when updating (#1852)
- Replaced BrandLoading with BrandButton in UpdateOs component for
better user interaction.
- Updated test cases to reflect changes in rendering logic, ensuring the
account button is displayed when no reboot is pending.
- Added functionality to navigate to account update when the button is
clicked.
- Introduced WEBGUI_REDIRECT URL for handling update installations in
the store logic.
2025-12-19 11:44:19 -05:00
Pujit Mehrotra
bb9b539732 chore: fix local plugin builds & docs (#1851)
Raised by [MitchellThompkins](https://github.com/MitchellThompkins) in
#1848

- Documents how to use Docker to build a local Connect plugin
- Local Plugin flow will now build workspace packages before proceeding
with plugin infra + build
- Removes recommendation to run `pnpm build:watch` from root, as this
race conditions and build cache issues.
- Makes `pnpm dev` from root parallel, preventing servers from blocking
each other.

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

## Summary by CodeRabbit

* **Documentation**
* Updated development workflow documentation to emphasize Docker-based
plugin builds
* Restructured development modes into three workflows: local Docker
builds, direct deployment, and development servers
  * Updated build and deployment instructions

* **Chores**
  * Modified dev script for parallel execution
  * Refactored build scripts with improved dependency handling

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-12-18 16:33:37 -05:00
Pujit Mehrotra
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`.
2025-12-18 11:50:17 -05:00
Pujit Mehrotra
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>
2025-12-18 11:11:05 -05:00
Pujit Mehrotra
e1e3ea7eb6 fix: update myservers config references to connect config references (#1810)
`myservers.cfg` no longer gets written to or read (except for migration
purposes), so it'd be better to read from the new values instead of
continuing to use the old ones @elibosley @Squidly271 .

unless i'm missing something! see #1805

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

* **New Features**
* Switches to a centralized remote-access configuration with a legacy
fallback and richer client-side handling.
* Optional GraphQL submission path for applying remote settings when
available.

* **Bug Fixes**
* Normalized boolean and port handling to prevent incorrect values
reaching the UI.
* Improved error handling and UI state restoration during save/apply
flows.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-12-18 10:34:06 -05:00