From d515448113775d14767ad832d45a7612bf1554a7 Mon Sep 17 00:00:00 2001 From: MacRimi <123239993+MacRimi@users.noreply.github.com> Date: Sat, 18 Apr 2026 00:00:52 +0200 Subject: [PATCH] Release v1.2.0 with AI enhancements and optimizations This release introduces AI-enhanced notifications, a redesigned multi-channel notification system, expanded hardware detection, and significant performance optimizations. --- CHANGELOG.md | 252 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 252 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b321927b..fe1623a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,255 @@ +# ProxMenux logo ProxMenux v1.2.0 — *AI-Enhanced Monitoring* + +![ProxMenux AI](https://raw.githubusercontent.com/MacRimi/ProxMenux/main/images/ProxMenux_ai.png) + +This release is the culmination of the v1.1.9.1 → v1.1.9.6 beta cycle and introduces the biggest evolution of **ProxMenux Monitor** to date: AI-enhanced notifications, a redesigned multi-channel notification system, a fully reworked hardware and storage experience, and broad performance improvements across the monitoring stack. It also consolidates all recent work on the Storage, Hardware and GPU/TPU scripts. + +--- + +## 🤖 ProxMenux Monitor — AI-Enhanced Notifications + +Notifications can now be enhanced using AI to generate clear, contextual messages instead of raw technical output. + +Example — instead of `backup completed exitcode=0 size=2.3GB`, AI produces: *"The web server backup completed successfully. Size: 2.3GB"*. + +### What AI does +- Transforms technical notifications into readable messages +- Translates to your preferred language +- Lets you choose detail level: minimal, standard, or detailed +- Works with Telegram, Discord, Email, Pushover, and Webhooks + +### What AI does NOT do +- It is **not** a chatbot or assistant +- It does **not** analyze your system or make decisions +- It does **not** have access to data beyond the notification being processed +- It does **not** execute commands or modify the server +- It does **not** store history or learn from your data + +### Multi-Provider Support +Choose between 6 AI providers, each with its own API key stored independently: +- **Groq** — fast inference, generous free tier +- **Google Gemini** — excellent quality/price ratio, free tier available +- **OpenAI** — industry standard +- **Anthropic Claude** — excellent for writing and translation +- **OpenRouter** — 300+ models with a single API key +- **Ollama** — 100% local execution, no internet required + +### Verified AI Models +A curated list of models (`verified_ai_models.json`) tested specifically for notification enhancement. + +- **Hybrid verification**: the system fetches provider-side models and filters to only show those tested to work correctly +- **Per-Provider Model Memory**: selected model is saved per provider, so switching providers preserves each choice +- **Daily verification**: background task checks model availability and auto-migrates to a verified alternative if the current model disappears +- **Incompatible models excluded**: Whisper, TTS, image/video, embeddings, guard models, etc. are filtered out per provider + +| Provider | Recommended | Also Verified | +|----------|-------------|---------------| +| Gemini | gemini-2.5-flash-lite | gemini-flash-lite-latest | +| OpenAI | gpt-4o-mini | gpt-4.1-mini | +| Groq | llama-3.3-70b-versatile | llama-3.1-70b-versatile, llama-3.1-8b-instant, llama3-70b-8192, llama3-8b-8192, mixtral-8x7b-32768, gemma2-9b-it | +| Anthropic | claude-3-5-haiku-latest | claude-3-5-sonnet-latest, claude-3-opus-latest | +| OpenRouter | meta-llama/llama-3.3-70b-instruct | meta-llama/llama-3.1-70b-instruct, anthropic/claude-3.5-haiku, google/gemini-flash-2.5-flash-lite, openai/gpt-4o-mini, mistralai/mixtral-8x7b-instruct | +| Ollama | (all local models) | No filtering — shows all installed models | + +### Custom AI Prompts +Advanced users can define their own prompt for full control over formatting and translation. + +- **Prompt Mode selector** — Default Prompt or Custom Prompt +- **Export / Import** — save and share custom prompts across installations +- **Example Template** — starting point to build your own prompt +- **Community Prompts** — direct link to GitHub Discussions to share templates +- Language selector is hidden in Custom Prompt mode (you define the output language in the prompt itself) + +### Enriched Context +- System **uptime** is included only for error/warning events (not informational ones) — helps distinguish startup vs runtime errors +- **Event frequency** tracking — indicates recurring vs one-time issues +- **SMART disk health** data is passed for disk-related errors +- **Known Proxmox errors** database improves diagnosis accuracy +- Clearer prompt instructions to prevent AI hallucinations + +--- + +## 📨 Notification System Redesign + +- **Multi-Channel Architecture** — Telegram, Discord, Pushover, Email, and Webhook channels running simultaneously +- **Per-Event Configuration** — enable/disable specific event types per channel +- **Channel Overrides** — customize notification behaviour per channel +- **Secure Webhook Endpoint** — external systems can send authenticated notifications +- **Encrypted Storage** — API keys and sensitive data stored encrypted +- **Queue-Based Processing** — background worker with automatic retry for failed notifications +- **SQLite-Based Config Storage** — replaces file-based config for reliability + +### Telegram Topics Support +Send notifications to a specific topic inside groups with Topics enabled. +- New **Topic ID** field on the Telegram channel +- Automatic detection of topic-enabled groups +- Fully backwards compatible + +### ProxMenux Update Notifications +The Monitor now detects when a new ProxMenux version is released. +- **Dual-channel** — monitors both stable (`version.txt`) and beta (`beta_version.txt`) +- **GitHub integration** — compares local vs remote versions +- **Dashboard Update Indicator** — the ProxMenux logo changes to an update variant when a new version is detected (non-intrusive, no popups) +- **Persistent state** — status stored in `config.json`, reset by update scripts +- Single toggle in Settings controls both channels (enabled by default) + +--- + +## 🖥️ Hardware Panel — Expanded Detection + +The Hardware page has been significantly expanded, with better detection and richer per-device detail. + +- **SCSI / SAS / RAID Controllers** — model, driver and PCI slot shown in the storage controllers section +- **PCIe Link Speed Detection** — NVMe drives show current link speed (PCIe generation and lane width), making it easy to spot drives underperforming due to limited slot bandwidth +- **Enhanced Disk Detail Modal** — NVMe, SATA, SAS, and USB drives now expose their specific fields (PCIe link info, SAS version/speed, interface type) instead of a generic view +- **Smarter Disk Type Recognition** — uniform labelling for NVMe SSDs, SATA SSDs, HDDs and removable disks +- **Hardware Info Caching** (`lspci`, `lspci -vmm`) — 5 min cache avoids repeated scans for data that doesn't change + +--- + +## 💽 Storage Overview — Health, Observations, Exclusions + +The Storage Overview has been reworked around real-time state and user-controlled tracking. + +### Disk Health Status Alignment +- Badges now reflect the **current** SMART state reported by Proxmox, not a historical worst value +- **Observations preserved** — historical findings remain accessible via the "X obs." badge +- **Automatic recovery** — when SMART reports healthy again, the disk immediately shows **Healthy** +- Removed the old `worst_health` tracking that required manual clearing + +### Disk Registry Improvements +- **Smart serial lookup** — when a serial is unknown the system checks for an existing entry with a serial before inserting a new one +- **No more duplicates** — prevents separate entries for the same disk appearing with/without a serial +- **USB disk support** — handles USB drives that may appear under different device names between reboots + +### Storage and Network Interface Exclusions +- **Storage Exclusions** section — exclude drives from health monitoring and notifications +- **Network Interface Exclusions** — new section for excluding interfaces (bridges `vmbr`, bonds, physical NICs, VLANs) from health and notifications; ideal for intentionally disabled interfaces that would otherwise generate false alerts +- **Separate toggles** per item for Health monitoring and Notifications + +### Disk Detection Robustness +- **Power-On-Hours validation** — detects and corrects absurdly large values (billions of hours) on drives with non-standard SMART encoding +- **Intelligent bit masking** — extracts the correct value from drives that pack extra info into high bytes +- **Graceful fallback** — shows "N/A" instead of impossible numbers when data cannot be parsed + +--- + +## 🧠 Health Monitor & Error Lifecycle + +### Stale Error Cleanup +Errors for resources that no longer exist are now resolved automatically. +- **Deleted VMs / CTs** — related errors auto-resolve when the resource is removed +- **Removed Disks** — errors for disconnected USB or hot-swap drives are cleaned up +- **Cluster Changes** — cluster errors clear when a node leaves the cluster +- **Log Patterns** — log-based errors auto-resolve after 48 hours without recurrence +- **Security Updates** — update notifications auto-resolve after 7 days + +### Database Migration System +- **Automatic column detection** — missing columns are added on startup +- **Schema compatibility** — works with both old and new column naming conventions +- **Backwards compatible** — databases from older ProxMenux versions are supported +- **Graceful migration** — no data loss during schema updates + +--- + +## 🧩 VM / CT Detail Modal + +The VM/CT detail modal has been completely redesigned for usability. + +- **Tabbed Navigation** — *Overview* (general information, status, resource usage) and *Backups* (dedicated history) +- **Visual Enhancements** — icons throughout, improved hierarchy and spacing, better VM vs CT distinction +- **Mobile Responsiveness** — adapts correctly to mobile screens in both webapp and direct browser access, no more overflow on small devices +- **Touch-Friendly Controls** — larger buttons and spacing + +### Secure Gateway Modal +- **Scrollable storage list** when many destinations are available +- Mobile-adapted layout and improved visual hierarchy + +### Terminal Connection +- **Reconnection loop fix** that was affecting mobile devices +- Improved WebSocket handling for mobile browsers +- More graceful connection timeout recovery + +### Fail2ban & Lynis Management +- **Delete buttons** added in Settings for both tools +- Clean removal of packages and configuration files +- Confirmation dialog to prevent accidental deletion + +--- + +## ⚡ Performance Optimizations + +Major reduction in CPU usage and elimination of spikes on the Monitor. + +### Staggered Polling Intervals +Collectors now run on offset schedules to prevent simultaneous execution: + +| Collector | Schedule | +|-----------|----------| +| CPU sampling | Every 30s at offset 0 | +| Temperature sampling | Every 15s at offset 7s | +| Latency pings | Every 60s at offset 25s | +| Temperature record | Every 60s at offset 40s | +| Health collector | Starts at 55s offset | +| Notification polling | Health=10s, Updates=30s, ProxMenux=45s, AI=50s | + +### Cached System Information +Expensive commands now cached to reduce repeated execution: + +| Command | Cache TTL | Impact | +|---------|-----------|--------| +| `pveversion` | 6 hours | Eliminates 23%+ CPU spikes from Perl execution | +| `apt list --upgradable` | 6 hours | Reduces package manager queries | +| `pvesh get /cluster/resources` | 30 seconds | 6 API calls per request reduced to 1 | +| `sensors` | 10 seconds | Temperature readings cached between polls | +| `smartctl` (SMART health) | 30 minutes | Disk health checks reduced from every 5 min | +| `lspci` / `lspci -vmm` | 5 minutes | Hardware info cached (doesn't change) | +| `journalctl --since 24h` | 1 hour | Login attempts count cached (92% reduction) | + +### Increased journalctl Timeouts +Prevents timeout cascades under system load: + +| Query Type | Before | After | +|------------|--------|-------| +| Short-term (3-10 min) | 3s | 10s | +| Medium-term (1 hour) | 5s | 15s | +| Long-term (24 hours) | 5s | 20s | + +### Reduced Polling Frequency +- `TaskWatcher` interval raised from **2s → 5s** (60% fewer checks) + +### GitHub Actions +- All workflow actions upgraded to **v6** for Node.js 24 compatibility +- Deprecation warnings eliminated in CI/CD + +--- + +## 🧰 Scripts — Storage, Hardware and GPU/TPU Work + +This release also consolidates significant work on the core ProxMenux scripts. + +### Storage scripts +- **SMART scheduled tests** and improved interactive SMART test workflow with clearer progress feedback +- **Disk formatting** (`format-disk.sh`) rework with safer device selection and dialog flow +- **Disk passthrough** for VMs and CTs — updated device enumeration, serial-based identification, and cleaner teardown +- **NVMe controller addition for VMs** — improved controller type selection and slot detection +- **Import disk image** — smoother path validation and progress reporting +- **Disk & storage manual guide** refresh + +### Hardware / GPU / TPU scripts +- **Coral TPU installer** updated for current kernels and udev rules (Proxmox VE 8 & VE 9) +- **NVIDIA installer** — cleaner driver installation, kernel header handling, and VM/LXC attachment flow +- **GPU mode switch** (direct and interactive variants) — safer switching between iGPU modes +- **Add GPU to VM / LXC** — unified selection dialogs and permission handling +- **Intel / AMD GPU tools** kept in sync with the new shared patterns +- **Hardware & graphics menu** restructured for consistency with the rest of ProxMenux + +### UI flow consistency +All recently-touched scripts follow the unified `msg_info` / `stop_spinner` / `show_proxmenux_logo` pattern between dialog menus and during the main execution phase, resulting in cleaner screen transitions and no more spinner artifacts over dialogs. + +--- + + ## 2026-03-14 ### New version v1.1.9 — *Helper Scripts Catalog Rebuilt*