]> ## ThemeUI - Theme Switcher for Unraid 7.2+ ## 2026.09.30a - ⚠️ Untested: install from one SHA256-pinned package kept on the flash (/boot/config/plugins/themeui) instead of downloading 28 separate files at every boot. ThemeUI now loads even when GitHub or the network is not reachable yet at boot. Built with build/build_txz.py ## 2026.09.29c - Fix Unraid API pages still rendering light on dark themes - Unraid scopes its colour variables to .unapi elements, so the theme overrides now target those directly ## 2026.09.29b - Fix hardcoded grey description text (Tailwind text-gray-*) on Unraid API pages staying dark on dark themes ## 2026.09.29a - Fix Unraid API pages (Settings > Unraid API / OIDC, Connect) showing white panels with washed-out text on dark themes - the API's web components use their own light/dark colour variables that only follow Unraid's built-in base theme. They are now generated from each theme's own palette, so every theme (dark and light) is covered. Also fix the hardcoded light Flash backup box on the Connect page ## 2026.09.15a - ⚠️ Untested: stop appending login-theme.sh to /boot/config/go on install - it now runs from a pinned emhttp plugin event script (event/started) instead, so the plugin no longer edits a shared system boot file. Existing installs get the old /boot/config/go line removed automatically on update ## 2026.09.07a - Fix illegible disk format confirmation dialog across all themes ("Any data on this disk will be lost! Type 'Yes' to format") - Unraid 7.2 rebuilt this as a stock SweetAlert2 popup that stayed light while the rest of the UI went dark, leaving the "Yes" input dark-on-dark. Now themed via the shared style block (.swal2-popup/.swal2-input) - Update GitHub username onyxdigital-dev -> onyxhq-dev in all repo URLs, author fields and support links ## 2026.08.13i - Fix custom logo breaking the boot-up loading animation - the file-overwrite fallback was replacing animated-logo.svg with a static copy of the custom logo, killing Unraid's spinner animation. That file is no longer touched (the DOM-swap already handles the visible logo everywhere); updating also restores animated-logo.svg from backup if a previous version already overwrote it ## 2026.08.13h - Bump logo Size presets larger: Small 2.5rem, Medium 3.5rem, Large 4.5rem (was 1.5/2.5/3.5rem) ## 2026.08.13g - Add a Size setting (Small/Medium/Large) for the custom logo, since one fixed size didn't fit every logo shape ## 2026.08.13f - Fix custom logo rendering way too big - it was inheriting the original wordmark's fixed Tailwind width classes (sized for a wide 5.7:1 aspect-ratio logo), which blew up any square/differently-shaped custom image. Now sized independently: fixed height, auto width, capped max-width ## 2026.08.13e - Fix custom logo not showing anywhere: Unraid 7.2's header and login screens render the stock logo from an SVG baked into their own JS bundle (unraid-components), not read live from UN-logotype-gradient.svg/animated-logo.svg - overwriting those files (the previous approach) had no visible effect. Now finds the rendered logo by its gradient id and swaps it for the chosen image via JS after render, same technique this plugin already uses for dashboard charts and buttons. File-overwrite is kept as a harmless fallback for older/classic Unraid UIs ## 2026.08.13d - Add .ico to the accepted logo formats (image/x-icon, image/vnd.microsoft.icon) alongside PNG/JPG/WEBP/GIF, ready for when upload mode is rebuilt ## 2026.08.13c - Fix Apply hanging indefinitely on every save - the settings form's enctype="multipart/form-data" (added for logo upload) was breaking Unraid's own form submission handling. Reverted for now; Logo upload mode is temporarily non-functional (URL mode still works) until it's rebuilt as an isolated upload mechanism that doesn't touch the main settings form ## 2026.08.13b - Add custom logo replacement (Settings > ThemeUI > Logo) - paste an image URL or upload a PNG/JPG/WEBP/GIF/ICO (20MB max) to replace the Unraid logo in the header and login page. Overwrites UN-logotype-gradient.svg/animated-logo.svg directly (backing up the originals first) since the header, login page, and set-password screen all read the same files; reapplied automatically on every boot alongside the login theme, and restored on switching back to "Default" or removing the plugin ## 2026.08.13a - Add a light variant for every theme (20 themes total): Catppuccin Latte, Nord Light, Dracula Light, Gruvbox Light, Tokyo Night Day, Solarized Light, One Light, Rose Pine Dawn, Everforest Light, and White and Black - official published palettes where the theme family has one, hand-tuned accent colors (contrast-checked) for the rest ## 2026.08.12b - Fix illegible inline help text boxes across all themes (e.g. "Changes the font size of terminal windows" under Settings dropdowns) - Unraid's blockquote.inline_help tooltip kept its hardcoded light-blue background while our themes only recolored the text, producing light-on-light text ## 2026.08.12a - Fix illegible jQuery UI dialogs and folder-browse popups across all themes (Docker/VM "Add Configuration" dialog, path browser dropdown) - these use Unraid's unthemed stock jquery.ui.css/.fileTree widgets which stayed light while the rest of the UI went dark ## 2026.08.11d - Actually fix illegible Docker command output on Unraid 7.2's rebuilt Docker page (direct fieldset.CMD/.logLine CSS + iframe-agnostic JS fallback) ## 2026.08.11c - Remove placeholder comment from generated custom-override.css ## 2026.08.11b - Fix illegible Docker update/remove command output (Stopping/Removing container, Command execution log) across all themes ## 2026.08.11a - Fix illegible tips popout text across all themes ## 2026.06.29w - Fix ca_profile.xml: correct root element to Maintainer with Profile as plain text ## 2026.06.29v - Move icon to assets/logo.png; update all references ## 2026.06.29u - Reorganize repo: move source files to source/ folder; update download URLs in plg; fix CA profile XML rm -rf /usr/local/emhttp/plugins/&name; rm -rf /usr/local/emhttp/plugins/themeui mkdir -p /usr/local/emhttp/plugins/&name;/themes mkdir -p /boot/config/plugins/themeui mkdir -p /boot/config/plugins/themeui/logo-originals exit 0 &pkgURL;/&name;-&version;-noarch-1.txz &sha256; PLUGIN_DIR="/usr/local/emhttp/plugins/ThemeUI" if [ -f /boot/config/plugins/themeui/logo-originals/animated-logo.svg ]; then cp /boot/config/plugins/themeui/logo-originals/animated-logo.svg /usr/local/emhttp/webGui/images/animated-logo.svg fi mkdir -p /boot/config/plugins/themeui if [ -f /boot/config/plugins/ThemeUI/themeui.cfg ] && [ ! -f /boot/config/plugins/themeui/themeui.cfg ]; then cp /boot/config/plugins/ThemeUI/themeui.cfg /boot/config/plugins/themeui/themeui.cfg fi if [ -f /boot/config/plugins/ThemeUI/custom-override.css ] && [ ! -f /boot/config/plugins/themeui/custom-override.css ]; then cp /boot/config/plugins/ThemeUI/custom-override.css /boot/config/plugins/themeui/custom-override.css fi if [ ! -f /boot/config/plugins/themeui/themeui.cfg ]; then printf 'SERVICE="disabled"\nTHEME="default"\n' > /boot/config/plugins/themeui/themeui.cfg fi if [ ! -f /boot/config/plugins/themeui/custom-override.css ]; then : > /boot/config/plugins/themeui/custom-override.css fi cp /boot/config/plugins/themeui/custom-override.css "$PLUGIN_DIR/custom-override.css" rm -f /usr/local/emhttp/webGui/.user.ini rm -f /usr/local/emhttp/webGui/include/.user.ini # login-theme.sh ships in the package; keep the flash copy that event/started runs cp "$PLUGIN_DIR/scripts/login-theme.sh" /boot/config/plugins/themeui/login-theme.sh # drop packages from earlier versions so the flash does not accumulate them find /boot/config/plugins/themeui -maxdepth 1 -name '&name;-*-noarch-1.txz' ! -name '&name;-&version;-noarch-1.txz' -delete # migrate installs from before login-theme.sh moved off /boot/config/go sed -i '/themeui\/login-theme.sh/d' /boot/config/go 2>/dev/null || true sed -i 's/\r//' /boot/config/plugins/themeui/login-theme.sh chmod +x /boot/config/plugins/themeui/login-theme.sh chmod +x "$PLUGIN_DIR/event/started" bash /boot/config/plugins/themeui/login-theme.sh echo "----------------------------------------------------" echo " ThemeUI installed successfully." echo " Go to Settings > Utilities > ThemeUI to pick a theme." echo "----------------------------------------------------" exit 0 ORIG_DIR="/boot/config/plugins/themeui/logo-originals" IMG_DIR="/usr/local/emhttp/webGui/images" [ -f "$ORIG_DIR/UN-logotype-gradient.svg" ] && cp "$ORIG_DIR/UN-logotype-gradient.svg" "$IMG_DIR/UN-logotype-gradient.svg" [ -f "$ORIG_DIR/animated-logo.svg" ] && cp "$ORIG_DIR/animated-logo.svg" "$IMG_DIR/animated-logo.svg" removepkg &name; >/dev/null 2>&1 || true rm -rf /usr/local/emhttp/plugins/&name; rm -rf /usr/local/emhttp/plugins/themeui rm -rf /boot/config/plugins/themeui rm -rf /boot/config/plugins/&name; rm -f /usr/local/emhttp/webGui/.user.ini rm -f /usr/local/emhttp/webGui/include/.user.ini LOGIN_PAGE="/usr/local/emhttp/webGui/include/.login.php" [ -f "$LOGIN_PAGE" ] && sed -i '/data-themeui/d' "$LOGIN_PAGE" echo "ThemeUI removed." exit 0