## 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