Skip to content

Releases: creativeprojects/resticprofile

v0.33.1

15 Apr 15:01
49102a5

Choose a tag to compare

Bug fix

Fix crash on new Apple M5 Pro/Max hardware due to an old dependency #628

Changelog

  • b71b27a fix changelog after release
  • 49102a5 update dependencies to use gopsutil v4

v0.33.0

04 Apr 12:22
9653541

Choose a tag to compare

🌸 Easter release 🥚

This release delivers a preview of a new Client/Server mode, Fish shell completions, Windows scheduling enhancements, and several dependency and toolchain upgrades.

Please note the documentation for the Client/Server mode is not available yet.

New Features

Client/Server Mode PREVIEW

  • Remote configuration delivery: resticprofile can now send a configuration profile to a remote server, enabling centralized management of backup profiles across multiple hosts.
  • A new remote section in the configuration allows specifying the server address and credentials for the client/server communication.

Fish Shell Completions

  • Fish shell support: Added shell completion script generation for the Fish shell (--fish-completion flag in the generate command).

Windows Scheduling: Start When Available

  • New schedule-start-when-available option: When a scheduled task is missed (e.g. because the machine was off), Windows Task Scheduler will now start it as soon as the machine is available again.

Bug Fixes

Scheduling Fixes

  • Battery power: Fixed a bug where Windows Task Scheduler tasks were incorrectly set to not start when running on battery power, regardless of battery state.
  • launchd log paths: When schedule-log is configured in a profile, resticprofile now omits the StandardOutPath/StandardErrorPath entries from the launchd plist, preventing the creation of empty log files.

Maintenance and Toolchain

  • Upgraded to Go 1.26
  • Upgraded golangci-lint to v2

⚠️ Breaking changes ⚠️

This release introduces two breaking changes in resticprofile exit codes during a failure:

Failure because of low memory

When resticprofile failed to start because the memory remaining is under the threshold in the configuration, the exit code is now 5 and no longer 1

Failure to find any restic binary

When resticprofile failed to start because it couldn't find any restic binary, it now fails with exit code 6 and no longer 1

New contributors

Thanks to @gr1da, @wyattjoh, @hollowhemlock and other contributors for their help in this release 🎉

Changelog

  • 4181598 Add Fish Shell Completions (#601)
  • 81a47cf Client/Server mode: sending configuration profile to a remote server (#377)
  • a64f02c Feature/589 windows start when available (#590)
  • 736da3f Fix typo in docker docs (#566)
  • e2ffdfb Fix windows scheduler flaky tests (#533)
  • ca2ff90 Upgrade golangci lint to v2 (#562)
  • 9653541 build without fuse code on unsupported platforms
  • 1906875 chore: update GitHub Actions workflows and dependencies, remove SonarCloud integration (#608)
  • 7bfce0b chore: update GitHub Actions workflows and improve test coverage (#612)
  • cc4cec9 chore: upgrade docker/setup-qemu-action to v4 in workflows
  • e03d9cd chore: upgrade goreleaser action to v7 in workflows
  • 2c47715 chore: upgrade packages
  • cc27dd2 chore: upgrade to go 1.26 (#610)
  • fd44cf6 ci: update GitHub Actions workflow for documentation build and deployment (#618)
  • 4d2a7b5 code modernisation (#611)
  • 3c2965e don't check broken links on stackoverflow, it returns too many 403 errors (anti bot detection)
  • dd15110 fix(schedule): allow task scheduling when on battery power (#609)
  • b4984af fix(schedule): omit launchd log paths when schedule-log is configured (#600)
  • 00f3f2d refactor: remove Node.js dependency and update JSON schema tests to use Go-based validation (#563)
  • 70fd44b refactor: replace magic numbers with named exit codes (#615)
  • c219cf1 refactor: simplify condition for including description in completions

v0.32.0

26 Sep 09:08
f222ed2

Choose a tag to compare

🍁 Autumn release 🍂

This release brings significant improvements to scheduling, HTTP hooks, configuration handling, and copy operations, along with important bug fixes and dependency updates.

New Features

Enhanced Copy Command Support

  • Copy from repository: Added support for specifying source repositories in copy operations with new from-repository, from-password-file, from-password-command, and other from-* configuration options.
  • This enables more flexible backup copying workflows between different repositories.

Improved Windows Task Scheduler Integration

  • Run Level Control: New schedule-run-level option allows setting task privilege levels (lowest, highest, auto) for Windows Task Scheduler.
  • Hide Window Option: New schedule-hide-window option to prevent task windows from interrupting user activity when running with user_logged_on permission.
  • Enhanced Task Management: Completely rewritten task information parsing to fix issues with spaces in filenames.

Template Function Enhancements

  • Random Number Generation: New randInt template function for generating pseudo-random numbers with seeded repeatability.
  • Usage: {{ "seed" | randInt low high }} - useful for creating variable schedules or unique identifiers.

HTTP Hooks Improvements

  • URL Encoding: Automatic URL encoding applied to ERROR, ERROR_COMMANDLINE, and ERROR_STDERR environment variables when used in URLs.
  • Environment Variable Resolution: Enhanced environment variable resolution in both URL and body of HTTP hooks, with proper separation of URL and body processing.

Bug Fixes and Improvements

Signal Handling

  • Group Execution: Fixed interrupt signal handling to properly stop execution of remaining profiles in a group when Ctrl+C is pressed.

Path Resolution

  • Executable Handling: Enhanced executable path resolution on Linux to properly handle relative paths, PATH lookups, and working directory resolution.
  • Configuration Escaping: Fixed proper escaping of backup source paths in configuration to handle special characters and spaces.

Scheduling Fixes

  • Crontab Generation: Fixed crontab file generation to work without user field, improving compatibility with various cron implementations.

New contributors

Thanks to @lil5, @jeinwag, @hansmi and @zumm for their valuable help in making this new release 🎉

Changelog

  • c7e87a1 Add "randInt" template function for random number (#540)
  • f93ce20 Add copy from repository in configuration (#486)
  • de391cb [Docs] Add ~/.config/resticprofile/ to macOS default paths (#509)
  • f222ed2 add Makefile help target
  • 63dee21 add field bytes_added_packed in status file etc. (#519)
  • adf90cb enhance Executable function to handle relative paths (#537)
  • f98a2f5 feat(schedule): introduce run-level option (#546)
  • 5f1c69d feat(schedule): introduce schtasks-hide-window option (#541)
  • 461710b fix(http-hooks): apply url encoding for ERROR_* env vars (#538)
  • f9039fa fix(http-hooks): resolve profile env in url and body (#544)
  • 1dce428 fix(schedule): generate crontab files without user field (#556)
  • 25c2f06 linux: don't resolve symlink on executable to keep a constant name when installed via homebrew (#508)
  • 859da21 optimize systemctl commands (#531)
  • f748032 read task info from list format instead of CSV (#547)
  • 99e6d33 stop running other profiles in group after receiving interrupt signal (#539)
  • 720d7ee update Node.js version to 22 and upgrade dependencies in go.mod and go.sum (#543)
  • f265fa2 update SonarCloud trigger condition to check for SONAR_TOKEN presence (#542)

v0.31.0

26 May 12:00
81a6e45

Choose a tag to compare

🍸 Spring Bank Holiday release 🌞

This release includes several long-awaited improvements.

Improvements:

  • Add support for the new Restic flag exclude-cloud-files introduced in version 0.18.0 (Windows only).
  • Include missing run-* and send-* targets in all commands (previously missing in check and copy commands).
  • Send Restic version as a new Prometheus metric.
  • Support .yml files when searching for configuration files (previously only .yaml was considered).

Bug fixes:

  • Ignore missing drop-in files to prevent creating an empty systemd schedule.

Changelog

  • f7566ac Add missing run-* and send-* to all command sections (#504)
  • 88fcedb add support for windows only flag exclude-cloud-files (#500)
  • 81a6e45 add support for yml extension when searching for configuration file (#506)
  • 43b6c84 add version of restic to the Prometheus metrics (#495)
  • 763a2cd fix: remove duplicated field
  • c3add93 ignore missing drop-in files to avoid creating an empty configuration (#502)
  • 8fd3ddb replace deprecated sonar scan action (#503)

v0.30.1

05 May 20:30
ceff435

Choose a tag to compare

🐛 Bug fix release 🐞

This releases fixes a regression bug when scheduling system tasks with systemd: in some cases the HOME directory was replaced by the home directory of the user who ran the sudo command

Bug report: #493

Changelog

  • ceff435 fix root home regression bug in 0.30.0 (#497)

v0.30.0

04 Apr 20:37
aab1a70

Choose a tag to compare

🌱 Spring release 🌸

This release introduces features and fixes for profile scheduling.

⚠️ Breaking change

Until this release, the user scheduling permission was broken. With systemd or the default macOS scheduler, the permission functioned as user_logged_on, running the profile only when the user was logged in.

This issue is now fixed for new schedules.

To update existing schedules, run unschedule and then schedule again.

For systemd, resticprofile requires root privileges (via sudo) to schedule with user permission, as it now uses a system unit running as the user.

Scheduler

Scheduling has been significantly improved with the ability to read existing schedules. The status and unschedule commands now detect any resticprofile schedules from the selected configuration file, even if the profile is no longer present.

Due to recent error reports, Windows Task Scheduler integration has been completely rewritten to use the schtasks CLI tool.

Other

  • Fixed issue with non-existent battery reported on recent Mac desktop hardware.
  • Added support for Restic 0.18.
  • Included pre-built binary for Windows on ARM64.
  • Upload Resticprofile container to GitHub Container Registry.

Changelog

v0.29.1

06 Feb 17:24
e2297a6

Choose a tag to compare

❄️ Small maintenance release ☃️

Not much going on in this maintenance release while I'm still working on a big refactoring of the scheduling for the next release.

  • logrotate package added to the Docker image
  • upgrade dependencies to fix security vulnerabilities

Changelog

v0.29.0

28 Oct 16:22
1b03be4

Choose a tag to compare

🧙🏻‍♀️ Halloween edition 🎃

  • Finally a long standing bug was fixed in this version: use proper nice and ionice values on systemd scheduled tasks.
  • Also the last chunk of work for the configuration v2: we can now schedule groups!
  • Improvement on the JSON schema: a single URL can be used for v1 and v2 configuration
  • Another long standing bug on Windows: escape configuration file path on scheduled tasks

Changelog

v0.28.1

02 Oct 20:53
249fd41

Choose a tag to compare

🍂 Autumn bug fixing 🍁

  • fix JSON schema for TOML files that stopped working some time ago (when using Even Better TOML extension on VSCode)
  • [configuration v2] fix regression bug where profile groups were stopping after an error when the continue-on-error flag was set

Changelog

v0.28.0

17 Aug 19:15
3b42e4a

Choose a tag to compare

🌞 Sunny Summer Edition 🌻

Two big things in this release:

  • support for all the new commands and flags of restic 0.17
  • experimental support for environment variables in configuration flags

Example of using environment variables in configuration:

check-repo-profile:
    inherit: default

    run-before:
        - "echo DOW=`date +\"%u\"` >> {{ env }}"

    check:
        read-data-subset: "$DOW/7"

Changelog