Skip to content

Commit

Permalink
Release v0.17.0
Browse files Browse the repository at this point in the history
  • Loading branch information
mtkennerly committed Apr 9, 2023
1 parent 8fb0d6a commit cf84623
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 13 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ body:
label: Ludusavi version
description: If you're not using the latest version, please update and make sure the problem still occurs.
options:
- v0.17.0
- v0.16.0
- v0.15.2
- v0.15.1
Expand All @@ -16,7 +17,6 @@ body:
- v0.13.0
- v0.12.1
- v0.12.0
- v0.11.0
- Older
validations:
required: true
Expand Down
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## Unreleased
## v0.17.0 (2023-04-09)

* Added:
* A new "removed" status (icon: `x`) is now displayed for saves.
Expand Down
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,4 @@ Also install the Crowdin CLI manually.
* Update the translation percentages in src/lang.rs
* Run `cargo build` to update the version in Cargo.lock
* Add the new version to `.github/ISSUE_TEMPLATE/*.yaml`.
* Update the README if necessary for any new features.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "ludusavi"
version = "0.16.0"
version = "0.17.0"
authors = ["mtkennerly <mtkennerly@gmail.com>"]
edition = "2021"
description = "Game save backup tool"
Expand Down
53 changes: 47 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -195,12 +195,23 @@ You can also use keyboard shortcuts to swap the three-dot menu with some specifi

During a restore, Ludusavi only considers folders with a `mapping.yaml` file.

### Search
You can click the search icon and enter some text to just see games with
matching names. Note that this only affects which games you see in the list,
### Filter
You can click the filter icon at the top of the backup/restore screens to use some filters.
Note that this only affects which games you see in the list,
but Ludusavi will still back up the full set of games.

Sorting options are also available while the search bar is open.
You can apply filters for the following:

* Whether the game title matches a search.
* Whether multiple games have the same save files:
* `Unique` (no conflicts)
* `Duplicated` (conflicts exist)
* Whether all save files for a game are enabled for processing:
* `Complete` (all saves enabled)
* `Partial` (some saves disabled)
* Whether the game itself is enabled for processing:
* `Enabled` (checkbox next to game is checked)
* `Disabled` (checkbox next to game is unchecked)

### Duplicates
You may see a "duplicates" badge next to some games. This means that some of
Expand All @@ -209,6 +220,10 @@ the same files were also backed up for another game. That could be intentional
also be a sign of an issue in the manifest data. You can expand the game's
file list to see which exact entries are duplicated.

You can resolve conflicts by disabling certain save files from being backed up.
Once a conflict is resolved, the badge will become faded.
You can also click on the badge to view just the conflicting games.

### Redirects
You can use redirects to back up or restore to a different location than the original file.
These are listed on the "other" screen, where you can click the plus button to add more
Expand Down Expand Up @@ -328,9 +343,11 @@ For the `backup`/`restore` commands:
* `values` (optional, map): Any registry values inside of the registry key.
* `change` (string): Same as game-level field, but for a specific backup item.
* `ignored` (optional, boolean): Whether this entry was ignored.
* `duplicatedBy` (optional, array of strings): Any other games that
also have the same registry key+value.

The `backups` command is similar, but without `overall`, and with each game containing
`{"backups": [ {"name": <string>, "when": <string>} ]}`.
`{"backups": [ {"name": <string>, "when": <string>, "comment": <string>} ]}`.
The `find` command also does not have `overall`, and each game object is empty.

Note that, in some error conditions, there may not be any JSON output,
Expand Down Expand Up @@ -386,6 +403,9 @@ Here are the available settings in `config.yaml` (all are required unless otherw
<details>
<summary>Click to expand</summary>

* `runtime` (map):
* `threads` (integer): How many threads to use for parallel scanning.
Must be greater than 0.
* `manifest` (map):
* `url` (string): Where to download the primary manifest.
* `etag` (string or null): This field is deprecated and has been superseded by cache.yaml.
Expand Down Expand Up @@ -450,7 +470,7 @@ Here are the available settings in `config.yaml` (all are required unless otherw
to control individual registry values as well.
Settings on child paths override settings on parent paths.
* `sort` (map):
* `key` (string): One of `name`, `size`.
* `key` (string): One of `name`, `size`, `status`.
* `reversed` (boolean): If true, sort reverse alphabetical or from the largest size.
* `retention` (map):
* `full` (integer): Full backups to keep. Range: 1-255.
Expand All @@ -475,6 +495,10 @@ Here are the available settings in `config.yaml` (all are required unless otherw
* `sort` (map):
* `key` (string): One of `name`, `size`.
* `reversed` (boolean): If true, sort reverse alphabetical or from the largest size.
* `scan` (map):
* `showDeselectedGames` (boolean): In the GUI, show games that have been deselected.
* `showUnchangedGames` (boolean): In the GUI, show games that have been scanned, but do not have any changed saves.
* `showUnscannedGames` (boolean): In the GUI, show recent games that have not been scanned yet.
* `customGames` (optional, list):
* Each entry in the list should be a map with these fields:
* `name` (string): Name of the game.
Expand All @@ -498,6 +522,23 @@ restore:
</details>
### Environment variables
Environment variables can be used to tweak some additional behavior:
<details>
<summary>Click to expand</summary>
* `RUST_LOG`: Configure logging.
Example: `RUST_LOG=ludusavi=debug`
* `LUDUSAVI_DEBUG`: If this is set to any value,
then Ludusavi will not detach from the console on Windows in GUI mode.
It will also print some debug messages in certain cases.
Example: `LUDUSAVI_DEBUG=1`
* `LUDUSAVI_THREADS`: Overrive the `runtime.threads` value from the config file.
Example: `LUDUSAVI_THREADS=8`

</details>

## Comparison with other tools
There are other excellent backup tools available, but not a singular
cross-platform and cross-store solution:
Expand Down
3 changes: 2 additions & 1 deletion assets/com.github.mtkennerly.ludusavi.metainfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@
</description>
<screenshots>
<screenshot type="default">
<image type="source">https://raw.githubusercontent.com/mtkennerly/ludusavi/v0.16.0/docs/sample-gui-linux.png</image>
<image type="source">https://raw.githubusercontent.com/mtkennerly/ludusavi/v0.17.0/docs/sample-gui-linux.png</image>
<caption>Graphical user interface</caption>
</screenshot>
</screenshots>
<content_rating type="oars-1.1" />
<launchable type="desktop-id">com.github.mtkennerly.ludusavi.desktop</launchable>
<releases>
<release version="0.17.0" date="2023-04-09"/>
<release version="0.16.0" date="2023-03-18"/>
<release version="0.15.2" date="2022-12-22"/>
<release version="0.15.1" date="2022-11-25"/>
Expand Down
5 changes: 3 additions & 2 deletions tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,9 @@ def clean(ctx):


@task
def prerelease(ctx):
def prerelease(ctx, update_lang=True):
clean(ctx)
legal(ctx)
flatpak(ctx)
lang(ctx)
if update_lang:
lang(ctx)

0 comments on commit cf84623

Please sign in to comment.