Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 16:58
v0.1.0
f86789d

What's changed

Commits in this release:

  • docs(windows): document the guest ISO pipeline and the 24H2 install limitation (#18) (f86789d)
  • fix(windows): transform WinRE into a Setup boot.wim for install-capable media (#16) (63615a3)
  • fix(windows): export Setup WinPE to sources/boot.wim so install media boots (#14) (5845c7a)
  • feat(qemu-release): Windows WHPX bundle + GPLv2 compliance for all bundles (#13) (20caae4)
  • feat(platform): native Windows (WHPX) host support (#12) (5bffe53)
  • feat(cloudinit): hdiutil fallback so macOS needs no xorriso (#11) (7d9bee7)
  • ci: add release workflow for v* tags (#10) (5f9a063)
  • feat: macOS (Apple Silicon) host support with GPU-accelerated guests (#4) (2498941)
  • fix(vm): strip legacy media=cdrom installer disks and skip missing ISOs (#9) (edb36b3)
  • ci: bump actions to Node 24 versions (e588975)
  • chore: adopt strict golangci-lint, Go 1.26.5, and CI format gate (acbf4e2)
  • fix(windows): integrate CAB packages and apply setup media so ISO builds (bfb5c1d)
  • fix(windows): disk-backed scratch dir and full-image UUP build selection (5952463)
  • fix(images): repair broken download URLs across distros (5145e0b)
  • fix(images): alpine download uses sha512 and skips the metal variant (01c652a)
  • feat(cli): add vee pull to pre-fetch base images (d5a14ea)
  • docs: modernize README, clean prerequisites, add THIRD_PARTY_LICENSES (73311e1)
  • fix(virtiofsd): build with glibc, not musl (fixes segfault) (#8) (783238b)
  • feat(windows): fully unattended Windows 10 install (#7) (17801c5)
  • fix(windows): SMM + Hyper-V enlightenments so Windows actually boots (#6) (7d29d16)
  • feat(windows): unattended install + working virtiofs (#5) (293b587)
  • fix: break systemd ordering cycle on NFS/SMB automount units (aa19425)
  • fix: don't set runner.env write_files Owner before runner user exists (7bc3cdb)
  • test: update user-mode NIC tests for -netdev/-device split form (5768b47)
  • ci: bump Go to 1.26 to match vendored x/crypto requirement (79164e2)
  • feat: provision GitHub SSH keys for self-hosted runners (92a967f)
  • ci: use golangci-lint-action v9 with v2 linter and lower go directive to 1.24 (f1f6dde)
  • ci: bump CI Go to 1.26 and add tracked pre-commit hook (031b9e3)
  • feat: persist runner credentials with age and add disk GC timer (7ee3b84)
  • fix: don't pin github-runner UID — collides with admin user (d486748)
  • fix: skip per-user primary group in cloud-init users block (3a75aeb)
  • feat: install host build toolchain in github-runner template VMs (a4927c6)
  • fix: correct rootless setup tool name and add AppArmor profile (655584a)
  • feat: add rootless container stack to github-runner template (15e3eb4)
  • fix: reduce audio crackling in gaming-arch passthrough VMs (bfd217c)
  • feat: add konsole to gaming-arch template (aeb7bd3)
  • docs: rewrite gpu-passthrough-gaming.md and add Vulkan vee-check (1885570)
  • feat: add driver rebind reset for AMD GPUs without FLR support (d0eab9b)
  • fix: force GPU connectors enabled and add VAAPI adapter in gaming-arch template (4180373)
  • feat: add rom_bar config option for VFIO GPU passthrough (fcd9ab0)
  • fix: correct SDDM session name, add libva-mesa-driver, fix sunshine web UI port (3fd3eda)
  • fix: add video/render/input groups and correct sunshine web UI port (e0fbc10)
  • fix: scrub stale known_hosts entry before ssh connect (d881aee)
  • feat: add --reinstall flag to vee create (77f1a47)
  • feat: install yay + sunshine in gaming-arch template with vee tunnel support (8558e09)
  • fix: QGA fallback for SSH IP resolution and correct VFIO sibling addr format (98dcf97)
  • fix: ssh-copy-id host:port format and key injection error handling (d996f62)
  • feat: SSH connection bootstrap for non-template VMs (d644bff)
  • fix: --template flag default was shadowing empty-template detection (114617d)
  • fix: bare VM boot from existing disk without --template or --no-auto-install (43e93bd)
  • fix: --boot-disk implies --data-disk, no need to specify both (9138e86)
  • feat: add boot disk selection for data-disk passthrough VMs (4b41de6)
  • fix: skip ISO download and hide template fields when --no-auto-install is set (88372a0)
  • feat(tui): replace ctrl+enter with C shortcut and confirm popup (0123173)
  • feat(tui): add [ Create ] button and ctrl+enter shortcut (2871428)
  • fix(tui): embed dir picker as overlay instead of sub-program (169e5ad)
  • feat(tui): add host dir picker for Virtiofs Dir field (4c90535)
  • refactor(tui): clean up create form fields and visibility logic (b197faa)
  • feat(create): disk content warnings and --no-auto-install flag (b7b0632)
  • feat(blockdev): richer device descriptions for shell completion (b067e50)
  • feat(create): autocomplete --data-disk with unmounted block devices (283b251)
  • feat(create): add --user/--password flags and TUI fields (ef60149)
  • fix(gaming): skip kasmvnc, surface real QGA errors in vee check (71d8f20)
  • test(e2e): tighten gaming-arch timeouts to 5/15 minutes (3b590e6)
  • feat(vee-check): add svc_oneshot_check for marker-gated oneshot units (e85c294)
  • fix(gaming): wire QGA + serial console + heredoc the boot-order script (2b7925f)
  • fix(hostname): use sudo -n so missing credentials fail fast (df5f968)
  • fix(qga): bound execute with 3s read/write deadline (f9f5428)
  • fix: preserve autostart intent when daemon stops VMs at host shutdown (0e3d0c5)
  • fix: disable os-prober in grub-mkconfig to prevent hang inside VM (22a76ac)
  • fix: guard efibootmgr boot-order script against unbound grub_num (c0cbe56)
  • test(e2e): bump gaming-arch install timeout to 90/100 min (16b011f)
  • feat: live install progress — serial streaming + fine-grained phase banners (4d4978d)
  • fix: enable ssh and vee-ssh-agent in github-runner template (2343fea)
  • feat: add github-runner template for self-hosted Actions runners (50e1751)
  • test(e2e): strengthen gaming-arch health checks and second-boot assertions (f2f784a)
  • fix: UEFI boot-order + PXE suppression for SPICE gaming VMs (9496021)
  • fix: install-pass lifecycle + SPICE gl=off for virtio gaming VMs (69e3471)
  • fix: don't error in WaitReadyWithPhases when install pass already completed (2e47eb6)
  • fix: treat guest poweroff during install pass as success in WaitReadyWithPhases (81256ac)
  • fix: always configure SPICE for gaming-arch VMs (f544459)
  • fix: strip ANSI escape codes from vee tunnel serial output (98433b1)
  • feat: vee tunnel serial — stream serial console log (c0406bd)
  • feat: vee-check post-install health checks + vee check command (9bebec9)
  • fix: vee ssh uses vee-managed known_hosts to avoid stale key conflicts (4719519)
  • fix: skip kasmvnc gracefully when no matching AUR package exists (fa2a760)
  • feat: gaming-arch e2e test + headless/user-mode NIC support (675472a)
  • fix: only inhibit host shutdown while VMs are running (0925244)
  • feat: run vee daemon as a system service so host shutdown waits for VMs (93e1aee)
  • fix: bound QMP command time so a wedged guest cannot hang vee stop (06ee994)
  • feat: respect user intent in daemon autostart loop (73988c2)
  • refactor: jellyfin template uses 1 core / 2 SMT threads instead of 2 cores (5b3c824)
  • refactor: lower jellyfin template default memory from 4G to 1G (1a8f540)
  • feat: jellyfin template with media.Source abstraction for NFS/SMB/host-dir/block/USB (ec83b84)
  • refactor: group nic/gpu mode name vars in tui/create.go (6f50e40)
  • feat: block host shutdown until running VMs gracefully stop (654867e)
  • feat: host-side pacman mirror cache (pacoloco) (6910f05)
  • fix: refuse to start VMs whose VFIO devices are stuck in D3cold (c6e77f8)
  • fix: colocate VFIO sibling functions on the same PCIe root port (f746597)
  • fix: bypass HTTP_PROXY for image downloads (3df5cf5)
  • fix: harden gaming-arch install.sh against early-boot races (e7d4142)
  • feat: add vee version subcommand (4437c4a)
  • fix: also attach GPU sibling functions outside the IOMMU group (be9ed1a)
  • refactor: unify vee create flag and TUI paths through internal/vm/build (3ddcba8)
  • fix: route VM recovery hints through vee subcommands instead of raw shell (54555e4)
  • feat: track and surface VM boot phase via serial-log watcher (717815a)
  • feat: capture guest serial console to /serial.log (b8400d8)
  • feat: hide info logs by default behind a global --verbose flag (f3d408e)
  • feat: run reflector before pacstrap to select fastest mirror (34df927)
  • fix: rewrite gaming-arch install to use pacstrap instead of cloud-init packages (0daa7c7)
  • fix: use pure-Go ICMP echo for ARP stimulation instead of exec ping (1cac5ed)
  • fix: ping broadcast subnets to populate ARP before MAC→IP resolution fails (ee61b82)
  • feat: show 'installing' status and cloud-init progress in vee status (2a40237)
  • fix: persist running state in foreground mode so vee tunnel/ssh work (e6566b5)
  • feat: write vfio-pci enable_runtime_pm=0 modprobe conf in daemon install; document D3cold quirk (6d16e18)
  • fix: wake D3cold GPU via power/control before VFIO open (efabe0b)
  • fix: ide interface for cidata ISO; re-allocate SPICE port if already in use (ca18206)
  • fix: use ide interface for install CDROM; don't markReady during pending install (5f28fc1)
  • fix: add Arch ISO as install CDROM in gaming-arch template; TUI wizard for vee create (fd4fa62)
  • feat: auto-launch SPICE client when connecting to a SPICE service (e8e450f)
  • fix: show accurate service URLs for bridge vs user-mode VMs in tunnel menu (61069a9)
  • refactor(vm): DB-only config/state; all cmd paths go through Manager (a1ef4a5)
  • feat(daemon): auto-enable systemd linger on vee daemon install (c01ffa2)
  • feat(daemon): add vee daemon with systemd user service and vee autostart command (7d5fca9)
  • fix(manager): WaitReady use QGA socket for guest-ping; skip probe when no SSH/QGA configured (8c79e02)
  • fix(nic): switch bridge multiqueue to -netdev tap split form; probe bridge-helper path (18fa642)
  • feat(cmd): rewrite vee tunnel with service menu; add VM name completion to vee config (6f8b9ad)
  • feat(tui): disk mode/size/passthrough selection in create wizard and config editor (ccafee7)
  • feat(templates): set InstallISO, Services, RTC across all templates; SPICE port=0 (random) (12b22dd)
  • feat(manager): wire SMT SMP, NIC queues, RTC, CPU pinning, InstallISO strip, random SPICE port (f651101)
  • feat(qemu): SMT topology auto-detect, virtio disk io_uring+discard, NIC multiqueue, RTC option (c929b96)
  • feat(vm): add InstallISO, Services, CPUPinning, RTC to VMConfig; add freeTCPPort (4c8970c)
  • feat(blockdev): add ListUnmounted for passthrough disk selection (1430913)
  • fix(gpu): auto-detect companion audio device; add --gpu-pci completion (4b7dd54)
  • feat(qemubin): auto-download vee-managed QEMU binary on first start (9b4e4a9)
  • feat(journal): guest journal forwarding via systemd-journal-upload (faa5dca)
  • feat(gpu): auto-detect host GPU vendor for gaming templates (823f6f4)
  • feat(templates): add gaming-arch and gaming-bazzite VM templates (1563603)
  • feat(tui): tri-state check — [-] for partial, space checks/unchecks subtree (ec2ea28)
  • feat(backup): spinner loader with progressive streaming and dir cache (b27d688)
  • fix(tui): rewrite filter — tree order, correct indent, no duplicates (3a083ea)
  • fix(tui): collapse correctly hides all descendants and fixes filter interaction (f9b1732)
  • fix(tui): filter searches all nodes regardless of collapsed/visible state (6c8166a)
  • feat(backup): remove maxDepth limit from EnumerateHome (b10dc1e)
  • feat(backup): enumerate up to 6 levels deep; show 2 levels expanded by default (43f0fba)
  • fix(tui): cursor stays on collapsed node instead of jumping to top (2578f76)
  • fix(tui): show expanded children while filter is active (186449b)
  • feat(tui): improve backup picker UX — expand-all, h for hidden, smarter filter (10fff5d)
  • feat: backup picker — directional expand/collapse with parent jump (3fe4266)
  • feat: backup picker — scrolling, filter, dotfile toggle (dcc3700)
  • fix: add json tags to VMConfig structs; surface SSH stderr in enumerate error (61bca6f)
  • feat: rewrite cmd/backup.go with DB-backed runs and TUI dir picker (d178082)
  • feat: add backup dir-picker TUI (internal/tui/backup.go) (e7d0db9)
  • feat: add internal/backup package (DB CRUD, SSH enumeration, rsync runner) (4e0a2a3)
  • feat: migrate vm.Manager to read/write from SQLite DB (56a856c)
  • feat: wire DB into provider interface (4704060)
  • feat: add internal/db package with SQLite schema and YAML migration (5899440)
  • feat: add modernc.org/sqlite pure-Go driver (12fff34)
  • feat: cyberpunk Hugo site polish — glitch columns, header fixes (ff1e7e7)
  • feat: add cyberpunk theme to Hugo docs site (79c1535)
  • build: add make site target; pin hugo-geekdoc to v2.0.1 (5077704)
  • docs: apply cyberpunk theme to README and docs (bf54d0d)
  • fix: vee create without name opens TUI; passthrough wizard skips name step (039c281)
  • fix: check deferred Close return values in e2e helpers (7cc59ab)
  • test: add e2e test for docker template VM (79e384e)
  • feat: print DOCKER_HOST hint after vee start on docker template VMs (9fba009)
  • feat: add docker template with Alpine Linux and Docker-over-TCP (bd63f53)
  • feat: add Windows ISO downloader, unit tests, and fix disk cache args (f860885)
  • refactor: move packages into internal/, dedupe cmd helpers, bump Go to 1.26 (f5f1c5d)
  • ci: pin GitHub Actions to commit SHAs and add Hugo module dependency (9dd40f1)
  • docs: add Hugo module go.sum (a34d1c6)
  • docs: add Hugo documentation site with GitHub Pages deploy (ba63adf)
  • docs: document Sunshine quirks, service override, and firewall setup (004b0a8)
  • feat: add vee status command with QGA guest info (3577510)
  • fix: fall back to plain output in vee start when stdout is not a TTY (c016874)
  • docs: document GPU passthrough gaming setup with Sunshine and Moonlight (4cb0146)
  • fix: prefer IPv4 over IPv6 link-local in MAC→IP neighbour resolution (03fcfa3)
  • fix: distinguish D3cold (fatal) from D3hot/suspended (recoverable) in VFIO reset (353645c)
  • feat: add ssh_user field and fix vee ssh for bridge VMs without cloud-init (4d2d73c)
  • fix: skip WaitReady poll when no SSH port or QMP socket is configured (9c3fe22)
  • fix: assign unique PCIe root port slots for each VFIO peer device (6b41e47)
  • docs: fix VBIOS dump instructions for vfio-pci-at-boot setups (eb9e90d)
  • docs: document AMD Navi ROM BAR quirk and D3cold recovery (cfd841f)
  • feat: call EnsureReady for all VFIO devices before QEMU start (314f984)
  • feat: add PCI device power state check and reset before VFIO passthrough (35f681c)
  • fix: revert rombar=1 for AMD Navi GPU passthrough (282599a)
  • fix: skip provider init for gpu subcommands, make virtiofsd install lazy (d58f190)
  • feat: support multiple VFIO devices and VBIOS rom_file in GPU passthrough (9f26b19)
  • docs: add GPU passthrough setup guide to README and prerequisites (d7df287)
  • feat: run VFIO preflight check at VM start and log structured results (bfc78e5)
  • fix: raise RLIMIT_MEMLOCK for VFIO child process, add boot banner and liveness check (5f98e63)
  • feat: add vee gpu status preflight check and device name lookup (4d6d8dc)
  • feat: add passthrough template, config TUI, and passthrough create flow (e09b4e2)
  • test: add e2e WireGuard two-VM test and fix torrent VM boot issues (bccb7be)
  • fix: remove sudo call from List/tab-completion path (8e38e64)
  • test: add e2e torrent VM test with WireGuard server VM (081afc1)
  • fix: use install -m 755 to preserve execute bit on vee binary (13eed7c)
  • fix: correct vhost-user-fs-pci device type, add virtiofsd unit tests (6f0d276)
  • fix: download virtiofsd source on host before container build (d801ef8)
  • feat: auto-build virtiofsd into ~/.vee/bin on first run (b4e353e)
  • fix: multiple virtiofs mounts, start spinner, and auto-start after create (44da1da)
  • feat: add country auto-complete with ghost text to NordVPN prompt (9780d05)
  • feat: add shell completion for --template, --distro, --distro-version, --gpu-mode, --nic-mode flags (9505e8a)
  • feat: replace NordVPN key-registration with snap/token approach (448af63)
  • feat: multi-directory mounts and pre-configured qbittorrent-nox for torrent template (b905629)
  • feat: torrent template VPN support, unit tests, and various fixes (c337185)
  • fix: correct TrueNAS API key creation payload for SCALE 25.04 (bf73886)
  • fix: prompt for TrueNAS username once and persist in vm.yaml (f3efee6)
  • fix: wait for TrueNAS API to boot before prompting for password; use truenas_admin user (94bef07)
  • feat: auto-inject vee SSH key into TrueNAS via REST API on start (aed9f75)
  • fix: promote install_state pending→ready on stop and stale cleanup (cf26385)
  • fix: only set install_state=pending for cloud-init (virtio) ISOs on first boot (a366d66)
  • fix: unregister hostname and clear state when VM shuts itself down (5355d32)
  • fix: use bufio.Reader in QGA client — clear error on connection close (b4efe53)
  • fix: always use /etc/hosts for hostname registration — drop systemd-resolved path (eea091c)
  • feat: register VM hostname in /etc/hosts (or systemd-resolved) on start (44f27e6)
  • feat: add vee ip command to show VM network interfaces and IPs (8876edb)
  • feat: print full URL in vee tunnel output (6b5247c)
  • fix: use direct TCP proxy for bridge VMs in vee tunnel, SSH only for user-mode (13258eb)
  • fix: persist MAC to vm.yaml on start; resolve IP via QGA when MAC absent (2969fe0)
  • docs: add README and docs/prerequisites.md (c1e3244)
  • fix: use fixed vdagent chardev id/name for SPICE — random names rejected (182afbb)
  • fix: replace removed -soundhw hda with -device intel-hda -device hda-duplex (d160e1a)
  • fix: only strip virtio cidata ISOs on ready boot, preserve installer ISOs (dcb1ed3)
  • fix: passthrough disk AbsolutePath returns raw device path directly (4d24a82)
  • feat: add QGA support, vee ports, and vee tunnel (82bdb98)
  • fix: skip disk creation if file already exists instead of erroring (4b0281a)
  • feat: add VM name tab-completion to all single-name commands (0cb9275)
  • fix: reduce TrueNAS template default CPUs from 2 to 1 (39afa19)
  • fix: reduce TrueNAS template default memory from 8G to 4G (80f8a53)
  • chore: add .gitignore and untrack vee binary (c8d606c)
  • fix: truenas --data-disk path:serial support and resilient ISO checksum check (0fe1683)
  • feat: add TrueNAS SCALE VM support (d55f723)
  • build: update vee binary (84614ec)
  • test: add e2e test suite for VM boot, SSH auth, and tool installation (a44d6e9)
  • fix: cloud-init YAML validity and SSH key injection for default user (b1ce58f)
  • feat: add persistent vee-managed SSH keypair (be59692)
  • feat: add Ubuntu cloud image support and qcow2 overlay backing file (8dd043a)
  • fix: show installing status in web dashboard (4e13bc2)
  • fix: avoid SSH port conflict by scanning for a free port on VM start (8920fad)
  • feat: add CPU% tracking to monitor and TUI list view (6edf7c8)
  • feat: add vee logs command to stream VM QEMU output (f62b1c7)
  • feat: add vee ssh command for direct VM SSH access (e52cec1)
  • fix: silent provider for TUI, align Arch versions to 2026, VMState field alignment (5748203)
  • fix: resolve lint diagnostics from distro/install-state feature (c1c66f3)
  • feat: distro registry, ISO auto-download, install state tracking (cfa063b)
  • feat: interactive TUI on bare vee command (8406ac7)
  • feat: Phase 6 — vee view quick display launcher (5704e32)
  • feat: Phase 5 — monitoring TUI and web dashboard (ec38ef7)
  • feat: Phase 4 — SSH agent sharing via AF_VSOCK (3a656db)
  • feat: Phase 3 — cloud-init template system and TPM support (d00e992)
  • feat: Phase 2 — GPU/VFIO passthrough and virtio-gpu support (7065607)
  • feat: Phase 1 — CLI framework and core VM lifecycle (c0737bb)
  • feat: qemu with ubuntu (5587d68)
  • Initial commit (f139f92)