When running legendary through Wine and `XDG_CONFIG_HOME` is set in the environment,
`config_path` resolves to the absolute path to the Linux config directory. Wine in turn
resolves the path in the way that Legendary uses the existing Linux host config
directory instead of creating/using the one under Wine prefix in `%USERPROFILE%\.config`
* [egs] add methods to fetch game and user achievements from graphql api
* [lfs] add methods to store and load user achievements
* [core] fetch game achievements when updating assets and user achievements when requested
* [cli] add CLI interface for achievements
* [cli] Fix achievement classification filters
* [cli,core] Move achievement classification into LegendaryCore
There's no need for iterating twice
* [core] Check if achievements exists
some games have achievements_sets but no achievements
* [core] Associate user achievements with the namespace instead of app_name
* [core] sort achievements
* [cli/core]: report grant date information with `info`
Entitlements are updated only when there is an asset update. If no matching
entitlement is found, the creation date from the game's metadata is returned
instead.
* [cli] replace missed use of entitlements with cached/on-disk data
* [core] update entitlements only when there are new assets.
* [cli] correctly pass `get_assets` platform argument
* fix: add 3rd param to setexchangecode callback
I'm unsure what that param is, it could be an error indicator of some sorts, for now I'll just assume a happy path
* chore: add logging for the param
* Handle file tasks case-insensitively
* Also make verification and uninstallation case-insensitive if necessary
This also only enables case-insensitive file tasks if installing a
Windows game
* Fastpath for existing path case
"Fastpath", heh, get it, because it's working with paths...
* Move to pyproject.toml and the uv build system
* A few tweaks that should make it even faster
* Add pyinstaller to optional dependencies and install it as part of the workflow
* Use --no-editable to avoid building and installing Legendary manually
* Drop deprecated license classifier
* Update README.md to mention uv
* feat: support encrypted manifests and chunks
fix: ensure manifest_secrets is always defined in info
fix: update all usage of DLManager with manifest secrets
* chore: remove unused is_preloaded var
Some UE asset manifests seem to have `"OwnershipToken": ""` instead
of something `strtobool` could understand. When trying to import these
through `egl-sync` an exception is being raised, which blocks importing
other titles too.
The other use of `strtobool` is in `LGDRY_NO_WINE` environment variable,
which also causes an exception if set as `LGDRY_NO_WINE=`