## 2026.03.18.01 - Feat: Added Factory CLI (@factory/cli) support - Feat: Integrated 'droid' binary and Factory session management - UI: Added Factory icon and updated agent registry ## 2026.03.17.35 - The "Professional Workspace" Update - **Feat: Advanced Workspace Environment Management**: New "Manage ENV" drawer overlay allows viewing and overriding global API keys per workspace without affecting global settings. - **Feat: Intelligent API Persistence**: Dynamically discovers and persists API keys for all installed agents (OpenCode, Kilo Code, etc.) in the Secrets Vault. - **Feat: Hybrid Home Persistence**: Implemented a decoupled background sync daemon that asynchronously mirrors the high-performance RAM home directory to the Flash drive. - **Feat: Multi-User Migration**: Seamlessly migrates AI agent data when switching the active Unraid user, ensuring chat history is preserved. - **Improve: Premium UI Theming**: Unified orange button theme, consistent card layouts, and professional blue-sidebar help styling throughout the manager. - **Improve: Performance & Stability**: Optimized terminal initialization to eliminate 502 Bad Gateway errors and implemented atomic locking for background sync operations. - **Improve: Clipboard Synchronization**: Enabled OSC 52 support for dual-direction clipboard synchronization between the AI terminal and your browser. - **Improve: TrueColor Support**: Full 24-bit TrueColor environment propagation across the entire terminal stack for better syntax highlighting. - **Fix: Terminal Rendering**: Resolved scrolling and corruption issues in terminal sessions, particularly for limited-user contexts. - **Fix: Setting Persistence**: Ensured fallback API keys and backup schedule settings correctly persist between reboots and user changes. - **Fix: Environment Visibility**: Resolved a critical bug where custom environment variables and Secrets Vault keys were not correctly propagated to the active AI agent. ## 2026.03.09.19 - The "Premium UX" Update - **Feat: Expanded Agent Store**: Added support for Claude Code, OpenCode, Kilo Code, Pi Coder, and Codex CLI. - **Feat: Integrated Node.js Environment**: Bundled Node.js (v22.22.0) with npm for seamless, portable agent management. - **Feat: Premium Uninstaller UI**: Completely redesigned uninstallation with quiet logging and a resilient, high-contrast summary box confirming preservation of settings and chats. - **Feat: Premium Installer UX**: Polished installation flow with professional status updates and a new "INSTALL COMPLETE" visual summary. - **Improve: System Branding**: Unified all system notifications and UI elements under the "AI CLI Agents Plugin" title. - **Improve: Boot Resiliency**: Implemented persistent USB source caching for instant UI availability on reboot. - **Improve: Hardware Optimization**: Moved all runtime logs to RAM (/tmp) to minimize USB flash drive wear. - **Fix: Legacy Migration**: Aggressive deep-clean of all "ghost" registrations (removes broken `geminicli` entries from the plugin list). - **Fix: Robust Stability**: Resolved XML parsing errors, 'Invalid .page format' issues, and critical permission bugs for nested binaries. ## 2026.03.06.03 - Repository Migration: Migrated from Gemini CLI to AI CLI Agents. ## 2026.02.27.20 - Initial Release: Key Features - Native AI Integration: Direct integration of Google AICli into the Unraid WebUI. - Multi-Workspace Terminal: Support for multiple terminal sessions (Workspaces). - Dynamic Status Tracking: Tabs poll terminal state in real-time. - Unraid Theme Integration: Harmonious UI design matching your Unraid theme. https://raw.githubusercontent.com/johnpwhite/unraid-plg-aicliagents/main/src/scripts/installer/cleanup.sh https://raw.githubusercontent.com/johnpwhite/unraid-plg-aicliagents/main/src/scripts/installer/legacy-migrate.sh https://raw.githubusercontent.com/johnpwhite/unraid-plg-aicliagents/main/src/scripts/installer/runtime.sh https://raw.githubusercontent.com/johnpwhite/unraid-plg-aicliagents/main/src/scripts/installer/ui-assets.sh https://raw.githubusercontent.com/johnpwhite/unraid-plg-aicliagents/main/src/scripts/installer/storage.sh https://raw.githubusercontent.com/johnpwhite/unraid-plg-aicliagents/main/src/scripts/installer/finalize.sh #!/bin/bash # AICliAgents Modular Installer Engine export NAME="unraid-aicliagents" export VERSION="2026.03.18.01" export GIT_URL="https://raw.githubusercontent.com/johnpwhite/unraid-plg-aicliagents/main" export EMHTTP_DEST="/usr/local/emhttp/plugins/unraid-aicliagents" export CONFIG_DIR="/boot/config/plugins/unraid-aicliagents" # 1. Base Setup exec 3>&1 mkdir -p /tmp/unraid-aicliagents "$CONFIG_DIR" LOG_FILE="/tmp/unraid-aicliagents/install.log" exec > "$LOG_FILE" 2>&1 set -x status() { echo "$1" >&3; } export -f status # Upgrade vs Fresh Detection if [ -f "/var/log/plugins/${NAME}.plg" ]; then export UPGRADE_MODE=1; else export UPGRADE_MODE=0; fi status "--- MODULAR INSTALL START ---" # 2. Cleanup & Migration status "[1/5] Preparing system..." bash /tmp/aicli-clean.sh status "[2/5] Handling legacy data..." bash /tmp/aicli-legacy.sh # 3. Dependencies & Assets status "[3/5] Installing runtimes (Node, tmux, fd, rg)..." bash /tmp/aicli-runtime.sh status "[4/5] Syncing UI components..." bash /tmp/aicli-ui.sh # 4. Storage & Finish status "[5/5] Initializing hybrid storage..." bash /tmp/aicli-storage.sh bash /tmp/aicli-finalize.sh # Cleanup installers rm -f /tmp/aicli-*.sh #!/bin/bash NAME="unraid-aicliagents" CONFIG_DIR="/boot/config/plugins/$NAME" EMHTTP_DEST="/usr/local/emhttp/plugins/$NAME" # 1. Setup Logging & Status # We log to USB for persistence during uninstall LOG_FILE="$CONFIG_DIR/uninstall.log" exec 3>&1 exec > "$LOG_FILE" 2>&1 set -x status() { echo "$1" >&3; } export -f status status "--- AICliAgents Uninstall Start ---" # 2. Kill Active Processes & Runtime Files # We call the modular script for the heavy lifting of process killing UNINSTALL_SCRIPT="$EMHTTP_DEST/scripts/uninstaller/cleanup.sh" if [ -f "$UNINSTALL_SCRIPT" ]; then export NAME EMHTTP_DEST CONFIG_DIR bash "$UNINSTALL_SCRIPT" else # Fallback if script missing status "Cleaning up active processes..." pgrep -f "ttyd.*(aicliterm|geminiterm)-" | xargs kill -9 > /dev/null 2>&1 || true if command -v tmux >/dev/null 2>&1; then tmux ls -F '#S' 2>/dev/null | grep -E "^aicli-agent-" | xargs -I {} tmux kill-session -t "{}" > /dev/null 2>&1 || true fi pgrep -f "node.*(aicli|gemini).mjs" | xargs kill -9 > /dev/null 2>&1 || true fi # MANDATORY: Clear stale installation states and runtime logs rm -rf /tmp/unraid-aicliagents # 3. Prune USB Artifacts (pkg-cache removal as requested) if [ -d "$CONFIG_DIR" ]; then status "Pruning USB artifacts..." rm -f "$CONFIG_DIR/aicli.mjs" rm -f "$CONFIG_DIR/debug.log" rm -f "$CONFIG_DIR/versions.json" rm -f "$CONFIG_DIR/tmux" rm -f "$CONFIG_DIR"/*.tar.gz rm -f "$CONFIG_DIR"/*.tar.xz rm -f "$CONFIG_DIR"/*.gz # MANDATORY: Remove agent package caches rm -rf "$CONFIG_DIR/pkg-cache" fi # 4. Forced emhttp removal (Ensures tab disappears) if [ -d "$EMHTTP_DEST" ]; then status "Removing plugin files from emhttp..." rm -rf "$EMHTTP_DEST" fi # 5. Final PLG clean rm -f /var/log/plugins/${NAME}.plg status " " status "===========================================================" status " UNINSTALL COMPLETE " status "===========================================================" status " " status " [DONE] Binaries and UI files removed" status " [DONE] Runtime processes terminated" status " [DONE] Agent package caches pruned" status " " status " [NOTE] YOUR SETTINGS HAVE BEEN PRESERVED:" status " > Config: $CONFIG_DIR/*.cfg" status " > Persistence: $CONFIG_DIR/persistence/" status " " status " [LOGS] Detailed uninstall trace preserved at:" status " > $LOG_FILE" status " " status " [TIP] To fully remove all data, manually delete:" status " > rm -rf $CONFIG_DIR" status "===========================================================" echo "Uninstall of $NAME complete." exit 0