From 462ada831ceca795013c8342062d43d06b0f8547 Mon Sep 17 00:00:00 2001 From: Luk-ESC Date: Mon, 8 Jul 2024 20:45:40 +0200 Subject: [PATCH 01/34] refactor: remove unsafe in i18n --- src/i18n.rs | 26 +++++++++++++------------- src/main.rs | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/i18n.rs b/src/i18n.rs index 4e20831..2b3f459 100644 --- a/src/i18n.rs +++ b/src/i18n.rs @@ -1,3 +1,4 @@ +use std::sync::OnceLock; use unic_langid::{langid, LanguageIdentifier}; fluent_templates::static_loader! { @@ -32,14 +33,15 @@ pub const SUPPORTED_LANGUAGES: &[LanguageIdentifier] = &[ langid!("cs-cz") ]; -pub static mut LANG: LanguageIdentifier = langid!("en-us"); +/// Fallback used if the system language is not supported +static FALLBACK: LanguageIdentifier = langid!("en-us"); + +pub static LANG: OnceLock = OnceLock::new(); /// Set launcher language pub fn set_lang(lang: LanguageIdentifier) -> anyhow::Result<()> { if SUPPORTED_LANGUAGES.iter().any(|item| item.language == lang.language) { - unsafe { - LANG = lang - } + LANG.set(lang).expect("Can't overwrite language!"); Ok(()) } @@ -50,8 +52,8 @@ pub fn set_lang(lang: LanguageIdentifier) -> anyhow::Result<()> { } /// Get launcher language -pub fn get_lang() -> LanguageIdentifier { - unsafe { LANG.clone() } +pub fn get_lang() -> &'static LanguageIdentifier { + LANG.get().expect("Language hasn't been initialized!") } /// Get system language or default language if system one is not supported @@ -60,7 +62,7 @@ pub fn get_lang() -> LanguageIdentifier { /// - `LC_ALL` /// - `LC_MESSAGES` /// - `LANG` -pub fn get_default_lang() -> LanguageIdentifier { +pub fn get_default_lang() -> &'static LanguageIdentifier { let current = std::env::var("LC_ALL") .unwrap_or_else(|_| std::env::var("LC_MESSAGES") .unwrap_or_else(|_| std::env::var("LANG") @@ -69,11 +71,11 @@ pub fn get_default_lang() -> LanguageIdentifier { for lang in SUPPORTED_LANGUAGES { if current.starts_with(lang.language.as_str()) { - return lang.clone(); + return lang; } } - get_lang() + &FALLBACK } pub fn format_lang(lang: &LanguageIdentifier) -> String { @@ -106,8 +108,7 @@ macro_rules! tr { { use fluent_templates::Loader; - #[allow(unused_unsafe)] - $crate::i18n::LOCALES.lookup(unsafe { $crate::i18n::LANG.as_ref() }, $id) + $crate::i18n::LOCALES.lookup($crate::i18n::get_lang(), $id) } }; @@ -124,8 +125,7 @@ macro_rules! tr { args.insert($key, FluentValue::from($value)); )* - #[allow(unused_unsafe)] - $crate::i18n::LOCALES.lookup_complete(unsafe { $crate::i18n::LANG.as_ref() }, $id, Some(&args)) + $crate::i18n::LOCALES.lookup_complete($crate::i18n::get_lang(), $id, Some(&args)) } }; } diff --git a/src/main.rs b/src/main.rs index e03a48f..24fc643 100644 --- a/src/main.rs +++ b/src/main.rs @@ -120,7 +120,7 @@ fn main() -> anyhow::Result<()> { // CONFIG is initialized lazily so it will contain following changes as well let mut config = Config::get().expect("Failed to get config"); - config.launcher.language = i18n::format_lang(&i18n::get_default_lang()); + config.launcher.language = i18n::format_lang(i18n::get_default_lang()); Config::update_raw(config).expect("Failed to update config"); } From 5d1cfb4f0b6dc41963ea0b680292c3442db5f868 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Thu, 11 Jul 2024 05:31:27 +0200 Subject: [PATCH 02/34] docs: updated readme --- README.md | 93 +++++++++++++++++++++------------------- repository/branches.png | Bin 31154 -> 0 bytes 2 files changed, 49 insertions(+), 44 deletions(-) delete mode 100644 repository/branches.png diff --git a/README.md b/README.md index 2e78c5c..91b1cdc 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,17 @@

Discord · - Matrix · Wiki


+# 🚧 Project status + +Due to lack of interest from my side the project stays in a legacy, maintaining-only state for a long period of time. This project will not receive huge updated unless really necessary. I still keep it up to date with latest changes in the game and work with community to solve the issues, but old-known unessential bugs will not be fixed, and new features will not be added. Instead, I'm working on other projects, and the future is in uniting all the launchers in one single [universal launcher](https://github.com/an-anime-team/anime-games-launcher). This project stays in "proof of concept" stage right now and required major changes, which, again, require interest from my side. + +
+ # ♥️ Useful links and thanks * [macOS launcher](https://github.com/3Shain/yet-another-anime-game-launcher) which contains some additional compatibility components @@ -18,58 +23,58 @@ * [Releases page](https://github.com/an-anime-team/an-anime-game-launcher/releases) where you can find latest available version * [Changelog](CHANGELOG.md) with chronology of the project +All the project's life happen in our discord server. If you have any questions or want to report an issue - please contact the dev directly there. +
# ⬇️ Download -| Distribution | Format | Wiki | Source | -| - | - | - | - | -| Fedora | Flatpak | [link](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-any-distribution-flatpak) | - | -| Arch Linux, Manjaro | AUR | [link](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-arch-linux-aur) | [an-anime-game-launcher-bin](https://aur.archlinux.org/packages/an-anime-game-launcher-bin) | -| Fedora, OpenSUSE | RPM | [link](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-fedora-rpm) | [AAGL](https://build.opensuse.org/repositories/home:Maroxy:AAT-Apps/AAGL) | -| Ubuntu | pacstall | - | [an-anime-game-launcher-bin](https://pacstall.dev/packages/an-anime-game-launcher-bin) | -| Gentoo | ebuild | [link](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-gentoo-linux-ebuild) | [aagl-ebuilds](https://github.com/an-anime-team/gentoo-ebuilds) | -| NixOS | nixpkg | [link](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-nixos-nixpkg) | [aagl-gtk-on-nix](https://github.com/ezKEa/aagl-gtk-on-nix) | +Launcher developer does not provide any packages for this programm. Instead, we almost fully rely on other people to maintain them. -To see the installation guides, please visit the wiki page [here](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation) +To see the installation guides, please visit [this wiki page](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation). -Lutris integration described [here](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-lutris) +Instructions may be outdated due to lack of interest in maintaining them. You can help the project by keeping documentation up to date if you're interested in it. + +## 😀 Official support + +These packages are officially supported by the An Anime Team, and we try to ensure that they work for everyone. + +| Format | Wiki | Source | Distributions | Maintainer | +| - | - | - | - | - | +| Flatpak | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-any-distribution-flatpak) | [flatpak-builds](https://github.com/an-anime-team/flatpak-builds) | Any (Fedora, Pop!_OS, etc.) | Luna (available in discord) | +| RPM | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-fedora-rpm) | [AAGL](https://build.opensuse.org/repositories/home:Maroxy:AAT-Apps/AAGL) * | Fedora, OpenSUSE | Maroxy (second discord admin) | + +> \* Note: RPM packages are often really outdated. It's not recommended to use them. + +## 🙂 Community support + +These packages are supported by active members of our community. They're widely used and we keep some level of interactions with their maintainers. + +| Format | Wiki | Source | Distributions | Maintainer | +| - | - | - | - | - | +| AUR | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-arch-linux-aur) | ... | Arch Linux, Manjaro, EndeavourOS | xstra * | +| NixOS module | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-nixos-nixpkg) | [aagl-gtk-on-nix](https://github.com/ezKEa/aagl-gtk-on-nix) | NixOS | Luxxy * | + +> \* Note: honorary members of our discord server. We have direct contact with them. + +## 😑 Third party support + +These packages are supported by third party distributors. They either did not contact us, or contact exceptionally rarely. We do not verify state of these packages, and we are not related to their state at all. + +| Format | Source | Distributions | +| - | - | - | +| pacstall | [an-anime-game-launcher-bin](https://pacstall.dev/packages/an-anime-game-launcher-bin) | Ubuntu | +| ebuild | [aagl-ebuilds](https://github.com/an-anime-team/gentoo-ebuilds) * | Gentoo | +| lutris | `lutris.net/games/gen...-imp...` (stripping the link) | Any | + +> \* Note: although it's hosted in our official repo we didn't contact with its maintainer for some time already, and recent updates were made via merge requests by the community. ## Chinese version support -This should be automatically enabled if you're using zh_cn (Chinese) as your system language. If you're not using it - you can change the game edition in the launcher settings +This should be automatically enabled if you're using `zh_cn` (Chinese) as your system language. If you're not using it - you can change the game edition in the launcher settings. -
+The main problem, though, is that github is blocked in China, and it's used in other parts of the launcher - not just in game edition. Notably, you can't use the same components index as other people do. -# 💻 Development +To fix this, you have to make your own copy of the [components](https://github.com/an-anime-team/components) repository and change all the links there from github releases to some mirror. Later you can update the components index repo link in your launcher's `config.json` file. -| Folder | Description | -| - | - | -| src | Rust source code | -| assets | App assets folder | -| assets/locales | App localizations | -| target/release | Release build of the app | - -## Clone repo - -```sh -git clone --recursive https://github.com/an-anime-team/an-anime-game-launcher -``` - -## Run app - -```sh -cargo run -``` - -## Build app - -```sh -cargo build --release -``` - -## Updates strategy - -Starting from 3.2.1 ([fcab428](https://github.com/an-anime-team/an-anime-game-launcher/commit/fcab428cb40b1457f41e0856f9d1e1473acbe653)) we have 2 branches: stable ([main](https://github.com/an-anime-team/an-anime-game-launcher/tree/main)) and dev ([next](https://github.com/an-anime-team/an-anime-game-launcher/tree/next)). Code changes will be pushed into dev branch and merged into stable once they're ready for new version release - - +If you have any questions - feel free to contact the dev in our discord server (or if you have no way to use discord - try sending me an email, but it's unlikely to be received). diff --git a/repository/branches.png b/repository/branches.png deleted file mode 100644 index 44de6899f5db1e67fd368f352223d6500a0a16f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31154 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 From eeae5bd970ebbdb966f29d24f6ba8c2a67d32ef5 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Thu, 11 Jul 2024 05:34:14 +0200 Subject: [PATCH 03/34] docs: added AUR source link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 91b1cdc..29f461b 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ These packages are supported by active members of our community. They're widely | Format | Wiki | Source | Distributions | Maintainer | | - | - | - | - | - | -| AUR | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-arch-linux-aur) | ... | Arch Linux, Manjaro, EndeavourOS | xstra * | +| AUR | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-arch-linux-aur) | [an-anime-game-launcher-bin](https://aur.archlinux.org/packages/an-anime-game-launcher-bin) | Arch Linux, Manjaro, EndeavourOS | xstra * | | NixOS module | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-nixos-nixpkg) | [aagl-gtk-on-nix](https://github.com/ezKEa/aagl-gtk-on-nix) | NixOS | Luxxy * | > \* Note: honorary members of our discord server. We have direct contact with them. From 424da3418d644709669890c4d7338211d37c3827 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Thu, 11 Jul 2024 05:34:27 +0200 Subject: [PATCH 04/34] build: updated cargo lock --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3e27a2f..5d3014b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1926,9 +1926,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "open" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2c909a3fce3bd80efef4cd1c6c056bd9376a8fe06fcfdbebaf32cb485a7e37" +checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3" dependencies = [ "is-wsl", "libc", From 3eff1e2a6d446b1fce7132699684054c7ac9e01f Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Thu, 11 Jul 2024 05:49:00 +0200 Subject: [PATCH 05/34] docs: little text clarifications --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 29f461b..a424f01 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ # 🚧 Project status -Due to lack of interest from my side the project stays in a legacy, maintaining-only state for a long period of time. This project will not receive huge updated unless really necessary. I still keep it up to date with latest changes in the game and work with community to solve the issues, but old-known unessential bugs will not be fixed, and new features will not be added. Instead, I'm working on other projects, and the future is in uniting all the launchers in one single [universal launcher](https://github.com/an-anime-team/anime-games-launcher). This project stays in "proof of concept" stage right now and required major changes, which, again, require interest from my side. +Due to lack of interest from my side the project stays in a legacy, maintaining-only state for a long period of time. This project will not receive huge updates unless really necessary. I still keep it up to date with latest changes in the game and work with community to solve the issues, but old-known unessential bugs will not be fixed, and new features will not be added. Instead, I'm working on other projects, and the future is in uniting all the launchers in one single [universal launcher](https://github.com/an-anime-team/anime-games-launcher). This project stays in "proof of concept" stage right now and requires major changes, which, again, require interest from my side. Keep your eye on our discord server for more details.
@@ -63,9 +63,9 @@ These packages are supported by third party distributors. They either did not co | Format | Source | Distributions | | - | - | - | -| pacstall | [an-anime-game-launcher-bin](https://pacstall.dev/packages/an-anime-game-launcher-bin) | Ubuntu | -| ebuild | [aagl-ebuilds](https://github.com/an-anime-team/gentoo-ebuilds) * | Gentoo | -| lutris | `lutris.net/games/gen...-imp...` (stripping the link) | Any | +| Pacstall | [an-anime-game-launcher-bin](https://pacstall.dev/packages/an-anime-game-launcher-bin) | Ubuntu | +| Ebuild | [aagl-ebuilds](https://github.com/an-anime-team/gentoo-ebuilds) * | Gentoo | +| Lutris | `lutris.net/games/gen...-imp...` (stripping the link) | Any | > \* Note: although it's hosted in our official repo we didn't contact with its maintainer for some time already, and recent updates were made via merge requests by the community. From 1eeaaf333e86de3c1314c0dc07401dd6ae7c9eb3 Mon Sep 17 00:00:00 2001 From: ThunderGemios10 Date: Thu, 11 Jul 2024 19:02:02 +0800 Subject: [PATCH 06/34] Add third-party DEB package link --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a424f01..d45eba2 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,7 @@ These packages are supported by third party distributors. They either did not co | Format | Source | Distributions | | - | - | - | | Pacstall | [an-anime-game-launcher-bin](https://pacstall.dev/packages/an-anime-game-launcher-bin) | Ubuntu | +| DEB | [an-anime-game-launcher](https://launchpad.net/~thundergemios10/+archive/ubuntu/an-anime-game-launcher) | Ubuntu | | Ebuild | [aagl-ebuilds](https://github.com/an-anime-team/gentoo-ebuilds) * | Gentoo | | Lutris | `lutris.net/games/gen...-imp...` (stripping the link) | Any | From b24625b773ab08d5ee9b381f08103a09d7e1c772 Mon Sep 17 00:00:00 2001 From: ThunderGemios10 Date: Fri, 12 Jul 2024 05:28:37 +0800 Subject: [PATCH 07/34] Place DEB format above Pacstall Also added common Ubuntu-based distributions. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d45eba2..d94c86d 100644 --- a/README.md +++ b/README.md @@ -63,8 +63,8 @@ These packages are supported by third party distributors. They either did not co | Format | Source | Distributions | | - | - | - | +| DEB | [an-anime-game-launcher](https://launchpad.net/~thundergemios10/+archive/ubuntu/an-anime-game-launcher) | Ubuntu, Linux Mint, Pop!_OS | | Pacstall | [an-anime-game-launcher-bin](https://pacstall.dev/packages/an-anime-game-launcher-bin) | Ubuntu | -| DEB | [an-anime-game-launcher](https://launchpad.net/~thundergemios10/+archive/ubuntu/an-anime-game-launcher) | Ubuntu | | Ebuild | [aagl-ebuilds](https://github.com/an-anime-team/gentoo-ebuilds) * | Gentoo | | Lutris | `lutris.net/games/gen...-imp...` (stripping the link) | Any | From 14c71beb0965b44c8019afff7e46d2498fceaa53 Mon Sep 17 00:00:00 2001 From: ezKEa Date: Wed, 17 Jul 2024 07:14:55 -0400 Subject: [PATCH 08/34] build: replace shell.nix with flake.nix for dev shell --- .envrc | 2 +- flake.lock | 44 ++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 35 +++++++++++++++++++++++++++++++++++ shell.nix | 39 --------------------------------------- 4 files changed, 80 insertions(+), 40 deletions(-) create mode 100644 flake.lock create mode 100644 flake.nix delete mode 100644 shell.nix diff --git a/.envrc b/.envrc index 1d953f4..3550a30 100644 --- a/.envrc +++ b/.envrc @@ -1 +1 @@ -use nix +use flake diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..7ebb7d9 --- /dev/null +++ b/flake.lock @@ -0,0 +1,44 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1720954236, + "narHash": "sha256-1mEKHp4m9brvfQ0rjCca8P1WHpymK3TOr3v34ydv9bs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "53e81e790209e41f0c1efa9ff26ff2fd7ab35e27", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1720957393, + "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "nixpkgs-unstable": "nixpkgs-unstable" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..1bcb04d --- /dev/null +++ b/flake.nix @@ -0,0 +1,35 @@ +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; + nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; + }; + + outputs = { self, nixpkgs, nixpkgs-unstable }: let + pkgs = nixpkgs.legacyPackages.x86_64-linux; + pkgs-unstable = nixpkgs-unstable.legacyPackages.x86_64-linux; + in { + devShells.x86_64-linux.default = pkgs.mkShell { + nativeBuildInputs = with pkgs; [ + pkgs-unstable.rustup + pkgs-unstable.rustfmt + pkgs-unstable.clippy + + gcc + cmake + pkg-config + + xdelta + libwebp + ]; + + buildInputs = with pkgs; [ + gtk4 + glib + gdk-pixbuf + gobject-introspection + + libadwaita + ]; + }; + }; +} diff --git a/shell.nix b/shell.nix deleted file mode 100644 index bb939d1..0000000 --- a/shell.nix +++ /dev/null @@ -1,39 +0,0 @@ -let - nixpkgs = builtins.fetchGit { - name = "nixos-24.05"; - url = "https://github.com/nixos/nixpkgs"; - ref = "refs/heads/nixos-24.05"; - }; - - nixpkgs-unstable = builtins.fetchGit { - name = "nixos-unstable"; - url = "https://github.com/nixos/nixpkgs"; - ref = "refs/heads/nixos-unstable"; - }; - - pkgs = import nixpkgs {}; - pkgs-unstable = import nixpkgs-unstable {}; - -in pkgs.mkShell { - nativeBuildInputs = with pkgs; [ - pkgs-unstable.rustup - pkgs-unstable.rustfmt - pkgs-unstable.clippy - - gcc - cmake - pkg-config - - xdelta - libwebp - ]; - - buildInputs = with pkgs; [ - gtk4 - glib - gdk-pixbuf - gobject-introspection - - libadwaita - ]; -} From 42085c2b6107f30f10ec41c8fbcdfed45182274a Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 19 Jul 2024 11:19:03 +0200 Subject: [PATCH 09/34] build: updated nix flake --- flake.lock | 12 +++++----- flake.nix | 66 ++++++++++++++++++++++++++++-------------------------- 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/flake.lock b/flake.lock index 7ebb7d9..e50b66a 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1720954236, - "narHash": "sha256-1mEKHp4m9brvfQ0rjCca8P1WHpymK3TOr3v34ydv9bs=", + "lastModified": 1721226092, + "narHash": "sha256-UBvzVpo5sXSi2S/Av+t+Q+C2mhMIw/LBEZR+d6NMjws=", "owner": "nixos", "repo": "nixpkgs", - "rev": "53e81e790209e41f0c1efa9ff26ff2fd7ab35e27", + "rev": "c716603a63aca44f39bef1986c13402167450e0a", "type": "github" }, "original": { @@ -18,11 +18,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1720957393, - "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", + "lastModified": 1721138476, + "narHash": "sha256-+W5eZOhhemLQxelojLxETfbFbc19NWawsXBlapYpqIA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", + "rev": "ad0b5eed1b6031efaed382844806550c3dcb4206", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 1bcb04d..fd15b23 100644 --- a/flake.nix +++ b/flake.nix @@ -1,35 +1,37 @@ { - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; - nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; - }; - - outputs = { self, nixpkgs, nixpkgs-unstable }: let - pkgs = nixpkgs.legacyPackages.x86_64-linux; - pkgs-unstable = nixpkgs-unstable.legacyPackages.x86_64-linux; - in { - devShells.x86_64-linux.default = pkgs.mkShell { - nativeBuildInputs = with pkgs; [ - pkgs-unstable.rustup - pkgs-unstable.rustfmt - pkgs-unstable.clippy - - gcc - cmake - pkg-config - - xdelta - libwebp - ]; - - buildInputs = with pkgs; [ - gtk4 - glib - gdk-pixbuf - gobject-introspection - - libadwaita - ]; + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; + nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; }; - }; + + outputs = { self, nixpkgs, nixpkgs-unstable }: + let + pkgs = nixpkgs.legacyPackages.x86_64-linux; + pkgs-unstable = nixpkgs-unstable.legacyPackages.x86_64-linux; + + in { + devShells.x86_64-linux.default = pkgs.mkShell { + nativeBuildInputs = with pkgs; [ + pkgs-unstable.rustup + pkgs-unstable.rustfmt + pkgs-unstable.clippy + + gcc + cmake + pkg-config + + xdelta + libwebp + ]; + + buildInputs = with pkgs; [ + gtk4 + glib + gdk-pixbuf + gobject-introspection + + libadwaita + ]; + }; + }; } From 203f7e5f9875a255e2a3c8182be91dd6253aebef Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 19 Jul 2024 11:19:13 +0200 Subject: [PATCH 10/34] build: updated `Cargo.lock` --- Cargo.lock | 177 ++++++++++++++++++++++++++--------------------------- 1 file changed, 88 insertions(+), 89 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5d3014b..510ff4c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -312,9 +312,9 @@ dependencies = [ [[package]] name = "async-signal" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" +checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32" dependencies = [ "async-io", "async-lock", @@ -336,9 +336,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", @@ -398,9 +398,9 @@ checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "blake3" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +checksum = "e9ec96fe9a81b5e365f9db71fe00edc4fe4ca2cc7dcb7861f0603012a7caa210" dependencies = [ "arrayref", "arrayvec", @@ -461,9 +461,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" [[package]] name = "bzip2" @@ -545,13 +545,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.104" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490" +checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" dependencies = [ "jobserver", "libc", - "once_cell", ] [[package]] @@ -693,9 +692,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -703,9 +702,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", @@ -717,9 +716,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", @@ -728,9 +727,9 @@ dependencies = [ [[package]] name = "deflate64" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ace6c86376be0b6cdcf3fb41882e81d94b31587573d1cfa9d01cd06bba210d" +checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b" [[package]] name = "deranged" @@ -1512,7 +1511,7 @@ dependencies = [ "serde", "serde_derive", "toml", - "uuid 1.9.1", + "uuid 1.10.0", ] [[package]] @@ -1797,9 +1796,9 @@ dependencies = [ [[package]] name = "minreq" -version = "2.11.2" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fdef521c74c2884a4f3570bcdb6d2a77b3c533feb6b27ac2ae72673cc221c64" +checksum = "763d142cdff44aaadd9268bebddb156ef6c65a0e13486bb81673cf2d8739f9b0" dependencies = [ "base64 0.12.3", "log", @@ -2382,9 +2381,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.6.0", "core-foundation", @@ -2395,9 +2394,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", @@ -2426,18 +2425,18 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", @@ -2564,9 +2563,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.68" +version = "2.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" +checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" dependencies = [ "proc-macro2", "quote", @@ -2575,9 +2574,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.30.12" +version = "0.30.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "732ffa00f53e6b2af46208fba5718d9662a421049204e156328b66791ffa15ae" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" dependencies = [ "cfg-if", "core-foundation-sys", @@ -2614,9 +2613,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" [[package]] name = "tempfile" @@ -2632,18 +2631,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", @@ -2690,9 +2689,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -2705,9 +2704,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.0" +version = "1.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "eb2caba9f80616f438e09748d5acda951967e1ea58508ef53d9c6402485a46df" dependencies = [ "backtrace", "bytes", @@ -2723,14 +2722,14 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "ac2caab0bf757388c6c0ae23b3293fdb463fee59434529014f85e3263b995c28" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit 0.22.16", ] [[package]] @@ -2755,9 +2754,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.14" +version = "0.22.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "278f3d518e152219c994ce877758516bca5e118eaed6996192a774fb9fbf0788" dependencies = [ "indexmap", "serde", @@ -2954,9 +2953,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de17fd2f7da591098415cff336e12965a28061ddace43b59cb3c430179c9439" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ "getrandom", ] @@ -3132,7 +3131,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -3141,7 +3140,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -3159,7 +3158,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -3179,18 +3178,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -3201,9 +3200,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -3213,9 +3212,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -3225,15 +3224,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -3243,9 +3242,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -3255,9 +3254,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -3267,9 +3266,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -3279,9 +3278,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -3399,18 +3398,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", @@ -3482,27 +3481,27 @@ dependencies = [ [[package]] name = "zstd" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d789b1514203a1120ad2429eae43a7bd32b90976a7bb8a05f7ec02fa88cc23a" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd99b45c6bc03a018c8b8a86025678c87e55526064e38f9df301989dce7ec0a" +checksum = "fa556e971e7b568dc775c136fc9de8c779b1c2fc3a63defaafadffdbd3181afa" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.11+zstd.1.5.6" +version = "2.0.12+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4" +checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" dependencies = [ "cc", "pkg-config", From 39527c18d778a58cb1cd6f80465f2d47cc6c000e Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 19 Jul 2024 12:28:41 +0200 Subject: [PATCH 11/34] feat: updated libraries versions --- Cargo.lock | 118 ++++++----- Cargo.toml | 10 +- src/background.rs | 2 +- src/main.rs | 9 +- src/ui/components/version.rs | 49 +++-- src/ui/main/download_diff.rs | 49 +++-- src/ui/main/download_wine.rs | 78 ++++--- src/ui/main/mod.rs | 400 ++++++++++++++++++++--------------- src/ui/main/repair_game.rs | 23 +- 9 files changed, 413 insertions(+), 325 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 510ff4c..34caaef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -521,9 +521,9 @@ checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "cairo-rs" -version = "0.19.4" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ac2a4d0e69036cf0062976f6efcba1aaee3e448594e6514bb2ddf87acce562" +checksum = "797fd5a634dcb0ad0d7d583df794deb0a236d88e759cd34b7da20198c6c9d145" dependencies = [ "bitflags 2.6.0", "cairo-sys-rs", @@ -534,9 +534,9 @@ dependencies = [ [[package]] name = "cairo-sys-rs" -version = "0.19.2" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3bb3119664efbd78b5e6c93957447944f16bdbced84c17a9f41c7829b81e64" +checksum = "428290f914b9b86089f60f5d8a9f6e440508e1bcff23b25afd51502b0a2da88f" dependencies = [ "glib-sys", "libc", @@ -1156,9 +1156,9 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.19.8" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624eaba126021103c7339b2e179ae4ee8cdab842daab419040710f38ed9f8699" +checksum = "28bb53ecb56857c683c9ec859908e076dd3969c7d67598bd8b1ce095d211304a" dependencies = [ "gdk-pixbuf-sys", "gio", @@ -1168,9 +1168,9 @@ dependencies = [ [[package]] name = "gdk-pixbuf-sys" -version = "0.19.8" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4efa05a4f83c8cc50eb4d883787b919b85e5f1d8dd10b5a1df53bf5689782379" +checksum = "9f6681a0c1330d1d3968bec1529f7172d62819ef0bdbb0d18022320654158b03" dependencies = [ "gio-sys", "glib-sys", @@ -1181,9 +1181,9 @@ dependencies = [ [[package]] name = "gdk4" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db265c9dd42d6a371e09e52deab3a84808427198b86ac792d75fd35c07990a07" +checksum = "4b7d7237c1487ed4b300aac7744efcbf1319e12d60d7afcd6f505414bd5b5dea" dependencies = [ "cairo-rs", "gdk-pixbuf", @@ -1196,9 +1196,9 @@ dependencies = [ [[package]] name = "gdk4-sys" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9418fb4e8a67074919fe7604429c45aa74eb9df82e7ca529767c6d4e9dc66dd" +checksum = "a67576c8ec012156d7f680e201a807b4432a77babb3157e0555e990ab6bcd878" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -1242,9 +1242,9 @@ checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "gio" -version = "0.19.8" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c49f117d373ffcc98a35d114db5478bc223341cff53e39a5d6feced9e2ddffe" +checksum = "398e3da68749fdc32783cbf7521ec3f65c9cf946db8c7774f8460af49e52c6e2" dependencies = [ "futures-channel", "futures-core", @@ -1260,9 +1260,9 @@ dependencies = [ [[package]] name = "gio-sys" -version = "0.19.8" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cd743ba4714d671ad6b6234e8ab2a13b42304d0e13ab7eba1dcdd78a7d6d4ef" +checksum = "e4feb96b31c32730ea3e1e89aecd2e4e37ecb1c473ad8f685e3430a159419f63" dependencies = [ "glib-sys", "gobject-sys", @@ -1273,9 +1273,9 @@ dependencies = [ [[package]] name = "glib" -version = "0.19.9" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39650279f135469465018daae0ba53357942a5212137515777d5fdca74984a44" +checksum = "fee90a615ce05be7a32932cfb8adf2c4bbb4700e80d37713c981fb24c0c56238" dependencies = [ "bitflags 2.6.0", "futures-channel", @@ -1295,18 +1295,18 @@ dependencies = [ [[package]] name = "glib-build-tools" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "108f374fff60efd14b0d70d8916e7213aed18d7dd071ba3e9334ed2dac1dc86a" +checksum = "7029c2651d9b5d5a3eea93ec8a1995665c6d3a69ce9bf6042ad9064d134736d8" dependencies = [ "gio", ] [[package]] name = "glib-macros" -version = "0.19.9" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4429b0277a14ae9751350ad9b658b1be0abb5b54faa5bcdf6e74a3372582fad7" +checksum = "4da558d8177c0c8c54368818b508a4244e1286fce2858cef4e547023f0cfa5ef" dependencies = [ "heck", "proc-macro-crate", @@ -1317,9 +1317,9 @@ dependencies = [ [[package]] name = "glib-sys" -version = "0.19.8" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c2dc18d3a82b0006d470b13304fbbb3e0a9bd4884cf985a60a7ed733ac2c4a5" +checksum = "4958c26e5a01c9af00dea669a97369eccbec29a8e6d125c24ea2d85ee7467b60" dependencies = [ "libc", "system-deps", @@ -1340,9 +1340,9 @@ dependencies = [ [[package]] name = "gobject-sys" -version = "0.19.8" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e697e252d6e0416fd1d9e169bda51c0f1c926026c39ca21fbe8b1bb5c3b8b9e" +checksum = "c6908864f5ffff15b56df7e90346863904f49b949337ed0456b9287af61903b8" dependencies = [ "glib-sys", "libc", @@ -1351,9 +1351,9 @@ dependencies = [ [[package]] name = "graphene-rs" -version = "0.19.8" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb86031d24d9ec0a2a15978fc7a65d545a2549642cf1eb7c3dda358da42bcf" +checksum = "630e940ad5824f90221d6579043a9cd1f8bec86b4a17faaf7827d58eb16e8c1f" dependencies = [ "glib", "graphene-sys", @@ -1362,9 +1362,9 @@ dependencies = [ [[package]] name = "graphene-sys" -version = "0.19.8" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f530e0944bccba4b55065e9c69f4975ad691609191ebac16e13ab8e1f27af05" +checksum = "6fb8fade7b754982f47ebbed241fd2680816fdd4598321784da10b9e1168836a" dependencies = [ "glib-sys", "libc", @@ -1374,9 +1374,9 @@ dependencies = [ [[package]] name = "gsk4" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7563884bf6939f4468e5d94654945bdd9afcaf8c3ba4c5dd17b5342b747221be" +checksum = "1f3cf2091e1af185b347b3450817d93dea6fe435df7abd4c2cd7fb5bcb4cfda8" dependencies = [ "cairo-rs", "gdk4", @@ -1389,9 +1389,9 @@ dependencies = [ [[package]] name = "gsk4-sys" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23024bf2636c38bbd1f822f58acc9d1c25b28da896ff0f291a1a232d4272b3dc" +checksum = "6aa69614a26d8760c186c3690f1b0fbb917572ca23ef83137445770ceddf8cde" dependencies = [ "cairo-sys-rs", "gdk4-sys", @@ -1405,9 +1405,9 @@ dependencies = [ [[package]] name = "gtk4" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b04e11319b08af11358ab543105a9e49b0c491faca35e2b8e7e36bfba8b671ab" +checksum = "eaffc6c743c9160514cc9b67eace364e5dc5798369fa809cdb04e035c21c5c5d" dependencies = [ "cairo-rs", "field-offset", @@ -1426,9 +1426,9 @@ dependencies = [ [[package]] name = "gtk4-macros" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec655a7ef88d8ce9592899deb8b2d0fa50bab1e6dd69182deb764e643c522408" +checksum = "188211f546ce5801f6d0245c37b6249143a2cb4fa040e54829ca1e76796e9f09" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -1438,9 +1438,9 @@ dependencies = [ [[package]] name = "gtk4-sys" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c8aa86b7f85ea71d66ea88c1d4bae1cfacf51ca4856274565133838d77e57b5" +checksum = "1114a207af8ada02cf4658a76692f4190f06f093380d5be07e3ca8b43aa7c666" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -1656,11 +1656,10 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libadwaita" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91b4990248b9e1ec5e72094a2ccaea70ec3809f88f6fd52192f2af306b87c5d9" +checksum = "2ff9c222b5c783729de45185f07b2fec2d43a7f9c63961e777d3667e20443878" dependencies = [ - "gdk-pixbuf", "gdk4", "gio", "glib", @@ -1672,9 +1671,9 @@ dependencies = [ [[package]] name = "libadwaita-sys" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23a748e4e92be1265cd9e93d569c0b5dfc7814107985aa6743d670ab281ea1a8" +checksum = "1c44d8bdbad31d6639e1f20cc9c1424f1a8e02d751fc28d44659bf743fb9eca6" dependencies = [ "gdk4-sys", "gio-sys", @@ -1969,9 +1968,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "pango" -version = "0.19.8" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f0d328648058085cfd6897c9ae4272884098a926f3a833cd50c8c73e6eccecd" +checksum = "54768854025df6903061d0084fd9702a253ddfd60db7d9b751d43b76689a7f0a" dependencies = [ "gio", "glib", @@ -1981,9 +1980,9 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.19.8" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff03da4fa086c0b244d4a4587d3e20622a3ecdb21daea9edf66597224c634ba0" +checksum = "b07cc57d10cee4ec661f718a6902cee18c2f4cfae08e87e5a390525946913390" dependencies = [ "glib-sys", "gobject-sys", @@ -2198,9 +2197,9 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "relm4" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e0e187b58db367305e8486d3228158251da1c8ba1e18baa9de61894e822649" +checksum = "cf0363f92b6a7eefd985b47f27b7ae168dd2fd5cd4013a338c9b111c33744d1f" dependencies = [ "flume", "fragile", @@ -2208,16 +2207,23 @@ dependencies = [ "gtk4", "libadwaita", "once_cell", + "relm4-css", "relm4-macros", "tokio", "tracing", ] [[package]] -name = "relm4-macros" -version = "0.8.1" +name = "relm4-css" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0774e846889823aa5766f5b62cface3189a5b36280e65b2faaa6df0319da1726" +checksum = "1d3b924557df1cddc687b60b313c4b76620fdbf0e463afa4b29f67193ccf37f9" + +[[package]] +name = "relm4-macros" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc5885640821d60062497737dd42fd04248d13c7ecccee620caaa4b210fe9905" dependencies = [ "proc-macro2", "quote", @@ -2589,9 +2595,9 @@ dependencies = [ [[package]] name = "system-deps" -version = "6.2.2" +version = "7.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +checksum = "6c81f13d9a334a6c242465140bd262fae382b752ff2011c4f7419919a9c97922" dependencies = [ "cfg-expr", "heck", diff --git a/Cargo.toml b/Cargo.toml index bb82445..9c98078 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ lto = true opt-level = "s" [build-dependencies] -glib-build-tools = "0.19" +glib-build-tools = "0.20" [dependencies.anime-launcher-sdk] git = "https://github.com/an-anime-team/anime-launcher-sdk" @@ -25,12 +25,12 @@ features = ["all", "genshin"] # path = "../anime-launcher-sdk" # ! for dev purposes only [dependencies] -relm4 = { version = "0.8.1", features = ["macros", "libadwaita"] } -gtk = { package = "gtk4", version = "0.8.2", features = ["v4_12"] } -adw = { package = "libadwaita", version = "0.6.0", features = ["v1_4"] } +relm4 = { version = "0.9.0", features = ["macros", "libadwaita"] } +gtk = { package = "gtk4", version = "0.9.0", features = ["v4_12"] } +adw = { package = "libadwaita", version = "0.7.0", features = ["v1_4"] } rfd = { version = "0.14.1", features = ["xdg-portal", "tokio"], default-features = false } -open = "5.2.0" +open = "5.3.0" whatadistro = "0.1.0" serde_json = "1.0" diff --git a/src/background.rs b/src/background.rs index 0f8e33a..bcef26f 100644 --- a/src/background.rs +++ b/src/background.rs @@ -21,7 +21,7 @@ pub fn get_uri() -> String { else { let uri = concat!("https://sg-hyp-api.", "ho", "yo", "verse", ".com/hyp/hyp-connect/api/getAllGameBasicInfo?launcher_id=VYTpXlbWo8&language="); - uri.to_owned() + &crate::i18n::format_lang(&lang) + uri.to_owned() + &crate::i18n::format_lang(lang) } } diff --git a/src/main.rs b/src/main.rs index 24fc643..868d7e8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -201,6 +201,9 @@ fn main() -> anyhow::Result<()> { gtk::IconTheme::for_display(>k::gdk::Display::default().unwrap()) .add_resource_path(&format!("{APP_RESOURCE_PATH}/icons")); + // Set global css + relm4::set_global_css(&GLOBAL_CSS); + // Set application's title gtk::glib::set_application_name("An Anime Game Launcher"); gtk::glib::set_program_name(Some("An Anime Game Launcher")); @@ -218,9 +221,6 @@ fn main() -> anyhow::Result<()> { let app = RelmApp::new(APP_ID) .with_args(gtk_args); - // Set global css - app.set_global_css(&GLOBAL_CSS); - // Show first run window app.run::(()); } @@ -252,9 +252,6 @@ fn main() -> anyhow::Result<()> { let app = RelmApp::new(APP_ID) .with_args(gtk_args); - // Set global css - app.set_global_css(&GLOBAL_CSS); - // Show main window app.run::(()); } diff --git a/src/ui/components/version.rs b/src/ui/components/version.rs index ccc6089..81572b2 100644 --- a/src/ui/components/version.rs +++ b/src/ui/components/version.rs @@ -162,33 +162,38 @@ impl SimpleAsyncComponent for ComponentVersion { let progress_bar_sender = self.progress_bar.sender().clone(); #[allow(unused_must_use)] - std::thread::spawn(clone!(@strong self.download_folder as download_folder => move || { - progress_bar_sender.send(ProgressBarMsg::Reset); - progress_bar_sender.send(ProgressBarMsg::SetVisible(true)); + std::thread::spawn(clone!( + #[strong(rename_to = download_folder)] + self.download_folder, - installer.install(download_folder, move |state| { - match &state { - InstallerUpdate::UnpackingFinished | - InstallerUpdate::DownloadingError(_) | - InstallerUpdate::UnpackingError(_) => { - progress_bar_sender.send(ProgressBarMsg::SetVisible(false)); + move || { + progress_bar_sender.send(ProgressBarMsg::Reset); + progress_bar_sender.send(ProgressBarMsg::SetVisible(true)); - if let InstallerUpdate::UnpackingFinished = &state { - sender.input(ComponentVersionMsg::SetState(VersionState::Downloaded)); - sender.output(ComponentGroupMsg::CallOnDownloaded); - } + installer.install(download_folder, move |state| { + match &state { + InstallerUpdate::UnpackingFinished | + InstallerUpdate::DownloadingError(_) | + InstallerUpdate::UnpackingError(_) => { + progress_bar_sender.send(ProgressBarMsg::SetVisible(false)); - else { - sender.input(ComponentVersionMsg::SetState(VersionState::NotDownloaded)); - } - }, + if let InstallerUpdate::UnpackingFinished = &state { + sender.input(ComponentVersionMsg::SetState(VersionState::Downloaded)); + sender.output(ComponentGroupMsg::CallOnDownloaded); + } - _ => () - } + else { + sender.input(ComponentVersionMsg::SetState(VersionState::NotDownloaded)); + } + }, - progress_bar_sender.send(ProgressBarMsg::UpdateFromState(DiffUpdate::InstallerUpdate(state))); - }); - })); + _ => () + } + + progress_bar_sender.send(ProgressBarMsg::UpdateFromState(DiffUpdate::InstallerUpdate(state))); + }); + } + )); } } diff --git a/src/ui/main/download_diff.rs b/src/ui/main/download_diff.rs index cf58f25..f6ff382 100644 --- a/src/ui/main/download_diff.rs +++ b/src/ui/main/download_diff.rs @@ -21,33 +21,38 @@ pub fn download_diff(sender: ComponentSender, progress_bar_input: Sender move |state| { - match &state { - DiffUpdate::InstallerUpdate(InstallerUpdate::DownloadingError(err)) => { - tracing::error!("Downloading failed: {err}"); + let result = diff.install_to(game_path, clone!( + #[strong] + sender, - sender.input(AppMsg::Toast { - title: tr!("downloading-failed"), - description: Some(err.to_string()) - }); + move |state| { + match &state { + DiffUpdate::InstallerUpdate(InstallerUpdate::DownloadingError(err)) => { + tracing::error!("Downloading failed: {err}"); + + sender.input(AppMsg::Toast { + title: tr!("downloading-failed"), + description: Some(err.to_string()) + }); + } + + DiffUpdate::InstallerUpdate(InstallerUpdate::UnpackingError(err)) => { + tracing::error!("Unpacking failed: {err}"); + + sender.input(AppMsg::Toast { + title: tr!("unpacking-failed"), + description: Some(err.clone()) + }); + } + + _ => () } - DiffUpdate::InstallerUpdate(InstallerUpdate::UnpackingError(err)) => { - tracing::error!("Unpacking failed: {err}"); - - sender.input(AppMsg::Toast { - title: tr!("unpacking-failed"), - description: Some(err.clone()) - }); + #[allow(unused_must_use)] { + progress_bar_input.send(ProgressBarMsg::UpdateFromState(state)); } - - _ => () } - - #[allow(unused_must_use)] { - progress_bar_input.send(ProgressBarMsg::UpdateFromState(state)); - } - })); + )); let mut perform_on_download_needed = true; diff --git a/src/ui/main/download_wine.rs b/src/ui/main/download_wine.rs index 06f2414..69898f2 100644 --- a/src/ui/main/download_wine.rs +++ b/src/ui/main/download_wine.rs @@ -52,45 +52,55 @@ pub fn download_wine(sender: ComponentSender, progress_bar_input: Sender move || { - installer.install(&config.game.wine.builds, clone!(@strong sender => move |state| { - match &state { - InstallerUpdate::DownloadingError(err) => { - tracing::error!("Downloading failed: {err}"); + std::thread::spawn(clone!( + #[strong] + sender, - sender.input(AppMsg::Toast { - title: tr!("downloading-failed"), - description: Some(err.to_string()) - }); + move || { + installer.install(&config.game.wine.builds, clone!( + #[strong] + sender, + + move |state| { + match &state { + InstallerUpdate::DownloadingError(err) => { + tracing::error!("Downloading failed: {err}"); + + sender.input(AppMsg::Toast { + title: tr!("downloading-failed"), + description: Some(err.to_string()) + }); + } + + InstallerUpdate::UnpackingError(err) => { + tracing::error!("Unpacking failed: {err}"); + + sender.input(AppMsg::Toast { + title: tr!("unpacking-failed"), + description: Some(err.clone()) + }); + } + + _ => () + } + + #[allow(unused_must_use)] { + progress_bar_input.send(ProgressBarMsg::UpdateFromState(DiffUpdate::InstallerUpdate(state))); + } } + )); - InstallerUpdate::UnpackingError(err) => { - tracing::error!("Unpacking failed: {err}"); + config.game.wine.selected = Some(wine.name.clone()); - sender.input(AppMsg::Toast { - title: tr!("unpacking-failed"), - description: Some(err.clone()) - }); - } + Config::update(config); - _ => () - } - - #[allow(unused_must_use)] { - progress_bar_input.send(ProgressBarMsg::UpdateFromState(DiffUpdate::InstallerUpdate(state))); - } - })); - - config.game.wine.selected = Some(wine.name.clone()); - - Config::update(config); - - sender.input(AppMsg::SetDownloading(false)); - sender.input(AppMsg::UpdateLauncherState { - perform_on_download_needed: false, - show_status_page: true - }); - })); + sender.input(AppMsg::SetDownloading(false)); + sender.input(AppMsg::UpdateLauncherState { + perform_on_download_needed: false, + show_status_page: true + }); + } + )); } Err(err) => sender.input(AppMsg::Toast { diff --git a/src/ui/main/mod.rs b/src/ui/main/mod.rs index 67965a3..ab2379f 100644 --- a/src/ui/main/mod.rs +++ b/src/ui/main/mod.rs @@ -516,11 +516,16 @@ impl SimpleComponent for App { connect_clicked[sender] => move |_| { sender.input(AppMsg::DisableKillGameButton(true)); - std::thread::spawn(clone!(@strong sender => move || { - std::thread::sleep(std::time::Duration::from_secs(3)); + std::thread::spawn(clone!( + #[strong] + sender, - sender.input(AppMsg::DisableKillGameButton(false)); - })); + move || { + std::thread::sleep(std::time::Duration::from_secs(3)); + + sender.input(AppMsg::DisableKillGameButton(false)); + } + )); let result = std::process::Command::new("pkill") .arg("-f") // full text search @@ -676,134 +681,164 @@ impl SimpleComponent for App { // TODO: reduce code somehow - group.add_action::(RelmAction::new_stateless(clone!(@strong sender => move |_| { - if let Err(err) = open::that(LAUNCHER_FOLDER.as_path()) { - sender.input(AppMsg::Toast { - title: tr!("launcher-folder-opening-error"), - description: Some(err.to_string()) - }); + group.add_action::(RelmAction::new_stateless(clone!( + #[strong] + sender, - tracing::error!("Failed to open launcher folder: {err}"); - } - }))); - - group.add_action::(RelmAction::new_stateless(clone!(@strong sender => move |_| { - let path = match Config::get() { - Ok(config) => config.game.path.for_edition(config.launcher.edition).to_path_buf(), - Err(_) => CONFIG.game.path.for_edition(CONFIG.launcher.edition).to_path_buf(), - }; - - if let Err(err) = open::that(path) { - sender.input(AppMsg::Toast { - title: tr!("game-folder-opening-error"), - description: Some(err.to_string()) - }); - - tracing::error!("Failed to open game folder: {err}"); - } - }))); - - group.add_action::(RelmAction::new_stateless(clone!(@strong sender => move |_| { - if let Ok(file) = config_file() { - if let Err(err) = open::that(file) { + move |_| { + if let Err(err) = open::that(LAUNCHER_FOLDER.as_path()) { sender.input(AppMsg::Toast { - title: tr!("config-file-opening-error"), + title: tr!("launcher-folder-opening-error"), description: Some(err.to_string()) }); - tracing::error!("Failed to open config file: {err}"); + tracing::error!("Failed to open launcher folder: {err}"); } } - }))); + ))); - group.add_action::(RelmAction::new_stateless(clone!(@strong sender => move |_| { - if let Err(err) = open::that(crate::DEBUG_FILE.as_os_str()) { - sender.input(AppMsg::Toast { - title: tr!("debug-file-opening-error"), - description: Some(err.to_string()) - }); + group.add_action::(RelmAction::new_stateless(clone!( + #[strong] + sender, - tracing::error!("Failed to open debug file: {err}"); + move |_| { + let path = match Config::get() { + Ok(config) => config.game.path.for_edition(config.launcher.edition).to_path_buf(), + Err(_) => CONFIG.game.path.for_edition(CONFIG.launcher.edition).to_path_buf(), + }; + + if let Err(err) = open::that(path) { + sender.input(AppMsg::Toast { + title: tr!("game-folder-opening-error"), + description: Some(err.to_string()) + }); + + tracing::error!("Failed to open game folder: {err}"); + } } - }))); + ))); - group.add_action::(RelmAction::new_stateless(clone!(@strong sender => move |_| { - std::thread::spawn(clone!(@strong sender => move || { - let config = Config::get().unwrap_or_else(|_| CONFIG.clone()); + group.add_action::(RelmAction::new_stateless(clone!( + #[strong] + sender, - let web_cache = config.game.path.for_edition(config.launcher.edition) - .join(config.launcher.edition.data_folder()) - .join("webCaches"); + move |_| { + if let Ok(file) = config_file() { + if let Err(err) = open::that(file) { + sender.input(AppMsg::Toast { + title: tr!("config-file-opening-error"), + description: Some(err.to_string()) + }); - // Find newest cache folder - let mut web_cache_id = None; - - if let Ok(entries) = web_cache.read_dir() { - for entry in entries.flatten() { - if entry.path().is_dir() && - entry.file_name().to_string_lossy().trim_matches(|c| "0123456789.".contains(c)).is_empty() && - Some(entry.file_name()) > web_cache_id - { - web_cache_id = Some(entry.file_name()); - } + tracing::error!("Failed to open config file: {err}"); } } + } + ))); - if let Some(web_cache_id) = web_cache_id { - let web_cache = web_cache - .join(web_cache_id) - .join("Cache/Cache_Data/data_2"); + group.add_action::(RelmAction::new_stateless(clone!( + #[strong] + sender, - match std::fs::read(web_cache) { - Ok(web_cache) => { - let web_cache = String::from_utf8_lossy(&web_cache); + move |_| { + if let Err(err) = open::that(crate::DEBUG_FILE.as_os_str()) { + sender.input(AppMsg::Toast { + title: tr!("debug-file-opening-error"), + description: Some(err.to_string()) + }); - // https://webstatic-sea.[ho-yo-ver-se].com/[ge-nsh-in]/event/e20190909gacha-v2/index.html?...... - if let Some(url) = web_cache.lines().rev().find(|line| line.contains("gacha-v3/index.html")) { - let url_begin_pos = url.find("https://").unwrap(); - let url_end_pos = url_begin_pos + url[url_begin_pos..].find("\0\0\0\0").unwrap(); + tracing::error!("Failed to open debug file: {err}"); + } + } + ))); - if let Err(err) = open::that(format!("{}#/log", &url[url_begin_pos..url_end_pos])) { - tracing::error!("Failed to open wishes URL: {err}"); + group.add_action::(RelmAction::new_stateless(clone!( + #[strong] + sender, + + move |_| { + std::thread::spawn(clone!( + #[strong] + sender, + + move || { + let config = Config::get().unwrap_or_else(|_| CONFIG.clone()); + + let web_cache = config.game.path.for_edition(config.launcher.edition) + .join(config.launcher.edition.data_folder()) + .join("webCaches"); + + // Find newest cache folder + let mut web_cache_id = None; + + if let Ok(entries) = web_cache.read_dir() { + for entry in entries.flatten() { + if entry.path().is_dir() && + entry.file_name().to_string_lossy().trim_matches(|c| "0123456789.".contains(c)).is_empty() && + Some(entry.file_name()) > web_cache_id + { + web_cache_id = Some(entry.file_name()); + } + } + } + + if let Some(web_cache_id) = web_cache_id { + let web_cache = web_cache + .join(web_cache_id) + .join("Cache/Cache_Data/data_2"); + + match std::fs::read(web_cache) { + Ok(web_cache) => { + let web_cache = String::from_utf8_lossy(&web_cache); + + // https://webstatic-sea.[ho-yo-ver-se].com/[ge-nsh-in]/event/e20190909gacha-v2/index.html?...... + if let Some(url) = web_cache.lines().rev().find(|line| line.contains("gacha-v3/index.html")) { + let url_begin_pos = url.find("https://").unwrap(); + let url_end_pos = url_begin_pos + url[url_begin_pos..].find("\0\0\0\0").unwrap(); + + if let Err(err) = open::that(format!("{}#/log", &url[url_begin_pos..url_end_pos])) { + tracing::error!("Failed to open wishes URL: {err}"); + + sender.input(AppMsg::Toast { + title: tr!("wish-url-opening-error"), + description: Some(err.to_string()) + }); + } + } + + else { + tracing::error!("Couldn't find wishes URL: no url found"); + + sender.input(AppMsg::Toast { + title: tr!("wish-url-search-failed"), + description: None + }); + } + } + + Err(err) => { + tracing::error!("Couldn't find wishes URL: failed to open cache file: {err}"); sender.input(AppMsg::Toast { - title: tr!("wish-url-opening-error"), + title: tr!("wish-url-search-failed"), description: Some(err.to_string()) }); } } - - else { - tracing::error!("Couldn't find wishes URL: no url found"); - - sender.input(AppMsg::Toast { - title: tr!("wish-url-search-failed"), - description: None - }); - } } - Err(err) => { - tracing::error!("Couldn't find wishes URL: failed to open cache file: {err}"); + else { + tracing::error!("Couldn't find wishes URL: cache file doesn't exist"); sender.input(AppMsg::Toast { title: tr!("wish-url-search-failed"), - description: Some(err.to_string()) + description: None }); } } - } - - else { - tracing::error!("Couldn't find wishes URL: cache file doesn't exist"); - - sender.input(AppMsg::Toast { - title: tr!("wish-url-search-failed"), - description: None - }); - } - })); - }))); + )); + } + ))); group.add_action::(RelmAction::new_stateless(move |_| { about_dialog_broker.send(AboutDialogMsg::Show); @@ -824,87 +859,102 @@ impl SimpleComponent for App { // Download background picture if needed if download_picture { - tasks.push(std::thread::spawn(clone!(@strong sender => move || { - if let Err(err) = crate::background::download_background() { - tracing::error!("Failed to download background picture: {err}"); + tasks.push(std::thread::spawn(clone!( + #[strong] + sender, - sender.input(AppMsg::Toast { - title: tr!("background-downloading-failed"), - description: Some(err.to_string()) - }); + move || { + if let Err(err) = crate::background::download_background() { + tracing::error!("Failed to download background picture: {err}"); + + sender.input(AppMsg::Toast { + title: tr!("background-downloading-failed"), + description: Some(err.to_string()) + }); + } } - }))); + ))); } // Update components index - tasks.push(std::thread::spawn(clone!(@strong sender => move || { - let components = ComponentsLoader::new(&CONFIG.components.path); + tasks.push(std::thread::spawn(clone!( + #[strong] + sender, - match components.is_sync(&CONFIG.components.servers) { - Ok(Some(_)) => (), + move || { + let components = ComponentsLoader::new(&CONFIG.components.path); - Ok(None) => { - for host in &CONFIG.components.servers { - match components.sync(host) { - Ok(changes) => { - sender.input(AppMsg::Toast { - title: tr!("components-index-updated"), - description: if changes.is_empty() { - None - } else { - Some(changes.into_iter() - .map(|line| format!("- {line}")) - .collect::>() - .join("\n")) - } - }); + match components.is_sync(&CONFIG.components.servers) { + Ok(Some(_)) => (), - break; - } + Ok(None) => { + for host in &CONFIG.components.servers { + match components.sync(host) { + Ok(changes) => { + sender.input(AppMsg::Toast { + title: tr!("components-index-updated"), + description: if changes.is_empty() { + None + } else { + Some(changes.into_iter() + .map(|line| format!("- {line}")) + .collect::>() + .join("\n")) + } + }); - Err(err) => { - tracing::error!("Failed to sync components index"); + break; + } - sender.input(AppMsg::Toast { - title: tr!("components-index-sync-failed"), - description: Some(err.to_string()) - }); + Err(err) => { + tracing::error!("Failed to sync components index"); + + sender.input(AppMsg::Toast { + title: tr!("components-index-sync-failed"), + description: Some(err.to_string()) + }); + } } } } - } - Err(err) => { - tracing::error!("Failed to verify that components index synced"); + Err(err) => { + tracing::error!("Failed to verify that components index synced"); - sender.input(AppMsg::Toast { - title: tr!("components-index-verify-failed"), - description: Some(err.to_string()) - }); + sender.input(AppMsg::Toast { + title: tr!("components-index-verify-failed"), + description: Some(err.to_string()) + }); + } } } - }))); + ))); // Update initial game version status - tasks.push(std::thread::spawn(clone!(@strong sender => move || { - sender.input(AppMsg::SetGameDiff(match GAME.try_get_diff() { - Ok(diff) => Some(diff), - Err(err) => { - tracing::error!("Failed to find game diff: {err}"); + tasks.push(std::thread::spawn(clone!( + #[strong] + sender, - sender.input(AppMsg::Toast { - title: tr!("game-diff-finding-error"), - description: Some(err.to_string()) - }); + move || { + sender.input(AppMsg::SetGameDiff(match GAME.try_get_diff() { + Ok(diff) => Some(diff), + Err(err) => { + tracing::error!("Failed to find game diff: {err}"); - None - } - })); + sender.input(AppMsg::Toast { + title: tr!("game-diff-finding-error"), + description: Some(err.to_string()) + }); - tracing::info!("Updated game version status"); - }))); + None + } + })); + + tracing::info!("Updated game version status"); + } + ))); // Await for tasks to finish execution for task in tasks { @@ -938,21 +988,26 @@ impl SimpleComponent for App { self.disabled_buttons = true; } - let updater = clone!(@strong sender => move |state| { - if show_status_page { - match state { - StateUpdating::Game => { - sender.input(AppMsg::SetLoadingStatus(Some(Some(tr!("loading-launcher-state--game"))))); - } + let updater = clone!( + #[strong] + sender, - StateUpdating::Voice(locale) => { - sender.input(AppMsg::SetLoadingStatus(Some(Some(tr!("loading-launcher-state--voice", { - "locale" = locale.to_name() - }))))); + move |state| { + if show_status_page { + match state { + StateUpdating::Game => { + sender.input(AppMsg::SetLoadingStatus(Some(Some(tr!("loading-launcher-state--game"))))); + } + + StateUpdating::Voice(locale) => { + sender.input(AppMsg::SetLoadingStatus(Some(Some(tr!("loading-launcher-state--voice", { + "locale" = locale.to_name() + }))))); + } } } } - }); + ); let state = match LauncherState::get_from_config(updater) { Ok(state) => Some(state), @@ -1043,9 +1098,14 @@ impl SimpleComponent for App { std::thread::spawn(move || { for mut diff in diffs { - let result = diff.download_to(&tmp, clone!(@strong progress_bar_input => move |curr, total| { - progress_bar_input.send(ProgressBarMsg::UpdateProgress(curr, total)); - })); + let result = diff.download_to(&tmp, clone!( + #[strong] + progress_bar_input, + + move |curr, total| { + progress_bar_input.send(ProgressBarMsg::UpdateProgress(curr, total)); + } + )); if let Err(err) = result { sender.input(AppMsg::Toast { diff --git a/src/ui/main/repair_game.rs b/src/ui/main/repair_game.rs index c3db008..0296374 100644 --- a/src/ui/main/repair_game.rs +++ b/src/ui/main/repair_game.rs @@ -62,17 +62,22 @@ pub fn repair_game(sender: ComponentSender, progress_bar_input: Sender move || { - for file in thread_files { - let status = if config.launcher.repairer.fast { - file.fast_verify(&game_path) - } else { - file.verify(&game_path) - }; + std::thread::spawn(clone!( + #[strong] + game_path, - thread_sender.send((file, status)).unwrap(); + move || { + for file in thread_files { + let status = if config.launcher.repairer.fast { + file.fast_verify(&game_path) + } else { + file.verify(&game_path) + }; + + thread_sender.send((file, status)).unwrap(); + } } - })); + )); } // We have [config.launcher.repairer.threads] copies of this sender + the original one From b7ca18495ef93a87a314ca40409053ec77ccaff1 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 19 Jul 2024 12:39:27 +0200 Subject: [PATCH 12/34] feat: changed background images processing logic --- src/background.rs | 14 ++++---------- src/main.rs | 6 +++--- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/background.rs b/src/background.rs index bcef26f..288f804 100644 --- a/src/background.rs +++ b/src/background.rs @@ -73,12 +73,6 @@ pub fn download_background() -> anyhow::Result<()> { tracing::debug!("Background picture is already downloaded. Skipping"); download_image = false; - - if crate::BACKGROUND_PRIMARY_FILE.exists() { - tracing::debug!("Background picture is already patched. Skipping"); - - return Ok(()); - } } } @@ -97,20 +91,20 @@ pub fn download_background() -> anyhow::Result<()> { Command::new("dwebp") .arg(crate::BACKGROUND_FILE.as_path()) .arg("-o") - .arg(crate::BACKGROUND_PRIMARY_FILE.as_path()) + .arg(crate::PROCESSED_BACKGROUND_FILE.as_path()) .spawn()? .wait()?; // If it failed to re-code the file - just copy it // Will happen with HSR because devs apparently named // their background image ".webp" while it's JPEG - if !crate::BACKGROUND_PRIMARY_FILE.exists() { - std::fs::copy(crate::BACKGROUND_FILE.as_path(), crate::BACKGROUND_PRIMARY_FILE.as_path())?; + if !crate::PROCESSED_BACKGROUND_FILE.exists() { + std::fs::copy(crate::BACKGROUND_FILE.as_path(), crate::PROCESSED_BACKGROUND_FILE.as_path())?; } } else { - std::fs::copy(crate::BACKGROUND_FILE.as_path(), crate::BACKGROUND_PRIMARY_FILE.as_path())?; + std::fs::copy(crate::BACKGROUND_FILE.as_path(), crate::PROCESSED_BACKGROUND_FILE.as_path())?; } Ok(()) diff --git a/src/main.rs b/src/main.rs index 868d7e8..c0ddcf2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -61,8 +61,8 @@ lazy_static::lazy_static! { /// Path to `background` file. Standard is `$HOME/.local/share/anime-game-launcher/background` pub static ref BACKGROUND_FILE: PathBuf = LAUNCHER_FOLDER.join("background"); - /// Path to `background-primary` file. Standard is `$HOME/.local/share/anime-game-launcher/background-primary` - pub static ref BACKGROUND_PRIMARY_FILE: PathBuf = LAUNCHER_FOLDER.join("background-primary"); + /// Path to the processed `background` file. Standard is `$HOME/.cache/anime-game-launcher/background` + pub static ref PROCESSED_BACKGROUND_FILE: PathBuf = CACHE_FOLDER.join("background"); /// Path to `.keep-background` file. Used to mark launcher that it shouldn't update background picture /// @@ -102,7 +102,7 @@ lazy_static::lazy_static! { .round-bin {{ border-radius: 24px; }} - ", BACKGROUND_PRIMARY_FILE.to_string_lossy()); + ", PROCESSED_BACKGROUND_FILE.to_string_lossy()); } fn main() -> anyhow::Result<()> { From 7f5ebc173b64a9889ddb19fbbfc914457fbabd66 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 19 Jul 2024 13:09:33 +0200 Subject: [PATCH 13/34] build: delete unneeded package from the `flake.nix` --- flake.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/flake.nix b/flake.nix index fd15b23..9e7c0cc 100644 --- a/flake.nix +++ b/flake.nix @@ -20,7 +20,6 @@ cmake pkg-config - xdelta libwebp ]; From 77267731056eb2c6a79f3bfd44f0937eff602243 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 19 Jul 2024 13:16:23 +0200 Subject: [PATCH 14/34] feat(ui): list "Indonesia" wine language option --- src/ui/preferences/enhancements/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ui/preferences/enhancements/mod.rs b/src/ui/preferences/enhancements/mod.rs index e38d149..a2e5969 100644 --- a/src/ui/preferences/enhancements/mod.rs +++ b/src/ui/preferences/enhancements/mod.rs @@ -212,7 +212,8 @@ impl SimpleAsyncComponent for EnhancementsApp { "Español", "中国", "日本語", - "한국어" + "한국어", + "Indonesia" ]), set_selected: CONFIG.game.wine.language.ordinal() as u32, From 8f4f1eaa39b08cff4477551fefa132e781d515f7 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 19 Jul 2024 13:16:32 +0200 Subject: [PATCH 15/34] build: updated SDK version --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 34caaef..44d9b75 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -57,8 +57,8 @@ checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "anime-game-core" -version = "1.21.2" -source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.21.2#7944efab8516e581367963e82674060a33b9d72e" +version = "1.21.3" +source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.21.3#c2aca11525dba74f7dd3ae4415a11c1764c5fa86" dependencies = [ "anyhow", "bzip2", @@ -107,8 +107,8 @@ dependencies = [ [[package]] name = "anime-launcher-sdk" -version = "1.16.3" -source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.16.3#91ce712a941dbbee8b24b8beadaf50bb01dfb32f" +version = "1.16.4" +source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.16.4#9aa142ffa68a043077c5fa57e05dcd6cc613dc07" dependencies = [ "anime-game-core", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 9c98078..1a87d51 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ glib-build-tools = "0.20" [dependencies.anime-launcher-sdk] git = "https://github.com/an-anime-team/anime-launcher-sdk" -tag = "1.16.3" +tag = "1.16.4" features = ["all", "genshin"] # path = "../anime-launcher-sdk" # ! for dev purposes only From f32aa2465e2acbe47f3521bc7e6f15505cce05c1 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 19 Jul 2024 13:22:39 +0200 Subject: [PATCH 16/34] feat: updated changelog --- CHANGELOG.md | 17 +++++++++++++++++ src/ui/about.rs | 17 +++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index af0b38f..e115dc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Added "Indonesia" wine language option +- Added writing of the game's output to the `game.log` file in the launcher's folder + +### Fixed + +- Fixed `dwebp` package name for fedora during initial setup + +### Changed + +- Changed background images processing logic + +### Removed + +- Removed `xdelta3` dependency + ## [3.10.1] - 02.07.2024 ### Added diff --git a/src/ui/about.rs b/src/ui/about.rs index bfa2e6e..521055e 100644 --- a/src/ui/about.rs +++ b/src/ui/about.rs @@ -98,13 +98,26 @@ impl SimpleComponent for AboutDialog { "

Added

", "
    ", - "
  • Handle dwebp re-coding errors
  • ", + "
  • Added \"Indonesia\" wine language option
  • ", + "
  • Added writing of the game's output to the \"game.log\" file in the launcher's folder
  • ", "
", "

Fixed

", "
    ", - "
  • Added workaround for wrong pre-downloads API format
  • ", + "
  • Fixed \"dwebp\" package name for fedora during initial setup
  • ", + "
", + + "

Changed

", + + "
    ", + "
  • Changed background images processing logic
  • ", + "
", + + "

Removed

", + + "
    ", + "
  • Removed \"xdelta3\" dependency
  • ", "
" ].join("\n"), From 05c55ba7d91caa3649844b4704429c533c2bc436 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 19 Jul 2024 13:25:44 +0200 Subject: [PATCH 17/34] feat: added missing changelog entry --- CHANGELOG.md | 1 + src/ui/about.rs | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e115dc2..1aaf5eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Updated FPS unlocker version - Changed background images processing logic ### Removed diff --git a/src/ui/about.rs b/src/ui/about.rs index 521055e..9a7892a 100644 --- a/src/ui/about.rs +++ b/src/ui/about.rs @@ -111,6 +111,7 @@ impl SimpleComponent for AboutDialog { "

Changed

", "
    ", + "
  • Updated FPS unlocker version
  • ", "
  • Changed background images processing logic
  • ", "
", From 290adcee22297fa797a16a439fe3a49c315816ca Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 19 Jul 2024 14:41:50 +0200 Subject: [PATCH 18/34] builds: updated SDK version --- CHANGELOG.md | 3 ++- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1aaf5eb..0a1c834 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added "Indonesia" wine language option -- Added writing of the game's output to the `game.log` file in the launcher's folder +- Added writing of the game's output to the `game.log` file in the launcher's folder. + Size of this file is controlled by the `LAUNCHER_GAME_LOG_FILE_LIMIT` environment variable. ### Fixed diff --git a/Cargo.lock b/Cargo.lock index 44d9b75..44c568d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -107,8 +107,8 @@ dependencies = [ [[package]] name = "anime-launcher-sdk" -version = "1.16.4" -source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.16.4#9aa142ffa68a043077c5fa57e05dcd6cc613dc07" +version = "1.16.7" +source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.16.7#4589c81c27693643f3f73f8be6878f8f97c282d4" dependencies = [ "anime-game-core", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 1a87d51..8a30ab1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ glib-build-tools = "0.20" [dependencies.anime-launcher-sdk] git = "https://github.com/an-anime-team/anime-launcher-sdk" -tag = "1.16.4" +tag = "1.16.7" features = ["all", "genshin"] # path = "../anime-launcher-sdk" # ! for dev purposes only From 4c95c145d27beb27ca2889c7ec9b08ad812afddc Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 19 Jul 2024 16:08:50 +0200 Subject: [PATCH 19/34] 3.10.2 --- CHANGELOG.md | 5 ++++- Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a1c834..4b832e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [3.10.2] - 19.07.2024 + ### Added - Added "Indonesia" wine language option @@ -526,7 +528,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
-[unreleased]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.1...next +[unreleased]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.2...next +[3.10.2]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.1...3.10.2 [3.10.1]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.0...3.10.1 [3.10.0]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.9.6...3.10.0 [3.9.6]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.9.5...3.9.6 diff --git a/Cargo.lock b/Cargo.lock index 44c568d..8a706a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "anime-game-launcher" -version = "3.10.1" +version = "3.10.2" dependencies = [ "anime-launcher-sdk", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 8a30ab1..eaebb67 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anime-game-launcher" -version = "3.10.1" +version = "3.10.2" description = "Anime Game launcher" authors = ["Nikita Podvirnyy "] homepage = "https://github.com/an-anime-team/an-anime-game-launcher" From c97259c0639783a25be11a301509d39168067c97 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 19 Jul 2024 16:18:24 +0200 Subject: [PATCH 20/34] docs: updated readme --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d94c86d..cb6e3bb 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,8 @@ These packages are officially supported by the An Anime Team, and we try to ensu | Flatpak | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-any-distribution-flatpak) | [flatpak-builds](https://github.com/an-anime-team/flatpak-builds) | Any (Fedora, Pop!_OS, etc.) | Luna (available in discord) | | RPM | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-fedora-rpm) | [AAGL](https://build.opensuse.org/repositories/home:Maroxy:AAT-Apps/AAGL) * | Fedora, OpenSUSE | Maroxy (second discord admin) | -> \* Note: RPM packages are often really outdated. It's not recommended to use them. +> [!NOTE] +> RPM packages are often really outdated. It's not recommended to use them. ## 🙂 Community support @@ -55,7 +56,8 @@ These packages are supported by active members of our community. They're widely | AUR | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-arch-linux-aur) | [an-anime-game-launcher-bin](https://aur.archlinux.org/packages/an-anime-game-launcher-bin) | Arch Linux, Manjaro, EndeavourOS | xstra * | | NixOS module | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-nixos-nixpkg) | [aagl-gtk-on-nix](https://github.com/ezKEa/aagl-gtk-on-nix) | NixOS | Luxxy * | -> \* Note: honorary members of our discord server. We have direct contact with them. +> [!NOTE] +> Honorary members of our discord server. We have direct contact with them. ## 😑 Third party support @@ -68,7 +70,8 @@ These packages are supported by third party distributors. They either did not co | Ebuild | [aagl-ebuilds](https://github.com/an-anime-team/gentoo-ebuilds) * | Gentoo | | Lutris | `lutris.net/games/gen...-imp...` (stripping the link) | Any | -> \* Note: although it's hosted in our official repo we didn't contact with its maintainer for some time already, and recent updates were made via merge requests by the community. +> [!NOTE] +> Although it's hosted in our official repo we didn't contact with its maintainer for some time already, and recent updates were made via merge requests by the community. ## Chinese version support From db46f254bc19a52ed85c15f90a4b1f1ba91decb2 Mon Sep 17 00:00:00 2001 From: Observer KRypt0n_ Date: Sat, 20 Jul 2024 06:37:54 +0200 Subject: [PATCH 21/34] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cb6e3bb..0d989eb 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ These packages are officially supported by the An Anime Team, and we try to ensu | Format | Wiki | Source | Distributions | Maintainer | | - | - | - | - | - | -| Flatpak | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-any-distribution-flatpak) | [flatpak-builds](https://github.com/an-anime-team/flatpak-builds) | Any (Fedora, Pop!_OS, etc.) | Luna (available in discord) | +| Flatpak | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-any-distribution-flatpak) | [flatpak-builds](https://github.com/an-anime-team/flatpak-builds) | Any (Fedora, Pop!_OS, SteamOS / Steam Deck, etc.) | Luna (available in discord) | | RPM | [wiki](https://github.com/an-anime-team/an-anime-game-launcher/wiki/Installation#-fedora-rpm) | [AAGL](https://build.opensuse.org/repositories/home:Maroxy:AAT-Apps/AAGL) * | Fedora, OpenSUSE | Maroxy (second discord admin) | > [!NOTE] From 209ca477f82d311b2ef4beee4ff9553ec959a25f Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Sun, 21 Jul 2024 06:13:16 +0200 Subject: [PATCH 22/34] fix: potentially fixed `game.log` file issues --- CHANGELOG.md | 5 +++++ Cargo.lock | 4 ++-- Cargo.toml | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b832e2..b4c35b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- (potentially) Fixed `game.log` file overfilling at the start of the game +- (potentially) Fixed RAM filling with the buffered game logs + ## [3.10.2] - 19.07.2024 ### Added diff --git a/Cargo.lock b/Cargo.lock index 8a706a3..1124cef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -107,8 +107,8 @@ dependencies = [ [[package]] name = "anime-launcher-sdk" -version = "1.16.7" -source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.16.7#4589c81c27693643f3f73f8be6878f8f97c282d4" +version = "1.16.8" +source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.16.8#759394a2f1413e9bfbd51c66a892489522f9f230" dependencies = [ "anime-game-core", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index eaebb67..bba9ec6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ glib-build-tools = "0.20" [dependencies.anime-launcher-sdk] git = "https://github.com/an-anime-team/anime-launcher-sdk" -tag = "1.16.7" +tag = "1.16.8" features = ["all", "genshin"] # path = "../anime-launcher-sdk" # ! for dev purposes only From 52c8e943df0dbb59f2fe7f2e848fb5642257cd35 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Sun, 21 Jul 2024 06:57:07 +0200 Subject: [PATCH 23/34] build: updated launcher SDK --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1124cef..6b567a9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -107,8 +107,8 @@ dependencies = [ [[package]] name = "anime-launcher-sdk" -version = "1.16.8" -source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.16.8#759394a2f1413e9bfbd51c66a892489522f9f230" +version = "1.16.9" +source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.16.9#048fad0e35e55455146fb2da7fb722bbcacdb778" dependencies = [ "anime-game-core", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index bba9ec6..a2a6f05 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ glib-build-tools = "0.20" [dependencies.anime-launcher-sdk] git = "https://github.com/an-anime-team/anime-launcher-sdk" -tag = "1.16.8" +tag = "1.16.9" features = ["all", "genshin"] # path = "../anime-launcher-sdk" # ! for dev purposes only From de780bd7f9438d494837ea94ecdd3a017160cc42 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Sun, 21 Jul 2024 09:02:52 +0200 Subject: [PATCH 24/34] build: updated launcher SDK --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6b567a9..00db310 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -107,8 +107,8 @@ dependencies = [ [[package]] name = "anime-launcher-sdk" -version = "1.16.9" -source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.16.9#048fad0e35e55455146fb2da7fb722bbcacdb778" +version = "1.16.10" +source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.16.10#0603733f2bd7efb38255e1d24f4a33e7137c88f3" dependencies = [ "anime-game-core", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index a2a6f05..1fd478e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ glib-build-tools = "0.20" [dependencies.anime-launcher-sdk] git = "https://github.com/an-anime-team/anime-launcher-sdk" -tag = "1.16.9" +tag = "1.16.10" features = ["all", "genshin"] # path = "../anime-launcher-sdk" # ! for dev purposes only From 287e79e79ab41f936a02421ac04b18cac427f3f3 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Sun, 21 Jul 2024 09:32:56 +0200 Subject: [PATCH 25/34] feat: updated changelog --- CHANGELOG.md | 5 +++-- src/ui/about.rs | 24 +++--------------------- 2 files changed, 6 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b4c35b2..961fe5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,8 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- (potentially) Fixed `game.log` file overfilling at the start of the game -- (potentially) Fixed RAM filling with the buffered game logs +- Fixed `game.log` file overfilling at the start of the game +- Fixed RAM filling with the buffered game logs +- Fixed Discord RPC updates ## [3.10.2] - 19.07.2024 diff --git a/src/ui/about.rs b/src/ui/about.rs index 9a7892a..880334c 100644 --- a/src/ui/about.rs +++ b/src/ui/about.rs @@ -95,30 +95,12 @@ impl SimpleComponent for AboutDialog { set_release_notes_version: &APP_VERSION, set_release_notes: &[ - "

Added

", - - "
    ", - "
  • Added \"Indonesia\" wine language option
  • ", - "
  • Added writing of the game's output to the \"game.log\" file in the launcher's folder
  • ", - "
", - "

Fixed

", "
    ", - "
  • Fixed \"dwebp\" package name for fedora during initial setup
  • ", - "
", - - "

Changed

", - - "
    ", - "
  • Updated FPS unlocker version
  • ", - "
  • Changed background images processing logic
  • ", - "
", - - "

Removed

", - - "
    ", - "
  • Removed \"xdelta3\" dependency
  • ", + "
  • Fixed \"game.log\" file overfilling at the start of the game
  • ", + "
  • Fixed RAM filling with the buffered game logs
  • ", + "
  • Fixed Discord RPC updates
  • ", "
" ].join("\n"), From 935390ab7fb97078ba041bd36041916db6b1c501 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Sun, 21 Jul 2024 09:36:31 +0200 Subject: [PATCH 26/34] 3.10.3 --- CHANGELOG.md | 5 ++++- Cargo.lock | 16 ++++++++-------- Cargo.toml | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 961fe5c..926bc9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [3.10.3] - 21.07.2024 + ### Fixed - Fixed `game.log` file overfilling at the start of the game @@ -534,7 +536,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
-[unreleased]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.2...next +[unreleased]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.3...next +[3.10.3]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.2...3.10.2 [3.10.2]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.1...3.10.2 [3.10.1]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.0...3.10.1 [3.10.0]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.9.6...3.10.0 diff --git a/Cargo.lock b/Cargo.lock index 00db310..d8be201 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "anime-game-launcher" -version = "3.10.2" +version = "3.10.3" dependencies = [ "anime-launcher-sdk", "anyhow", @@ -198,9 +198,9 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" @@ -2768,7 +2768,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.14", ] [[package]] @@ -3299,9 +3299,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "374ec40a2d767a3c1b4972d9475ecd557356637be906f2cb3f7fe17a6eb5e22f" dependencies = [ "memchr", ] @@ -3444,9 +3444,9 @@ dependencies = [ [[package]] name = "zip" -version = "2.1.3" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775a2b471036342aa69bc5a602bc889cb0a06cda00477d0c69566757d5553d39" +checksum = "b895748a3ebcb69b9d38dcfdf21760859a4b0d0b0015277640c2ef4c69640e6f" dependencies = [ "aes", "arbitrary", diff --git a/Cargo.toml b/Cargo.toml index 1fd478e..df40979 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anime-game-launcher" -version = "3.10.2" +version = "3.10.3" description = "Anime Game launcher" authors = ["Nikita Podvirnyy "] homepage = "https://github.com/an-anime-team/an-anime-game-launcher" From 32ef2a02d61d5c563e681a9e34229f666a0173df Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 2 Aug 2024 10:45:39 +0200 Subject: [PATCH 27/34] build: updated SDK version --- CHANGELOG.md | 8 +++++ Cargo.lock | 90 ++++++++++++++++++++++++++++++++++++---------------- Cargo.toml | 6 ++-- 3 files changed, 73 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 926bc9e..aadd1fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Respect root `.version` file for game version parsing + +### Changed + +- Prioritize parsed game version over the API response + ## [3.10.3] - 21.07.2024 ### Fixed diff --git a/Cargo.lock b/Cargo.lock index d8be201..d351aee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -57,8 +57,8 @@ checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "anime-game-core" -version = "1.21.3" -source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.21.3#c2aca11525dba74f7dd3ae4415a11c1764c5fa86" +version = "1.22.0" +source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.22.0#41a15f2f5620d281e22ccf2e7e68391c9d08cf5c" dependencies = [ "anyhow", "bzip2", @@ -107,8 +107,8 @@ dependencies = [ [[package]] name = "anime-launcher-sdk" -version = "1.16.10" -source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.16.10#0603733f2bd7efb38255e1d24f4a33e7137c88f3" +version = "1.17.0" +source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.17.0#a17a0824344d24bf02de00aee71967b028c176bb" dependencies = [ "anime-game-core", "anyhow", @@ -488,24 +488,24 @@ dependencies = [ [[package]] name = "cached" -version = "0.52.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8466736fe5dbcaf8b8ee24f9bbefe43c884dc3e9ff7178da70f55bffca1133c" +checksum = "b4d73155ae6b28cf5de4cfc29aeb02b8a1c6dab883cb015d15cd514e42766846" dependencies = [ "ahash", "cached_proc_macro", "cached_proc_macro_types", "hashbrown", - "instant", "once_cell", "thiserror", + "web-time", ] [[package]] name = "cached_proc_macro" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575f32e012222055211b70f5b0601f951f84523410a0e65c81f2744a6042450d" +checksum = "2f42a145ed2d10dce2191e1dcf30cfccfea9026660e143662ba5eec4017d5daa" dependencies = [ "darling", "proc-macro2", @@ -1500,9 +1500,9 @@ dependencies = [ [[package]] name = "human-panic" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c5d0e9120f6bca6120d142c7ede1ba376dd6bf276d69dd3dbe6cbeb7824179" +checksum = "1c5a08ed290eac04006e21e63d32e90086b6182c7cd0452d10f4264def1fec9a" dependencies = [ "anstream", "anstyle", @@ -1565,15 +1565,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - [[package]] name = "intl-memoizer" version = "0.5.2" @@ -2580,15 +2571,14 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.30.13" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" +checksum = "d4115055da5f572fff541dd0c4e61b0262977f453cc9fe04be83aba25a89bdab" dependencies = [ - "cfg-if", "core-foundation-sys", "libc", + "memchr", "ntapi", - "once_cell", "rayon", "windows", ] @@ -3076,6 +3066,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "webpki-roots" version = "0.25.4" @@ -3132,9 +3132,9 @@ dependencies = [ [[package]] name = "windows" -version = "0.52.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ "windows-core", "windows-targets 0.52.6", @@ -3142,9 +3142,43 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.52.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" dependencies = [ "windows-targets 0.52.6", ] diff --git a/Cargo.toml b/Cargo.toml index df40979..e6e98b2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ glib-build-tools = "0.20" [dependencies.anime-launcher-sdk] git = "https://github.com/an-anime-team/anime-launcher-sdk" -tag = "1.16.10" +tag = "1.17.0" features = ["all", "genshin"] # path = "../anime-launcher-sdk" # ! for dev purposes only @@ -36,7 +36,7 @@ whatadistro = "0.1.0" serde_json = "1.0" anyhow = "1.0" lazy_static = "1.5.0" -cached = { version = "0.52", features = ["proc_macro"] } +cached = { version = "0.53", features = ["proc_macro"] } md-5 = { version = "0.10", features = ["asm"] } enum-ordinalize = "4.3" @@ -46,4 +46,4 @@ tracing-subscriber = "0.3" fluent-templates = "0.9" unic-langid = "0.9" -human-panic = "2.0.0" +human-panic = "2.0.1" From e2823aafa5a87ee585a8cd353f3096dbae86c406 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 2 Aug 2024 10:54:25 +0200 Subject: [PATCH 28/34] feat: removed migrate installation feature --- CHANGELOG.md | 4 ++ src/ui/first_run/default_paths.rs | 80 ++++--------------------------- src/ui/first_run/main.rs | 2 +- src/ui/migrate_installation.rs | 52 -------------------- src/ui/mod.rs | 1 - src/ui/preferences/general/mod.rs | 22 --------- 6 files changed, 15 insertions(+), 146 deletions(-) delete mode 100644 src/ui/migrate_installation.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index aadd1fe..4766647 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Prioritize parsed game version over the API response +### Removed + +- Removed migrate installation feature + ## [3.10.3] - 21.07.2024 ### Fixed diff --git a/src/ui/first_run/default_paths.rs b/src/ui/first_run/default_paths.rs index 76a5077..dd4bc44 100644 --- a/src/ui/first_run/default_paths.rs +++ b/src/ui/first_run/default_paths.rs @@ -12,7 +12,6 @@ pub struct DefaultPathsApp { progress_bar: AsyncController, show_additional: bool, - migrate_installation: bool, show_progress: bool, launcher: PathBuf, @@ -49,8 +48,7 @@ pub enum DefaultPathsAppMsg { #[relm4::component(async, pub)] impl SimpleAsyncComponent for DefaultPathsApp { - /// If `true`, then use migrate installation mode - type Init = bool; + type Init = (); type Input = DefaultPathsAppMsg; type Output = FirstRunAppMsg; @@ -242,11 +240,7 @@ impl SimpleAsyncComponent for DefaultPathsApp { set_spacing: 8, gtk::Button { - set_label: &if model.migrate_installation { - tr!("migrate") - } else { - tr!("continue") - }, + set_label: &tr!("continue"), set_css_classes: &["suggested-action", "pill"], @@ -254,17 +248,10 @@ impl SimpleAsyncComponent for DefaultPathsApp { }, gtk::Button { - set_label: &if model.migrate_installation { - tr!("close", { "form" = "noun" }) - } else { - tr!("exit") - }, + set_label: &tr!("exit"), add_css_class: "pill", - #[watch] - set_visible: !model.migrate_installation, - connect_clicked => DefaultPathsAppMsg::Exit } } @@ -287,7 +274,7 @@ impl SimpleAsyncComponent for DefaultPathsApp { } } - async fn init(init: Self::Init, root: Self::Root, _sender: AsyncComponentSender) -> AsyncComponentParts { + async fn init(_init: Self::Init, root: Self::Root, _sender: AsyncComponentSender) -> AsyncComponentParts { let model = Self { progress_bar: ProgressBar::builder() .launch(ProgressBarInit { @@ -299,7 +286,6 @@ impl SimpleAsyncComponent for DefaultPathsApp { .detach(), show_additional: false, - migrate_installation: init, show_progress: false, launcher: LAUNCHER_FOLDER.to_path_buf(), @@ -311,12 +297,13 @@ impl SimpleAsyncComponent for DefaultPathsApp { fps_unlocker: CONFIG.game.enhancements.fps_unlocker.path.clone(), components: CONFIG.components.path.clone(), - #[allow(clippy::or_fun_call)] - temp: CONFIG.launcher.temp.clone().unwrap_or(std::env::temp_dir()) + temp: CONFIG.launcher.temp.clone() + .unwrap_or_else(std::env::temp_dir) }; // Set progress bar width - model.progress_bar.widget().set_width_request(400); + model.progress_bar.widget() + .set_width_request(400); let widgets = view_output!(); @@ -364,49 +351,9 @@ impl SimpleAsyncComponent for DefaultPathsApp { #[allow(unused_must_use)] DefaultPathsAppMsg::Continue => { - let old_config = Config::get().unwrap_or_else(|_| CONFIG.clone()); - match self.update_config() { Ok(_) => { - if self.migrate_installation { - self.progress_bar.sender().send(ProgressBarMsg::SetVisible(true)); - - self.show_progress = true; - - let folders = [ - (old_config.game.wine.builds, &self.runners), - (old_config.game.dxvk.builds, &self.dxvks), - (old_config.game.wine.prefix, &self.prefix), - (old_config.game.path.global, &self.game_global), - (old_config.game.path.china, &self.game_china), - (old_config.components.path, &self.components), - - (old_config.game.enhancements.fps_unlocker.path, &self.fps_unlocker) - ]; - - #[allow(clippy::expect_fun_call)] - for (i, (from, to)) in folders.iter().enumerate() { - self.progress_bar.sender().send(ProgressBarMsg::UpdateCaption(Some( - from.to_str().map(|str| str.to_string()).unwrap_or_else(|| format!("{:?}", from)) - ))); - - if &from != to && from.exists() { - move_files::move_files(from, to).expect(&format!("Failed to move folder: {:?} -> {:?}", from, to)); - } - - self.progress_bar.sender().send(ProgressBarMsg::UpdateProgress(i as u64 + 1, folders.len() as u64)); - } - - // Restart the app - - std::process::Command::new(std::env::current_exe().unwrap()).spawn().unwrap(); - - relm4::main_application().quit(); - } - - else { - sender.output(Self::Output::ScrollToSelectVoiceovers); - } + sender.output(Self::Output::ScrollToSelectVoiceovers); } Err(err) => { @@ -419,14 +366,7 @@ impl SimpleAsyncComponent for DefaultPathsApp { } DefaultPathsAppMsg::Exit => { - if self.migrate_installation { - // TODO: this shit should return message to general preferences component somehow to close MigrateInstallation window - todo!(); - } - - else { - relm4::main_application().quit(); - } + relm4::main_application().quit(); } } } diff --git a/src/ui/first_run/main.rs b/src/ui/first_run/main.rs index 089f32a..1b3b678 100644 --- a/src/ui/first_run/main.rs +++ b/src/ui/first_run/main.rs @@ -131,7 +131,7 @@ impl SimpleComponent for FirstRunApp { .forward(sender.input_sender(), std::convert::identity), default_paths: DefaultPathsApp::builder() - .launch(false) + .launch(()) .forward(sender.input_sender(), std::convert::identity), select_voiceovers: SelectVoiceoversApp::builder() diff --git a/src/ui/migrate_installation.rs b/src/ui/migrate_installation.rs deleted file mode 100644 index a31a98f..0000000 --- a/src/ui/migrate_installation.rs +++ /dev/null @@ -1,52 +0,0 @@ -use relm4::prelude::*; -use gtk::prelude::*; - -use crate::tr; - -use super::first_run::default_paths::DefaultPathsApp; - -pub struct MigrateInstallationApp { - default_paths: AsyncController, -} - -#[relm4::component(pub)] -impl SimpleComponent for MigrateInstallationApp { - type Init = (); - type Input = (); - type Output = (); - - view! { - adw::Window { - set_default_size: (780, 560), - set_modal: true, - set_hide_on_close: true, - - #[watch] - set_title: Some(&tr!("migrate-installation")), - - gtk::Box { - set_orientation: gtk::Orientation::Vertical, - - adw::HeaderBar { - add_css_class: "flat" - }, - - append = model.default_paths.widget(), - } - } - } - - fn init(_init: Self::Init, root: Self::Root, _sender: ComponentSender) -> ComponentParts { - tracing::info!("Initializing migration window"); - - let model = Self { - default_paths: DefaultPathsApp::builder() - .launch(true) - .detach() - }; - - let widgets = view_output!(); - - ComponentParts { model, widgets } - } -} diff --git a/src/ui/mod.rs b/src/ui/mod.rs index eae6545..e5365c9 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -3,4 +3,3 @@ pub mod about; pub mod preferences; pub mod components; pub mod first_run; -pub mod migrate_installation; diff --git a/src/ui/preferences/general/mod.rs b/src/ui/preferences/general/mod.rs index 0561a03..b302d7d 100644 --- a/src/ui/preferences/general/mod.rs +++ b/src/ui/preferences/general/mod.rs @@ -22,7 +22,6 @@ pub mod components; use components::*; -use crate::ui::migrate_installation::MigrateInstallationApp; use crate::i18n::*; use crate::*; @@ -103,7 +102,6 @@ impl AsyncFactoryComponent for VoicePackageComponent { pub struct GeneralApp { voice_packages: AsyncFactoryVecDeque, - migrate_installation: Controller, components_page: AsyncController, game_diff: Option, @@ -127,7 +125,6 @@ pub enum GeneralAppMsg { UpdateDownloadedWine, UpdateDownloadedDxvk, - OpenMigrateInstallation, RepairGame, OpenMainPage, @@ -341,13 +338,6 @@ impl SimpleAsyncComponent for GeneralApp { set_spacing: 8, set_margin_top: 16, - gtk::Button { - set_label: &tr!("migrate-installation"), - set_tooltip_text: Some(&tr!("migrate-installation-description")), - - connect_clicked => GeneralAppMsg::OpenMigrateInstallation - }, - gtk::Button { set_label: &tr!("repair-game"), @@ -543,10 +533,6 @@ impl SimpleAsyncComponent for GeneralApp { .launch_default() .forward(sender.input_sender(), std::convert::identity), - migrate_installation: MigrateInstallationApp::builder() - .launch(()) - .detach(), - components_page: ComponentsPage::builder() .launch(()) .forward(sender.input_sender(), std::convert::identity), @@ -648,14 +634,6 @@ impl SimpleAsyncComponent for GeneralApp { .unwrap(); } - GeneralAppMsg::OpenMigrateInstallation => unsafe { - if let Some(window) = crate::ui::main::PREFERENCES_WINDOW.as_ref() { - self.migrate_installation.widget().set_transient_for(Some(window.widget())); - } - - self.migrate_installation.widget().present(); - } - GeneralAppMsg::RepairGame => { sender.output(Self::Output::RepairGame).unwrap(); } From 0e692df47511cfd109010e5e59951ce733768c0b Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 2 Aug 2024 11:06:14 +0200 Subject: [PATCH 29/34] feat: clarify GPL version in about dialog Before it stated "or later", though I expected it to be 3.0 only --- src/ui/about.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/about.rs b/src/ui/about.rs index 880334c..2d0b41e 100644 --- a/src/ui/about.rs +++ b/src/ui/about.rs @@ -39,7 +39,7 @@ impl SimpleComponent for AboutDialog { set_website: "https://github.com/an-anime-team/an-anime-game-launcher", set_issue_url: "https://github.com/an-anime-team/an-anime-game-launcher/issues", - set_license_type: gtk::License::Gpl30, + set_license_type: gtk::License::Gpl30Only, set_version: &APP_VERSION, set_developers: &[ From 5a23eef6914eafa532def7d80333c9dc852722f9 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 2 Aug 2024 11:18:42 +0200 Subject: [PATCH 30/34] feat: updated changelog --- CHANGELOG.md | 2 +- src/ui/about.rs | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4766647..b73f997 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Prioritize parsed game version over the API response +- Prioritize parsed game version over the API response ### Removed diff --git a/src/ui/about.rs b/src/ui/about.rs index 2d0b41e..810773a 100644 --- a/src/ui/about.rs +++ b/src/ui/about.rs @@ -95,12 +95,22 @@ impl SimpleComponent for AboutDialog { set_release_notes_version: &APP_VERSION, set_release_notes: &[ - "

Fixed

", + "

Added

", "
    ", - "
  • Fixed \"game.log\" file overfilling at the start of the game
  • ", - "
  • Fixed RAM filling with the buffered game logs
  • ", - "
  • Fixed Discord RPC updates
  • ", + "
  • Respect root \".version\" file for game version parsing
  • ", + "
", + + "

Changed

", + + "
    ", + "
  • Prioritize parsed game version over the API response
  • ", + "
", + + "

Removed

", + + "
    ", + "
  • Removed migrate installation feature
  • ", "
" ].join("\n"), From 6fc8547e90f10cf2dc8332b8fb7d055c520acc6c Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 2 Aug 2024 11:24:17 +0200 Subject: [PATCH 31/34] 3.11.0 --- CHANGELOG.md | 5 +- Cargo.lock | 175 ++++++++++++++++++++++++++++----------------------- Cargo.toml | 2 +- 3 files changed, 100 insertions(+), 82 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b73f997..bb579f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [3.11.0] - 02.08.2024 + ### Added - Respect root `.version` file for game version parsing @@ -548,7 +550,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
-[unreleased]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.3...next +[unreleased]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.11.0...next +[3.10.3]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.3...3.11.0 [3.10.3]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.2...3.10.2 [3.10.2]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.1...3.10.2 [3.10.1]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.0...3.10.1 diff --git a/Cargo.lock b/Cargo.lock index d351aee..f70f6ed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -37,7 +37,7 @@ dependencies = [ "cfg-if", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -82,7 +82,7 @@ dependencies = [ [[package]] name = "anime-game-launcher" -version = "3.10.3" +version = "3.11.0" dependencies = [ "anime-launcher-sdk", "anyhow", @@ -125,9 +125,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -140,33 +140,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -439,9 +439,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "serde", @@ -461,9 +461,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.1" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "bzip2" @@ -545,9 +545,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" +checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" dependencies = [ "jobserver", "libc", @@ -587,9 +587,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "concurrent-queue" @@ -1548,9 +1548,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" dependencies = [ "equivalent", "hashbrown", @@ -1605,9 +1605,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itoa" @@ -1617,9 +1617,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] @@ -1803,13 +1803,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1859,16 +1860,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.9", - "libc", -] - [[package]] name = "objc" version = "0.2.7" @@ -1900,9 +1891,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.1" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" +checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" dependencies = [ "memchr", ] @@ -2067,9 +2058,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "dee4364d9f3b902ef14fab8a1ddffb783a1cb6b4bba3bfc1fa3922732c7de97f" +dependencies = [ + "zerocopy 0.6.6", +] [[package]] name = "proc-macro-crate" @@ -2442,11 +2436,12 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -2464,9 +2459,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -2560,9 +2555,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.71" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -2609,9 +2604,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.15" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" @@ -2700,39 +2695,38 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.1" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2caba9f80616f438e09748d5acda951967e1ea58508ef53d9c6402485a46df" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "pin-project-lite", "signal-hook-registry", "socket2", "tracing", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "toml" -version = "0.8.15" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac2caab0bf757388c6c0ae23b3293fdb463fee59434529014f85e3263b995c28" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.16", + "toml_edit 0.22.20", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] @@ -2750,15 +2744,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.16" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "278f3d518e152219c994ce877758516bca5e118eaed6996192a774fb9fbf0788" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.14", + "winnow 0.6.18", ] [[package]] @@ -2970,9 +2964,9 @@ checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" @@ -3333,9 +3327,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.14" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374ec40a2d767a3c1b4972d9475ecd557356637be906f2cb3f7fe17a6eb5e22f" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -3381,9 +3375,9 @@ dependencies = [ [[package]] name = "zbus" -version = "4.3.1" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "851238c133804e0aa888edf4a0229481c753544ca12a60fd1c3230c8a500fe40" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" dependencies = [ "async-broadcast", "async-process", @@ -3414,9 +3408,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "4.3.1" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d5a3f12c20bd473be3194af6b49d50d7bb804ef3192dc70eddedb26b85d9da7" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -3436,13 +3430,34 @@ dependencies = [ "zvariant", ] +[[package]] +name = "zerocopy" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6" +dependencies = [ + "byteorder", + "zerocopy-derive 0.6.6", +] + [[package]] name = "zerocopy" version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy-derive" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91" +dependencies = [ + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -3478,9 +3493,9 @@ dependencies = [ [[package]] name = "zip" -version = "2.1.5" +version = "2.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b895748a3ebcb69b9d38dcfdf21760859a4b0d0b0015277640c2ef4c69640e6f" +checksum = "40dd8c92efc296286ce1fbd16657c5dbefff44f1b4ca01cc5f517d8b7b3d3e2e" dependencies = [ "aes", "arbitrary", @@ -3549,9 +3564,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "4.1.2" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1724a2b330760dc7d2a8402d841119dc869ef120b139d29862d6980e9c75bfc9" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" dependencies = [ "endi", "enumflags2", @@ -3563,9 +3578,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "4.1.2" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55025a7a518ad14518fb243559c058a2e5b848b015e31f1d90414f36e3317859" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -3576,9 +3591,9 @@ dependencies = [ [[package]] name = "zvariant_utils" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc242db087efc22bd9ade7aa7809e4ba828132edc312871584a6b4391bdf8786" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index e6e98b2..e8c9316 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anime-game-launcher" -version = "3.10.3" +version = "3.11.0" description = "Anime Game launcher" authors = ["Nikita Podvirnyy "] homepage = "https://github.com/an-anime-team/an-anime-game-launcher" From 85ba5b0d08e89fe730161055c6682e0029b2b13c Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 2 Aug 2024 14:59:42 +0200 Subject: [PATCH 32/34] docs: updated changelog --- CHANGELOG.md | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb579f7..fbdd3db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -551,7 +551,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
[unreleased]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.11.0...next -[3.10.3]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.3...3.11.0 +[3.11.0]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.3...3.11.0 [3.10.3]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.2...3.10.2 [3.10.2]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.1...3.10.2 [3.10.1]: https://github.com/an-anime-team/an-anime-game-launcher/compare/3.10.0...3.10.1 diff --git a/Cargo.toml b/Cargo.toml index e8c9316..ea8d0d7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ name = "anime-game-launcher" version = "3.11.0" description = "Anime Game launcher" -authors = ["Nikita Podvirnyy "] +authors = ["Nikita Podvirnyi "] homepage = "https://github.com/an-anime-team/an-anime-game-launcher" repository = "https://github.com/an-anime-team/an-anime-game-launcher" license = "GPL-3.0" From df378357adbe00636bb1fadf7e6745c911d533ed Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 16 Aug 2024 14:33:05 +0200 Subject: [PATCH 33/34] fix: create cache folder if it doesn't exist --- src/main.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index c0ddcf2..3e4f816 100644 --- a/src/main.rs +++ b/src/main.rs @@ -109,11 +109,11 @@ fn main() -> anyhow::Result<()> { // Setup custom panic handler human_panic::setup_panic!(human_panic::metadata!()); - // Create launcher folder if it isn't + // Create launcher folder if it doesn't exist. if !LAUNCHER_FOLDER.exists() { std::fs::create_dir_all(LAUNCHER_FOLDER.as_path()).expect("Failed to create launcher folder"); - // This one is kinda critical buy well, I can't do something with it + // This one is kinda critical but well, I can't do anything about it std::fs::write(FIRST_RUN_FILE.as_path(), "").expect("Failed to create .first-run file"); // Set initial launcher language based on system language @@ -125,6 +125,12 @@ fn main() -> anyhow::Result<()> { Config::update_raw(config).expect("Failed to update config"); } + // Create cache folder if it doesn't exist. + if !CACHE_FOLDER.exists() { + std::fs::create_dir_all(CACHE_FOLDER.as_path()) + .expect("Failed to create cache folder"); + } + // Force debug output let mut force_debug = false; From f192305bdd26c568f280c96f94b0b0ad6c7a05f1 Mon Sep 17 00:00:00 2001 From: Nikita Podvirnyi Date: Fri, 16 Aug 2024 14:33:28 +0200 Subject: [PATCH 34/34] docs: updated changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fbdd3db..1452fe8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Create cache folder if it doesn't exist + ## [3.11.0] - 02.08.2024 ### Added