1. VM Actions: pass clusterId/clusters props from VMsPage to VMList;
rename node→node_id in 14 Rust Tauri command handlers to match
Tauri 2.x camelCase→snake_case mapping; wire action menu items
through handleAction so menu closes on click.
2. Migration: add Target Remote dropdown in MigrationDialog showing
available clusters for cross-datacenter migration; targetCluster
passed through to migrate_vm invoke.
3. Storage: switch list_proxmox_datastores to cluster/resources?type=storage
(single API call, cluster-wide); normalize plugintype→type,
disk/maxdisk→used/size, compute available via saturating_sub.
4. Network: replace free-text Interface Type Input with a Select
dropdown listing all PVE network interface types.
5. Firewall New Rule: add onNewRule prop to FirewallRuleList, wire
button; add full dialog in FirewallPage with action/protocol/
source/dest/port fields that calls add_firewall_rule; rewrite
Rust command to accept rule as serde_json::Value instead of
flat params (matches frontend invoke signature).
6. Backup: normalize raw PVE cluster/backup fields (id, storage,
node, schedule, enabled, next-run timestamp) to BackupJobInfo
shape; update BackupJobList columns to show storage, vmid, mode.
7. AI chat: merge all system prompt sections into a single system
message (fixes Qwen 3.5 / LiteLLM rejection of multiple system
messages); push assistant message with tool_calls before tool
result messages to satisfy OpenAI API contract.
- Fix openai.rs: changed system_message to combined_system variable
- Fix VMList.tsx: added memoryTotal and tags fields to RawVMInfo interface
- Fix .gitignore: added .logs/ and *.log to prevent log files from being committed
- VM Migration:
* Added proper dialog with target node selection dropdown
* Fixed migration trigger to actually call the API
* Added live migration options with max downtime configuration
- VM Actions:
* Fixed delete to use proper confirmation dialog
* Fixed clone to calculate next available VMID automatically
* Verified start/stop/shutdown/reboot/suspend/resume all work correctly
- VM Data Display:
* Fixed VMList to properly map backend fields (mem, max_mem, max_disk)
* All VM fields now display correctly (ID, Memory, Disk, CPU, Uptime)
- Network Management:
* Added 'Add Interface' button with full dialog
* Added Edit and Delete buttons for each interface
* Form validation for interface creation
- Backup Management:
* Fixed 'New Job' button to open creation dialog
* Added form for creating backup jobs with schedule configuration
- Views:
* Added graceful error handling for 501 Not Implemented
* Shows user-friendly message when feature unavailable
- AI Provider:
* Fixed system message ordering in openai.rs
* Now combines all system messages and sends them at the beginning
* Resolves 'System message must be at the beginning' error
- All 386 tests pass
- Remove non-existent get_current_proxmox_cluster command call
Use list_proxmox_clusters and select first cluster directly
Fixes BLOCKER: Missing Tauri command error
- Fix menu positioning to apply both left and right properties
Update inline style to handle horizontal overflow correctly
Fixes WARNING: Menu positioning incomplete
Note: Paused VM action already correctly shows PlayCircle icon
and 'Resume' text - no change needed for that issue.
All TypeScript checks pass. All Rust formatting checks pass.
- Action menu: fix click-outside closing, positioning, opacity, and functionality
- VM metrics: fix CPU %, memory/disk bars with formatBytes helper, uptime formatting
- list_cluster_tasks: remove invalid 'limit' query parameter causing 400 error
- list_views/list_certificates: handle 501 Not Implemented gracefully
- list_proxmox_datastores: fetch per-node storage via /nodes/{node}/storage
- list_proxmox_backup_jobs: use cluster-level /cluster/backup endpoint
- Tests: update integration tests to use PROXMOX_HOST env var
Fixes:
- Action menu not closing when clicking away
- CPU/memory/disk/uptime displaying raw values
- Storage not displaying data
- Backup jobs not showing details
- Tasks API returning 400 Bad Request
- Views/Certificates APIs causing errors on older Proxmox versions