Releases: devnullvoid/pvetui
v0.9.0
π Release 0.9.0
Changed
- Major Refactor: Split context menu, VM operations, and refresh logic into separate files for improved maintainability and DRYness.
- Improved form and modal UX, including better keyboard navigation and consistent input handling.
- Async feedback and pending state for all VM operations, including migration, with robust UI refresh and error handling.
- Robust selection restoration for both node and VM lists after refresh (fixes selection jump issues).
- Fixed linter/code-quality issues and removed duplicate or unused code.
- Updated and consolidated helpers for refresh and selection logic.
- All changes maintain code quality and pass all tests.
Added
- Guest configuration editor: Edit CPU, memory, and description for both QEMU and LXC guests.
- Storage volume resize: Resize disks from the config editor, with robust filtering for resizable volumes only.
- Interactive First-Run Setup: Added user-friendly configuration wizard for new users
- Automatically detects when configuration is missing or incomplete
- Prompts users to create a default configuration file in the XDG config directory
- Embeds the configuration template directly in the binary for offline setup
- Provides clear, friendly messaging with proper spacing and visual indicators
- Supports both
.ymland.yamlfile extensions for configuration discovery - Eliminates the need for users to manually create configuration files or read documentation first
- Startup Connectivity Verification: Added comprehensive startup sequence with real-time feedback
- Tests network connectivity and authentication before loading the main interface
- Clear console progress messages showing each startup step (config loading, client initialization, connection testing, authentication verification)
- Intelligent error categorization with specific suggestions for different failure types
- Prevents users from waiting at "Loading..." screens when configuration issues exist
- Helpful error messages pointing users to the exact config file and suggesting fixes for connection or authentication problems
- Added a reusable custom FormItem (FormButton) for use in forms.
Fixed
- VNC Connectivity: Fixed issue where VNC failed to connect when using SSH port forwarding (e.g., in VS Code). The noVNC client now uses a relative URL, allowing it to connect correctly through forwarded ports.
- Fixed: Auto-refresh countdown and periodic refresh now work correctly after a manual refresh or config edit. Enabling auto-refresh after a manual refresh no longer leaves the UI stuck in 'Refreshing...' state.
- Cleaned up auto-refresh logic: startAutoRefresh only starts ticker/goroutines if not already running, and toggleAutoRefresh only calls stopAutoRefresh when disabling.
- Fixed: Node details (kernel version, CPU model, load average, version) are now preserved after a manual refresh, matching auto-refresh behavior. Previously, these fields would disappear after manual refresh.
π¦ Downloads
Choose the appropriate binary for your platform:
- Linux AMD64:
proxmox-tui-linux-amd64.tar.gz - Linux ARM64:
proxmox-tui-linux-arm64.tar.gz - macOS Intel:
proxmox-tui-darwin-amd64.tar.gz - macOS Apple Silicon:
proxmox-tui-darwin-arm64.tar.gz - Windows AMD64:
proxmox-tui-windows-amd64.zip - Windows ARM64:
proxmox-tui-windows-arm64.zip
π Verification
Verify your download with the provided checksums.txt file:
shasum -a 256 -c checksums.txtπ Installation
- Download the appropriate archive for your platform
- Extract the binary:
tar -xzf proxmox-tui-*.tar.gz(or unzip for Windows) - Make executable (Unix):
chmod +x proxmox-tui-* - Run:
./proxmox-tui-* --help
v0.8.1
π Release 0.8.1
Added
- Docker Image: Added
openssh-clientto support the shell feature.
Fixed
- Configuration: The application now automatically discovers and loads the default configuration file (
config.ymlorconfig.yaml) from the XDG config directory (~/.config/proxmox-tui/) without requiring the--configflag. - Search: Pressing
ESCin the search bar now clears the filter text in addition to closing the bar, providing a more intuitive, VIM-like experience.
Improved
- Docker: The Docker instructions have been completely revamped for clarity and correctness, now recommending
docker compose run --rm proxmox-tuifor an improved user experience. - Robust selection restoration for both VM and Node lists after per-item and global refreshes. Selection is now always restored by name, not index, fixing issues with selection jumping to the top after refreshes.
π¦ Downloads
Choose the appropriate binary for your platform:
- Linux AMD64:
proxmox-tui-linux-amd64.tar.gz - Linux ARM64:
proxmox-tui-linux-arm64.tar.gz - macOS Intel:
proxmox-tui-darwin-amd64.tar.gz - macOS Apple Silicon:
proxmox-tui-darwin-arm64.tar.gz - Windows AMD64:
proxmox-tui-windows-amd64.zip - Windows ARM64:
proxmox-tui-windows-arm64.zip
π Verification
Verify your download with the provided checksums.txt file:
shasum -a 256 -c checksums.txtπ Installation
- Download the appropriate archive for your platform
- Extract the binary:
tar -xzf proxmox-tui-*.tar.gz(or unzip for Windows) - Make executable (Unix):
chmod +x proxmox-tui-* - Run:
./proxmox-tui-* --help
v0.8.0
π Release 0.8.0
Added
- Configurable Key Bindings: Added support for customizing all major actions via the
key_bindingssection in the config file. - View Switching with Brackets: Changed default view switching keys to
](forward) and[(reverse) for better reliability across terminals. - Support for SOPS/age encrypted configuration files with automatic key lookup
.sops.yamlfor convenient encryption of config files with SOPS- Log message when encrypted config is decrypted
- NixOS LXC Container Support: Added automatic detection and proper shell access for NixOS containers
- Detects NixOS containers based on
OSTypeconfiguration ("nixos" or "nix") - Uses
pct execwith environment setup for NixOS containers instead of standardpct enter - Automatically sources
/etc/set-environmentif present for proper NixOS environment initialization - Maintains backward compatibility with standard LXC containers
- Enhanced user feedback showing "NixOS LXC container" vs "LXC container" during connection
- Comprehensive test coverage for all container types
- Detects NixOS containers based on
Fixed
- Keybinding Reliability: Overhauled the keybinding system to correctly handle modifier keys (
Ctrl,Alt,Shift), fixing numerous issues with custom shortcuts. - Shell Connection Issues: Fixed VM shell connections that were failing due to broken QEMU guest agent approach.
- GitHub Workflow Fixes: Added
submodules: recursiveto all GitHub Actions checkout steps to properly handle noVNC submodule during builds. - Windows ARM64 Support: Added Windows ARM64 build target to both Makefile and GitHub release workflow.
- VM/Container Restart: Fixed 500 error when restarting VMs and containers by using correct
/status/rebootendpoint (both QEMU and LXC use this endpoint, not/status/restart) - CI Linting: Fixed golangci-lint configuration compatibility issues by migrating to v2 format
- Code Quality: Fixed variable shadowing issues in app initialization and cache tests
- Refresh VNC session
LastUsedtimestamp on all WebSocket proxy traffic to prevent unexpected timeouts - noVNC Files Embedding: Fixed noVNC files to be properly embedded in compiled binary using Go's
//go:embeddirective instead of runtime filesystem access - Windows URL Truncation: Fixed VNC URLs being truncated in Windows browser address bar by replacing
cmd /c startwithrundll32 url.dll,FileProtocolHandlerto avoid command line length limitations
Improved
- Code Quality Workflow: Added
go vetto CI pipeline and development workflow for enhanced static analysis- New
make vettarget for running Go's built-in static analyzer - New
make code-qualitytarget combininggo vetandgolangci-lintfor comprehensive checks - CI now runs
go vetbeforegolangci-lintto catch additional issues early
- New
π¦ Downloads
Choose the appropriate binary for your platform:
- Linux AMD64:
proxmox-tui-linux-amd64.tar.gz - Linux ARM64:
proxmox-tui-linux-arm64.tar.gz - macOS Intel:
proxmox-tui-darwin-amd64.tar.gz - macOS Apple Silicon:
proxmox-tui-darwin-arm64.tar.gz - Windows AMD64:
proxmox-tui-windows-amd64.zip - Windows ARM64:
proxmox-tui-windows-arm64.zip
π Verification
Verify your download with the provided checksums.txt file:
shasum -a 256 -c checksums.txtπ Installation
- Download the appropriate archive for your platform
- Extract the binary:
tar -xzf proxmox-tui-*.tar.gz(or unzip for Windows) - Make executable (Unix):
chmod +x proxmox-tui-* - Run:
./proxmox-tui-* --help
v0.8.0-rc1
π Release 0.8.0-rc1
Added
- View Switching with Brackets: Changed default view switching keys to
](forward) and[(reverse) for better reliability across terminals. - Configurable Key Bindings: Added support for customizing all major actions via the
key_bindingssection in the config file.
Fixed
- Keybinding Reliability: Overhauled the keybinding system to correctly handle modifier keys (
Ctrl,Alt,Shift), fixing numerous issues with custom shortcuts. - Shell Connection Issues: Fixed VM shell connections that were failing due to broken QEMU guest agent approach.
- GitHub Workflow Fixes: Added
submodules: recursiveto all GitHub Actions checkout steps to properly handle noVNC submodule during builds. - Windows ARM64 Support: Added Windows ARM64 build target to both Makefile and GitHub release workflow.
π¦ Downloads
Choose the appropriate binary for your platform:
- Linux AMD64:
proxmox-tui-linux-amd64.tar.gz - Linux ARM64:
proxmox-tui-linux-arm64.tar.gz - macOS Intel:
proxmox-tui-darwin-amd64.tar.gz - macOS Apple Silicon:
proxmox-tui-darwin-arm64.tar.gz - Windows AMD64:
proxmox-tui-windows-amd64.zip - Windows ARM64:
proxmox-tui-windows-arm64.zip
π Verification
Verify your download with the provided checksums.txt file:
shasum -a 256 -c checksums.txtπ Installation
- Download the appropriate archive for your platform
- Extract the binary:
tar -xzf proxmox-tui-*.tar.gz(or unzip for Windows) - Make executable (Unix):
chmod +x proxmox-tui-* - Run:
./proxmox-tui-* --help
v0.7.1
π Release 0.7.1
Fixed
- noVNC Files Embedding: Fixed noVNC files to be properly embedded in compiled binary using Go's
//go:embeddirective instead of runtime filesystem access - Windows URL Truncation: Fixed VNC URLs being truncated in Windows browser address bar by replacing
cmd /c startwithrundll32 url.dll,FileProtocolHandlerto avoid command line length limitations
π¦ Downloads
Choose the appropriate binary for your platform:
- Linux AMD64:
proxmox-tui-linux-amd64.tar.gz - Linux ARM64:
proxmox-tui-linux-arm64.tar.gz - macOS Intel:
proxmox-tui-darwin-amd64.tar.gz - macOS Apple Silicon:
proxmox-tui-darwin-arm64.tar.gz - Windows:
proxmox-tui-windows-amd64.zip
π Verification
Verify your download with the provided checksums.txt file:
shasum -a 256 -c checksums.txtπ Installation
- Download the appropriate archive for your platform
- Extract the binary:
tar -xzf proxmox-tui-*.tar.gz(or unzip for Windows) - Make executable (Unix):
chmod +x proxmox-tui-* - Run:
./proxmox-tui-* --help
v0.7.0
π Release 0.7.0
Fixed
- Search Filter Persistence: Fixed issue where search/filtered lists would reset to unfiltered state during auto-refresh and after guest agent data loading
- Search filters now properly preserved across all refresh operations (manual, auto-refresh, and guest agent enrichment)
- Fixed key mismatch between search state storage and retrieval (was using lowercase strings instead of proper page constants)
- Initial data loading now respects existing search filters instead of always showing unfiltered data
- VM enrichment callback now preserves active search filters when updating with guest agent data
Added
- VM/Container Migration: Added comprehensive migration functionality
- Context Menu Integration: Added "Migrate" option to VM context menu (accessible via 'M' key)
- Simplified Migration Dialog: Streamlined dialog matching Proxmox UI design
- Target node selection (shows only online nodes excluding current host)
- Smart migration mode defaults: "restart" for LXC, "online/offline" for QEMU based on VM status
- Clean confirmation dialog with migration summary
- Removed complex advanced options in favor of sensible defaults
- Enhanced API Implementation: Full migration API support with improved error handling
- POST to
/nodes/{node}/{vmtype}/{vmid}/migratewith detailed response logging - Support for both QEMU and LXC migration with type-specific parameters
- Smart defaults: online migration for running VMs, offline for stopped VMs
- LXC containers use "restart" migration parameter (restart=1) instead of online parameter
- Fixed LXC migration API compatibility by removing unsupported migration_type parameter
- Fixed LXC migration errors by using correct restart parameter for LXC containers
- Comprehensive error feedback with detailed API response logging
- Automatic validation of target node availability
- POST to
- Improved User Experience: Better feedback and error handling
- Detailed error messages with migration context (VM name, target, mode)
- API response logging for troubleshooting migration issues
- Asynchronous operation with progress feedback
- Automatic refresh after migration to show updated VM location and tasks
- Migration dialog with minimum height for better visibility on smaller terminals
- Consistent 2-second refresh delay matching other VM operations
- Manual refresh (R key) now properly refreshes tasks in addition to nodes/VMs
- Migration status visible in Tasks tab for monitoring progress
- Help documentation updated to include migration information
π¦ Downloads
Choose the appropriate binary for your platform:
- Linux AMD64:
proxmox-tui-linux-amd64.tar.gz - Linux ARM64:
proxmox-tui-linux-arm64.tar.gz - macOS Intel:
proxmox-tui-darwin-amd64.tar.gz - macOS Apple Silicon:
proxmox-tui-darwin-arm64.tar.gz - Windows:
proxmox-tui-windows-amd64.zip
π Verification
Verify your download with the provided checksums.txt file:
shasum -a 256 -c checksums.txtπ Installation
- Download the appropriate archive for your platform
- Extract the binary:
tar -xzf proxmox-tui-*.tar.gz(or unzip for Windows) - Make executable (Unix):
chmod +x proxmox-tui-* - Run:
./proxmox-tui-* --help
v0.6.0
π Release 0.6.0
Added
- Automated release script with full workflow automation
- Makefile integration for release commands
- VM/Container Deletion: Added delete option to VM/LXC context menu with confirmation
- Delete option available for all VMs and containers regardless of state
- Comprehensive confirmation dialog warns about irreversible data destruction
- Uses DELETE method on
/nodes/{node}/{type}/{vmid}endpoint as specified - Smart Running VM Handling: Detects running VMs and offers direct force deletion
- Simplified Approach: Uses force deletion directly for running VMs (no stop-and-delete)
- Force Delete Options: Supports force deletion with
force,destroy-unreferenced-disks, andpurgeparameters - Cache Invalidation: Clears API cache after deletion to ensure VM is removed from list immediately
- Delayed Refresh: Waits 3 seconds after deletion before refreshing to allow server processing
- Proper error handling and success feedback with status messages
- Automatic VM list refresh after successful deletion
- Specialized delete operation handler that refreshes entire VM list instead of trying to refresh deleted VM
- Enhanced VM Operations: Improved all VM operations (start/stop/restart) with auto-refresh
- Cache Invalidation: Clears API cache after each operation for fresh state data
- Delayed Refresh: Waits 2 seconds after operations before refreshing VM data
- DRY Implementation: Unified approach across all VM operations for consistency
- Targeted Refresh: Uses VM-specific refresh to preserve selection and context
- Immediate success feedback with automatic state updates
- Cluster Tasks Page: New dedicated page for viewing recent cluster tasks
- Access via Tab navigation or F3 key
- Shows task history with timestamps, status, duration, and details
- Automatic sorting by newest tasks first
- Colored status indicators (green for OK, red for errors, yellow for running)
- Friendly task type formatting (e.g., "VM Start" instead of "qmstart")
- Auto-refresh integration when tasks page is active
- Comprehensive task type support for VMs, containers, backups, and system operations
- VM Operations: Start, Stop, Restart, Shutdown, Reset, Reboot, Create, Delete, Clone, Migrate, Restore, Template
- Container Operations: PCT and LXC variants (Start, Stop, Create, Delete, etc.)
- System Operations: APT Update/Upgrade, Service management, Image operations, File transfers
- Legacy LXC: vzcreate, vzstart, vzstop, vzdestroy and other vz* operations
- Search Filtering: Full search support with
/key activation- Real-time filtering across task ID, node, type, status, user, and UPID
- Search state preservation during auto-refresh operations
- Integrated with existing search system used by Nodes and Guests pages
Fixed
- TUI Suspend/Resume Issue: Fixed critical issue where users couldn't return to TUI after script installation or SSH sessions
- Added
app.Sync()calls afterapp.Suspend()to properly restore terminal state - Resolves the problem where "Press Enter to return to the TUI..." would not work
- Applied fix to both script installation and SSH shell functionality
- Based on known tview issue where terminal state doesn't restore properly after suspension
- Users can now successfully return to the application after all suspend operations
- Added
- Unified Logging System: Fixed all packages to use unified log file instead of separate log files
- Implemented global logger system that all packages (scripts, VNC services, etc.) now use
- All components now log to the same
proxmox-tui.logfile in the configured cache directory - Eliminated multiple log files being created in current directory (scripts, VNC components)
- Proper cache directory initialization ensures consistent logging location across all packages
Enhanced
- Press Enter to Return: Re-implemented "Press Enter to return to TUI" functionality for both script installation and SSH sessions
- Users can now see complete script output and error messages before returning to the application
- Status messages show success (β ) or failure (β) with clear feedback
- Applied to all SSH session types: node shells, LXC containers, QEMU VMs, and guest agent shells
- Maintains the working suspend/resume pattern while providing better user control
- Allows users to troubleshoot issues or verify successful installations before continuing
- Community Script Selector UI: Converted from modal to full-page view for better usability
- Provides more screen real estate for script browsing and selection
- Improved responsive layout that adapts to terminal size
- Better integration with the overall application navigation flow
- Community Script Search: Added search functionality to the script selector
- Real-time search filtering as you type in the search input field
- Searches across script names, descriptions, and types (container/VM)
- Press
/orTabto activate search mode from the script list - Press
Escapeto clear search and return to full script list - Press
EnterorTabto move from search field back to script list - Maintains all existing navigation (hjkl, arrows, backspace to go back)
- Filtered results update instantly and preserve selection behavior
Improved
- Release process now fully automated from changelog to GitHub release
π¦ Downloads
Choose the appropriate binary for your platform:
- Linux AMD64:
proxmox-tui-linux-amd64.tar.gz - Linux ARM64:
proxmox-tui-linux-arm64.tar.gz - macOS Intel:
proxmox-tui-darwin-amd64.tar.gz - macOS Apple Silicon:
proxmox-tui-darwin-arm64.tar.gz - Windows:
proxmox-tui-windows-amd64.zip
π Verification
Verify your download with the provided checksums.txt file:
shasum -a 256 -c checksums.txtπ Installation
- Download the appropriate archive for your platform
- Extract the binary:
tar -xzf proxmox-tui-*.tar.gz(or unzip for Windows) - Make executable (Unix):
chmod +x proxmox-tui-* - Run:
./proxmox-tui-* --help
v0.5.0
π Release 0.5.0
Added
- Guest data loading indicator on app startup
- Enhanced VM details panel with network interface and storage configuration
- Quit confirmation for active VNC sessions
- Auto-refresh functionality with 'A' hotkey toggle (10-second interval)
- Always-visible status indicators in footer (VNC sessions and auto-refresh status)
- Workflow testing integration in Makefile with targets for local CI testing
- Build tags for examples to prevent linting conflicts
Fixed
- VM selection and search filter preservation during operations and refreshes
- VM operations (start/stop/restart) now preserve selected VM position even when status changes
- Search filters remain active after VM operations and manual refreshes
- Startup enrichment process preserves user's VM selection if they navigate during loading
- Selection tracking by VM ID and node instead of list position prevents losing selection when VMs move due to status sorting
- Auto-refresh cache bypass for real-time performance data updates
- Node list ordering consistency during auto-refresh operations
- Manual refresh (R hotkey) VM selection preservation using correct sorted slice
- Logger test panic with nil pointer dereference handling
- Config integration tests with proper environment variable isolation
- Boolean field merging logic in configuration file processing
- Container runtime prioritization (Podman first, Docker fallback)
Improved
- Network interface display layout in VM details
- Storage configuration display layout
- Footer layout with right-aligned status indicators
- Consistent node list sorting (alphabetical by name)
- Test infrastructure with comprehensive fixes and improvements
π¦ Downloads
Choose the appropriate binary for your platform:
- Linux AMD64:
proxmox-tui-linux-amd64.tar.gz - Linux ARM64:
proxmox-tui-linux-arm64.tar.gz - macOS Intel:
proxmox-tui-darwin-amd64.tar.gz - macOS Apple Silicon:
proxmox-tui-darwin-arm64.tar.gz - Windows:
proxmox-tui-windows-amd64.zip
π Verification
Verify your download with the provided checksums.txt file:
shasum -a 256 -c checksums.txtπ Installation
- Download the appropriate archive for your platform
- Extract the binary:
tar -xzf proxmox-tui-*.tar.gz(or unzip for Windows) - Make executable (Unix):
chmod +x proxmox-tui-* - Run:
./proxmox-tui-* --help
v0.4.0
π Release 0.4.0
π¦ Downloads
Choose the appropriate binary for your platform:
- Linux AMD64:
proxmox-tui-linux-amd64.tar.gz - Linux ARM64:
proxmox-tui-linux-arm64.tar.gz - macOS Intel:
proxmox-tui-darwin-amd64.tar.gz - macOS Apple Silicon:
proxmox-tui-darwin-arm64.tar.gz - Windows:
proxmox-tui-windows-amd64.zip
π Verification
Verify your download with the provided checksums.txt file:
shasum -a 256 -c checksums.txtπ Installation
- Download the appropriate archive for your platform
- Extract the binary:
tar -xzf proxmox-tui-*.tar.gz(or unzip for Windows) - Make executable (Unix):
chmod +x proxmox-tui-* - Run:
./proxmox-tui-* --help
π Changelog
See the changelog for details on what's new in this release.
Full Changelog: v0.3.0...v0.4.0
v0.3.0
π Release 0.3.0
π¦ Downloads
Choose the appropriate binary for your platform:
- Linux AMD64:
proxmox-tui-linux-amd64.tar.gz - Linux ARM64:
proxmox-tui-linux-arm64.tar.gz - macOS Intel:
proxmox-tui-darwin-amd64.tar.gz - macOS Apple Silicon:
proxmox-tui-darwin-arm64.tar.gz - Windows:
proxmox-tui-windows-amd64.zip
π Verification
Verify your download with the provided checksums.txt file:
shasum -a 256 -c checksums.txtπ Installation
- Download the appropriate archive for your platform
- Extract the binary:
tar -xzf proxmox-tui-*.tar.gz(or unzip for Windows) - Make executable (Unix):
chmod +x proxmox-tui-* - Run:
./proxmox-tui-* --help
π Changelog
See the changelog for details on what's new in this release.
Full Changelog: v0.2.0...v0.3.0