github tizbac/proxmoxbackupclient_go v1.2.0-rc.1

pre-release3 hours ago

πŸš€ Proxmox Backup Client v1.2.0-rc.1

⚠️ Windows flagged the download as a virus? This is a known false positive (unsigned Go/Wails binaries inside the installer) β€” not a virus. See the project repository for how to verify the download. A code-signing certificate (SignPath Foundation) is on the way.

πŸ“¦ Downloads

One Windows installer (.msi) per brand β€” no stand-alone .exe is
published. Pick the brand you are licensed for; they are the same
build, and the installed application takes its identity from its
executable name.

File Brand
ProxmoxBackupClient-<version>.msi Proxmox Backup Client (default)
NimbusBackup-<version>.msi Nimbus Backup
AcmeBackup-<version>.msi Acme Backup
EtitechBackup-<version>.msi Etitech Backup

The command-line tools are in the per-platform archives
(proxmoxbackup-cli-* and proxmoxbackupclient_go_*).

πŸ“ What's in this release

Changes since v1.1.3

  • msi: fix the Nimbus branded installer (duplicate RemoveRegistry key)
  • ci(msi): don't copy the default brand's binaries onto themselves
  • release: ship one MSI per brand and no stand-alone exe
  • gui: clear the lint findings that blocked the release pipeline
  • ci(security): pin gosec and fix the two HIGH findings it now reports
  • ci: make prerelease tags releaseable and align versions to 1.2.0
  • installer: drop GUI autostart and clean legacy Run entries
  • machinebackup (Windows): read the end of a VSS partition from the disk
  • machinebackup: keep the config file's backupdev when -backupdev is not given
  • machinebackup (Windows): read partitions in disk order (#114)
  • pxar: skip FIFOs, sockets and device nodes instead of opening them
  • Restore: say which key an encrypted snapshot needs
  • BMR wizard: keep a restored Linux system's identity; switch off when done
  • snapshot: wait while VSS is busy; never delete all shadow copies
  • machinebackuplib: wait for the disk reader before the snapshots go (Linux)
  • pxar: a read error part way through a file no longer ends the backup
  • packaging: fix deb version for untagged builds
  • Add weekly and monthly scheduling to GUI jobs
  • Restore permissions: set any recorded owner; keep protected DACLs protected
  • gui: config tests no longer write the real config.json on Windows
  • gui: fall back to English for a key missing in the selected language
  • gui: enable or disable a scheduled job
  • gui: stop a directory backup in the middle of a folder on cancel
  • pxar: let the caller stop an archive write in the middle of a folder
  • test: give TestChunkStateEncryptedDigests the manifest entry CloseDynamicIndex writes
  • fix(pbs): send the BaseURL host in the upgrade request's Host header
  • fix(crypto): encrypted GUI backups use the keyed chunk digest; service-mode reads get the key
  • clonezilla: read volume id with xorriso, not isoinfo
  • clonezilla: also search /usr/lib/syslinux/bios for isohdpfx.bin
  • BMR wizard: refuse a target disk smaller than the backed up disk
  • BMR wizard: never offer the boot stick as the restore target
  • Back up and restore alternate data streams and NTFS extended attributes
  • Back up and restore Windows creation times
  • machinebackup: send the notification e-mail
  • BMR wizard: remove the backup's snapshot store from restored partitions
  • pxar: leave out "Recovery" only at the root of a volume
  • pbscommon: give ListSnapshots 120 s instead of 10 s
  • machinebackup: close the PBS session when a backup fails or is stopped
  • directorybackup: -no-mtime leaves real times out of the archive
  • Restore: put back every file time, also 1970 and earlier, and folder times
  • CLIs: report errors on stderr, never in a message box
  • brand: real Proxmox logo for the default brand's icons
  • brand: per-brand tray icons instead of the Wails placeholder icon
  • gui: commit wails-generated SetJobReporter bindings
  • installer: SERVICEAUTOSTART flag + document silent-install switches
  • brand: real URLs for every brand's buy-storage CTA and Nimbus links
  • fix(brand): NimbusBackup CTA must ship with the real buy-storage URL
  • fix(gui/brand): make icon and URLs work in the WebUI for branded builds
  • fix(service): surface scheduled runs in Running Jobs, fix duplicate GUI instances, locale-proof state ACLs
  • fix(sched): honour machine backup kind (host/vm); VM backup ID must be numeric
  • build(msi): run candle/light under Wine in Docker, not on the host
  • fix(msi): stage WiX inputs inside $WORK so light can resolve File/@source
  • machinebackup: skip hashing blank (all-zero) chunks
  • snapshot: delete our VSS shadow copies after every backup, through the VSS API
  • chore(gui): regenerate wails bindings for pinned_disks / unique_id / drive_letters
  • feat(gui): pin physical disks by identity, show drive letters
  • build(msi): rebuild stale binaries, not just missing or invalid ones
  • fix(elevation): run the UAC prompt and report the child's exit code
  • fix(backup): Stop is a cancellation, not a failure
  • build: add make msi and make clonezilla, fix what they uncovered
  • fix(service): register the SCM name the MSI installed, not a hardcoded one
  • Use git tag or short SHA for version across all build flows (MSI, deb, rpm, arch, docker)
  • Add Etitech Backup branding: icon, logo, brand.go entry, WiX installer, build script integration
  • Update generated GUI build artifacts (icon.ico, wailsjs bindings)
  • Fix MSI build script: fix WiX toolset URL, use existing binaries, handle Wine paths with Z: mapping, copy brand-specific SVC exes, copy icons/License.rtf, fix ProductBody.wxi for WiX 3 include format
  • Fix progress reporting from service to GUI and machine backup cancellation; harden machine backup sizing/progress; add shared backup control; add directory picker in UI; tidy running jobs UI
  • Pass per-job backup context directly to backup options; fix cancellation context
  • Accept HTTP 202 Accepted for async backup starts in API client
  • Fix machinebackuplib lint issues
  • Guard against NaN/Inf in progress calculations; add math import
  • Set config dir in Windows service startup
  • Fix App creation also for unix service
  • Use NewAppForService in BackupService class
  • Remove leftover files
  • Fix nil map in RegisterBackupCancel for service stubs; initialize cancelFuncs in App constructors
  • Register backup cancel by job ID for proper per-job cancellation
  • Fix /dev/disk/by-id resolution for Linux disks; add detailed progress bar with ETA and blocks counters to Running Jobs tab
  • Fix running jobs list and empty error messages
  • Add Running Jobs tab with red badge count and cancel functionality
  • Add backup job listing and cancellation via API; fix progress reporting with context-based cancellation
  • Fix NaN% progress in machine backup: guard division by zero when total disk size is unknown
  • Fix Linux machine backup: error out (don't silently fall back) when Use snapshots is checked but snapshot module unavailable
  • Fix Linux machine backup: respect Use snapshots flag, fall back to raw disk read when disabled or snapshot module unavailable
  • Add PBS server selection for backup jobs (one-shot + scheduled); add machine backup kind (host/vm) selection; rename Use VSS to Use snapshots (VSS/Dattobd)
  • Add /backup/machine route and shared handler in API server to fix machine backup service calls
  • Fix launch-time privilege handling: request elevation at launch with fallback to standalone; add periodic token rotation with graceful 401 re-elevate; harden Windows asInvoker flow and token ownership
  • fix(gui): no local admin required for machine backups in service mode
  • fix(packaging): stage-source must not drop files tracked under gui/build
  • build: package the current source tree, make test/lint actually run
  • feat(gui/frontend): run-now button, name guard, list-join guards
  • fix(gui): server saves, scheduled-job round-trip and run-now
  • Fix get ticket
  • chore(arch): bump PKGBUILD _commit to ae5a771
  • chore(arch): ignore makepkg build leftovers
  • fix(gui): restore Multi-PBS wails bindings lost in c85eb29
  • fix(debian,fedora): make .deb and .rpm builds correct and complete
  • fix(arch): make PKGBUILD build in a clean Arch environment
  • feat: Linux packaging + service integration, Windows/CI build tooling
  • Clonezilla BMR: restore encrypted backups (key menu, USB key, passphrase)
  • pbsnbd: read the first chunk before attaching the NBD device
  • pbscommon: skip the key file permission check on Windows
  • docs: point elastio-snap at the maintained Axcient fork
  • directorybackup: back up several directories in one run
  • Read passphrase-protected key files written by proxmox-backup-client
  • Add elevation requirements for scheduled job modifications
  • Restore the data between the MBR and the first partition in the BMR flow
  • patch-clonezilla: add the PBS bare-metal restore entry to isolinux.cfg
  • patch-clonezilla: skip patches whose change is already in the base ISO
  • feat: Linux systemd service for scheduled backups + GUI elevation support
  • gui: add dattobd/elastio-snap snapshot module detection and UI indication
  • build: drop fyne, link webkit2gtk-4.1 on Linux
  • GUI encryption support: multi-PBS key propagation, service build wiring, key mgmt UI + tests
  • machinebackuplib: add bios: ovmf for GPT boot disks
  • Generated VM config: declare each disk with a #qmdump#map line
  • Drop iothread=1 from generated SATA drive config
  • machinebackuplib: say what to do when a "vm" backup has a non-numeric ID
  • gui: back machines up as "host", not "vm"
  • machinebackuplib: fix VM config template for BackupType "vm"
  • restore: re-apply captured NTFS ACLs (Windows) and POSIX ACLs/xattrs (Linux)
  • feat(snapshot): call elastio-snap/dattobd via ioctl, not CLI wrappers
  • Document that the BMR wizard is English/UK-only by design, for now
  • Add a fully automated PBS Bare Metal Restore boot entry for the Clonezilla ISO
  • Fix zstd decoder goroutine deadlock in chunk decompression
  • fedora: add pbsgo.spec and dockerized build-rpm.sh
  • debian: fall back to tracked gui/Icon.png when appicon.png is absent
  • arch: add PKGBUILD and make pkgarch target
  • debian: add build-deb.sh packaging for the CLI tools and GUI
  • gui/frontend: sync committed dist with current frontend build
  • nbd: fail early with actionable errors instead of a dead TUI
  • gui: allow the window to actually close on Linux/macOS
  • machinebackuplib: whole-job progress, real cancellation, VSS enforcement
  • snapshot: propagate elastio-snap errors instead of swallowing them
  • clientcommon,clis: interactive fingerprint confirmation and ticket password prompt
  • Add Linux block snapshot backend through elastio-snap (manual port of ed37c26 to refactored tree)
  • gui,installer: exe-driven branding, external links, brand-switching WiX
  • Docs: add localized READMEs (ru, es, de, zh, ja, el, ro, sv, ar, fa), add Proxmox disclaimer and branding policy, update introduction and contribute sections
  • WIP Gui USername+Password Login
  • fix(gui): keep restore/about tabs inside .container
  • Add PBS NBD attach flow to Clonezilla live menu
  • Docs: add advanced use & guides section, Windows GUI Docker build
  • Docs: unify READMEs, add Italian translation, RDEM Systems GUI attribution
  • Fix Clonezilla ISO boot: rebuild from scratch with -boot-info-table
  • Add patch-clonezilla.sh to inject binaries into a Clonezilla live ISO
  • Add WinPE rescue ISO build tooling and script
  • GUI: add backup cancel, fix machine-backup stop/ETA, i18n French strings
  • Fix Windows GUI Docker build and disklist compile error
  • Fix server buttons translations
  • Progress reporting ok
  • WIP: Machine backup now starts , missing progress report and cancel
  • WIP gui machine backup + switch again to haxmap
  • WIP: Complete machine backup feature with GB disk size display and fixed device path selection
  • Fix JSON formatting in config.json.example
  • enhancement: update build.sh to match goreleaser windows behavior
  • Switch to wails v2.13.0 so that it will build on debian 13 too ( Missing webkit 4.0 )
  • Added logo
  • Fix garbage in gui
  • CSS Edit for keeping proxmox theme colors
  • WIP Gui work, remove hardcoded branding , logo and point copyright to github contributors
  • Fix build_gui.sh
  • Update README.fr.md
  • chore(release): 0.2.119
  • chore: remove dead pkg/logger module (broken-by-design unused logger)
  • test(pbscommon): measure chunk size by Scan's return, not the reset field
  • chore(release): 0.2.118
  • ci: make test-modules non-blocking (informational) so releases build
  • chore(release): 0.2.117
  • ci: go mod tidy before module tests so GOWORK=off builds resolve
  • chore(release): 0.2.116
  • ci: gate builds/release on the non-GUI module tests
  • fix(gui): opt-in split no longer backs up excluded top-level folders
  • ci: run unit tests for non-GUI modules on Linux and Windows
  • chore(release): 0.2.115
  • fix(pbscommon): bound catalog tables before the root pointer
  • chore(gui): remove dead JobManager/BackupRunner
  • fix(api): real version, bounded progress map, race-free status read
  • fix(scheduler): DST-safe next-run calculation
  • fix(gui): split backup waits for each part's real outcome
  • chore(release): 0.2.114
  • fix(retry): classify transient HTTP/deadline errors; guard jitter against NaN
  • fix: parse previous DIDX defensively, no panic on truncated body
  • fix(backup): report real archived bytes and close sessions on error
  • chore(release): 0.2.113
  • docs(readme): add offsite Proxmox backup target link (EN + FR)
  • fix(scheduler): let startup recovery catch up missed runs, not skip them
  • fix(cli): allocate mail Template before -mail-*-template flags write to it
  • fix(restore): don't report intentional overwrite-off skips as failure
  • fix(mail): deliver to multiple recipients and surface STARTTLS errors
  • fix(pbscommon): harden archive readers against malformed indexes
  • fix(scheduler): never overwrite jobs/history from a failed read
  • fix(service): reload config from disk before each backup
  • fix(scheduler): catch up missed runs instead of skipping them forever
  • fix(snapshot): one VSS Snapshotter per volume; safe multi-volume sets
  • fix(machinebackup): correct volume mapping and VSS partition read
  • fix(directorybackup): never report a failed or partial backup as success
  • feat(backup): make split opt-in (first-seed split, full afterwards)
  • fix(backup): stop whole-drive backup hanging in pre-backup size analysis
  • fix(gui): persist TOFU certificate pin via the service in service mode
  • feat(search): make regex file-search case-insensitive by default
  • ci(release): bilingual EN/FR links in release-notes footer
  • docs(readme): SEO/GEO rewrite with locale-correct links
  • docs: add French README with EN/FR language switcher
  • fix(gui): localize the 'choose my backup' CTA per UI language
  • fix(installer): drop ARPNOMODIFY (duplicate of WixUI_InstallDir, LGHT0091)
  • chore(release): 0.2.108
  • fix(restore): wildcard search, GUI folder picker, path display
  • docs/ci: point antivirus-explainer links at canonical trailing-slash URLs
  • docs+installer: correct false "code-signed" claim, add ARP trust metadata
  • docs(release): translate RELEASE_NOTES to English + fix empty changelog
  • chore(release): 0.2.107
  • docs(release): rewrite stale RELEASE_NOTES + version-stamp VirusTotal labels
  • ci(release): pin Wails CLI to resolved v2.12.0 for a deterministic toolchain
  • ci(release): track Wails CLI @latest (v2.8.0 fails to build under Go 1.25)
  • chore(release): 0.2.106
  • ci(release): gate VirusTotal link on a clean (0-detection) report + attest build provenance
  • docs: link the antivirus false-positive explainer page (README + release notes)
  • ci(release): best-effort VirusTotal submission + report links in notes
  • ci(release): show SHA-256 checksums table in the release notes
  • ci(release): harden Windows build against AV false positives
  • docs(readme): note SignPath Foundation code signing for Windows binaries
  • chore(release): 0.2.105
  • fix(restore): don't open the native folder picker in service mode
  • fix(restore): make search cancellation interrupt the in-flight snapshot
  • fix(restore): skip meta walk on split data parts lacking the sidecar
  • chore(release): 0.2.104
  • fix(pbs): trust-on-first-use fingerprint pinning for self-signed certs
  • chore(release): 0.2.103
  • feat(restore): read pcat1 catalog for fast file search/listing
  • chore(release): 0.2.102
  • feat(backup): diagnostic logging for PBS target + structured result line
  • fix(state): atomic writes for jobs/history/config JSON (M-03)
  • chore(release): 0.2.101
  • fix(service): resolve EffectivePBS in service-mode backup (multi-PBS)
  • chore(release): 0.2.100
  • fix(restore): random exclusive temp file instead of predictable .nimbus-part (v2-H-08)
  • fix(backup): no phantom catalog/goodbye entries for skipped files (M-06)
  • fix(lint): consistent method receiver names (staticcheck ST1016)
  • chore(release): 0.2.98
  • fix(restore): fail a selective restore that matched no requested path (v2-H-09)
  • fix(vss): scope startup cleanup to Nimbus shadows, drop delete /all (v2-H-05)
  • fix(backup): aggregate auto-split result, continue independent splits (v2-H-03)
  • feat(backup): 4-level honest outcome + detect unreadable/unstable files (v2-H-02/F-01)
  • fix(backup): auto-split no longer drops root-level files (v2-H-01)
  • fix(backup): fail-closed on chunk upload failure (C3 / v2-H-04)
  • fix(security): authenticate the local service API (H-01 / v2-H-06)
  • fix(security): restrict plain-HTTP exemption to true loopback (v2-H-07)
  • fix(security): stop exposing PBS/SMTP secrets to the frontend (M-04/M-05)
  • fix(security): pin TLS fingerprint on all PBS clients (H-02)
  • fix(security): redact PBS token in CreateDynamicIndex header log (L-01)
  • chore(release): 0.2.96
  • fix(backup): custom backup-id discoverability + VSS sidecar paths (Codex review)
  • chore(release): 0.2.95
  • feat(backup): configurable auto-split (disable_split + split_size_gb)
  • chore(release): 0.2.94
  • fix(backup): per-folder backup-id for multi-folder backups (PBS retention)
  • chore(release): 0.2.93
  • feat(restore): lazy chunk-backed reader, drop whole-archive temp staging
  • chore(release): 0.2.92
  • fix(backup): apply user exclusions (H-04) + status sidecar; fix 0.2.91 build
  • chore(release): 0.2.91
  • feat(backup): honest result contract + structured live progress
  • chore(release): 0.2.90
  • fix(gui): unique job IDs, bounded progress polling, version-derived window match
  • fix(backup): do not report a backup with failed chunks as successful
  • fix(pbs): guard short chunk response, redact secret in logs, check fixed-index status
  • fix(restore): prevent path traversal, verify chunk integrity, atomic writes
  • chore(release): 0.2.89
  • fix(vss): stop bouncing the VSS service at startup
  • fix(pbs): enforce TLS certificate fingerprint pin
  • fix(backup): emit exact declared payload size in pxar to prevent corruption
  • chore(release): 0.2.88
  • fix(restore): check f.Close() return value (errcheck)
  • chore(release): 0.2.87
  • feat(restore): stream large archives + cross-snapshot file search
  • fix(restore): drop trailing periods from error strings (ST1005)
  • fix(restore): export NormalizeIncludes for cross-package use
  • feat(restore): in-place + alternate modes (flat / abs)
  • feat(restore): expose backup meta sidecar to UI
  • feat(restore): cache snapshot tree listings + manual reload
  • fix(restore): assemble DIDX chunks before parsing PXAR
  • fix(gui): rename ChunkState fields/method to satisfy ST1003
  • ci: migrate .golangci.yml to v2 schema
  • ci: bump golangci-lint to v2.12.2 for Go 1.25 support
  • ci: use golangci-lint-action@v7 to fix install.sh checksum failure
  • feat(restore): selective GUI restore with multi-PBS + treeview, fix PXAR reader
  • Update readme.md + add optimization to not compute sha256 of blocks that are at zero
  • docs(readme): show both EN and FR doc links explicitly
  • docs(readme): fix release URL, add badges, docs links, feature table, about section
  • fix(vss): clean up + restart VSS service on startup to clear stuck "already in progress"
  • fix(pbs): close H2 connection after Finish() to release worker
  • fix(gui): use multi-PBS default for backup/restore validation
  • fix(gui): pass 7th arg to StartBackup so Wails accepts the call
  • feat(lifecycle): close PBS sessions on shutdown to release locks
  • fix(pbs): set manifest File.Size to encoded blob size for verify
  • fix(pbs): set manifest csum on UploadBlob to pass /finish validation
  • fix(logs): replace Windows rotate with close+rename+reopen
  • build(ci): use git tag as version source, unstick stale wails.json
  • fix(logs): stop Sync on every write + O_RDWR for rotation
  • fix(meta+logs): PBS blob regex + durable per-run log compression
  • fix(retry): wait 25min on session-lost before retrying directory
  • feat(meta): capture NTFS ACLs during pxar walk + upload as blob
  • feat(logs): per-run backup log file + startup banner + partial status fix
  • fix(critical): abort on session-lost + dir retry + H2 keepalive
  • fix(critical): per-directory Finish() + non-fatal per-dir errors
  • fix(critical): detect empty backup root + 0-chunk guard + Linux log path
  • fix(critical): check HTTP status codes + block H2 auto-reconnect + fix retry
  • fix(lint): handle all errcheck warnings in log_rotation.go
  • feat(split): bin-packing strategy instead of one-job-per-folder
  • fix(logs): Windows-safe log rotation using copy+truncate
  • fix(build): move appVersion to version.go (no build tag)
  • fix(scheduler): use fresh ScheduleTime from file + reduce log verbosity
  • feat(meta): inject .nimbus_backup_meta.json into each PXAR archive
  • fix(split): restore MaxChunkSize to 100GB now that chunk avg is correct
  • fix(chunking): reduce chunk avg to 4MB to respect PBS 16MB max limit
  • fix(auth): sanitize backup-id to remove spaces causing PBS 400 errors
  • fix(scheduler): recalculate stale nextRun on startup to prevent stuck jobs
  • fix(vss): handle VSS writer errors gracefully and continue backup
  • fix(critical): prevent orphaned PBS backup sessions from split detection
  • fix(critical): prevent excessive job subdivision that creates 1000+ jobs
  • fix(split): replace split-X-of-Y naming with descriptive path-based IDs
  • fix(backup): increase chunk_size_avg from 4MB to 8MB to reduce DIDX index size
  • chore: bump version to 0.2.42
  • fix(critical): Fix auto-split failure cascade from log rotation bug
  • fix(pbsapi): use json.Marshal for dynamic_index to prevent encoding issues
  • fix(backup): reduce MaxChunkSize to prevent PBS manifest overflow
  • fix: remove failing keep-alive and add backup crash protection
  • fix: compilation errors in PXAR reader
  • feat(restore): implement PXAR extraction (BETA)
  • fix(restore): fix snapshot listing and add cross-server security
  • feat(compression): add configurable Zstd compression levels
  • fix: handle errcheck linter warnings in log_rotation.go
  • fix: declare err variable in main.go
  • chore: bump version to 0.2.32
  • fix: remove undefined debugLogPath references in main.go
  • chore: bump version to 0.2.31 and fix compilation errors
  • feat(split): smart splitting with per-folder backup detection
  • fix(backup): fix critical Finish() bug causing missing snapshots
  • feat(logs): add log rotation, split backup/service logs, improve error handling
  • docs: integrate technical audit findings and restore roadmap
  • feat(i18n): add complete French/English translation system
  • chore: update version in wails.json to 0.2.25
  • feat(backup): implement automatic splitting for large backups
  • feat(backup): add mutex to prevent concurrent backups to same destination
  • fix(lint): properly handle f.Close() error in defer
  • fix(lint): handle error returns in logging functions
  • fix(service): separate logging for GUI and Service executables
  • chore: bump version to 0.2.20
  • fix(ui): reduce default window size and add max dimensions
  • fix(build): use correct Config field names in service stub
  • fix(build): add service stubs for StartBackup and GetConfigWithHostname
  • fix(security): add nosec annotation for ProgramData path
  • fix(build): remove duplicate debugLogPath and writeDebugLog from main.go
  • fix(build): move writeDebugLog to app_types.go for service build
  • fix: remove unused sync import in main.go
  • fix(build): extract App types to separate file for service build
  • refactor(service): unify GUI and Service codebase with build tags
  • chore: bump version to 0.2.12
  • fix(ui): better responsive design for very small screens
  • chore: bump version to 0.2.11
  • fix(ui): add minimum window size to prevent UI overflow on small screens
  • chore: bump version to 0.2.10
  • fix(msi): correct service exe path in Product.wxs
  • chore: bump version to 0.2.9
  • fix(app): implement BackupHandler interface methods
  • chore: bump version to 0.2.8
  • fix(gui): add gui/api to go.mod dependencies
  • chore: bump version to 0.2.7
  • fix: add missing gui/api/go.mod
  • chore: bump version to 0.2.6
  • refactor: extract App to importable gui/app package
  • chore: bump version to 0.2.5
  • chore: bump version to 0.2.4
  • fix(service): add missing replace directives for local modules
  • chore: bump version to 0.2.3 and consolidate release notes
  • feat: auto-exclude Windows system folders and files in file-mode backups
  • chore: bump version to 0.2.2
  • fix(ci): add service build step before MSI creation
  • feat(backup): auto-split large backups (100GB threshold)
  • fix(msi): remove custom install dialog causing build error
  • feat(architecture): separate GUI/Service binaries + HTTP API + keep-alive fix
  • feat(ui): responsive design + fix backup edit + fix MSI upgrade
  • fix(v0.1.94): Add PBS session keep-alive for long backups
  • feat(v0.1.93): Multi-PBS Architecture + Service Improvements
  • fix(msi): change upgrade schedule to stop service properly
  • fix(build): add missing totalSize variable declaration
  • feat: add backup duration and size to completion report
  • fix(service): never emit Wails events from service process
  • debug: add trace logs to find backup hang point
  • fix(critical): prevent service infinite loop on mode re-detection
  • feat(scheduler): enhanced debug logging
  • fix(logs): separate files per process to avoid conflicts
  • fix(logs): separate GUI and Service log files
  • fix(mode): re-detect service mode on each backup
  • fix(progress): callback race condition for concurrent backups
  • chore: bump version to v0.1.82
  • fix(test): real HTTP test for PBS connection
  • chore: bump version to v0.1.81
  • fix(service): reload config before each backup + UX improvements
  • chore: bump version to v0.1.80
  • fix(frontend): backup-id fallback + smart VSS warnings
  • fix(vss): admin check only in standalone mode, not service
  • fix(critical): hardcoded ProgramData fallback for service logs
  • fix(backup): fallback to hostname when backup-id is empty
  • feat(ux): test connection without saving config first
  • fix(frontend): safe trim() for undefined config fields
  • feat(progress): wire real-time backup progress to API server
  • fix(sec): suppress gosec G703 false positives for ProgramData paths
  • fix(CRITICAL): unified config location - service now has PBS config
  • feat(logs): unified log location in ProgramData
  • chore: bump version to v0.1.70
  • fix(build): remove unused pbsBackupType variable
  • fix(scheduler): use StartBackup for proper mode routing + debug logs
  • fix(service): proper stop mechanism for clean upgrades
  • chore: bump version to v0.1.67
  • fix(lint): use for range instead of for-select pattern
  • fix(service): execute backups directly with admin privileges
  • fix(build): resolve BackupHandler interface type mismatch
  • fix(service): prevent crash on backup execution
  • feat(api): integrate HTTP API for GUI-Service communication
  • fix(service): enable service startup and graceful shutdown
  • fix: golangci-lint errcheck violations and version sync
  • chore: bump version to v0.1.60
  • fix(api): use standard log package instead of undefined writeDebugLog
  • chore: bump version to v0.1.59
  • fix(api): make backup async to prevent HTTP timeout
  • docs(todo): clarify multi-server as multi-job architecture
  • docs(todo): add multi-server PBS support feature
  • feat(api): add HTTP client/server architecture for GUI-Service communication
  • docs: improve enterprise deployment with config JSON approach
  • docs: add comprehensive TODO and trim release notes
  • chore: bump version to v0.1.58
  • feat(msi): add GPL v3 license from upstream
  • fix(msi): don't start service during installation
  • chore: bump version to v0.1.57
  • fix(msi): add Platform=x64 to Package for 64-bit installer
  • chore: bump version to v0.1.56
  • fix(msi): remove custom image references to use WiX defaults
  • chore: bump version to v0.1.55
  • fix(lint): correct error string formatting for staticcheck ST1005
  • chore: bump version to v0.1.54
  • fix(ci): remove deprecated gosimple linter for golangci-lint v2.11.3
  • chore: bump version to v0.1.53
  • feat(ci): add manual workflow for dependency updates
  • feat(ci): add dependency update checker + fix golangci-lint v2.11.3
  • chore: bump version to v0.1.52
  • fix(ci): remove go mod download for local workspace modules
  • chore: bump version to v0.1.51
  • refactor(ci): switch to reproducible dependency management
  • fix(ci): complete dependency updates and golangci-lint v2.11.3 compatibility
  • chore: bump version to v0.1.50
  • chore(deps): upgrade all modules to Go 1.25 and update CI
  • chore: bump version to v0.1.49
  • feat(ci): add MSI installer to build artifacts
  • feat(cleanup): remove legacy auto-start on app startup
  • chore: upgrade to Go 1.25 + bump v0.1.48
  • chore: bump version to 0.1.47
  • fix(service): correct GetConfigWithHostname() call signature
  • chore: bump version to 0.1.46 + fix gui/go.mod to 1.23
  • fix(ci): specify go 1.23.0 in go.work for exact version match
  • chore: bump version to 0.1.45
  • fix(ci): upgrade to Go 1.23 for kardianos/service compatibility
  • feat(msi): add Windows Service installer with WiX
  • feat(workflow): add 'Tested with NimbusBackup' section to releases
  • docs(readme): add managed service section without DC details
  • feat(docs): add release notes system with auto-update
  • fix(gui): systray icon + auto-start with admin + double launch
  • feat(gui): add edit scheduled jobs + limit history display
  • chore: bump version to 0.1.40
  • fix(gui): improve tray icon, add manual backups to history, cleanup abandoned jobs
  • fix(ci): handle missing GUI_README.md gracefully
  • chore: bump version to 0.1.39
  • fix(gui): single history entry and auto-update support
  • chore: bump version to 0.1.38
  • fix(gui): prevent double job execution and enable minimize to tray
  • chore: bump version to 0.1.37
  • fix(lint): check all error return values in scheduler.go
  • chore: bump version to 0.1.36
  • test: remove obsolete jobs_test.go (old architecture)
  • chore: bump version to 0.1.35
  • fix(gui): add build tags for tray and move HandleStartupRun to scheduler
  • chore: bump version to 0.1.34
  • fix(gui): add build tags for Windows-only autostart
  • feat(gui): add scheduled backup mode with system tray
  • feat(service): add background service for scheduled backups
  • feat(ci): add standalone .exe to GitHub releases
  • chore: remove internal documentation from public repo
  • feat: single source of truth for version (wails.json only)
  • chore: bump version to 0.1.32
  • fix(ci): disable duplicate tag trigger on release.yml
  • fix(build): NBD is Linux-only, not Windows/macOS
  • chore: bump version to 0.1.31
  • feat(gui): add upsell links to Nimbus Backup storage
  • fix(build): skip NBD build on macOS (Linux/Windows only)
  • chore: bump version to 0.1.30
  • fix(cli): remove all Go 1.23 slices.Collect usage
  • chore: bump version to 0.1.29
  • fix(cli): replace Go 1.23 slices.Collect with Go 1.22 compatible code
  • feat(gui): fix progress regression + remember last backup dirs
  • fix(backup): graceful file access error handling + skipped files reporting
  • fix: cleanup HTTP/2 connections before reconnecting
  • fix(build): remove unused encoding/json import
  • fix(critical): detect and skip Windows junction points gracefully
  • debug: add comprehensive logging for CreateDynamicIndex
  • fix(gui): use dynamic version from backend instead of hardcoded
  • debug: add comprehensive logging for PBS HTTP/2 upgrade request
  • fix(critical): add missing Host header to HTTP/1.1 upgrade request
  • fix(critical): expose real PBS error in authentication failures
  • chore(release): bump version to 0.1.19
  • fix(build): remove remaining errors.New reference
  • chore(release): bump version to 0.1.18 - critical PBS error fix
  • fix(pbs): improve error handling in CreateDynamicIndex
  • fix(build): add replace directives for local modules in CLI tools
  • chore(release): bump version to 0.1.17 - 100% lint compliance
  • fix(lint): change fmt.Errorf(variable) to errors.New(variable)
  • chore(release): bump version to 0.1.16
  • fix(ci): run golangci-lint directly instead of via action
  • chore(release): bump version to 0.1.15
  • fix(lint): handle error returns for Setenv and Close calls
  • chore(release): bump version to 0.1.14
  • fix(ci): add golangci-lint config for better error reporting
  • chore(release): bump version to 0.1.13
  • fix(ci): align GitLab CI lint job with GitHub Actions
  • fix(lint): change fmt.Fprintf to fmt.Fprint for non-format strings
  • chore(release): bump version to 0.1.12
  • fix(ci): add GOWORK=off to golangci-lint step
  • fix(ci): use dynamic version in release notes from CHANGELOG
  • docs: update README to focus on Nimbus Backup
  • fix(lint): change log.Printf to log.Print in machinebackup
  • chore(release): bump version to 0.1.10
  • fix(lint): change log.Printf to log.Print in nop_snapshot
  • chore(release): bump version to 0.1.9
  • fix(lint): change Printf to Print for non-format strings
  • chore(release): bump version to 0.1.8
  • fix(security): add nosec annotation for validated path
  • chore(release): bump version to 0.1.7
  • fix(security): validate log directory path before creation
  • chore(release): bump version to 0.1.6
  • fix(ci): add go mod tidy before tests and linting
  • chore(release): bump version to 0.1.5
  • fix(deps): fix Go version in all module go.mod files
  • chore(release): bump version to 0.1.4
  • fix(tests): fix module imports in pkg test files
  • fix(modules): simplify pkg module names for proper resolution
  • fix(deps): add go.mod for pkg modules and fix Go version
  • feat(v0.1.2): Phase 2 tests + Phase 3 security hardening
  • feat(v0.1.1): network resilience and CI/CD improvements
  • docs: add comprehensive TODO.md with project roadmap
  • fix(ci): resolve golangci-lint errors and rename binary to NimbusBackup
  • docs: update CHANGELOG with Phase 1 refactoring achievements
  • refactor(machinebackup): improve error handling and remove panic calls
  • refactor: add comprehensive error handling to PXAR and chunking
  • fix: syntax error in main.go and improve error handling in directorybackup
  • feat: unified build system + security hardening infrastructure
  • docs: update README with GUI focus and RDEM Systems links
  • refactor: single source of truth for version (wails.json)
  • chore: bump version to 0.1.0 and update changelog
  • feat(gui): add professional progress display with stats
  • feat(gui): accurate progress with background size calculation
  • feat(gui): add granular progress tracking during backup
  • feat(gui): improve backup progress UI
  • chore(gui): temporarily disable machine backup feature
  • fix(gui): replace Go 1.23 functions with Go 1.22 compatible code
  • feat(gui): auto-detect physical disks with user-friendly labels
  • feat(gui): implement PhysicalDrive backup for machine mode
  • fix: add trailing backslash to drive letters for full disk backup
  • feat: real-time backup progress with Wails events
  • feat: add VSS admin warning in UI
  • fix: remove Connect() call before ListSnapshots
  • fix: handle missing previous backup on first backup
  • fix: test connection in backup mode instead of reader
  • fix: remove unused runtime import
  • fix: add missing pbscommon import + Windows build tags
  • fix: implement real connection test + trim config + debug auth
  • feat: add admin privilege check for VSS backups
  • fix: use Windows AppData for logs instead of home directory
  • fix: rename log directory to .nimbus-backup
  • feat: version 0.0.16 + editable backup-id + auto-fill restore
  • fix: correct assignment errors and type conversions
  • feat: implement functional restore with snapshot listing
  • feat: implement functional backup with PXAR and deduplication
  • fix: show backup-id from config with fallback to hostname
  • fix: display hostname in config tab and show proper backup error
  • fix: add missing time import and downgrade dependencies for Go 1.21
  • fix: correct PBSClient instantiation and go version compatibility
  • feat(gui): multi-select for directories and drives + inline backup/restore
  • fix(gui): hostname integration + backup error message
  • feat(gui): integrate real backup/restore + hostname state + Nimbus icon
  • fix: remove BackupDir validation, add hostname pre-fill, update version to 0.0.7
  • fix: update website URL to nimbus.rdem-systems.com
  • fix: errcheck lint errors + correct Wails CLI installation
  • fix: remove app.go duplicate + disable npm cache
  • fix(ci): remove YAML-breaking heredoc in workflow
  • fix(ci): remove GoReleaser workflow, keep only Wails
  • fix(ci): exclude GUI tags from GoReleaser workflow
  • feat(gui): robust Wails build with crash recovery and .json/.txt config support - tag v0.0.2-gui
  • feat(gui): robust Wails build with crash recovery and .json/.txt config support
  • feat: Proxmox Backup Client Go with GUI

πŸ” SHA-256 checksums

Verify with Get-FileHash <file> -Algorithm SHA256 (PowerShell) or sha256sum -c SHA256SUMS.txt.

395ba503ebd8789881f948c2b13c83756c06d3be444a00d2b1d992b928b0f681  AcmeBackup-1.2.0-rc.1.msi
524e57b5e7c49be5e03997c7b87ebfa0a32b48cbf754d5d7e0b672a5f17e0e79  EtitechBackup-1.2.0-rc.1.msi
84099c3c14dbd6ad5d42e3bcf8aa5f55a27da75d2ffcf2c2da05259dbc9cd04e  NimbusBackup-1.2.0-rc.1.msi
fbca65c247b7a16a2e6e6e1b41065bc106b19991e589560b45019a4dd273b293  ProxmoxBackupClient-1.2.0-rc.1.msi
36e12c2613bdc30e54e3076021022c97dae75e769f57b00ccc88f390f13f9133  proxmoxbackup-cli-v1.2.0-rc.1-linux.tar.gz
0a3af47861d53017379373a657f12791224af65fb8ada32ac58cb27acfc7f9b9  proxmoxbackup-cli-v1.2.0-rc.1-macos.tar.gz
a409a217b74eadd7cb437357af7e48081f3dc0cffa639cf3386b53ec0ab6cd8d  proxmoxbackup-cli-v1.2.0-rc.1-windows.zip

Proxmox Backup Client β€” Status & notes

Per-version changes are listed in the β€œChanges since…” section of each release (above) and in CHANGELOG.md. This page describes the stable state of the product.

πŸ“¦ Available builds

ProxmoxBackupClient.msi (installer β€” recommended for production)

  • βœ… Windows service: starts automatically at system boot
  • βœ… Persistent admin privileges: the service runs as LocalSystem (VSS guaranteed)
  • βœ… Scheduled backups: run automatically, even after a reboot
  • βœ… Clean uninstall: full cleanup via Control Panel

ProxmoxBackupClient.exe (standalone)

  • βœ… Manual and scheduled backups: work as long as the app is running
  • ❌ No persistence across reboots: no service β†’ prefer the MSI in production
  • πŸ’‘ Use case: one-off backups or testing

βœ… Features

Backup & restore

  • One-shot (immediate) and scheduled (configurable time) backups
  • Auto-split of large backups (>100 GB) into balanced jobs (~100 GB) with per-job retry
  • VSS (Volume Shadow Copy) for consistent backups
  • File/folder exclusions + automatic exclusion of Windows system folders (System Volume Information, $RECYCLE.BIN, pagefile.sys…)
  • Snapshot restore and browsing (fast catalog reads)
  • Robust long-running backups (30 s keep-alive, validated on 11 h+ backups)
  • Multi-server PBS support

Interface & configuration

  • Wails GUI (Go + React), in English and French
  • Backup history and re-run of failed jobs
  • Progress bar with statistics, minimize to tray
  • PBS configuration with connection test, certificate fingerprint pinning (TOFU) and namespaces

πŸ“Œ Known issues

  • ⚠️ The standalone .exe does not persist across reboots β†’ use the MSI in production.
  • ⚠️ The exclusion format is not validated on input.

Tested with Proxmox Backup Server

This release has been tested against Proxmox Backup Server β€” see the project repository.


Proxmox Backup Client β€” GitHub Β· Forum

Proxmox Backup Client β€” Releases

Don't miss a new proxmoxbackupclient_go release

NewReleases is sending notifications on new releases.