Releases: devnullvoid/pvetui
v1.4.1
🚀 Release v1.4.1
Added
- Cloudsmith Linux package repository: Added release publishing for DEB/RPM packages to the public Cloudsmith OSS repository, plus README install instructions and OSS hosting attribution.
- Ansible community Proxmox inventory: The Ansible plugin can now use a generated
community.proxmox.proxmoxdynamic inventory source viaplugins.ansible.inventory_source: community_proxmox, deriving non-secret connection fields plus secret environment variables from the active pvetui profile so saved inventory files can be reused without writing Proxmox secrets into them. - Ansible bootstrap UID: Bootstrap Access can now create or update the managed Ansible user with a configured numeric UID via
plugins.ansible.bootstrap.uid. - Application settings dialog: Added in-app editing for icon display, debug logging, cache/age directories, theme configuration, and key bindings, plus SSH key path fields in profile editing.
- Mock-backed media generation:
make screenshots,make demo, and the mock VHS E2E runner now launch pvetui against the bundled Proxmox mock API with a generated config and media fixture, making screenshot and demo regeneration reproducible without a real cluster.
Fixed
- Settings persistence: TUI configuration saves now preserve
show_iconsand apply settings/profile actions to the active custom config path when one is in use. - Icon toggle coverage: Startup progress, onboarding, and snapshot/backup message emoji prefixes now respect
show_icons, while operational status indicators and spinners remain visible. - Active profile SSH settings: Changes to an active profile's SSH users, key files, and jump host now apply to new SSH/plugin operations immediately without requiring profile reactivation.
v1.4.0
🚀 Release v1.4.0
Added
-
CLI:
guests create vm/guests create lxc: Create QEMU VMs and LXC containers from the CLI with the same field coverage as the TUI forms. Supports memory, cores, disk storage, ISO attachment, network bridge, start-after-create, and auto-assigned VMIDs (viaGetNextID). For LXC, accepts a package name (e.g.debian-12-standard) and resolves it to the latest full template filename via the aplinfo catalog. Commands block until the Proxmox task completes by default;--no-waitreturns the task UPID immediately. -
CLI:
guests migrate <vmid> <target-node>: Migrate a guest to another node. Mode is selected automatically (QEMU running → online, QEMU stopped → offline, LXC → restart) matching TUI behaviour;--online/--offlineoverride for QEMU.--no-waitsupported. -
CLI:
guests delete <vmid>: Delete a VM or LXC container from the CLI. Supports--purge(remove all associated storage volumes) and--force(delete even if the guest is running). Blocks until the Proxmox task completes by default;--no-waitreturns the task UPID immediately. -
CLI:
storagecommand group: New top-level command group for storage and content management:storage list [--node]— list all storages across the cluster; shows per-node rows for shared storages.storage show <node> <storage>— show details for a specific storage.storage content list <node> <storage> [--type]— list content items with optional type filter.storage content delete <node> <storage> <volid> [--no-wait]— delete a content item.storage download url <node> <storage> <url> [--filename] [--content-type] [--no-wait]— download from a URL; content type inferred from extension (.iso→iso,.tar.*→vztmpl,.img→import).storage download template <node> <storage> <template> [--section] [--no-wait]— download an appliance template; accepts full filename or package name with auto-resolution.storage download oci <node> <storage> <reference> [--no-wait]— pull an OCI image.storage restore <node> <storage> <volid> <vmid> [--confirm] [--type] [--no-wait]— restore a guest from a vzdump backup. Prints a dry-run summary without--confirm; guest type inferred from volid prefix.- Tab completions for
<node>,<storage>, and<template>positional arguments.
v1.3.3
🚀 Release v1.3.3
Added
- LXC/VM create: moved to node context menu: "Create VM" and "Create LXC" are no longer in the global menu. They are now only accessible from the node context menu, where the target node is already in scope.
- LXC Edit Configuration: Swap field: New "Swap (MB)" input in the Edit Configuration modal for LXC containers, positioned below Memory. Setting swap to
0is now correctly sent to the API (disabling swap), which the previous save path silently skipped. - LXC create: Nesting toggle: New "Nesting" checkbox in the LXC creation form (enabled by default) that sets
features=nesting=1on the container, allowing Docker and nested containers. - Storage: Template Catalog download: New "Template Catalog" option in the storage Download Content menu (available when the storage supports
vztmpl). Fetches the Proxmox appliance template list (pveam available) and lets you pick a template by section (All / system / mail / turnkeylinux) and download it directly to the selected storage — equivalent topveam download <storage> <template>. - Ansible plugin:
envsetting: Newplugins.ansible.envconfig map for passing arbitrary environment variables (e.g.ANSIBLE_CONFIG,ANSIBLE_ROLES_PATH,ANSIBLE_HOST_KEY_CHECKING) to all ansible and ansible-playbook invocations. Configurable via General Settings in the toolkit or directly in config YAML.
Fixed
- LXC Edit Configuration: false-positive
*marker on network modal: Opening and closing the "Edit Network Interfaces" sub-form without making any changes no longer marks the parent form title with*. The comparison baseline is now normalized through the same parse→rebuild round-trip used when saving, eliminating spurious change detection caused by key-order differences in the raw API strings. - LXC create: privileged container creation: The
unprivilegedfield was being sent as a JSON boolean (false), which Proxmox does not reliably accept. It is now sent as an integer (0/1) consistent with how Proxmox represents boolean-like fields internally. This fixes creation of privileged containers. - LXC/VM create: rootfs storage dropdown shows storages from other cluster nodes:
GetNodeStoragesnow filters out storages not active on the queried node. Proxmox returns all cluster-configured storages from/nodes/{node}/storagebut marks inaccessible ones withactive=0; previously non-shared local storages from other nodes were shown in the rootfs dropdown. - Edit Configuration: network changes now prompt to Save: After applying changes in the "Edit Network Interfaces" sub-form, the header shows "Network settings updated — press Save to apply" and the parent form title gains a
*marker as a persistent reminder that the changes are staged in memory and require pressing Save to persist to Proxmox. go installversion info: Build date and commit hash now show correctly in the About modal when installed viago install. Release constants are embedded ininternal/version/release.goand updated automatically by the release script, serving as a fallback when ldflags and VCS metadata are unavailable.- Release script:
make releaseprompt ordering: The confirmation block now renders before they/Nprompt when running undermake. Previously stdout buffering caused the prompt to appear ahead of the confirmation text. - Release script: master sync before merge:
make releasenow fast-forwards local master toorigin/masterbefore merging develop, preventing push rejection when CI has auto-committed to master (e.g. Nix vendorHash update) since the previous release.
v1.3.2
🚀 Release v1.3.2
Added
- Ansible Ad-Hoc Tasks: Expanded the
ansibleplugin beyond the ping preset so the toolkit can run structured ad-hoc Ansible module invocations against generated inventory, using module/module-args plus the existing scope, limit, target, and timeout controls. - CLI:
nodes shellandguests shell: New interactive shell subcommands that open a terminal session directly from the CLI, matching the TUI'sSshortcut behaviour.pvetui nodes shell <node>— SSHes to a Proxmox node.pvetui guests shell <vmid>— enters an LXC container viapct enter(orpct execfor NixOS containers) over SSH to the host node, or connects directly to a QEMU VM via SSH using the VM's IP address. Respectsvm_ssh_user/vm_ssh_keyfilefor QEMU VMs.- Authentication follows the standard priority: SSH agent → configured keyfile →
~/.sshdefaults. - Unlike the TUI, no "Press Enter to return to TUI" prompt is shown on exit.
- CLI: Tab completion for nodes and guests: All CLI subcommands that accept a
<node>or<vmid>argument now provide dynamic tab completion by querying the Proxmox API. VM completions include the guest name and type as a description (visible in zsh and fish). Requires shell completions to be active (pvetui completion <shell>).
v1.3.1
🚀 Release v1.3.1
Added
- Shell Completions:
pvetui completionnow generates shell completion scripts for bash, zsh, fish, and PowerShell via Cobra's built-in completion support. Runpvetui completion <shell> --helpfor installation instructions. - SSH Key Configuration: Added
ssh_keyfileandvm_ssh_keyfileper-profile config fields (and corresponding--ssh-keyfile/--vm-ssh-keyfileCLI flags andPVETUI_SSH_KEYFILE/PVETUI_VM_SSH_KEYFILEenv vars) for specifying SSH private key paths explicitly. When no keyfile is configured, pvetui now also consults the running SSH agent (SSH_AUTH_SOCK) before falling back to standard key paths (~/.ssh/id_ed25519,id_rsa,id_ecdsa).
Fixed
- gRPC Security Update: Upgraded indirect dependency
google.golang.org/grpcfromv1.79.1tov1.79.3to address CVE-2026-33186, an authorization bypass in HTTP/2:pathpseudo-header validation.
v1.3.0
🚀 Release v1.3.0
Added
-
Command Runner: Custom Commands: The Command Runner plugin now exposes a "Custom Command..." entry at the top of the command menu for all target types (host, LXC container, QEMU VM). Users can type any non-interactive command and execute it directly without it needing to be on the whitelist. After a successful run, pressing
won the result screen promotes the command into the session whitelist and inserts it at the top of the command list immediately — no close/reopen required. Commands run without a PTY;sudorequiring a password will fail fast with a clear error, as will interactive programs. -
CLI Subcommands:
pvetuican now be used as a non-interactive CLI tool in addition to launching the TUI. Running any subcommand bypasses the TUI entirely, makingpvetuicomposable in scripts and AI agent workflows.pvetui nodes list— list all cluster nodes with status and resource metrics.pvetui nodes show <node>— detailed view of a single node.pvetui guests list— list all VMs and LXC containers with optional--node,--status, and--typefilters.pvetui guests show <vmid>— detailed view of a single guest.pvetui guests start|stop|shutdown|restart <vmid>— lifecycle operations returning a UPID.pvetui guests exec <vmid> <command>— execute a shell command inside a running guest. QEMU VMs use the guest agent (no SSH to the guest required), with automatic PowerShell wrapping on Windows. LXC containers usepct execover SSH to the Proxmox node (ssh_usermust be configured). Supports--timeout.pvetui tasks list— list recent cluster tasks with--recent N(default 20).--output/-opersistent flag selectsjson(default, structured stdout) ortable(human-readable).- All subcommands respect
--profileand work transparently with aggregate group profiles (fan-out queries across all member nodes). - No TUI startup banners are emitted when a subcommand is active.
- Errors are written as JSON to stderr; the process exits non-zero on failure.
v1.2.1
🚀 Release v1.2.1
Fixed
- Community Scripts Metadata Source: Switched the Community Scripts plugin from the stale archive fallback to the newly exposed public PocketBase metadata API at
db.community-scripts.org, restoring up-to-date script listings while keeping install script execution oncommunity-scripts/ProxmoxVE. - Community Scripts Development Script Labeling: Community Scripts entries now indicate when a script is in development and sourced from the
community-scripts/ProxmoxVEDdev repository.
v1.2.0
🚀 Release v1.2.0
Added
- Storage Browser Navigation: Added a first-class Storage page with its own configurable shortcut (
Alt+4by default), footer/help integration, node-scoped storage browsing, content filtering, and storage refresh controls. - Storage Content Acquisition: Added storage-level download actions for URL-based ISO/template/import downloads and OCI image pulls from the Storage page.
- Guest Creation Flows: Added initial node/global creation flows for VMs and LXCs, including VM creation from ISO-based installers and LXC creation from templates.
Fixed
- Storage Browser Actions: Added storage-content context actions for deleting ISO/template/snippet/backup entries and restoring backups directly from the Storage page, while removing the redundant Storage Browser entry from the Global menu.
- Community Scripts Metadata Source: Temporarily restored Community Scripts plugin metadata loading by switching from the removed upstream frontend JSON path to the archived
community-scripts/ProxmoxVE-Frontend-Archivemetadata source while upstream stabilizes a replacement for the new website architecture.
v1.1.0
🚀 Release v1.1.0
Added
- Ansible Toolkit Plugin: Added a new opt-in
ansibleplugin with integrated toolkit workflows for generating inventory from loaded Proxmox nodes/guests (YAML or INI, compact/expanded styles, optional custominventory_vars), previewing/saving inventory, runningansible -m ping, executingansible-playbookwith reusable form state, and providing an SSH setup guide. Includes plugin settings for default user/password/key path, limit behavior, and default Ansible extra arguments.
Fixed
- Startup Profile Chooser Default Handling: When
default_profileis unset, startup now correctly prompts for profile/group selection even if a profile is literally nameddefault, and non-interactive launches now return a clear error instead of exiting successfully without starting the app. - Template Guest Handling: Template VMs/CTs are now labeled as templates in the guest list and Guest Details, no longer appear as ordinary stopped guests for lifecycle UX, and are excluded from start-oriented context-menu and batch-action flows.
v1.0.20
🚀 Release v1.0.20
Added
- Guest Network Config Editor: Added an “Edit Network Interfaces” action in guest configuration with a dedicated interface editor (bridge/VLAN/rate/firewall plus VM/CT-specific fields), including LXC DHCP/Static IP assignment toggle and LXC nameserver/searchdomain fields, writing back to Proxmox
netXconfig entries on save. - Cluster Group Mode (HA Failover): Added per-group
group_settingswithmode: clusterso a group can connect through one active profile and automatically fail over to the next healthy candidate. - Group Mode Controls in Profiles UI: Added a mode selector to the Edit Group dialog and a cluster mode marker in the Connection Profiles list.
Fixed
-
Guest Details Description Consistency: The Description row now always appears in Guest Details and shows
N/Awhen a guest description is empty; for stopped guests, details now hydrate description from config when available. -
Running Guest CPU Metric Stability: Running guests now display
0.0%CPU instead of transientN/Awhen APIs briefly return invalid non-finite CPU values after restart. -
Guest Selection Snap-Back After Config Save Refresh: Preserved any user-initiated list selection changes made during in-flight refreshes so completion no longer forces selection back to the pre-refresh guest/node.
-
Transient CPU N/A After Guest Restart: Sanitized non-finite numeric values from API responses during single-guest refreshes so running guests no longer briefly show CPU as
N/Awhen metrics momentarily returnNaN/Infafter restart. -
Tasks Panel Focus Freeze: Fixed an immediate freeze when tabbing from Task History to Active Operations by keeping task table cells selectable and avoiding a tview table selection loop.
-
Cluster Failover Refresh Re-entrancy: Triggered failover refresh asynchronously to avoid nested
QueueUpdateDrawcallback paths. -
Single Guest Refresh IP Staleness: Fixed per-guest refresh so running guests (including LXC containers after network/VLAN changes) update IP information without requiring a full cluster refresh.