<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added developer CLI tools for toggling GraphQL sandbox and modal testing utilities. * Introduced a "Show Activation Modal" developer component for UI testing. * Added system initial setup detection and related GraphQL queries. * Enhanced login and welcome pages with dynamic server info and initial setup state. * Improved SSO button with internationalization and error handling. * Added internal CLI admin API key management service and internal GraphQL client service. * Introduced comprehensive API report generation service for system and service status. * Added CLI commands and GraphQL mutations/queries for plugin and SSO user management. * Added new modal target components and improved teleport target detection. * **Enhancements** * Refined modal dialog targeting and teleportation for flexible UI placement. * Updated modal components and stores for improved activation/welcome modal control. * Improved plugin and SSO user management via CLI through GraphQL API. * Refactored partner logo components to use props instead of store dependencies. * Enhanced styling and accessibility for buttons and modals. * Streamlined Tailwind CSS integration with shared styles and updated theme variables. * Improved GraphQL module configuration to avoid directive conflicts in tests. * Adjusted Vite config for better dependency handling in test mode. * Improved error handling and logging in CLI commands and services. * Reordered imports and refined component class bindings for UI consistency. * **Bug Fixes** * Resolved issues with duplicate script tags and component registration in the web UI. * Fixed modal close button visibility and activation modal state handling. * Added error handling and logging improvements across CLI commands and services. * Fixed newline issues in last-download-time fixture files. * **Chores** * Added and updated numerous tests for CLI commands, services, and UI components. * Updated translation files and localization resources for new UI messages. * Adjusted environment, configuration, and dependency files for improved development and test workflows. * Cleaned up unused imports and mocks in tests. * Reorganized exports and barrel files in shared and UI modules. * Added integration and dependency resolution tests for core modules. * **Removals & Refactoring** * Removed legacy Redux state management, configuration, and UPnP logic from the backend. * Eliminated deprecated GraphQL subscriptions and client code related to registration and mothership. * Removed direct store manipulation and replaced with service-based approaches in CLI commands. * Deleted unused or redundant test files and configuration listeners. * Refactored SSO user service to consolidate add/remove operations into a single update method. * Simplified API key services with new methods for automatic key management. * Replaced direct plugin and SSO user service calls with GraphQL client interactions in CLI commands. * Removed complex theme fallback and dark mode CSS rules, replacing with streamlined static theme variables. * Cleaned up Tailwind CSS configuration and removed deprecated local styles. * Removed multiple internal utility files and replaced with simplified or centralized implementations. * Removed deprecated local configuration and synchronization files and listeners. * Removed UPnP helper functions and job management classes. * Refactored server resolver to dynamically construct local server data internally. * Removed CORS handler and replaced with simplified or externalized logic. * Removed store synchronization and registration event pubsub handling. * Removed GraphQL client creation utilities for internal API communication. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Unraid Plugin Builder
Tool for building and testing Unraid plugins locally as well as packaging them for deployment.
Development Workflow
1. Watch for Changes
The watch command will automatically sync changes from the API, UI components, and web app into the plugin source:
# Start watching all components
pnpm run watch:all
# Or run individual watchers:
pnpm run api:watch # Watch API changes
pnpm run ui:watch # Watch Unraid UI component changes
pnpm run wc:watch # Watch web component changes
This will copy:
- API files to
./source/dynamix.unraid.net/usr/local/unraid-api - UI components to
./source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/unraid-components - Web components to the same UI directory
2. Build the Plugin
Once your changes are ready, build the plugin package:
# Build using Docker - on non-Linux systems
pnpm run docker:build-and-run
# Or build with the build script
pnpm run build:validate
This will create the plugin files in ./deploy/release/
3. Serve and Install
Start a local HTTP server to serve the plugin files:
# Serve the plugin files
pnpm run http-server
Then install the plugin on your Unraid development machine by visiting:
http://SERVER_NAME.local/Plugins
Then paste the following URL into the Unraid Plugins page:
http://YOUR_LOCAL_DEV_MACHINE_IP:5858/plugins/local/dynamix.unraid.net.plg
Replace SERVER_NAME with your development machine's hostname.
Development Tips
- Run watchers in a separate terminal while developing
- The http-server includes CORS headers for local development
- Check the Unraid system log for plugin installation issues
Environment Setup
-
Initialize environment:
pnpm run env:init -
Validate environment:
pnpm run env:validate
Available Commands
Build Commands
build- Build the plugin packagebuild:validate- Build with environment validationdocker:build- Build the Docker containerdocker:run- Run the builder in Dockerdocker:build-and-run- Build and run in Docker
Watch Commands
watch:all- Watch all component changesapi:watch- Watch API changesui:watch- Watch UI component changeswc:watch- Watch web component changes
Server Commands
http-server- Serve the plugin files locally
Environment Commands
env:init- Create initial .env fileenv:validate- Validate environment setupenv:clean- Remove .env file
Troubleshooting
-
Watch not updating files
- Check that source directories exist
- Verify file permissions
-
Build failures
- Ensure .env file exists
- Check Docker setup if using containerized build
- Verify source files are present
-
Installation issues
- Confirm http-server is running
- Check your local IP is correct
- Verify plugin file permissions