diff --git a/.cargo/config.toml b/.cargo/config.toml
index 7115f001..085f3158 100644
--- a/.cargo/config.toml
+++ b/.cargo/config.toml
@@ -2,5 +2,8 @@
[target.'cfg(windows)']
rustflags = ["-C", "link-args=/STACK:16777220", "--cfg", "tokio_unstable"]
+[target.x86_64-pc-windows-msvc]
+linker = "rust-lld"
+
[build]
rustflags = ["--cfg", "tokio_unstable"]
diff --git a/.github/workflows/astralrinth-build.yml b/.github/workflows/astralrinth-build.yml
index c5a263d7..c037743e 100644
--- a/.github/workflows/astralrinth-build.yml
+++ b/.github/workflows/astralrinth-build.yml
@@ -96,6 +96,11 @@ jobs:
librsvg2-dev \
xdg-utils \
openjdk-11-jdk
+
+ - name: ⚙️ Set application environment
+ shell: bash
+ run: |
+ cp packages/app-lib/.env.prod packages/app-lib/.env
- name: 💨 Setup Turbo cache
uses: rharkor/caching-for-turbo@v1.8
diff --git a/Cargo.lock b/Cargo.lock
index dbc61596..61ac18bf 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -77,7 +77,7 @@ dependencies = [
"flate2",
"foldhash",
"futures-core",
- "h2 0.3.26",
+ "h2 0.3.27",
"http 0.2.12",
"httparse",
"httpdate",
@@ -514,6 +514,9 @@ dependencies = [
"serde_repr",
"tokio",
"url",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-protocols",
"zbus",
]
@@ -554,12 +557,12 @@ dependencies = [
[[package]]
name = "async-compression"
-version = "0.4.25"
+version = "0.4.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40f6024f3f856663b45fd0c9b6f2024034a702f453549449e0d84a305900dad4"
+checksum = "ddb939d66e4ae03cee6091612804ba446b12878410cfa17f785f4dd67d4014e8"
dependencies = [
"brotli",
- "bzip2 0.6.0",
+ "bzip2",
"deflate64",
"flate2",
"futures-core",
@@ -609,7 +612,7 @@ dependencies = [
"futures-lite 2.6.0",
"parking",
"polling",
- "rustix 1.0.7",
+ "rustix 1.0.8",
"slab",
"tracing",
"windows-sys 0.59.0",
@@ -641,7 +644,7 @@ dependencies = [
"cfg-if",
"event-listener 5.4.0",
"futures-lite 2.6.0",
- "rustix 1.0.7",
+ "rustix 1.0.8",
"tracing",
]
@@ -668,7 +671,7 @@ dependencies = [
"cfg-if",
"futures-core",
"futures-io",
- "rustix 1.0.7",
+ "rustix 1.0.8",
"signal-hook-registry",
"slab",
"windows-sys 0.59.0",
@@ -830,7 +833,7 @@ checksum = "07a9b245ba0739fc90935094c29adbaee3f977218b5fb95e822e261cda7f56a3"
dependencies = [
"http 1.3.1",
"log",
- "rustls 0.23.28",
+ "rustls 0.23.29",
"serde",
"serde_json",
"url",
@@ -1216,15 +1219,6 @@ dependencies = [
"bytes",
]
-[[package]]
-name = "bzip2"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47"
-dependencies = [
- "bzip2-sys",
-]
-
[[package]]
name = "bzip2"
version = "0.6.0"
@@ -1234,16 +1228,6 @@ dependencies = [
"libbz2-rs-sys",
]
-[[package]]
-name = "bzip2-sys"
-version = "0.1.13+1.0.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14"
-dependencies = [
- "cc",
- "pkg-config",
-]
-
[[package]]
name = "cairo-rs"
version = "0.18.5"
@@ -1308,7 +1292,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02260d489095346e5cafd04dea8e8cb54d1d74fcd759022a9b72986ebe9a1257"
dependencies = [
"serde",
- "toml",
+ "toml 0.8.23",
]
[[package]]
@@ -1414,9 +1398,9 @@ checksum = "93a719913643003b84bd13022b4b7e703c09342cd03b679c4641c7d2e50dc34d"
[[package]]
name = "clap"
-version = "4.5.40"
+version = "4.5.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f"
+checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9"
dependencies = [
"clap_builder",
"clap_derive",
@@ -1424,9 +1408,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.5.40"
+version = "4.5.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e"
+checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d"
dependencies = [
"anstream",
"anstyle",
@@ -1436,9 +1420,9 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "4.5.40"
+version = "4.5.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce"
+checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491"
dependencies = [
"heck 0.5.0",
"proc-macro2",
@@ -1709,7 +1693,7 @@ dependencies = [
"bitflags 2.9.1",
"core-foundation 0.10.1",
"core-graphics-types",
- "foreign-types 0.5.0",
+ "foreign-types",
"libc",
]
@@ -1750,9 +1734,9 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
[[package]]
name = "crc32fast"
-version = "1.4.2"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
+checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
dependencies = [
"cfg-if",
]
@@ -2206,18 +2190,6 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
-[[package]]
-name = "dispatch2"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a0d569e003ff27784e0e14e4a594048698e0c0f0b66cabcb51511be55a7caa0"
-dependencies = [
- "bitflags 2.9.1",
- "block2 0.6.1",
- "libc",
- "objc2 0.6.1",
-]
-
[[package]]
name = "dispatch2"
version = "0.3.0"
@@ -2241,6 +2213,15 @@ dependencies = [
"syn 2.0.104",
]
+[[package]]
+name = "dlib"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412"
+dependencies = [
+ "libloading 0.8.8",
+]
+
[[package]]
name = "dlopen2"
version = "0.7.0"
@@ -2294,6 +2275,12 @@ version = "0.15.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
+[[package]]
+name = "downcast-rs"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
+
[[package]]
name = "dpi"
version = "0.1.2"
@@ -2391,14 +2378,14 @@ checksum = "e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449"
[[package]]
name = "embed-resource"
-version = "3.0.4"
+version = "3.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0963f530273dc3022ab2bdc3fcd6d488e850256f2284a82b7413cb9481ee85dd"
+checksum = "4c6d81016d6c977deefb2ef8d8290da019e27cc26167e102185da528e6c0ab38"
dependencies = [
"cc",
"memchr",
"rustc_version",
- "toml",
+ "toml 0.9.2",
"vswhom",
"winreg 0.55.0",
]
@@ -2465,9 +2452,9 @@ dependencies = [
[[package]]
name = "enumset"
-version = "1.1.6"
+version = "1.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11a6b7c3d347de0a9f7bfd2f853be43fe32fa6fac30c70f6d6d67a1e936b87ee"
+checksum = "d6ee17054f550fd7400e1906e2f9356c7672643ed34008a9e8abe147ccd2d821"
dependencies = [
"enumset_derive",
"serde",
@@ -2475,9 +2462,9 @@ dependencies = [
[[package]]
name = "enumset_derive"
-version = "0.11.0"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6da3ea9e1d1a3b1593e15781f930120e72aa7501610b2f82e5b6739c72e8eac5"
+checksum = "76d07902c93376f1e96c34abc4d507c0911df3816cef50b01f5a2ff3ad8c370d"
dependencies = [
"darling",
"proc-macro2",
@@ -2722,15 +2709,6 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
-[[package]]
-name = "foreign-types"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
-dependencies = [
- "foreign-types-shared 0.1.1",
-]
-
[[package]]
name = "foreign-types"
version = "0.5.0"
@@ -2738,7 +2716,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
dependencies = [
"foreign-types-macros",
- "foreign-types-shared 0.3.1",
+ "foreign-types-shared",
]
[[package]]
@@ -2752,12 +2730,6 @@ dependencies = [
"syn 2.0.104",
]
-[[package]]
-name = "foreign-types-shared"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-
[[package]]
name = "foreign-types-shared"
version = "0.3.1"
@@ -2785,7 +2757,7 @@ version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4"
dependencies = [
- "rustix 1.0.7",
+ "rustix 1.0.8",
"tokio",
"windows-sys 0.59.0",
]
@@ -3082,7 +3054,7 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc257fdb4038301ce4b9cd1b3b51704509692bb3ff716a410cbd07925d9dae55"
dependencies = [
- "rustix 1.0.7",
+ "rustix 1.0.8",
"windows-targets 0.52.6",
]
@@ -3301,9 +3273,9 @@ dependencies = [
[[package]]
name = "h2"
-version = "0.3.26"
+version = "0.3.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
+checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d"
dependencies = [
"bytes",
"fnv",
@@ -3636,7 +3608,7 @@ dependencies = [
"futures-channel",
"futures-core",
"futures-util",
- "h2 0.3.26",
+ "h2 0.3.27",
"http 0.2.12",
"http-body 0.4.6",
"httparse",
@@ -3696,7 +3668,7 @@ dependencies = [
"http 1.3.1",
"hyper 1.6.0",
"hyper-util",
- "rustls 0.23.28",
+ "rustls 0.23.29",
"rustls-native-certs 0.8.1",
"rustls-pki-types",
"tokio",
@@ -3718,27 +3690,11 @@ dependencies = [
"tower-service",
]
-[[package]]
-name = "hyper-tls"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
-dependencies = [
- "bytes",
- "http-body-util",
- "hyper 1.6.0",
- "hyper-util",
- "native-tls",
- "tokio",
- "tokio-native-tls",
- "tower-service",
-]
-
[[package]]
name = "hyper-util"
-version = "0.1.14"
+version = "0.1.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb"
+checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df"
dependencies = [
"base64 0.22.1",
"bytes",
@@ -4410,7 +4366,7 @@ dependencies = [
"futures-util",
"hex",
"hmac",
- "hyper-tls",
+ "hyper-rustls 0.27.7",
"hyper-util",
"iana-time-zone",
"image",
@@ -4501,7 +4457,7 @@ dependencies = [
"nom 8.0.0",
"percent-encoding",
"quoted_printable",
- "rustls 0.23.28",
+ "rustls 0.23.29",
"rustls-native-certs 0.8.1",
"socket2",
"tokio",
@@ -4528,7 +4484,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf"
dependencies = [
"gtk-sys",
- "libloading",
+ "libloading 0.7.4",
"once_cell",
]
@@ -4564,6 +4520,16 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "libloading"
+version = "0.8.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667"
+dependencies = [
+ "cfg-if",
+ "windows-targets 0.53.2",
+]
+
[[package]]
name = "libm"
version = "0.2.15"
@@ -4992,7 +4958,7 @@ dependencies = [
"ascii",
"block2 0.6.1",
"dirs",
- "dispatch2 0.3.0",
+ "dispatch2",
"formatx",
"objc2 0.6.1",
"objc2-app-kit",
@@ -5007,23 +4973,6 @@ dependencies = [
"winapi",
]
-[[package]]
-name = "native-tls"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
-dependencies = [
- "libc",
- "log",
- "openssl",
- "openssl-probe",
- "openssl-sys",
- "schannel",
- "security-framework 2.11.1",
- "security-framework-sys",
- "tempfile",
-]
-
[[package]]
name = "ndk"
version = "0.9.0"
@@ -5390,7 +5339,7 @@ checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166"
dependencies = [
"bitflags 2.9.1",
"block2 0.6.1",
- "dispatch2 0.3.0",
+ "dispatch2",
"libc",
"objc2 0.6.1",
]
@@ -5403,7 +5352,7 @@ checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4"
dependencies = [
"bitflags 2.9.1",
"block2 0.6.1",
- "dispatch2 0.3.0",
+ "dispatch2",
"libc",
"objc2 0.6.1",
"objc2-core-foundation",
@@ -5604,50 +5553,12 @@ dependencies = [
"pathdiff",
]
-[[package]]
-name = "openssl"
-version = "0.10.73"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8"
-dependencies = [
- "bitflags 2.9.1",
- "cfg-if",
- "foreign-types 0.3.2",
- "libc",
- "once_cell",
- "openssl-macros",
- "openssl-sys",
-]
-
-[[package]]
-name = "openssl-macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.104",
-]
-
[[package]]
name = "openssl-probe"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
-[[package]]
-name = "openssl-sys"
-version = "0.9.109"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571"
-dependencies = [
- "cc",
- "libc",
- "pkg-config",
- "vcpkg",
-]
-
[[package]]
name = "option-ext"
version = "0.2.0"
@@ -6022,13 +5933,13 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
[[package]]
name = "plist"
-version = "1.7.3"
+version = "1.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "546b279bf0638ee811d9e47de2ca5b66575a543035d79fdf83959dd2f5c3b4c3"
+checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1"
dependencies = [
"base64 0.22.1",
"indexmap 2.10.0",
- "quick-xml 0.37.5",
+ "quick-xml 0.38.0",
"serde",
"time",
]
@@ -6056,7 +5967,7 @@ dependencies = [
"concurrent-queue",
"hermit-abi",
"pin-project-lite",
- "rustix 1.0.7",
+ "rustix 1.0.8",
"tracing",
"windows-sys 0.59.0",
]
@@ -6439,6 +6350,15 @@ dependencies = [
"tokio",
]
+[[package]]
+name = "quick-xml"
+version = "0.38.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8927b0664f5c5a98265138b7e3f90aa19a6b21353182469ace36d4ac527b7b1b"
+dependencies = [
+ "memchr",
+]
+
[[package]]
name = "quinn"
version = "0.11.8"
@@ -6451,7 +6371,7 @@ dependencies = [
"quinn-proto",
"quinn-udp",
"rustc-hash",
- "rustls 0.23.28",
+ "rustls 0.23.29",
"socket2",
"thiserror 2.0.12",
"tokio",
@@ -6471,7 +6391,7 @@ dependencies = [
"rand 0.9.1",
"ring",
"rustc-hash",
- "rustls 0.23.28",
+ "rustls 0.23.29",
"rustls-pki-types",
"slab",
"thiserror 2.0.12",
@@ -6887,7 +6807,7 @@ dependencies = [
"percent-encoding",
"pin-project-lite",
"quinn",
- "rustls 0.23.28",
+ "rustls 0.23.29",
"rustls-native-certs 0.8.1",
"rustls-pki-types",
"serde",
@@ -6932,13 +6852,13 @@ dependencies = [
[[package]]
name = "rfd"
-version = "0.15.3"
+version = "0.15.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80c844748fdc82aae252ee4594a89b6e7ebef1063de7951545564cbc4e57075d"
+checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed"
dependencies = [
"ashpd",
"block2 0.6.1",
- "dispatch2 0.2.0",
+ "dispatch2",
"glib-sys",
"gobject-sys",
"gtk-sys",
@@ -6957,9 +6877,9 @@ dependencies = [
[[package]]
name = "rgb"
-version = "0.8.51"
+version = "0.8.52"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a457e416a0f90d246a4c3288bd7a25b2304ca727f253f95be383dd17af56be8f"
+checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce"
dependencies = [
"bytemuck",
]
@@ -7149,15 +7069,15 @@ dependencies = [
[[package]]
name = "rustix"
-version = "1.0.7"
+version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
+checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
dependencies = [
"bitflags 2.9.1",
"errno",
"libc",
"linux-raw-sys 0.9.4",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
]
[[package]]
@@ -7174,15 +7094,15 @@ dependencies = [
[[package]]
name = "rustls"
-version = "0.23.28"
+version = "0.23.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643"
+checksum = "2491382039b29b9b11ff08b76ff6c97cf287671dbb74f0be44bda389fffe9bd1"
dependencies = [
"log",
"once_cell",
"ring",
"rustls-pki-types",
- "rustls-webpki 0.103.3",
+ "rustls-webpki 0.103.4",
"subtle",
"zeroize",
]
@@ -7251,9 +7171,9 @@ dependencies = [
[[package]]
name = "rustls-webpki"
-version = "0.103.3"
+version = "0.103.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435"
+checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc"
dependencies = [
"ring",
"rustls-pki-types",
@@ -7501,7 +7421,7 @@ checksum = "507ac2be9bf2da56c831da57faf1dadd81f434bd282935cdb06193d0c94e8811"
dependencies = [
"httpdate",
"reqwest",
- "rustls 0.23.28",
+ "rustls 0.23.29",
"sentry-backtrace",
"sentry-contexts",
"sentry-core",
@@ -7769,6 +7689,15 @@ dependencies = [
"serde",
]
+[[package]]
+name = "serde_spanned"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83"
+dependencies = [
+ "serde",
+]
+
[[package]]
name = "serde_tokenstream"
version = "0.2.2"
@@ -8017,7 +7946,7 @@ dependencies = [
"bytemuck",
"cfg_aliases",
"core-graphics",
- "foreign-types 0.5.0",
+ "foreign-types",
"js-sys",
"log",
"objc2 0.5.2",
@@ -8058,9 +7987,9 @@ dependencies = [
[[package]]
name = "spdx"
-version = "0.10.8"
+version = "0.10.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58b69356da67e2fc1f542c71ea7e654a361a79c938e4424392ecf4fa065d2193"
+checksum = "c3e17e880bafaeb362a7b751ec46bdc5b61445a188f80e0606e68167cd540fa3"
dependencies = [
"smallvec",
]
@@ -8122,7 +8051,7 @@ dependencies = [
"once_cell",
"percent-encoding",
"rust_decimal",
- "rustls 0.23.28",
+ "rustls 0.23.29",
"serde",
"serde_json",
"sha2",
@@ -8499,7 +8428,7 @@ dependencies = [
"cfg-expr",
"heck 0.5.0",
"pkg-config",
- "toml",
+ "toml 0.8.23",
"version-compare",
]
@@ -8653,7 +8582,7 @@ dependencies = [
"tauri-codegen",
"tauri-utils",
"tauri-winres",
- "toml",
+ "toml 0.8.23",
"walkdir",
]
@@ -8711,7 +8640,7 @@ dependencies = [
"serde",
"serde_json",
"tauri-utils",
- "toml",
+ "toml 0.8.23",
"walkdir",
]
@@ -8771,7 +8700,7 @@ dependencies = [
"tauri-plugin",
"tauri-utils",
"thiserror 2.0.12",
- "toml",
+ "toml 0.8.23",
"url",
]
@@ -8981,7 +8910,7 @@ dependencies = [
"serde_with",
"swift-rs",
"thiserror 2.0.12",
- "toml",
+ "toml 0.8.23",
"url",
"urlpattern",
"uuid 1.17.0",
@@ -8996,7 +8925,7 @@ checksum = "e8d321dbc6f998d825ab3f0d62673e810c861aac2d0de2cc2c395328f1d113b4"
dependencies = [
"embed-resource",
"indexmap 2.10.0",
- "toml",
+ "toml 0.8.23",
]
[[package]]
@@ -9008,7 +8937,7 @@ dependencies = [
"fastrand 2.3.0",
"getrandom 0.3.3",
"once_cell",
- "rustix 1.0.7",
+ "rustix 1.0.8",
"windows-sys 0.59.0",
]
@@ -9054,6 +8983,7 @@ dependencies = [
"data-url",
"dirs",
"discord-rich-presence",
+ "dotenvy",
"dunce",
"either",
"encoding_rs",
@@ -9108,6 +9038,8 @@ dependencies = [
"dashmap",
"either",
"enumset",
+ "hyper 1.6.0",
+ "hyper-util",
"native-dialog",
"paste",
"serde",
@@ -9330,16 +9262,6 @@ dependencies = [
"syn 2.0.104",
]
-[[package]]
-name = "tokio-native-tls"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
-dependencies = [
- "native-tls",
- "tokio",
-]
-
[[package]]
name = "tokio-rustls"
version = "0.24.1"
@@ -9356,7 +9278,7 @@ version = "0.26.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b"
dependencies = [
- "rustls 0.23.28",
+ "rustls 0.23.29",
"tokio",
]
@@ -9392,11 +9314,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
dependencies = [
"serde",
- "serde_spanned",
- "toml_datetime",
+ "serde_spanned 0.6.9",
+ "toml_datetime 0.6.11",
"toml_edit 0.22.27",
]
+[[package]]
+name = "toml"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed0aee96c12fa71097902e0bb061a5e1ebd766a6636bb605ba401c45c1650eac"
+dependencies = [
+ "indexmap 2.10.0",
+ "serde",
+ "serde_spanned 1.0.0",
+ "toml_datetime 0.7.0",
+ "toml_parser",
+ "toml_writer",
+ "winnow 0.7.12",
+]
+
[[package]]
name = "toml_datetime"
version = "0.6.11"
@@ -9406,6 +9343,15 @@ dependencies = [
"serde",
]
+[[package]]
+name = "toml_datetime"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3"
+dependencies = [
+ "serde",
+]
+
[[package]]
name = "toml_edit"
version = "0.19.15"
@@ -9413,7 +9359,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
dependencies = [
"indexmap 2.10.0",
- "toml_datetime",
+ "toml_datetime 0.6.11",
"winnow 0.5.40",
]
@@ -9424,7 +9370,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
dependencies = [
"indexmap 2.10.0",
- "toml_datetime",
+ "toml_datetime 0.6.11",
"winnow 0.5.40",
]
@@ -9436,10 +9382,19 @@ checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
dependencies = [
"indexmap 2.10.0",
"serde",
- "serde_spanned",
- "toml_datetime",
+ "serde_spanned 0.6.9",
+ "toml_datetime 0.6.11",
"toml_write",
- "winnow 0.7.11",
+ "winnow 0.7.12",
+]
+
+[[package]]
+name = "toml_parser"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97200572db069e74c512a14117b296ba0a80a30123fbbb5aa1f4a348f639ca30"
+dependencies = [
+ "winnow 0.7.12",
]
[[package]]
@@ -9448,6 +9403,12 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
+[[package]]
+name = "toml_writer"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64"
+
[[package]]
name = "tonic"
version = "0.12.3"
@@ -9571,9 +9532,9 @@ dependencies = [
[[package]]
name = "tracing-actix-web"
-version = "0.7.18"
+version = "0.7.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2340b7722695166c7fc9b3e3cd1166e7c74fedb9075b8f0c74d3822d2e41caf5"
+checksum = "5360edd490ec8dee9fedfc6a9fd83ac2f01b3e1996e3261b9ad18a61971fe064"
dependencies = [
"actix-web",
"mutually_exclusive_features",
@@ -9683,7 +9644,7 @@ dependencies = [
"httparse",
"log",
"rand 0.9.1",
- "rustls 0.23.28",
+ "rustls 0.23.29",
"rustls-pki-types",
"sha1",
"thiserror 2.0.12",
@@ -9835,7 +9796,7 @@ dependencies = [
"base64 0.22.1",
"log",
"percent-encoding",
- "rustls 0.23.28",
+ "rustls 0.23.29",
"rustls-pemfile 2.2.0",
"rustls-pki-types",
"ureq-proto",
@@ -10168,6 +10129,66 @@ dependencies = [
"web-sys",
]
+[[package]]
+name = "wayland-backend"
+version = "0.3.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121"
+dependencies = [
+ "cc",
+ "downcast-rs",
+ "rustix 0.38.44",
+ "scoped-tls",
+ "smallvec",
+ "wayland-sys",
+]
+
+[[package]]
+name = "wayland-client"
+version = "0.31.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61"
+dependencies = [
+ "bitflags 2.9.1",
+ "rustix 0.38.44",
+ "wayland-backend",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-protocols"
+version = "0.32.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a"
+dependencies = [
+ "bitflags 2.9.1",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-scanner"
+version = "0.31.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484"
+dependencies = [
+ "proc-macro2",
+ "quick-xml 0.37.5",
+ "quote",
+]
+
+[[package]]
+name = "wayland-sys"
+version = "0.31.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615"
+dependencies = [
+ "dlib",
+ "log",
+ "pkg-config",
+]
+
[[package]]
name = "web-sys"
version = "0.3.77"
@@ -10319,7 +10340,7 @@ checksum = "24d643ce3fd3e5b54854602a080f34fb10ab75e0b813ee32d00ca2b44fa74762"
dependencies = [
"either",
"env_home",
- "rustix 1.0.7",
+ "rustix 1.0.8",
"winsafe",
]
@@ -10815,9 +10836,9 @@ dependencies = [
[[package]]
name = "winnow"
-version = "0.7.11"
+version = "0.7.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd"
+checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95"
dependencies = [
"memchr",
]
@@ -10953,14 +10974,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909"
dependencies = [
"libc",
- "rustix 1.0.7",
+ "rustix 1.0.8",
]
[[package]]
name = "xml-rs"
-version = "0.8.26"
+version = "0.8.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda"
+checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7"
[[package]]
name = "yaserde"
@@ -11026,9 +11047,9 @@ dependencies = [
[[package]]
name = "zbus"
-version = "5.7.1"
+version = "5.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3a7c7cee313d044fca3f48fa782cb750c79e4ca76ba7bc7718cd4024cdf6f68"
+checksum = "597f45e98bc7e6f0988276012797855613cd8269e23b5be62cc4e5d28b7e515d"
dependencies = [
"async-broadcast",
"async-executor",
@@ -11052,7 +11073,7 @@ dependencies = [
"tracing",
"uds_windows",
"windows-sys 0.59.0",
- "winnow 0.7.11",
+ "winnow 0.7.12",
"zbus_macros",
"zbus_names",
"zvariant",
@@ -11060,9 +11081,9 @@ dependencies = [
[[package]]
name = "zbus_macros"
-version = "5.7.1"
+version = "5.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a17e7e5eec1550f747e71a058df81a9a83813ba0f6a95f39c4e218bdc7ba366a"
+checksum = "e5c8e4e14dcdd9d97a98b189cd1220f30e8394ad271e8c987da84f73693862c2"
dependencies = [
"proc-macro-crate 3.3.0",
"proc-macro2",
@@ -11081,7 +11102,7 @@ checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97"
dependencies = [
"serde",
"static_assertions",
- "winnow 0.7.11",
+ "winnow 0.7.12",
"zvariant",
]
@@ -11167,12 +11188,12 @@ dependencies = [
[[package]]
name = "zip"
-version = "4.2.0"
+version = "4.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95ab361742de920c5535880f89bbd611ee62002bf11341d16a5f057bb8ba6899"
+checksum = "9aed4ac33e8eb078c89e6cbb1d5c4c7703ec6d299fc3e7c3695af8f8b423468b"
dependencies = [
"arbitrary",
- "bzip2 0.5.2",
+ "bzip2",
"crc32fast",
"deflate64",
"flate2",
@@ -11254,24 +11275,24 @@ dependencies = [
[[package]]
name = "zvariant"
-version = "5.5.3"
+version = "5.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d30786f75e393ee63a21de4f9074d4c038d52c5b1bb4471f955db249f9dffb1"
+checksum = "d91b3680bb339216abd84714172b5138a4edac677e641ef17e1d8cb1b3ca6e6f"
dependencies = [
"endi",
"enumflags2",
"serde",
"url",
- "winnow 0.7.11",
+ "winnow 0.7.12",
"zvariant_derive",
"zvariant_utils",
]
[[package]]
name = "zvariant_derive"
-version = "5.5.3"
+version = "5.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75fda702cd42d735ccd48117b1630432219c0e9616bf6cb0f8350844ee4d9580"
+checksum = "3a8c68501be459a8dbfffbe5d792acdd23b4959940fc87785fb013b32edbc208"
dependencies = [
"proc-macro-crate 3.3.0",
"proc-macro2",
@@ -11291,7 +11312,7 @@ dependencies = [
"serde",
"static_assertions",
"syn 2.0.104",
- "winnow 0.7.11",
+ "winnow 0.7.12",
]
[[package]]
diff --git a/Cargo.toml b/Cargo.toml
index 040e12d0..341c8838 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -67,7 +67,13 @@ heck = "0.5.0"
hex = "0.4.3"
hickory-resolver = "0.25.2"
hmac = "0.12.1"
-hyper-tls = "0.6.0"
+hyper = "1.6.0"
+hyper-rustls = { version = "0.27.7", default-features = false, features = [
+ "http1",
+ "native-tokio",
+ "ring",
+ "tls12",
+] }
hyper-util = "0.1.14"
iana-time-zone = "0.1.63"
image = { version = "0.25.6", default-features = false, features = ["rayon"] }
diff --git a/README.md b/README.md
index b23ac38b..a7be669b 100644
--- a/README.md
+++ b/README.md
@@ -1,76 +1,123 @@
-# Navigation in this README
-- [Install instructions](#install-instructions)
-- [Features](#features)
-- [Getting started](#getting-started)
-- [Disclaimer](#disclaimer)
-- [Donate](#support-our-project-crypto-wallets)
+# 📘 Navigation
+
+- [🔧 Install Instructions](#install-instructions)
+- [✨ Features](#features)
+- [🚀 Getting Started](#getting-started)
+- [⚠️ Disclaimer](#disclaimer)
+- [💰 Donate](#support-our-project-crypto-wallets)
+
+## Other languages
+> [Русский](readme/ru_ru/README.md)
+
+## Support channel
+> [Telegram](https://me.astralium.su/ref/telegram_channel)
+
+---
# About Project
-## AstralRinth • Empowering Your Minecraft Adventure
-Welcome to AR • Fork of Modrinth, the ultimate game launcher designed to enhance your Minecraft experience through the Modrinth platform and their API. Whether you're a graphical interface enthusiast, or a developer integrating Modrinth projects, Theseus core is your gateway to a new level of Minecraft gaming.
+## **AstralRinth • Empowering Your Minecraft Adventure**
-## About Software
-Introducing AstralRinth, a specialized variant of Theseus dedicated to implementing offline authorization for an even more flexible and user-centric Minecraft Modrinth experience. Roam the Minecraft realms without the constraints of online authentication, thanks to AstralRinth.
+Welcome to **AstralRinth (AR)** — a powerful fork of Modrinth, reimagined to enhance your Minecraft journey. Whether you're a GUI enthusiast or a developer building with Modrinth’s API, **Theseus Core** is your launchpad into a new era of Minecraft gameplay.
-## AR • Unlocking Minecraft's Boundless Horizon
-Dive into the extraordinary world of AstralRinth, a fork of the original project with a unique focus on providing a free trial experience for Minecraft, all without the need for a license. Currently boasting:
+- *Recently, improved integration with the Git Astralium API has been added.*
-# Install instructions
-- To install our application, you need to download a file for your operating system from our available releases or development builds • [Download variants here](https://git.astralium.su/didirus/AstralRinth/releases)
-- After you have downloaded the required executable file or archive, then open it
+## **About the Software**
-### Downloadable file extensions
-- `.msi` format for Windows OS system _(Supported popular latest versions of Microsoft Windows)_
-- `.dmg` format for MacOS system _(Works on Macos Ventura / Sonoma / Sequoia, but it should be works on older OS builds)_
-- `.deb` format for Linux OS systems _(Since there are quite a few distributions, we do not guarantee
+**AstralRinth** is a dedicated branch of the Theseus project, focused on **offline authentication**, offering you more flexibility and control. Play Minecraft without the need for constant online verification — a user-first approach to modern modded gaming.
-### Installation subjects
-- Builds in releases that are signed with the following prefixes are not recommended for installation and may contain errors:
- - `dev`
- - `nightly`
- - `dirty`
- - `dirty-dev`
- - `dirty-nightly`
- - `dirty_dev`
- - `dirty_nightly`
-- Auto-updating takes place through parsing special versions from releases, so we also distribute clean types of `.msi, .dmg and .deb`
+## **AR • Unlocking Minecraft's Boundless Horizon**
+
+This unique fork introduces a **free trial Minecraft experience**, bypassing license checks while maintaining rich functionality. Currently includes:
+
+---
+
+# Install Instructions
+
+To install the launcher:
+
+1. Visit the [releases page](https://git.astralium.su/didirus/AstralRinth/releases) to download the correct version for your system.
+2. Run the downloaded file or extract and launch it, depending on the format.
+
+### Downloadable File Extensions
+
+| Extension | OS | Notes |
+| --------- | ------- | --------------------------------------------------------------------- |
+| `.msi` | Windows | Supported on all recent Windows versions |
+| `.dmg` | macOS | Works on Ventura, Sonoma, Sequoia _(may also support older versions)_ |
+| `.deb` | Linux | Basic support; compatibility may vary by distribution |
+
+### Installation Warnings
+
+Avoid using builds with these prefixes — they may be unstable or experimental:
+
+- `dev`
+- `nightly`
+- `dirty`
+- `dirty-dev`
+- `dirty-nightly`
+- `dirty_dev`
+- `dirty_nightly`
+
+---
# Features
-### Featured enhancement in AR
-- AstralRinth offers a range of authorization options, giving users the flexibility to log in with valid licenses or even a pirate account without auth credentials breaks (_Unlike MultiMC Cracked and similar software_). Experience Minecraft on your terms, breaking free from traditional licensing constraints (_Popular in Russian Federation_).
+> _The launcher provides an opportunity to use the well-known Modrinth, but with an improved user experience._
-### Easy to use
-- Using the launcher is intuitive, any user can figure it out.
+## Included exclusive features
-### Update notifies
-- We have implemented notifications about the release of new updates on our Git. The launcher can also download them for you and try to install them.
+- No ads in the entire launcher.
+- Custom `.svg` vector icons for a distinct UI.
+- Improved compatibility with both licensed and pirate accounts.
+ - Use **official microsoft accounts** or **offline/pirate accounts** — login won't break.
+ - Supports license-free access for testing or personal use.
+ - No dependence on official authentication services.
+- Discord Rich Presence integration:
+ - Dynamic status messages.
+ - In-game timer and AFK counter.
+- Strict disabling of statistics and other Modrinth metrics.
+- Optimized archive/package size.
+- Integrated update fetcher for seamless version management.
+ - Built-in update alerts for new versions posted on Git Astralium.
+ - Automatic download and installation capabilities.
+- Database migration fixes, when error occurred (Interactive Mode) (Modrinth issue)
+- ElyBy skin system integration (AuthLib / Java)
-### Enhancements
-- Custom .SVG vectors for a personalized touch.
-- Improved compatibility for both pirate and licensed accounts.
-- Beautiful Discord RPC with random messages while playing, along with an in-game timer and AFK counter.
-- Forced disabling of statistics collection (modrinch metrics) with a hard patch from AstralRinth, ensuring it remains deactivated regardless of the configuration setting.
-- Removal of advertisements from all launcher views.
-- Optimization of packages (archives).
-- Integrated update fetching feature
+---
# Getting Started
-To begin your AstralRinth adventure, follow these steps:
-1. **Download Your OS Version**: Head over to our [releases page](https://git.astralium.su/didirus/AstralRinth/releases/) to find the right file for your operating system.
- - **Choosing the Correct File**: Ensure you select the file that matches your OS requirements.
- - [**How select file**](#downloadable-file-extensions)
- - [**How select release**](#installation-subjects)
-2. **Authentication**: Log in with a valid license or, for testing, try using a pirate account to see AstralRinth in action.
-3. **Launch Minecraft**: Start your journey by launching Minecraft through AstralRinth and enjoy the adventures that await.
- - **Choosing java installation**: The launcher will try to automatically detect the recommended JVM version for running the game, but you can configure everything in the launcher settings.
+
+To begin using AstralRinth:
+
+1. **Download Your OS Version**
+
+ - Go to the [releases page](https://git.astralium.su/didirus/AstralRinth/releases)
+ - [How to choose a file](#downloadable-file-extensions)
+ - [How to choose a release](#installation-warnings)
+
+2. **Log In**
+
+ - Use your official Mojang/Microsoft account, or test using a non-licensed account.
+
+3. **Launch Minecraft**
+ - Start Minecraft from the launcher.
+ - The launcher will auto-detect the recommended JVM version.
+ - You can also configure Java manually in the settings.
+
+---
# Disclaimer
-- AstralRinth is a project intended for experimentation and educational purposes only. It does not endorse or support piracy, and users are encouraged to obtain valid licenses for a fully-supported Minecraft experience.
-- Users are reminded to respect licensing agreements and support the developers of Minecraft.
-# Support our Project (Crypto Wallets)
+- **AstralRinth** is intended **solely for educational and experimental use**.
+- We **do not condone piracy** — users are encouraged to purchase a legitimate Minecraft license.
+- Respect all relevant licensing agreements and support Minecraft developers.
+
+---
+
+# Support Our Project (Crypto Wallets)
+
+If you'd like to support development, you can donate via the following crypto wallets:
+
- BTC (Telegram): 14g6asNYzcUoaQtB8B2QGKabgEvn55wfLj
-- USDT TRC20 (Telegram): TMSmv1D5Fdf4fipUpwBCdh16WevrV45vGr
-- TONCOIN (Telegram): UQAqUJ2_hVBI6k_gPyfp_jd-1K0OS61nIFPZuJWN9BwGAvKe
\ No newline at end of file
+- TONCOIN (Telegram): UQAqUJ2_hVBI6k_gPyfp_jd-1K0OS61nIFPZuJWN9BwGAvKe
diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue
index c837744c..e554210f 100644
--- a/apps/app-frontend/src/App.vue
+++ b/apps/app-frontend/src/App.vue
@@ -61,9 +61,10 @@ import { renderString } from '@modrinth/utils'
import { useFetch } from '@/helpers/fetch.js'
// import { check } from '@tauri-apps/plugin-updater'
import NavButton from '@/components/ui/NavButton.vue'
-import { get as getCreds, login, logout } from '@/helpers/mr_auth.js'
+import { cancelLogin, get as getCreds, login, logout } from '@/helpers/mr_auth.js'
import { get_user } from '@/helpers/cache.js'
import AppSettingsModal from '@/components/ui/modal/AppSettingsModal.vue'
+import AuthGrantFlowWaitModal from '@/components/ui/modal/AuthGrantFlowWaitModal.vue'
// import PromotionWrapper from '@/components/ui/PromotionWrapper.vue'
// import { hide_ads_window, init_ads_window } from '@/helpers/ads.js'
import FriendsList from '@/components/ui/friends/FriendsList.vue'
@@ -283,6 +284,8 @@ const incompatibilityWarningModal = ref()
const credentials = ref()
+const modrinthLoginFlowWaitModal = ref()
+
async function fetchCredentials() {
const creds = await getCreds().catch(handleError)
if (creds && creds.user_id) {
@@ -292,8 +295,24 @@ async function fetchCredentials() {
}
async function signIn() {
- await login().catch(handleError)
- await fetchCredentials()
+ modrinthLoginFlowWaitModal.value.show()
+
+ try {
+ await login()
+ await fetchCredentials()
+ } catch (error) {
+ if (
+ typeof error === 'object' &&
+ typeof error['message'] === 'string' &&
+ error.message.includes('Login canceled')
+ ) {
+ // Not really an error due to being a result of user interaction, show nothing
+ } else {
+ handleError(error)
+ }
+ } finally {
+ modrinthLoginFlowWaitModal.value.hide()
+ }
}
async function logOut() {
@@ -422,6 +441,9 @@ function handleAuxClick(e) {
Not signed in
-
+
+
+
+
+
+
+
+ Auth system (Skins) Beta
+
+
+ Please sign in at the browser window that just opened to continue. +
+All permissions already obtained.
+All permission checks complete!
+What is the approval type of {{ modPackData[currentIndex].file_name }}?
++ What is the approval type of {{ modPackData[currentIndex].title }} ({{ modPackData[currentIndex].url }})? +
++ Does this project provide identification and permission for + {{ modPackData[currentIndex].file_name }}? +
++ Does this project provide attribution for + {{ modPackData[currentIndex].file_name }}? +
++ Does this project provide proof of permission for + {{ modPackData[currentIndex].file_name }}? +
++ You are done moderating this project! + + There are + {{ futureProjectCount }} left. + +
+Modrinth Servers is the easiest way to play with your friends without hassle!
+Starting at $5 / month
@@ -621,6 +628,7 @@ {{ option.name }}