mirror of
https://github.com/unraid/api.git
synced 2026-03-27 15:31:20 -05:00
### PR Summary This PR introduces a new onboarding-focused API surface, expands system configuration capabilities, and refactors activation/customization data into a more structured schema. ### What changed - Added full onboarding domain support in GraphQL: - `Onboarding`, `OnboardingState`, `OnboardingStatus` - `onboarding` mutation group (complete/reset/override flows) - Added plugin install lifecycle APIs: - `unraidPlugins` mutations (`installPlugin`, `installLanguage`) - operation tracking queries + `pluginInstallUpdates` subscription - Added system time management APIs: - `systemTime`, `timeZoneOptions`, `updateSystemTime` - Added display/network/config enhancements: - `display` query + `displaySubscription` - `Info.networkInterfaces` and `Info.primaryNetwork` - server/SSH update mutations and `Server.comment` - Updated REST customization asset endpoint to return dynamic image MIME types (not hardcoded PNG). ### Breaking schema changes - Removed `PublicPartnerInfo` type. - Removed query fields: - `isInitialSetup` - `publicPartnerInfo` - Removed `Customization.partnerInfo` and `Customization.theme`. - Restructured `ActivationCode` from flat fields to nested: - `partner`, `branding`, `system` objects. ### Net effect - API becomes more modular and onboarding-driven. - Consumers must update GraphQL queries for removed fields and adopt the new `ActivationCode` shape. - Frontend onboarding/plugin/system-time workflows are now first-class in the API. ### ⚠️ Breaking GraphQL changes (15 total) 1. Removed type: - `PublicPartnerInfo` 2. Removed `Query` fields: - `isInitialSetup` - `publicPartnerInfo` 3. Removed `Customization` fields: - `partnerInfo` - `theme` 4. Reshaped `ActivationCode` (flat fields removed): - `partnerName`, `partnerUrl` - `serverName`, `sysModel`, `comment` - `header`, `headermetacolor`, `background`, `showBannerGradient`, `theme` #### Migration mapping (old -> new) - `activationCode.partnerName` -> `activationCode.partner.name` - `activationCode.partnerUrl` -> `activationCode.partner.url` - `activationCode.serverName` -> `activationCode.system.serverName` - `activationCode.sysModel` -> `activationCode.system.model` - `activationCode.comment` -> `activationCode.system.comment` - `activationCode.header` -> `activationCode.branding.header` - `activationCode.headermetacolor` -> `activationCode.branding.headermetacolor` - `activationCode.background` -> `activationCode.branding.background` - `activationCode.showBannerGradient` -> `activationCode.branding.showBannerGradient` - `activationCode.theme` -> `activationCode.branding.theme` - `query isInitialSetup` -> `query isFreshInstall` (verify semantics in consumers) - `Customization.partnerInfo` -> `Customization.activationCode.partner` + `Customization.activationCode.branding` - `Customization.theme` -> use `publicTheme` (or `display.theme`, depending on consumer need) --- ### Major non-breaking schema additions 1. Onboarding domain: - New types: `Onboarding`, `OnboardingState`, `OnboardingStatus` - New mutation namespace: `onboarding` (`completeOnboarding`, `resetOnboarding`, override helpers) - `Customization.onboarding` added 2. Plugin install lifecycle: - New mutations: `unraidPlugins.installPlugin`, `unraidPlugins.installLanguage` - New queries: `pluginInstallOperation`, `pluginInstallOperations`, `installedUnraidPlugins` - New subscription: `pluginInstallUpdates` - New types: `PluginInstallOperation`, `PluginInstallEvent`, status enum/inputs 3. System time management: - New query fields: `systemTime`, `timeZoneOptions` - New mutation: `updateSystemTime` - New types/inputs: `SystemTime`, `TimeZoneOption`, `UpdateSystemTimeInput` 4. Display/network/settings surface: - New query field: `display` (`InfoDisplay`) - New subscription: `displaySubscription` - `Info` adds `networkInterfaces`, `primaryNetwork` - `Customization.availableLanguages` added - New mutation: `customization.setLocale` - New mutations: `updateServerIdentity`, `updateSshSettings` - `Server.comment` added --- ### REST contract note (non-GraphQL) - `GET /customizations/:type` now returns detected image MIME type dynamically (not always `image/png`). --- ### Data/schema scope note - No DB migration/schema files were changed in this branch; major schema impact is API contract (primarily GraphQL). Source files reviewed: - `/Users/ajitmehrotra/Projects/api/api/generated-schema.graphql` - `/Users/ajitmehrotra/Projects/api/api/src/unraid-api/rest/rest.controller.ts` - `/Users/ajitmehrotra/Projects/api/api/src/unraid-api/rest/rest.service.ts` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit # Release Notes * **New Features** * Multi-step onboarding flow with partner branding support * System time and timezone configuration from UI * Plugin and language pack installation capabilities * Server identity management (name, description, model) * SSH settings configuration interface * Onboarding admin panel for testing and debugging * **Improvements** * Enhanced theme and locale switching * Better network interface information display * Improved server information visibility * Partner logo and branding customization support <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Ajit Mehrotra <ajitmehrotra2009@gmail.com> Co-authored-by: Ajit Mehrotra <ajit@lime-technology.com>
133 lines
1.8 KiB
Plaintext
133 lines
1.8 KiB
Plaintext
# Logs
|
|
./logs
|
|
*.log
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
|
|
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
lib-cov
|
|
|
|
# Coverage directory used by tools like istanbul
|
|
coverage
|
|
coverage-ts
|
|
|
|
# nyc test coverage
|
|
.nyc_output
|
|
|
|
# node-waf configuration
|
|
.lock-wscript
|
|
|
|
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
|
build/Release
|
|
|
|
# Dependency directories
|
|
node_modules/
|
|
jspm_packages/
|
|
unraid-ui/node_modules/
|
|
|
|
# TypeScript v1 declaration files
|
|
typings/
|
|
|
|
# Auto-generated type declarations for Nuxt UI
|
|
auto-imports.d.ts
|
|
components.d.ts
|
|
|
|
# Optional npm cache directory
|
|
.npm
|
|
|
|
# Optional eslint cache
|
|
.eslintcache
|
|
|
|
# Optional REPL history
|
|
.node_repl_history
|
|
|
|
# Output of 'npm pack'
|
|
*.tgz
|
|
|
|
# Yarn Integrity file
|
|
.yarn-integrity
|
|
|
|
# dotenv environment variables file
|
|
.env
|
|
|
|
# next.js build output
|
|
.next
|
|
|
|
# Visual Studio Code workspace
|
|
.vscode/sftp.json
|
|
.history/
|
|
|
|
# OSX
|
|
.DS_Store
|
|
|
|
# Jetbrains Settings Files
|
|
.idea
|
|
|
|
# Temp dir for tests
|
|
test/__temp__/*
|
|
|
|
# Built files
|
|
dist
|
|
unraid-ui/storybook-static
|
|
|
|
# Typescript
|
|
typescript
|
|
|
|
# Ultra runner
|
|
.ultra.cache.json
|
|
|
|
# Github actions
|
|
RELEASE_NOTES.md
|
|
|
|
# Test backups
|
|
api/dev/configs/api.json.backup
|
|
|
|
# Docker Deploy Folder
|
|
deploy/*
|
|
!deploy/.gitkeep
|
|
|
|
# pkg cache
|
|
.pkg-cache
|
|
|
|
*.log*
|
|
.nuxt
|
|
.nitro
|
|
.cache
|
|
.output
|
|
!.env.example
|
|
|
|
fb_keepalive
|
|
|
|
# pnpm store
|
|
.pnpm-store
|
|
|
|
# Nix
|
|
result
|
|
result-*
|
|
.direnv/
|
|
.envrc
|
|
|
|
# Webgui sync script helpers
|
|
web/scripts/.sync-webgui-repo-*
|
|
|
|
# Activation code data
|
|
plugin/source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/data/activation-data.php
|
|
|
|
# Config file that changes between versions
|
|
api/dev/Unraid.net/myservers.cfg
|
|
|
|
# Claude local settings
|
|
.claude/settings.local.json
|
|
|
|
# local Mise settings
|
|
.mise.toml
|
|
mise.toml
|
|
|
|
# Compiled test pages (generated from Nunjucks templates)
|
|
web/public/test-pages/*.html
|
|
|
|
# local scripts for testing and development
|
|
.dev-scripts/
|
|
|