Skip to content

Releases: mtkennerly/ludusavi

v0.13.1 (2022-09-29)

29 Sep 07:08
74cacbc
Compare
Choose a tag to compare
  • Fixed:
    • In GUI mode on Windows, an extra console window appeared.
    • In CLI mode, when restoring with redirected paths, the original paths were not shown correctly.

v0.13.0 (2022-09-28)

27 Sep 21:18
539f223
Compare
Choose a tag to compare
  • Added:
    • File-based logging in the same directory with the config and manifest files. By default, only warnings and errors are logged, but you can customize this by setting the RUST_LOG environment variable (e.g., RUST_LOG=ludusavi=debug). The most recent 5 log files are kept, rotating on app launch or when a log reaches 10 MiB.
    • On Windows, %LocalAppData%/VirtualStore will be checked for potential matches of:
      • C:/Program Files
      • C:/Program Files (x86)
      • C:/ProgramData
      • C:/Windows
    • Updated translations. (Thanks to contributors on the Crowdin project)
  • Changed:
    • Removed the option to "exclude save locations that have only been confirmed on another operating system" (config key: excludeOtherOsData). This was primarily meant as an optimization for Windows users, but in practice, it made little difference on Windows and would rarely be desired on other platforms, leading to confusion.
  • Fixed:
    • When looking for game install folders during a full scan, Ludusavi did not recognize partial folder name matches. ([Investigated by sluedecke][https://github.com//issues/123])
    • When restoring a backup that was made on a different OS, it could get stuck before completing the process. (Contributed by Hizoul)
    • GUI: Window now appears immediately and updates the manifest in the background, rather than waiting to show the window until the update is complete. If there is no local manifest at all, a loading screen is shown while downloading.

v0.12.1 (2022-08-31)

31 Aug 08:49
bf250ef
Compare
Choose a tag to compare
  • Fixed:
    • Updated translations, including new ones for Esperanto and Korean (the latter being experimental via the config file). This was meant to be included in 0.12.0, but was missed during the release preparation. (Thanks to contributors on the Crowdin project)

v0.12.0 (2022-08-31)

31 Aug 06:54
d8ab9b3
Compare
Choose a tag to compare
  • Added:
    • GUI: Dark theme.
    • GUI: On app startup, games found during the most recent scan will be displayed in an "unknown" state, allowing you to re-scan any of those specific games on demand without doing a full scan of all games. This is especially useful if full scans are slower on your system and you just want to back up one game.
    • GUI: Added an option to re-preview a specific game on demand. This and other per-game actions have been grouped into a popup menu to save space. You can use keyboard shortcuts to convert the menu into some specific shortcuts:
      • preview: shift
      • backup/restore: ctrl (Mac: cmd)
      • backup/restore without confirmation: ctrl + alt (Mac: cmd + option)
    • CLI: backups command to list backups for each game, and a --backup flag to restore a specific backup by ID.
    • On Linux, GOG roots now additionally check for a game subfolder when parsing the <base> and <game> placeholders. (contributed by sluedecke)
    • The Steam root for Flatpak is now auto-detected.
    • If you set the LUDUSAVI_DEBUG environment variable, then Ludusavi will not detach from the console on Windows. This may be helpful if you want to troubleshoot an issue that involves Ludusavi crashing.
  • Changed:
    • GUI: You can now use folder pickers while a backup/restore is underway.
    • GUI: If all of a game's files are deselected, then the game will show in the same style as a disabled game.
  • Fixed:
    • Performance regressions from v0.11.0 related to duplicate detection and root globbing.
    • CLI: restore --by-steam-id 123 would restore all games with a Steam ID instead of just the game with the matching ID 123.
    • CLI: When using --api, some non-JSON errors would be printed instead of or in addition to the JSON info in certain situations. Now, as long as the CLI input itself can be parsed, the output will either be valid JSON or blank.
    • GUI: Cancelling a backup/restore no longer has a long delay.
    • GUI: Doing a full preview, backing up one game, and then doing a full backup would trigger a full scan instead of reusing the list from the initial preview.
    • GUI: When backing up a single game by using the button next to its name, other games with duplicate files did not update their duplicate status.
    • GUI: When backing up a single game by using the button next to its name, if its information changed, then it would immediately re-sort in the list. While that made sense, it could be hard to use since you would then have to go looking for its new position. Now, the position stays stable unless you do a new full scan or manually change the sorting options.

v0.11.0 (2022-08-20)

20 Aug 05:23
6473a3c
Compare
Choose a tag to compare
  • Added:
    • Support for multiple full and differential backups per game.

    • Support for compressed zip backups.

    • Translations for German, Spanish, Filipino, Italian, Polish, and Brazilian Portuguese. (Thanks to contributors on the Crowdin project)

      Note that some of these translations are still incomplete. Also, when using some translations, GUI sizing may not be optimal, but this will be further refined in the future.

      The following translations have also been added, but only have experimental support because of a technical limitation. You can enable them by editing the config file directly: Arabic (ar-SA), Simplified Chinese (zh-Hans)

    • During first-time setup, Ludusavi will now automatically detect roots for secondary Steam library folders (Windows/Linux/Mac) and non-default Epic install folders (Windows).

    • It is now possible to ignore paths for backup across all games and/or for specific games.

    • GUI: Button to back up or restore an individual game from the list on demand.

    • GUI: Button to find and add any missing roots. This is the same functionality as the automatic first-time setup, but is now available on demand.

    • Option to sort the game list by file size and to reverse the sorting.

    • Support for Prime Gaming roots.

    • Support for globs in root paths.

    • On Windows, the version field is now set in the executable properties.

    • On Windows, the executable icon is now included in the crates.io release as well.

    • CLI: Blank line between games for better readability.

  • Fixed:
    • GUI: Unable to start on KDE 5.25.3 when using Wayland.
    • GUI: Performance has been improved generally, including for very large results (1,000+ games).
    • GUI: Unresponsive while deleting the backup directory with merge disabled if the folder was very large.
    • GUI: Improved spacing/padding consistency between some elements.
    • Removed /games from the end of the default Uplay (Ubisoft Connect) root paths. The new default is C:/Program Files/Ubisoft/Ubisoft Game Launcher.
    • Crash when launching Ludusavi after the user manually deleted the manifest.
    • If duplicate files were found while a game's file list were already open, then the files would not immediately be marked as duplicates until you closed and reopened the file list.
  • Changed:
    • Localization now uses Project Fluent instead of pure Rust code internally. If you'd like to help translate Ludusavi, check out the Crowdin project.

    • Previously, as an optimization, Ludusavi would remember the games it found from its first backup/preview and only re-check those games on subsequent backups, until certain configuration changes were made (e.g., adding a root). However, this had the side effect that newly installed games may not be detected right away without an obvious reason why.

      Now, every preview will trigger a full scan. After a preview, doing a backup will only include the games found in the preview. If you then do another preview or consecutive backup, then it will be a new full scan. This ensures Ludusavi will find newly installed games, but it still optimizes for the common case of doing a preview immediately followed by a backup.

    • Previously, when Ludusavi backed up a symlink, the backup would contain a normal folder with the symlink's name and copies of any files inside of the symlink target. If the symlink target itself were also included in the list of things to back up, then the same files would be duplicated (once under the original directory name and once under the symlink name).

      Now, Ludusavi will still follow symlinks and back up their targets, but it will not back up the symlink itself or duplicate the files.

    • When looking for game install folders, Ludusavi previously checked either the installDir entries from the manifest or the game's name, but never both at the same time, leading to some missed saves when the installDir list was incomplete or was not accurate for all stores.

      Now, Ludusavi applies a heuristic to find any install folder that is sufficiently similar to the game's title or any known installDir value. It picks the best match across all games that the install directory could possibly represent.

    • Previously, for Steam roots, Ludusavi assumed that the <storeUserId> would be a series of numbers. However, for some games, this ID may be from another launcher and may not conform to those rules. Now, Ludusavi just checks for any text, like it does for non-Steam roots.

    • The merge setting is now enabled by default.

    • The app window's minimum size has increased from 640x480 to 800x600. It may be returned to 640x480 in the future, but there are currently some limitations that make it look poor at that size.

    • GUI: Previously, the overall game/size numbers would stay at the values from the last scan, and if you started (de)selecting games, then a separate badge would show the game/size totals for the new selection. Now, the main numbers update progressively and the badge has been removed.

    • GUI: When you launch the program, if the config file is invalid, it gets reset with a default copy. Previously, this would delete the invalid copy without any means of getting it back. Now, the invalid copy is renamed to config.invalid.yaml in case you would like to inspect/fix it.

v0.10.0 (2021-03-12)

13 Mar 04:20
Compare
Choose a tag to compare
  • Added:
    • CLI: --wine-prefix option for backups.
    • GUI: Root types are now selected via a dropdown instead of radio buttons.
    • Several new root types have been added for various stores, which will allow for better store-specific path detection in the future. There is also a special type for custom home folders.
    • Custom games can now be individually disabled.
  • Changed:
    • Ludusavi now stores its configuration in a more standard location on each operating system, instead of always using ~/.config/ludusavi. (contributed by micke1m)

      • Windows: %APPDATA%/ludusavi
      • Linux: $XDG_CONFIG_HOME/ludusavi or ~/.config/ludusavi
      • Mac: ~/Library/Application Support/ludusavi

      If you've used an older version, your existing configuration will be moved automatically to the new location.

    • GUI: Switched to OpenGL by default and upgraded to Iced 0.2.0.

    • GUI: Custom games are now more visually distinct from each other.

  • Fixed:
    • The 32-bit Windows executable was not properly compatible with 32-bit systems.
    • For Proton and Wine, Ludusavi now looks for multiple variations of a few folders:
      • <winDocuments> checks ~/Documents (in addition to ~/My Documents).
      • <winAppData> checks ~/AppData/Roaming (in addition to ~/Application Data).
      • <winLocalAppData> checks ~/AppData/Local and ~/Local Settings/Application Data (instead of ~/Application Data).

v0.9.0 (2020-08-30)

30 Aug 15:07
Compare
Choose a tag to compare
  • Added:
    • An indication when a single file or registry key will be backed up by more than one game.
    • CLI: A complete command for generating shell completion scripts.
    • GUI: Info about how many games are selected, if the number is different than how many games have been processed in the backup/restore.
    • GUI: An edit button next to each game in backup mode to quickly create a custom entry for that game, pre-filled with the default info.
    • GUI: A search option to just see games with matching names.
    • GUI: A button to open a game's PCGamingWiki article so that you can more easily review or update its information.
  • Changed:
    • GUI: Each game's list of files is now a tree with collapsible folders, rather than a plain list of full paths. Performance has also been improved for very large lists.
    • GUI: The backup/restore confirmation screen now has some extra text that recommends doing a preview first.
  • Fixed:
    • When using a custom entry to override a known game, some of the original's non-overridable data would not be inherited by the custom entry (namely its Steam ID and installation directory name).
    • GUI: If the initial full scan found saves for a game, and then you created a custom entry for that game such that no saves would be found, did a scan, deleted the custom entry, and did another scan, then that scan would not find any files for the game. Now, it will correctly revert to the standard data for that game immediately.

(See also: experimental variant with OpenGL)

v0.9.0 with OpenGL (2020-08-30)

30 Aug 15:43
Compare
Choose a tag to compare
Pre-release

This is an experimental variant of v0.9.0 with OpenGL support. If the standard version doesn't work for you, then give this a try.

v0.8.0 (2020-08-10)

11 Aug 03:43
Compare
Choose a tag to compare
  • Added:
    • If you create a file called ludusavi.portable in the same location as the executable, then Ludusavi will store its config file and the manifest there as well.
  • Fixed:
    • Read-only files could only be backed up once, since the original backup could not be replaced by a newer copy, and you could not restore a backup if the original file was read-only. Now, Ludusavi will try to unset the read-only flag on backups before replacing them with newer backups, and it will try to unset the flag on target files before restoring a backup.
    • Invalid paths like C:\Users\Foo\Documents\C:\Users\Foo would be shortened to just C:\Users\Foo, which could cause irrelevant files to be backed up. Now, the extraneous C: will be converted to C_ so that it simply won't match any files or directories.
    • When some games were deselected, the disk space display only showed units for the total space, not the used space, which could lead to it showing "1.42 of 1.56 GiB", where 1.42 was actually MiB and not GiB. Units are now shown for both sides.
  • Changed:
    • When backing up or restoring a file, if it already exists with the correct content, then Ludusavi won't re-copy it.
    • In GUI mode, Ludusavi now tries to be smarter about when a full scan is needed. Previously, every backup and backup preview would trigger a full scan. Now, Ludusavi will remember which games it found and only re-scan those games (until you change your roots, change the "other" settings, or reopen the program).
    • In CLI mode, --try-update will use a default, empty manifest if there is no local copy of the manifest and it cannot be downloaded.

(See also: experimental variant with OpenGL)

v0.8.0 with OpenGL (2020-08-10)

11 Aug 04:28
Compare
Choose a tag to compare
Pre-release

This is an experimental variant of v0.8.0 with OpenGL support. If the standard version doesn't work for you, then give this a try.