From bddb723f36f680478abf8da7d730c7beb3b5eecc Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Sun, 1 Jun 2025 13:22:28 -0500 Subject: [PATCH 01/38] feat: Enable RTX via options.txt --- v2/installer.ps1 | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/v2/installer.ps1 b/v2/installer.ps1 index 0b42290..8da6af6 100644 --- a/v2/installer.ps1 +++ b/v2/installer.ps1 @@ -36,6 +36,8 @@ $T = Data { dlss_downloading = Downloading DLSS dlss_updating = Updating DLSS dlss_success = Successfully updated DLSS + update_options = Fix GFX Options + options_updated = Successfully updated GFX options '@ } $translationFilename = "installer.psd1" @@ -882,11 +884,65 @@ function Install-DLSS() { $StatusLabel.Text = $T.dlss_success } +# Modify the options.txt file to enable certain graphics options for best RTX performance +# This is a workaround for the fact that the game doesn't allow you to enable these options in the UI +function Update-OptionsFile { + param( + [Parameter(Mandatory = $true)] + [string]$OptionsFile + ) + + try { + if (Test-Path $OptionsFile) { + $content = Get-Content $OptionsFile -Raw + + if ($content -match "show_advanced_video_settings:0") { + $content = $content -replace "show_advanced_video_settings:0", "show_advanced_video_settings:1" + $content | Out-File $OptionsFile -Force + } + elseif ($content -notmatch "show_advanced_video_settings:1") { + # Add the setting if not found + $content += "`nshow_advanced_video_settings:1" + $content | Out-File $OptionsFile -Force + } + + Write-Host "Updated video settings in $OptionsFile" -ForegroundColor Green + } + } + catch { + Write-Error "Failed to update options file ${OptionsFile}: $_" + } +} + +function Enable-GfxOptions() { + $comMojang = [System.Environment]::GetFolderPath("LocalApplicationData") + "\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang" + $previewComMojang = [System.Environment]::GetFolderPath("LocalApplicationData") + "\Packages\Microsoft.MinecraftPreview_8wekyb3d8bbwe\LocalState\games\com.mojang" + + $optionsFile = "$comMojang\minecraftpe\options.txt"; + $previewOptionsFile = "$previewComMojang\minecraftpe\options.txt"; + + foreach ($mc in $dataSrc) { + if ($ListBox.SelectedItems -notcontains $mc.FriendlyName) { + continue + } + + if ($mc.Preview) { + Update-OptionsFile -OptionsFile $previewOptionsFile + } + else { + Update-OptionsFile -OptionsFile $optionsFile + } + } +} + # Advanced Section function Update-Advanced() { $hasSelectedItems = -not ($ListBox.SelectedItems.Count -eq 0) $dlssMenu = $advancedMenu.MenuItems | Where-Object { $_.Text -eq $T.update_dlss } $dlssMenu.Enabled = $hasSelectedItems + + $updateOptionsMenuItem = $advancedMenu.MenuItems | Where-Object { $_.Text -eq $T.update_options } + $updateOptionsMenuItem.Enabled = $hasSelectedItems } # Setup GUI @@ -1165,6 +1221,18 @@ $dlssUpdateMenuItem.Enabled = $false $dlssUpdateMenuItem.Add_Click({ Install-DLSS }) $advancedMenu.MenuItems.Add($dlssUpdateMenuItem) | Out-Null +$updateOptionsMenuItem = New-Object System.Windows.Forms.MenuItem +$updateOptionsMenuItem.Text = $T.update_options +$updateOptionsMenuItem.Enabled = $false +$updateOptionsMenuItem.Add_Click({ + Enable-GfxOptions + $StatusLabel.Text = $T.options_updated + $StatusLabel.ForeColor = 'Green' + $StatusLabel.Visible = $true + }) +$advancedMenu.MenuItems.Add($updateOptionsMenuItem) | Out-Null +$advancedMenu.Add_Click({ Update-OptionsFile }) + $helpMenu = New-Object System.Windows.Forms.MenuItem $helpMenu.Text = $T.help $mainMenu.MenuItems.Add($helpMenu) | Out-Null From a9f2b3ff0c092cfc24b7612862743f5129c5ac4b Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Sun, 1 Jun 2025 13:27:51 -0500 Subject: [PATCH 02/38] chore: Add else branch / Remove duplicate click event --- v2/installer.ps1 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/v2/installer.ps1 b/v2/installer.ps1 index 8da6af6..fc594dc 100644 --- a/v2/installer.ps1 +++ b/v2/installer.ps1 @@ -908,6 +908,9 @@ function Update-OptionsFile { Write-Host "Updated video settings in $OptionsFile" -ForegroundColor Green } + else { + Write-Host "Options file not found: $OptionsFile" -ForegroundColor Red + } } catch { Write-Error "Failed to update options file ${OptionsFile}: $_" @@ -1231,7 +1234,6 @@ $updateOptionsMenuItem.Add_Click({ $StatusLabel.Visible = $true }) $advancedMenu.MenuItems.Add($updateOptionsMenuItem) | Out-Null -$advancedMenu.Add_Click({ Update-OptionsFile }) $helpMenu = New-Object System.Windows.Forms.MenuItem $helpMenu.Text = $T.help From a3575f5fb145c7f06115d30eda8cffe52b33b58d Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Sun, 1 Jun 2025 13:41:16 -0500 Subject: [PATCH 03/38] fix: Provide encoding for options file --- v2/installer.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v2/installer.ps1 b/v2/installer.ps1 index fc594dc..97f1583 100644 --- a/v2/installer.ps1 +++ b/v2/installer.ps1 @@ -898,12 +898,12 @@ function Update-OptionsFile { if ($content -match "show_advanced_video_settings:0") { $content = $content -replace "show_advanced_video_settings:0", "show_advanced_video_settings:1" - $content | Out-File $OptionsFile -Force + $content | Out-File $OptionsFile -Force -Encoding UTF8 } elseif ($content -notmatch "show_advanced_video_settings:1") { # Add the setting if not found $content += "`nshow_advanced_video_settings:1" - $content | Out-File $OptionsFile -Force + $content | Out-File $OptionsFile -Force -Encoding UTF8 } Write-Host "Updated video settings in $OptionsFile" -ForegroundColor Green From f0acb2e444cc659468dfe20d1d9039970138f2dc Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Fri, 15 Aug 2025 20:23:50 -0500 Subject: [PATCH 04/38] feat: Tauri POC --- v3/.gitignore | 24 + v3/.vscode/extensions.json | 3 + v3/README.md | 7 + v3/bun.lock | 167 + v3/index.html | 218 + v3/package.json | 22 + v3/src-tauri/.gitignore | 7 + v3/src-tauri/Cargo.lock | 5822 ++++++++++++++++++++++ v3/src-tauri/Cargo.toml | 30 + v3/src-tauri/build.rs | 3 + v3/src-tauri/capabilities/default.json | 11 + v3/src-tauri/icons/128x128.png | Bin 0 -> 3512 bytes v3/src-tauri/icons/128x128@2x.png | Bin 0 -> 7012 bytes v3/src-tauri/icons/32x32.png | Bin 0 -> 974 bytes v3/src-tauri/icons/Square107x107Logo.png | Bin 0 -> 2863 bytes v3/src-tauri/icons/Square142x142Logo.png | Bin 0 -> 3858 bytes v3/src-tauri/icons/Square150x150Logo.png | Bin 0 -> 3966 bytes v3/src-tauri/icons/Square284x284Logo.png | Bin 0 -> 7737 bytes v3/src-tauri/icons/Square30x30Logo.png | Bin 0 -> 903 bytes v3/src-tauri/icons/Square310x310Logo.png | Bin 0 -> 8591 bytes v3/src-tauri/icons/Square44x44Logo.png | Bin 0 -> 1299 bytes v3/src-tauri/icons/Square71x71Logo.png | Bin 0 -> 2011 bytes v3/src-tauri/icons/Square89x89Logo.png | Bin 0 -> 2468 bytes v3/src-tauri/icons/StoreLogo.png | Bin 0 -> 1523 bytes v3/src-tauri/icons/icon.icns | Bin 0 -> 98451 bytes v3/src-tauri/icons/icon.ico | Bin 0 -> 86642 bytes v3/src-tauri/icons/icon.png | Bin 0 -> 14183 bytes v3/src-tauri/src/lib.rs | 1059 ++++ v3/src-tauri/src/main.rs | 6 + v3/src-tauri/tauri.conf.json | 36 + v3/src/assets/tauri.svg | 6 + v3/src/assets/typescript.svg | 25 + v3/src/assets/vite.svg | 1 + v3/src/main.ts | 642 +++ v3/src/styles.css | 824 +++ v3/tsconfig.json | 23 + v3/vite.config.ts | 30 + 37 files changed, 8966 insertions(+) create mode 100644 v3/.gitignore create mode 100644 v3/.vscode/extensions.json create mode 100644 v3/README.md create mode 100644 v3/bun.lock create mode 100644 v3/index.html create mode 100644 v3/package.json create mode 100644 v3/src-tauri/.gitignore create mode 100644 v3/src-tauri/Cargo.lock create mode 100644 v3/src-tauri/Cargo.toml create mode 100644 v3/src-tauri/build.rs create mode 100644 v3/src-tauri/capabilities/default.json create mode 100644 v3/src-tauri/icons/128x128.png create mode 100644 v3/src-tauri/icons/128x128@2x.png create mode 100644 v3/src-tauri/icons/32x32.png create mode 100644 v3/src-tauri/icons/Square107x107Logo.png create mode 100644 v3/src-tauri/icons/Square142x142Logo.png create mode 100644 v3/src-tauri/icons/Square150x150Logo.png create mode 100644 v3/src-tauri/icons/Square284x284Logo.png create mode 100644 v3/src-tauri/icons/Square30x30Logo.png create mode 100644 v3/src-tauri/icons/Square310x310Logo.png create mode 100644 v3/src-tauri/icons/Square44x44Logo.png create mode 100644 v3/src-tauri/icons/Square71x71Logo.png create mode 100644 v3/src-tauri/icons/Square89x89Logo.png create mode 100644 v3/src-tauri/icons/StoreLogo.png create mode 100644 v3/src-tauri/icons/icon.icns create mode 100644 v3/src-tauri/icons/icon.ico create mode 100644 v3/src-tauri/icons/icon.png create mode 100644 v3/src-tauri/src/lib.rs create mode 100644 v3/src-tauri/src/main.rs create mode 100644 v3/src-tauri/tauri.conf.json create mode 100644 v3/src/assets/tauri.svg create mode 100644 v3/src/assets/typescript.svg create mode 100644 v3/src/assets/vite.svg create mode 100644 v3/src/main.ts create mode 100644 v3/src/styles.css create mode 100644 v3/tsconfig.json create mode 100644 v3/vite.config.ts diff --git a/v3/.gitignore b/v3/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/v3/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/v3/.vscode/extensions.json b/v3/.vscode/extensions.json new file mode 100644 index 0000000..24d7cc6 --- /dev/null +++ b/v3/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"] +} diff --git a/v3/README.md b/v3/README.md new file mode 100644 index 0000000..b381dcf --- /dev/null +++ b/v3/README.md @@ -0,0 +1,7 @@ +# Tauri + Vanilla TS + +This template should help get you started developing with Tauri in vanilla HTML, CSS and Typescript. + +## Recommended IDE Setup + +- [VS Code](https://code.visualstudio.com/) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer) diff --git a/v3/bun.lock b/v3/bun.lock new file mode 100644 index 0000000..522903d --- /dev/null +++ b/v3/bun.lock @@ -0,0 +1,167 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "name": "v3", + "dependencies": { + "@tauri-apps/api": "^2", + "@tauri-apps/plugin-dialog": "^2", + "@tauri-apps/plugin-opener": "^2", + }, + "devDependencies": { + "@tauri-apps/cli": "^2", + "typescript": "~5.6.2", + "vite": "^6.0.3", + }, + }, + }, + "packages": { + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.9", "", { "os": "aix", "cpu": "ppc64" }, "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.25.9", "", { "os": "android", "cpu": "arm" }, "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.9", "", { "os": "android", "cpu": "arm64" }, "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.25.9", "", { "os": "android", "cpu": "x64" }, "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.9", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.9", "", { "os": "darwin", "cpu": "x64" }, "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.9", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.9", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.9", "", { "os": "linux", "cpu": "arm" }, "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.9", "", { "os": "linux", "cpu": "arm64" }, "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.9", "", { "os": "linux", "cpu": "ia32" }, "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.9", "", { "os": "linux", "cpu": "none" }, "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.9", "", { "os": "linux", "cpu": "none" }, "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.9", "", { "os": "linux", "cpu": "ppc64" }, "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.9", "", { "os": "linux", "cpu": "none" }, "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.9", "", { "os": "linux", "cpu": "s390x" }, "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.9", "", { "os": "linux", "cpu": "x64" }, "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.9", "", { "os": "none", "cpu": "arm64" }, "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.9", "", { "os": "none", "cpu": "x64" }, "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.9", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.9", "", { "os": "openbsd", "cpu": "x64" }, "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA=="], + + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.9", "", { "os": "none", "cpu": "arm64" }, "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.9", "", { "os": "sunos", "cpu": "x64" }, "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.9", "", { "os": "win32", "cpu": "arm64" }, "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.9", "", { "os": "win32", "cpu": "ia32" }, "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.9", "", { "os": "win32", "cpu": "x64" }, "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ=="], + + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.46.2", "", { "os": "android", "cpu": "arm" }, "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.46.2", "", { "os": "android", "cpu": "arm64" }, "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.46.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.46.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA=="], + + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.46.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg=="], + + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.46.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw=="], + + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.46.2", "", { "os": "linux", "cpu": "arm" }, "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA=="], + + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.46.2", "", { "os": "linux", "cpu": "arm" }, "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ=="], + + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.46.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng=="], + + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.46.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg=="], + + "@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.46.2", "", { "os": "linux", "cpu": "none" }, "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA=="], + + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.46.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw=="], + + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.46.2", "", { "os": "linux", "cpu": "none" }, "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ=="], + + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.46.2", "", { "os": "linux", "cpu": "none" }, "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw=="], + + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.46.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA=="], + + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.46.2", "", { "os": "linux", "cpu": "x64" }, "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA=="], + + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.46.2", "", { "os": "linux", "cpu": "x64" }, "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA=="], + + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.46.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g=="], + + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.46.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ=="], + + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.46.2", "", { "os": "win32", "cpu": "x64" }, "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg=="], + + "@tauri-apps/api": ["@tauri-apps/api@2.7.0", "", {}, "sha512-v7fVE8jqBl8xJFOcBafDzXFc8FnicoH3j8o8DNNs0tHuEBmXUDqrCOAzMRX0UkfpwqZLqvrvK0GNQ45DfnoVDg=="], + + "@tauri-apps/cli": ["@tauri-apps/cli@2.7.1", "", { "optionalDependencies": { "@tauri-apps/cli-darwin-arm64": "2.7.1", "@tauri-apps/cli-darwin-x64": "2.7.1", "@tauri-apps/cli-linux-arm-gnueabihf": "2.7.1", "@tauri-apps/cli-linux-arm64-gnu": "2.7.1", "@tauri-apps/cli-linux-arm64-musl": "2.7.1", "@tauri-apps/cli-linux-riscv64-gnu": "2.7.1", "@tauri-apps/cli-linux-x64-gnu": "2.7.1", "@tauri-apps/cli-linux-x64-musl": "2.7.1", "@tauri-apps/cli-win32-arm64-msvc": "2.7.1", "@tauri-apps/cli-win32-ia32-msvc": "2.7.1", "@tauri-apps/cli-win32-x64-msvc": "2.7.1" }, "bin": { "tauri": "tauri.js" } }, "sha512-RcGWR4jOUEl92w3uvI0h61Llkfj9lwGD1iwvDRD2isMrDhOzjeeeVn9aGzeW1jubQ/kAbMYfydcA4BA0Cy733Q=="], + + "@tauri-apps/cli-darwin-arm64": ["@tauri-apps/cli-darwin-arm64@2.7.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-j2NXQN6+08G03xYiyKDKqbCV2Txt+hUKg0a8hYr92AmoCU8fgCjHyva/p16lGFGUG3P2Yu0xiNe1hXL9ZuRMzA=="], + + "@tauri-apps/cli-darwin-x64": ["@tauri-apps/cli-darwin-x64@2.7.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-CdYAefeM35zKsc91qIyKzbaO7FhzTyWKsE8hj7tEJ1INYpoh1NeNNyL/NSEA3Nebi5ilugioJ5tRK8ZXG8y3gw=="], + + "@tauri-apps/cli-linux-arm-gnueabihf": ["@tauri-apps/cli-linux-arm-gnueabihf@2.7.1", "", { "os": "linux", "cpu": "arm" }, "sha512-dnvyJrTA1UJxJjQ8q1N/gWomjP8Twij1BUQu2fdcT3OPpqlrbOk5R1yT0oD/721xoKNjroB5BXCsmmlykllxNg=="], + + "@tauri-apps/cli-linux-arm64-gnu": ["@tauri-apps/cli-linux-arm64-gnu@2.7.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-FtBW6LJPNRTws3qyUc294AqCWU91l/H0SsFKq6q4Q45MSS4x6wxLxou8zB53tLDGEPx3JSoPLcDaSfPlSbyujQ=="], + + "@tauri-apps/cli-linux-arm64-musl": ["@tauri-apps/cli-linux-arm64-musl@2.7.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-/HXY0t4FHkpFzjeYS5c16mlA6z0kzn5uKLWptTLTdFSnYpr8FCnOP4Sdkvm2TDQPF2ERxXtNCd+WR/jQugbGnA=="], + + "@tauri-apps/cli-linux-riscv64-gnu": ["@tauri-apps/cli-linux-riscv64-gnu@2.7.1", "", { "os": "linux", "cpu": "none" }, "sha512-GeW5lVI2GhhnaYckiDzstG2j2Jwlud5d2XefRGwlOK+C/bVGLT1le8MNPYK8wgRlpeK8fG1WnJJYD6Ke7YQ8bg=="], + + "@tauri-apps/cli-linux-x64-gnu": ["@tauri-apps/cli-linux-x64-gnu@2.7.1", "", { "os": "linux", "cpu": "x64" }, "sha512-DprxKQkPxIPYwUgg+cscpv2lcIUhn2nxEPlk0UeaiV9vATxCXyytxr1gLcj3xgjGyNPlM0MlJyYaPy1JmRg1cA=="], + + "@tauri-apps/cli-linux-x64-musl": ["@tauri-apps/cli-linux-x64-musl@2.7.1", "", { "os": "linux", "cpu": "x64" }, "sha512-KLlq3kOK7OUyDR757c0zQjPULpGZpLhNB0lZmZpHXvoOUcqZoCXJHh4dT/mryWZJp5ilrem5l8o9ngrDo0X1AA=="], + + "@tauri-apps/cli-win32-arm64-msvc": ["@tauri-apps/cli-win32-arm64-msvc@2.7.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-dH7KUjKkSypCeWPiainHyXoES3obS+JIZVoSwSZfKq2gWgs48FY3oT0hQNYrWveE+VR4VoR3b/F3CPGbgFvksA=="], + + "@tauri-apps/cli-win32-ia32-msvc": ["@tauri-apps/cli-win32-ia32-msvc@2.7.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-1oeibfyWQPVcijOrTg709qhbXArjX3x1MPjrmA5anlygwrbByxLBcLXvotcOeULFcnH2FYUMMLLant8kgvwE5A=="], + + "@tauri-apps/cli-win32-x64-msvc": ["@tauri-apps/cli-win32-x64-msvc@2.7.1", "", { "os": "win32", "cpu": "x64" }, "sha512-D7Q9kDObutuirCNLxYQ7KAg2Xxg99AjcdYz/KuMw5HvyEPbkC9Q7JL0vOrQOrHEHxIQ2lYzFOZvKKoC2yyqXcg=="], + + "@tauri-apps/plugin-dialog": ["@tauri-apps/plugin-dialog@2.3.2", "", { "dependencies": { "@tauri-apps/api": "^2.6.0" } }, "sha512-cNLo9YeQSC0MF4IgXnotHsqEgJk72MBZLXmQPrLA95qTaaWiiaFQ38hIMdZ6YbGUNkr3oni3EhU+AD5jLHcdUA=="], + + "@tauri-apps/plugin-opener": ["@tauri-apps/plugin-opener@2.4.0", "", { "dependencies": { "@tauri-apps/api": "^2.6.0" } }, "sha512-43VyN8JJtvKWJY72WI/KNZszTpDpzHULFxQs0CJBIYUdCRowQ6Q1feWTDb979N7nldqSuDOaBupZ6wz2nvuWwQ=="], + + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + + "esbuild": ["esbuild@0.25.9", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.9", "@esbuild/android-arm": "0.25.9", "@esbuild/android-arm64": "0.25.9", "@esbuild/android-x64": "0.25.9", "@esbuild/darwin-arm64": "0.25.9", "@esbuild/darwin-x64": "0.25.9", "@esbuild/freebsd-arm64": "0.25.9", "@esbuild/freebsd-x64": "0.25.9", "@esbuild/linux-arm": "0.25.9", "@esbuild/linux-arm64": "0.25.9", "@esbuild/linux-ia32": "0.25.9", "@esbuild/linux-loong64": "0.25.9", "@esbuild/linux-mips64el": "0.25.9", "@esbuild/linux-ppc64": "0.25.9", "@esbuild/linux-riscv64": "0.25.9", "@esbuild/linux-s390x": "0.25.9", "@esbuild/linux-x64": "0.25.9", "@esbuild/netbsd-arm64": "0.25.9", "@esbuild/netbsd-x64": "0.25.9", "@esbuild/openbsd-arm64": "0.25.9", "@esbuild/openbsd-x64": "0.25.9", "@esbuild/openharmony-arm64": "0.25.9", "@esbuild/sunos-x64": "0.25.9", "@esbuild/win32-arm64": "0.25.9", "@esbuild/win32-ia32": "0.25.9", "@esbuild/win32-x64": "0.25.9" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g=="], + + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + + "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + + "rollup": ["rollup@4.46.2", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.46.2", "@rollup/rollup-android-arm64": "4.46.2", "@rollup/rollup-darwin-arm64": "4.46.2", "@rollup/rollup-darwin-x64": "4.46.2", "@rollup/rollup-freebsd-arm64": "4.46.2", "@rollup/rollup-freebsd-x64": "4.46.2", "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", "@rollup/rollup-linux-arm-musleabihf": "4.46.2", "@rollup/rollup-linux-arm64-gnu": "4.46.2", "@rollup/rollup-linux-arm64-musl": "4.46.2", "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", "@rollup/rollup-linux-ppc64-gnu": "4.46.2", "@rollup/rollup-linux-riscv64-gnu": "4.46.2", "@rollup/rollup-linux-riscv64-musl": "4.46.2", "@rollup/rollup-linux-s390x-gnu": "4.46.2", "@rollup/rollup-linux-x64-gnu": "4.46.2", "@rollup/rollup-linux-x64-musl": "4.46.2", "@rollup/rollup-win32-arm64-msvc": "4.46.2", "@rollup/rollup-win32-ia32-msvc": "4.46.2", "@rollup/rollup-win32-x64-msvc": "4.46.2", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "tinyglobby": ["tinyglobby@0.2.14", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ=="], + + "typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], + + "vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], + } +} diff --git a/v3/index.html b/v3/index.html new file mode 100644 index 0000000..18329ee --- /dev/null +++ b/v3/index.html @@ -0,0 +1,218 @@ + + + + + + + BetterRTX Installer + + + + + +
+
+

BetterRTX Installer

+
+
+ +
+
+ + +
+
+ + +
+
+

Settings

+ +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+
+

Help & Information

+ +
+
+
+

Getting Started

+

1. Select your Minecraft installation(s)

+

2. Choose a preset from the available options

+

3. Click "Install" to apply the preset

+
+
+

Requirements

+

• NVIDIA RTX GPU (RTX 2060 or better)

+

• IOBit Unlocker (for WindowsApps installations)

+

• Administrator privileges may be required

+
+
+

Support

+

Visit bedrock.graphics for more information

+
+
+
+ +
+ + + + + + + +
+ +
+
+

BetterRTX Installer

+

Minecraft RTX Preset Manager

+
+ +
+ +
+
+

Minecraft Installations

+ 0 found +
+
+ + +
+
+
+
+ +
+
+
+

Available Presets

+ 0 loaded +
+
+ + + + +
+
+
+
+ + +
+

Actions

+
+ + + + + + + + +
+
+ +
+
+

Drop .rtpack files or material files here

+
+
+ +
+
+ +
+ +
+
+

Console Output

+ +
+ +
+
+
+ + diff --git a/v3/package.json b/v3/package.json new file mode 100644 index 0000000..0ebb442 --- /dev/null +++ b/v3/package.json @@ -0,0 +1,22 @@ +{ + "name": "v3", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "tauri": "tauri" + }, + "dependencies": { + "@tauri-apps/api": "^2", + "@tauri-apps/plugin-opener": "^2", + "@tauri-apps/plugin-dialog": "^2" + }, + "devDependencies": { + "@tauri-apps/cli": "^2", + "vite": "^6.0.3", + "typescript": "~5.6.2" + } +} diff --git a/v3/src-tauri/.gitignore b/v3/src-tauri/.gitignore new file mode 100644 index 0000000..b21bd68 --- /dev/null +++ b/v3/src-tauri/.gitignore @@ -0,0 +1,7 @@ +# Generated by Cargo +# will have compiled files and executables +/target/ + +# Generated by Tauri +# will have schema files for capabilities auto-completion +/gen/schemas diff --git a/v3/src-tauri/Cargo.lock b/v3/src-tauri/Cargo.lock new file mode 100644 index 0000000..82f5393 --- /dev/null +++ b/v3/src-tauri/Cargo.lock @@ -0,0 +1,5822 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" + +[[package]] +name = "ashpd" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cbdf310d77fd3aaee6ea2093db7011dc2d35d2eb3481e5607f1f8d942ed99df" +dependencies = [ + "enumflags2", + "futures-channel", + "futures-util", + "rand 0.9.2", + "raw-window-handle", + "serde", + "serde_repr", + "tokio", + "url", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "zbus", +] + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-io" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "windows-sys 0.60.2", +] + +[[package]] +name = "async-lock" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "async-signal" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f567af260ef69e1d52c2b560ce0ea230763e6fbb9214a85d768760a920e3e3c1" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.60.2", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "atk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "backtrace" +version = "0.3.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +dependencies = [ + "serde", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2 0.5.2", +] + +[[package]] +name = "block2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2" +dependencies = [ + "objc2 0.6.2", +] + +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "brotli" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "bytemuck" +version = "1.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +dependencies = [ + "serde", +] + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.9.1", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror 1.0.69", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d07aa9a93b00c76f71bc35d598bed923f6d4f3a9ca5c24b7737ae1a292841c0" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 2.0.14", +] + +[[package]] +name = "cargo_toml" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" +dependencies = [ + "serde", + "toml 0.9.5", +] + +[[package]] +name = "cc" +version = "1.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2352e5597e9c544d5e6d9c95190d5d27738ade584fa8db0a16e130e5c2b5296e" +dependencies = [ + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.10.1", + "core-graphics-types", + "foreign-types 0.5.0", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.10.1", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.29.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "matches", + "phf 0.10.1", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.105", +] + +[[package]] +name = "ctor" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" +dependencies = [ + "quote", + "syn 2.0.105", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.105", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.105", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.60.2", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags 2.9.1", + "block2 0.6.1", + "libc", + "objc2 0.6.2", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading", +] + +[[package]] +name = "dlopen2" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "788160fb30de9cdd857af31c6a2675904b16ece8fc2737b2c7127ba368c9d0f4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +dependencies = [ + "serde", +] + +[[package]] +name = "dtoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "embed-resource" +version = "3.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6d81016d6c977deefb2ef8d8290da019e27cc26167e102185da528e6c0ab38" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml 0.9.5", + "vswhom", + "winreg 0.55.0", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" +dependencies = [ + "serde", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "flate2" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.9.1", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.0", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.10.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "html5ever" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" +dependencies = [ + "log", + "mac", + "markup5ever", + "match_token", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "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", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ico" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98" +dependencies = [ + "byteorder", + "png", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +dependencies = [ + "equivalent", + "hashbrown 0.15.5", + "serde", +] + +[[package]] +name = "infer" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +dependencies = [ + "cfb", +] + +[[package]] +name = "io-uring" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "libc", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonptr" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.9.1", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "kuchikiki" +version = "0.8.8-speedreader" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2" +dependencies = [ + "cssparser", + "html5ever", + "indexmap 2.10.0", + "selectors", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.175" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +dependencies = [ + "bitflags 2.9.1", + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "markup5ever" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18" +dependencies = [ + "log", + "phf 0.11.3", + "phf_codegen 0.11.3", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "match_token" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "memchr" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "muda" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c1738382f66ed56b3b9c8119e794a2e23148ac8ea214eda86622d4cb9d415a" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2 0.6.2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "once_cell", + "png", + "serde", + "thiserror 2.0.14", + "windows-sys 0.60.2", +] + +[[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", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.9.1", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "561f357ba7f3a2a61563a186a163d0a3a5247e1089524a3981d49adb775078bc" +dependencies = [ + "objc2-encode", + "objc2-exception-helper", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" +dependencies = [ + "bitflags 2.9.1", + "block2 0.6.1", + "libc", + "objc2 0.6.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-foundation 0.3.1", + "objc2-quartz-core 0.3.1", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17614fdcd9b411e6ff1117dfb1d0150f908ba83a7df81b1f118005fe0a8ea15d" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.2", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291fbbf7d29287518e8686417cf7239c74700fd4b607623140a7d4a3c834329d" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.2", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +dependencies = [ + "bitflags 2.9.1", + "dispatch2", + "objc2 0.6.2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" +dependencies = [ + "bitflags 2.9.1", + "dispatch2", + "objc2 0.6.2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79b3dc0cc4386b6ccf21c157591b34a7f44c8e75b064f85502901ab2188c007e" +dependencies = [ + "objc2 0.6.2", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "libc", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" +dependencies = [ + "bitflags 2.9.1", + "block2 0.6.1", + "libc", + "objc2 0.6.2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.2", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b1312ad7bc8a0e92adae17aa10f90aae1fb618832f9b993b022b591027daed" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.2", + "objc2-core-foundation", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-web-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91672909de8b1ce1c2252e95bbee8c1649c9ad9d14b9248b3d7b4c47903c47ad" +dependencies = [ + "bitflags 2.9.1", + "block2 0.6.1", + "objc2 0.6.2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "open" +version = "5.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2483562e62ea94312f3576a7aca397306df7990b8d89033e18766744377ef95" +dependencies = [ + "dunce", + "is-wsl", + "libc", + "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.105", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_shared 0.8.0", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_macros 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros 0.11.3", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared 0.11.3", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher 0.3.11", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher 0.3.11", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher 1.0.1", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "plist" +version = "1.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1" +dependencies = [ + "base64 0.22.1", + "indexmap 2.10.0", + "quick-xml 0.38.1", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5bd19146350fe804f7cb2669c851c03d69da628803dab0d98018142aaa5d829" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "windows-sys 0.60.2", +] + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" +dependencies = [ + "toml_edit 0.20.7", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit 0.22.27", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61789d7719defeb74ea5fe81f2fdfdbd28a803847077cecce2ff14e1472f6f1" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.37.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +dependencies = [ + "memchr", +] + +[[package]] +name = "quick-xml" +version = "0.38.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9845d9dccf565065824e69f9f235fafba1587031eda353c1f1561cd6a6be78f4" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.5.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 2.0.14", +] + +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", +] + +[[package]] +name = "rfd" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed" +dependencies = [ + "ashpd", + "block2 0.6.1", + "dispatch2", + "glib-sys", + "gobject-sys", + "gtk-sys", + "js-sys", + "log", + "objc2 0.6.2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "raw-window-handle", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.60.2", +] + +[[package]] +name = "rustls" +version = "0.23.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.105", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "selectors" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416" +dependencies = [ + "bitflags 1.3.2", + "cssparser", + "derive_more", + "fxhash", + "log", + "phf 0.8.0", + "phf_codegen 0.8.0", + "precomputed-hash", + "servo_arc", + "smallvec", +] + +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34836a629bcbc6f1afdf0907a744870039b1e14c0561cb26094fa683b158eff3" +dependencies = [ + "erased-serde", + "serde", + "typeid", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "serde_json" +version = "1.0.142" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +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_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.10.0", + "schemars 0.9.0", + "schemars 1.0.4", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "servo_arc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "softbuffer" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" +dependencies = [ + "bytemuck", + "cfg_aliases", + "core-graphics", + "foreign-types 0.5.0", + "js-sys", + "log", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-quartz-core 0.2.2", + "raw-window-handle", + "redox_syscall", + "wasm-bindgen", + "web-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.11.3", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bc3fcb250e53458e712715cf74285c1f889686520d79294a9ef3bd7aa1fc619" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 0.8.23", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c380ca75a231b87b6c9dd86948f035012e7171d1a7c40a9c2890489a7ffd8a" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.10.1", + "core-graphics", + "crossbeam-channel", + "dispatch", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "jni", + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "objc2 0.6.2", + "objc2-app-kit", + "objc2-foundation 0.3.1", + "once_cell", + "parking_lot", + "raw-window-handle", + "scopeguard", + "tao-macros", + "unicode-segmentation", + "url", + "windows", + "windows-core", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "352a4bc7bf6c25f5624227e3641adf475a6535707451b09bb83271df8b7a6ac7" +dependencies = [ + "anyhow", + "bytes", + "dirs", + "dunce", + "embed_plist", + "getrandom 0.3.3", + "glob", + "gtk", + "heck 0.5.0", + "http", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2 0.6.2", + "objc2-app-kit", + "objc2-foundation 0.3.1", + "objc2-ui-kit", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror 2.0.14", + "tokio", + "tray-icon", + "url", + "urlpattern", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows", +] + +[[package]] +name = "tauri-build" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "182d688496c06bf08ea896459bf483eb29cdff35c1c4c115fb14053514303064" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs", + "glob", + "heck 0.5.0", + "json-patch", + "schemars 0.8.22", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "toml 0.8.23", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b54a99a6cd8e01abcfa61508177e6096a4fe2681efecee9214e962f2f073ae4a" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.105", + "tauri-utils", + "thiserror 2.0.14", + "time", + "url", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7945b14dc45e23532f2ded6e120170bbdd4af5ceaa45784a6b33d250fbce3f9e" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.105", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bd5c1e56990c70a906ef67a9851bbdba9136d26075ee9a2b19c8b46986b3e02" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri-utils", + "toml 0.8.23", + "walkdir", +] + +[[package]] +name = "tauri-plugin-dialog" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37e5858cc7b455a73ab4ea2ebc08b5be33682c00ff1bf4cad5537d4fb62499d9" +dependencies = [ + "log", + "raw-window-handle", + "rfd", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-plugin-fs", + "thiserror 2.0.14", + "url", +] + +[[package]] +name = "tauri-plugin-fs" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c6ef84ee2f2094ce093e55106d90d763ba343fad57566992962e8f76d113f99" +dependencies = [ + "anyhow", + "dunce", + "glob", + "percent-encoding", + "schemars 0.8.22", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "tauri-utils", + "thiserror 2.0.14", + "toml 0.8.23", + "url", +] + +[[package]] +name = "tauri-plugin-opener" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecee219f11cdac713ab32959db5d0cceec4810ba4f4458da992292ecf9660321" +dependencies = [ + "dunce", + "glob", + "objc2-app-kit", + "objc2-foundation 0.3.1", + "open", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.14", + "url", + "windows", + "zbus", +] + +[[package]] +name = "tauri-runtime" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b1cc885be806ea15ff7b0eb47098a7b16323d9228876afda329e34e2d6c4676" +dependencies = [ + "cookie", + "dpi", + "gtk", + "http", + "jni", + "objc2 0.6.2", + "objc2-ui-kit", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror 2.0.14", + "url", + "windows", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe653a2fbbef19fe898efc774bc52c8742576342a33d3d028c189b57eb1d2439" +dependencies = [ + "gtk", + "http", + "jni", + "log", + "objc2 0.6.2", + "objc2-app-kit", + "objc2-foundation 0.3.1", + "once_cell", + "percent-encoding", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "url", + "webkit2gtk", + "webview2-com", + "windows", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330c15cabfe1d9f213478c9e8ec2b0c76dab26bb6f314b8ad1c8a568c1d186e" +dependencies = [ + "anyhow", + "brotli", + "cargo_metadata", + "ctor", + "dunce", + "glob", + "html5ever", + "http", + "infer", + "json-patch", + "kuchikiki", + "log", + "memchr", + "phf 0.11.3", + "proc-macro2", + "quote", + "regex", + "schemars 0.8.22", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.14", + "toml 0.8.23", + "url", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd21509dd1fa9bd355dc29894a6ff10635880732396aa38c0066c1e6c1ab8074" +dependencies = [ + "embed-resource", + "toml 0.9.5", +] + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b0949c3a6c842cbde3f1686d6eea5a010516deb7085f79db747562d4102f41e" +dependencies = [ + "thiserror-impl 2.0.14", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc5b44b4ab9c2fdd0e0512e6bece8388e214c0749f5862b114cc5b7a25daf227" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.47.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +dependencies = [ + "backtrace", + "bytes", + "io-uring", + "libc", + "mio", + "pin-project-lite", + "signal-hook-registry", + "slab", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + +[[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.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + +[[package]] +name = "toml" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75129e1dc5000bfbaa9fee9d1b21f974f9fbad9daec557a521ee6e080825f6e8" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.10.0", + "toml_datetime 0.6.11", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap 2.10.0", + "toml_datetime 0.6.11", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap 2.10.0", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.11", + "toml_write", + "winnow 0.7.12", +] + +[[package]] +name = "toml_parser" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b551886f449aa90d4fe2bdaa9f4a2577ad2dde302c61ecf262d80b116db95c10" +dependencies = [ + "winnow 0.7.12", +] + +[[package]] +name = "toml_write" +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 = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tray-icon" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d92153331e7d02ec09137538996a7786fe679c629c279e82a6be762b7e6fe2" +dependencies = [ + "crossbeam-channel", + "dirs", + "libappindicator", + "muda", + "objc2 0.6.2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.1", + "once_cell", + "png", + "serde", + "thiserror 2.0.14", + "windows-sys 0.59.0", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f33196643e165781c20a5ead5582283a7dacbb87855d867fbc2df3f81eddc1be" +dependencies = [ + "getrandom 0.3.3", + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "v3" +version = "0.1.0" +dependencies = [ + "chrono", + "reqwest", + "serde", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-dialog", + "tauri-plugin-opener", + "walkdir", + "winreg 0.52.0", + "zip", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.105", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wayland-backend" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" +dependencies = [ + "cc", + "downcast-rs", + "rustix", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" +dependencies = [ + "bitflags 2.9.1", + "rustix", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" +dependencies = [ + "bitflags 2.9.1", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" +dependencies = [ + "proc-macro2", + "quick-xml 0.37.5", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142" +dependencies = [ + "dlib", + "log", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webview2-com" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4ba622a989277ef3886dd5afb3e280e3dd6d974b766118950a08f8f678ad6a4" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows", + "windows-core", + "windows-implement", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "webview2-com-sys" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c" +dependencies = [ + "thiserror 2.0.14", + "windows", + "windows-core", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window-vibrancy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" +dependencies = [ + "objc2 0.6.2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core", + "windows-future", + "windows-link", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core", + "windows-link", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core", + "windows-link", +] + +[[package]] +name = "windows-registry" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.3", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "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]] +name = "windows-targets" +version = "0.53.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-version" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e04a5c6627e310a23ad2358483286c7df260c964eb2d003d8efd6d0f4e79265c" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "winreg" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +dependencies = [ + "cfg-if", + "windows-sys 0.59.0", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + +[[package]] +name = "wry" +version = "0.52.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12a714d9ba7075aae04a6e50229d6109e3d584774b99a6a8c60de1698ca111b9" +dependencies = [ + "base64 0.22.1", + "block2 0.6.1", + "cookie", + "crossbeam-channel", + "dpi", + "dunce", + "gdkx11", + "gtk", + "html5ever", + "http", + "javascriptcore-rs", + "jni", + "kuchikiki", + "libc", + "ndk", + "objc2 0.6.2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "objc2-ui-kit", + "objc2-web-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "sha2", + "soup3", + "tao-macros", + "thiserror 2.0.14", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows", + "windows-core", + "windows-version", + "x11-dl", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", + "synstructure", +] + +[[package]] +name = "zbus" +version = "5.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb4f9a464286d42851d18a605f7193b8febaf5b0919d71c6399b7b26e5b0aad" +dependencies = [ + "async-broadcast", + "async-executor", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-lite", + "hex", + "nix", + "ordered-stream", + "serde", + "serde_repr", + "tokio", + "tracing", + "uds_windows", + "windows-sys 0.59.0", + "winnow 0.7.12", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "5.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef9859f68ee0c4ee2e8cde84737c78e3f4c54f946f2a38645d0d4c7a95327659" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.105", + "zbus_names", + "zvariant", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" +dependencies = [ + "serde", + "static_assertions", + "winnow 0.7.12", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.105", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "byteorder", + "crc32fast", + "crossbeam-utils", + "flate2", +] + +[[package]] +name = "zvariant" +version = "5.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91b3680bb339216abd84714172b5138a4edac677e641ef17e1d8cb1b3ca6e6f" +dependencies = [ + "endi", + "enumflags2", + "serde", + "url", + "winnow 0.7.12", + "zvariant_derive", + "zvariant_utils", +] + +[[package]] +name = "zvariant_derive" +version = "5.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a8c68501be459a8dbfffbe5d792acdd23b4959940fc87785fb013b32edbc208" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.105", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "static_assertions", + "syn 2.0.105", + "winnow 0.7.12", +] diff --git a/v3/src-tauri/Cargo.toml b/v3/src-tauri/Cargo.toml new file mode 100644 index 0000000..9cf87cd --- /dev/null +++ b/v3/src-tauri/Cargo.toml @@ -0,0 +1,30 @@ +[package] +name = "v3" +version = "0.1.0" +description = "A Tauri App" +authors = ["you"] +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +# The `_lib` suffix may seem redundant but it is necessary +# to make the lib name unique and wouldn't conflict with the bin name. +# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519 +name = "v3_lib" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[dependencies] +tauri = { version = "2", features = [] } +tauri-plugin-opener = "2" +tauri-plugin-dialog = "2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +reqwest = { version = "0.12", features = ["blocking", "json"] } +winreg = "0.52" +chrono = { version = "0.4", features = ["serde"] } +walkdir = "2.5" +zip = { version = "0.6", default-features = false, features = ["deflate"] } diff --git a/v3/src-tauri/build.rs b/v3/src-tauri/build.rs new file mode 100644 index 0000000..d860e1e --- /dev/null +++ b/v3/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/v3/src-tauri/capabilities/default.json b/v3/src-tauri/capabilities/default.json new file mode 100644 index 0000000..778bfb5 --- /dev/null +++ b/v3/src-tauri/capabilities/default.json @@ -0,0 +1,11 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Capability for the main window", + "windows": ["main"], + "permissions": [ + "core:default", + "opener:default", + "dialog:default" + ] +} diff --git a/v3/src-tauri/icons/128x128.png b/v3/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..6be5e50e9b9ae84d9e2ee433f32ef446495eaf3b GIT binary patch literal 3512 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 literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/128x128@2x.png b/v3/src-tauri/icons/128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e81becee571e96f76aa5667f9324c05e5e7a4479 GIT binary patch literal 7012 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 Sh@|Ye~|0>}wMPLT8jm@Y!H33Sz}5aFI6 zM9Lzqz|;A*0sGs=2A1uU!1nk2dGF7knQwr99SAFen)x(eCO;F8y2C~0FD1YxRTPcy zPWVxkUYmeuz}Tv?7&Fe-!UE{)ZW)Mb;H)^#eHDv$`dkZGguJz@^MA!ZNGAUqt{|0H zpZ7Ch9S`q5!>R%}>}62!+(T^evyO+ImSo2wpu)su4^3nw5(%)KD%gbSev^*HZZ&3( z#&c@Z0gH|}Ck)w6fh0&NBJ62ib%R}(3@$VFl*_#l2W$wQ-~4RmZZAt5O*^2Q5}Xr8Hy@c`#pM?kc?hFWxRXr*mUfUCXf4ka5DD~ zat6d85COB05l#(P9*cQZ3EC8fVdS~?&vN#rce(aF9@xp80O2{{FBvU+{X>Hoh;xI` z{$e^Nw1y*VbO8wv`8|-m?NwNaKGTGaF{P^JLB^DbOYWIbn%eT`*!^C1H36=O8Z-M> zkD~88ry`eSo`tEBN4>w7OWZwUzlh{WM1m8R6zepqGcGMaV7vWY9b?K4b6~|HVG)ec wi>I@ws#sZo7or4_*4M>7;p5{nr2pZ?Uu4>Krr0kU)&Kwi07*qoM6N<$f)&@lf&c&j literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/Square107x107Logo.png b/v3/src-tauri/icons/Square107x107Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca4f27198838968bd60ed7d371bfa23496b7fe5 GIT binary patch literal 2863 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 Y2S8W#vM)6=T>t<807*qoM6N<$f*y@n<^TWy literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/Square284x284Logo.png b/v3/src-tauri/icons/Square284x284Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c021d2ba76619c08969ab688db3b27f29257aa6f GIT binary patch literal 7737 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 literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/Square30x30Logo.png b/v3/src-tauri/icons/Square30x30Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..621970023096ed9f494ba18ace15421a45cd65fa GIT binary patch literal 903 zcmV;219<$2P)2 z+CUKPMqaqGiH;zb!R4$B-WXS^YzQr=@UH>k4?*L)&R=zYjBrZenKdc9|JlS$SO*RJ zKt8FSTDAdk1g_WPAO!p^V!AuL;Lm;uQyV;zKq)J3i(;q*;k+pD%f3eltU`PYdy9(k0&%` zuWAPcV6|-y?|?7O1W!KSK}pbk8#~!|FA@(VJkt^V@0lio{afoAeo*f&$W2s6${5!1eKvAGD2$GZwSB98L2ZVS- zKn8ENRkZ*sb!@QugOrQNK3(sy1v%J#m|rpB+h|Nkqa3FRT>74xSs{#&saU2Lf!_Iq zKmuKAESh`gs!fneGWn+nf}l?7jE$HW!Af&vE5=G!QU)U2v&HLIBGXKk4nQx{hsHjL zLPMAo5=*uInFbq7(aa`Y2VX5wCmaeqvECOFv)a>0t>ZaEb*cJccER=BB?KFZhV$c^ znL*l8x*UYZv4WK|j?~Jt6~~F%{pk~z5A*>^M`?r5m9@RJ_x|uEtX(6Vk@Y()MVto* z93wr)%3m%|#OZ~srm>zF(JvDuTq*@;d&^>_BJm5hOU`3FjG70L#Vzv9I?`<7$T@

jU?lMi@tgxr7CqX_r3uw^y4tVU3Pm0sw;|1WSUO%?=bG`*Kmz6u4{#ti;T7AWIBAEh!(Y zz>O01&#X?Ds@L)Sb{CkG#Yz4$3o d@96)?#cz^xWoA}>B$xmI002ovPDHLkV1l3&k#zt7 literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/Square310x310Logo.png b/v3/src-tauri/icons/Square310x310Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f9bc04839491e66c07b16ab03743c0c53b4109cc GIT binary patch literal 8591 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 JPDHLkV1lm|RXG3v literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/Square71x71Logo.png b/v3/src-tauri/icons/Square71x71Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..63440d7984936a9caa89275928d8dce97e4d033b GIT binary patch literal 2011 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∓t$dRJGIadE?vc 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 Kx8Vjl{{H|h@<;Lj literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/icon.ico b/v3/src-tauri/icons/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b3636e4b22ba65db9061cd60a77b02c92022dfd6 GIT binary patch literal 86642 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 AKmY&$ literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/icon.png b/v3/src-tauri/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e1cd2619e0b5ec089cbba5ec7b03ddf2b1dfceb6 GIT binary patch literal 14183 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

5l#v3A#xI3*z~1~fvo9Q(N^(==!|_FZ z*duZ=+M1~)8E|otX8KNZlr?qels#x_1Xq@9IIw~@9uAREJVH)Xw^}UclF6327}E42 zT)E&?U%TK?(+K7%R!`H5oX0i)4Qn5??Iw3p5J~6_u+aWehY{DSn}3V2p$bgjnAu?o)v@iC254fXeMv50$9YrpU`N?u@QIWs)T?SP|fa}(|9 zqAX+!7`cx=4)cCBg5h~pu(?@9`)aCr#oyz$ld=#RFxYCNZCZls@4v2~*e-t6PEVvV z&bbK3b3wt(Coc!ufAbXXC<**#HQ%J9k`New6iG<5RjtO4XVO?dCvwxD{kJ#tfQr(X zg^NTwF-FwAeS_{V4bfel8l`~NbfrTR2s!G>WduFWxH(t~aK4q=6rEE^$+Uox>gJO2 z{L<;6Q6nHa5#ZEM>H58not!)z(6*_=^~8}jWf*IG$AUKVWOZ4?)GfF z+BM#*wKKmLFD7E~W3U!$IVm$k_k1f&Kz6WV8@55P?r~bcg-Za-!rvW?ns&)KOGT2~ zlkAyqhQj=P$Eg3w#K~}zH@J5bo-BfHjInKSz$@?+Z)NPD4pHj^_Qxmi`UqoTy=`sV zLVxrXGuBr=QRm|}wg75yetQQK4fY3#P_~J}zEfPnb2C4Wo!E(d*(cA;b?7$g2in<( zPn)ghX}nzJPmb6(3Dpeg_GW~Hc}Lt=lgsSZz z!5QXyz7KaR;D`3Ee}d`af{H>WWZ|Io1QI3~4Ll_`g1(cRnhLK73Ro)7zPCd={1W2x zRp%Xlvv4>!<2@}$hz|!V{T}_eHx2xkLl^hQoZTCnsjCl|W_@5Fx2(+j0ogy&Y+;L- z<)G$*CiN7hOm^s!{U>1F7U=iNk{+u~dAC!eDz%=|glFW0jEZU1&o(G_c#wTxUjnG} z#cg3>jEpUi#Mlq@t?Msg_#geK^Lx@DyHWf7=AS5vVyM7YOjvUVCfcpVR<(+5!H?9- zySI6s>o3m&*zr||=wcPGyBkQV`EWJl@bH8qobjOp+sXL*)=&yX)8aAbf~tGv?a2SN zu^Ddo-z?DWk9h9Yz#5p^NU#x~wYSd?H@w@!2Gb4G)6-utEMV~~M85Br5ff(v5O1|T z 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, +} + +#[derive(Serialize, Deserialize, Debug, Clone)] +struct InstalledPreset { + uuid: String, + name: String, + installed_at: String, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct PackInfo { + pub name: String, + pub uuid: String, + pub stub: String, + pub tonemapping: String, + pub bloom: String, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +struct CacheEntry { + data: T, + timestamp: DateTime, + expires_at: DateTime, +} + +#[derive(Serialize, Deserialize, Debug, Clone)] +struct Cache { + presets: Option>>, + downloads: HashMap>>, +} + +fn local_app_data() -> PathBuf { + std::env::var("LOCALAPPDATA") + .map(PathBuf::from) + .unwrap_or_else(|_| PathBuf::from("C:/Users/Public/AppData/Local")) +} + +fn brtx_dir() -> PathBuf { + local_app_data().join(BRTX_DIR_NAME) +} + +fn ensure_dir(p: &Path) -> std::io::Result<()> { + if !p.exists() { + fs::create_dir_all(p)?; + } + Ok(()) +} + +fn cache_file_path() -> PathBuf { + brtx_dir().join("cache.json") +} + +fn load_cache() -> Cache { + let cache_file = brtx_dir().join("cache.json"); + if cache_file.exists() { + if let Ok(content) = fs::read_to_string(&cache_file) { + if let Ok(cache) = serde_json::from_str::(&content) { + return cache; + } + } + } + Cache { + presets: None, + downloads: HashMap::new(), + } +} + +fn save_cache(cache: &Cache) -> Result<(), String> { + let cache_path = cache_file_path(); + ensure_dir(cache_path.parent().unwrap()).map_err(|e| e.to_string())?; + let content = serde_json::to_string_pretty(cache).map_err(|e| e.to_string())?; + fs::write(cache_path, content).map_err(|e| e.to_string()) +} + +fn is_cache_valid(cached: &CacheEntry) -> bool { + Utc::now() < cached.expires_at +} + +fn run_powershell(script: &str) -> Result { + let output = Command::new("powershell.exe") + .arg("-NoProfile") + .arg("-ExecutionPolicy").arg("Bypass") + .arg("-Command") + .arg(script) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .output() + .map_err(|e| format!("Failed to spawn PowerShell: {e}"))?; + + if output.status.success() { + Ok(String::from_utf8_lossy(&output.stdout).to_string()) + } else { + Err(String::from_utf8_lossy(&output.stderr).to_string()) + } +} + +fn is_sideloaded(install_location: &str) -> bool { + // Sideloaded if NOT under Program Files\WindowsApps + let lc = install_location.to_ascii_lowercase(); + !lc.contains("windowsapps") +} + +fn get_custom_iobit_path() -> Option { + let config_file = brtx_dir().join("iobit_path.txt"); + if config_file.exists() { + if let Ok(path_str) = fs::read_to_string(&config_file) { + let path = PathBuf::from(path_str.trim()); + if path.exists() { + return Some(path); + } + } + } + None +} + +fn get_iobit_path_cached() -> Option { + // Check if we have a cached path + let cache_file = brtx_dir().join("iobit_path.txt"); + if cache_file.exists() { + if let Ok(cached_path) = fs::read_to_string(&cache_file) { + let path = PathBuf::from(cached_path.trim()); + if path.exists() { + return Some(path); + } + } + } + + // Fall back to automatic detection + get_iobit_unlocker_exe() +} + +fn get_iobit_unlocker_exe() -> Option { + // First check if user has set a custom path + if let Some(custom_path) = get_custom_iobit_path() { + return Some(custom_path); + } + + // Try common install locations + let candidates = [ + r"C:\\Program Files (x86)\\IObit\\IObit Unlocker\\IObitUnlocker.exe", + r"C:\\Program Files\\IObit\\IObit Unlocker\\IObitUnlocker.exe", + ]; + for c in candidates { if Path::new(c).exists() { return Some(PathBuf::from(c)); } } + + // Fallback: search Program Files dirs shallowly + for root in [r"C:\\Program Files", r"C:\\Program Files (x86)"] { + let rootp = Path::new(root); + if rootp.exists() { + for entry in WalkDir::new(rootp).max_depth(3) { + if let Ok(e) = entry { + let p = e.path(); + if p.file_name().map(|n| n.to_string_lossy().eq_ignore_ascii_case("IObitUnlocker.exe")).unwrap_or(false) { + return Some(p.to_path_buf()); + } + } + } + } + } + None +} + +fn iobit_delete(iobit: &Path, location: &Path, materials: &[PathBuf]) -> Result<(), String> { + // RTX material files that need to be deleted before installation + let rtx_files_to_delete = [ + "RTXStub.material.bin", + "RTXPostFX.Tonemapping.material.bin", + "RTXPostFX.Bloom.material.bin" + ]; + + // Attempt to delete RTX material files first (unconditional) + for file_name in &rtx_files_to_delete { + let target = location.join("data").join("renderer").join("materials").join(file_name); + println!("Attempting to delete RTX file via IObit: {}", target.display()); + // Use PowerShell to mirror quoting behavior of v2 + let arglist = format!("/Delete \"{}\"", target.display()); + let ioexe_ps = iobit.display().to_string().replace("'", "''"); + let arglist_ps = arglist.replace("'", "''"); + let ps_cmd = format!( + "Start-Process -FilePath '{}' -ArgumentList '{}' -Wait -PassThru", + ioexe_ps, arglist_ps + ); + let output = Command::new("powershell.exe") + .arg("-NoProfile") + .arg("-ExecutionPolicy").arg("Bypass") + .arg("-Command") + .arg(ps_cmd) + .output() + .map_err(|e| format!("Failed to run IObit Unlocker: {e}"))?; + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr); + println!("IObit delete reported non-success for {}: {}", target.display(), stderr); + } + std::thread::sleep(std::time::Duration::from_millis(100)); + } + + // Also delete any files that match the materials we're about to install (unconditional) + for m in materials { + let name = m.file_name().ok_or("invalid material filename")?; + let target = location.join("data").join("renderer").join("materials").join(name); + println!("Attempting to delete material via IObit: {}", target.display()); + // Use PowerShell to mirror quoting behavior of v2 + let arglist = format!("/Delete \"{}\"", target.display()); + let ioexe_ps = iobit.display().to_string().replace("'", "''"); + let arglist_ps = arglist.replace("'", "''"); + let ps_cmd = format!( + "Start-Process -FilePath '{}' -ArgumentList '{}' -Wait -PassThru", + ioexe_ps, arglist_ps + ); + let output = Command::new("powershell.exe") + .arg("-NoProfile") + .arg("-ExecutionPolicy").arg("Bypass") + .arg("-Command") + .arg(ps_cmd) + .output() + .map_err(|e| format!("Failed to run IObit Unlocker: {e}"))?; + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr); + println!("IObit delete reported non-success for {}: {}", target.display(), stderr); + } + std::thread::sleep(std::time::Duration::from_millis(100)); + } + Ok(()) +} + +fn iobit_copy(iobit: &Path, destination: &Path, materials: &[PathBuf]) -> Result<(), String> { + // Best-effort ensure destination directory for sideloaded installs + let dest_dir = destination.join("data").join("renderer").join("materials"); + let _ = ensure_dir(&dest_dir); + + if materials.is_empty() { + println!("No materials to copy"); + return Ok(()); + } + + // Build the exact ArgumentList string used in PowerShell v2 implementation: + // '/Copy "src1","src2" "destDir"' + let sources_joined = materials + .iter() + .map(|m| m.display().to_string()) + .collect::>() + .join("\",\""); + let arglist = format!("/Copy \"{}\" \"{}\"", sources_joined, dest_dir.display()); + + // Escape single quotes for embedding in a single-quoted PS string + let ioexe_ps = iobit.display().to_string().replace("'", "''"); + let arglist_ps = arglist.replace("'", "''"); + + let ps_cmd = format!( + "Start-Process -FilePath '{}' -ArgumentList '{}' -Wait -PassThru", + ioexe_ps, arglist_ps + ); + + println!( + "Copying materials via IObit (single pass): [{}] -> {}", + materials + .iter() + .map(|m| m.file_name().unwrap_or_default().to_string_lossy().to_string()) + .collect::>() + .join(", "), + dest_dir.display() + ); + + let output = Command::new("powershell.exe") + .arg("-NoProfile") + .arg("-ExecutionPolicy").arg("Bypass") + .arg("-Command") + .arg(ps_cmd) + .output() + .map_err(|e| format!("Failed to run PowerShell for IObit copy: {e}"))?; + + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr); + return Err(format!("IObit copy via PowerShell failed: {}", stderr)); + } + + println!("IObit single-pass copy completed"); + Ok(()) +} + +fn copy_shader_files(install_location: &str, materials: &[PathBuf], pack: &PackInfo) -> Result<(), String> { + let mc_dest = Path::new(install_location).join("data").join("renderer").join("materials"); + let sideloaded = is_sideloaded(install_location); + + // Prefer IObit Unlocker for both sideloaded and WindowsApps installs + if let Some(ioexe) = get_iobit_path_cached() { + println!("Using IObit Unlocker for delete+copy (sideloaded: {})", sideloaded); + match try_iobit_copy(&ioexe, install_location, materials) { + Ok(_) => { + let installed_preset = InstalledPreset { + uuid: pack.uuid.clone(), + name: pack.name.clone(), + installed_at: chrono::Utc::now().to_rfc3339(), + }; + if let Err(e) = save_installed_preset(install_location, &installed_preset) { + println!("⚠ Failed to save preset tracking: {}", e); + } + return Ok(()); + } + Err(e) => { + println!("⚠ IObit Unlocker failed: {}", e); + // Continue to appropriate fallback below + } + } + } else { + println!("⚠ IObit Unlocker not found, using fallback method (sideloaded: {})", sideloaded); + } + + if sideloaded { + // Fallback for sideloaded installations: ensure dir, delete then copy directly + ensure_dir(&mc_dest).map_err(|e| format!("Failed to create materials dir: {e}"))?; + for m in materials { + if !m.exists() { return Err(format!("Source material not found: {}", m.display())); } + let dest = mc_dest.join(m.file_name().ok_or("invalid material filename")?); + if dest.exists() { + println!("Removing existing file before copy: {}", dest.display()); + let _ = fs::remove_file(&dest); + } + fs::copy(m, &dest).map_err(|e| format!("Direct copy failed to {}: {e}", dest.display()))?; + } + let installed_preset = InstalledPreset { + uuid: pack.uuid.clone(), + name: pack.name.clone(), + installed_at: chrono::Utc::now().to_rfc3339(), + }; + if let Err(e) = save_installed_preset(install_location, &installed_preset) { + println!("⚠ Failed to save preset tracking: {}", e); + } + return Ok(()); + } + + // WindowsApps fallback: elevated PowerShell + println!("Attempting elevated PowerShell fallback..."); + match try_elevated_copy(&mc_dest, materials) { + Ok(_) => { + let installed_preset = InstalledPreset { + uuid: pack.uuid.clone(), + name: pack.name.clone(), + installed_at: chrono::Utc::now().to_rfc3339(), + }; + if let Err(e) = save_installed_preset(install_location, &installed_preset) { + println!("⚠ Failed to save preset tracking: {}", e); + } + Ok(()) + } + Err(e) => Err(e) + } +} + +fn try_iobit_copy(ioexe: &Path, install_location: &str, materials: &[PathBuf]) -> Result<(), String> { + println!("Starting IObit operations for {} files", materials.len()); + let install_path = Path::new(install_location); + + // Delete existing files first + println!("Deleting existing material files..."); + iobit_delete(ioexe, install_path, materials)?; + + // Copy new files + println!("Copying material files with IObit Unlocker..."); + iobit_copy(ioexe, install_path, materials)?; + + // Skipping file verification per user preference + std::thread::sleep(std::time::Duration::from_millis(500)); + + println!("IObit operations completed successfully"); + Ok(()) +} + +fn try_elevated_copy(mc_dest: &Path, materials: &[PathBuf]) -> Result<(), String> { + // Use PowerShell with elevation request to copy files + let mut ps_script = String::from("Start-Process powershell -Verb RunAs -ArgumentList '-Command', '"); + + for m in materials { + let src = m.to_string_lossy().replace('\\', "\\\\").replace('\'', "\'\'"); + let dest_file = mc_dest.join(m.file_name().unwrap()); + let dest = dest_file.to_string_lossy().replace('\\', "\\\\").replace('\'', "\'\'"); + ps_script.push_str(&format!("Copy-Item '{}' '{}' -Force; ", src, dest)); + } + + ps_script.push_str("' -Wait"); + + let output = Command::new("powershell.exe") + .arg("-NoProfile") + .arg("-ExecutionPolicy").arg("Bypass") + .arg("-Command") + .arg(&ps_script) + .output() + .map_err(|e| format!("Failed to run elevated PowerShell: {e}"))?; + + if output.status.success() { + // Skipping file verification per user preference + Ok(()) + } else { + Err(format!("Elevated PowerShell failed: {}", String::from_utf8_lossy(&output.stderr))) + } +} + +fn extract_rtpack_to(pack: &Path, out_dir: &Path) -> Result<(), String> { + ensure_dir(out_dir).map_err(|e| e.to_string())?; + let mut f = File::open(pack).map_err(|e| format!("Open pack failed: {e}"))?; + let mut data = Vec::new(); + f.read_to_end(&mut data).map_err(|e| format!("Read pack failed: {e}"))?; + let reader = std::io::Cursor::new(data); + let mut zip = zip::ZipArchive::new(reader).map_err(|e| format!("Invalid .rtpack: {e}"))?; + for i in 0..zip.len() { + let mut file = zip.by_index(i).map_err(|e| e.to_string())?; + let outpath = out_dir.join(file.name()); + if file.name().ends_with('/') { + ensure_dir(&outpath).map_err(|e| e.to_string())?; + } else { + if let Some(parent) = outpath.parent() { ensure_dir(parent).map_err(|e| e.to_string())?; } + let mut outfile = File::create(&outpath).map_err(|e| e.to_string())?; + std::io::copy(&mut file, &mut outfile).map_err(|e| e.to_string())?; + } + } + Ok(()) +} + +fn find_materials(root: &Path) -> Vec { + let mut v = Vec::new(); + for entry in WalkDir::new(root).into_iter().filter_map(Result::ok) { + let p = entry.path(); + if p.is_file() && p.extension().map(|e| e == "bin").unwrap_or(false) { + if let Some(stem) = p.file_stem() { + let s = stem.to_string_lossy(); + if s.contains("material") { v.push(p.to_path_buf()); } + } + } + } + v +} + +fn read_json_file Deserialize<'de>>(p: &Path) -> Option { + let s = fs::read_to_string(p).ok()?; + serde_json::from_str(&s).ok() +} + +fn write_json_file(p: &Path, val: &T) -> Result<(), String> { + if let Some(parent) = p.parent() { ensure_dir(parent).map_err(|e| e.to_string())?; } + let s = serde_json::to_string_pretty(val).map_err(|e| e.to_string())?; + fs::write(p, s).map_err(|e| e.to_string()) +} + +#[tauri::command] +fn list_installations() -> Result, String> { + let ps = r#" + $ErrorActionPreference='Stop'; + $pkgs = Get-AppxPackage -Name 'Microsoft.Minecraft*' | Where-Object { $_.InstallLocation -notlike '*Java*' }; + $res = @(); + foreach ($mc in $pkgs) { + $name = (Get-AppxPackageManifest -Package $mc).Package.Properties.DisplayName; + $res += [PSCustomObject]@{ FriendlyName=$name; InstallLocation=$mc.InstallLocation; Preview= ($mc.InstallLocation -like '*Beta*' -or $name -like '*Preview*') }; + } + $res | ConvertTo-Json -Depth 3 + "#; + let out = run_powershell(ps)?; + let out_trim = out.trim(); + if out_trim.is_empty() { return Ok(vec![]); } + + let mut installations: Vec = { + let parsed: Result, _> = serde_json::from_str(out_trim); + if let Ok(v) = parsed { + v + } else { + // sometimes a single object is returned + let single: Installation = serde_json::from_str(out_trim).map_err(|e| e.to_string())?; + vec![single] + } + }; + + // Add installed preset information to each installation + for installation in &mut installations { + installation.installed_preset = get_installed_preset(&installation.install_location); + } + + Ok(installations) +} + +#[tauri::command] +fn get_api_packs() -> Result, String> { + list_presets(false) +} + +#[tauri::command] +fn list_presets(force_refresh: bool) -> Result, String> { + let mut cache = load_cache(); + + // Check if we have valid cached data and don't need to force refresh + if !force_refresh { + if let Some(ref cached_presets) = cache.presets { + if is_cache_valid(cached_presets) { + return Ok(cached_presets.data.clone()); + } + } + } + + // Fetch fresh data from API + let packs_dir = brtx_dir().join("packs"); + ensure_dir(&packs_dir).map_err(|e| e.to_string())?; + + let url = "https://bedrock.graphics/api"; + let response = get(url).map_err(|e| e.to_string())?; + let text = response.text().map_err(|e| e.to_string())?; + + // Parse the JSON response directly as PackInfo array + let presets: Vec = serde_json::from_str(&text) + .map_err(|e| format!("Failed to parse presets JSON: {}. Response was: {}", e, text))?; + + // Cache the results for 1 hour + let now = Utc::now(); + let expires_at = now + chrono::Duration::hours(1); + // Update cache with fresh data + cache.presets = Some(CacheEntry { + data: presets.clone(), + timestamp: now, + expires_at, + }); + + save_cache(&cache).map_err(|e| e.to_string())?; + + Ok(presets) +} + +fn get_installed_preset(install_location: &str) -> Option { + let presets_file = brtx_dir().join("installed_presets.json"); + if let Some(installations) = read_json_file::>(&presets_file) { + return installations.get(install_location).cloned(); + } + None +} + +fn save_installed_preset(install_location: &str, preset: &InstalledPreset) -> Result<(), String> { + let presets_file = brtx_dir().join("installed_presets.json"); + + // Load existing installations or create new map + let mut installations = read_json_file::>(&presets_file) + .unwrap_or_else(HashMap::new); + + // Update with new preset + installations.insert(install_location.to_string(), preset.clone()); + + // Save using write_json_file + write_json_file(&presets_file, &installations) +} + +fn get_cached_download(url: &str) -> Option> { + let cache = load_cache(); + if let Some(cached) = cache.downloads.get(url) { + if is_cache_valid(cached) { + return Some(cached.data.clone()); + } + } + None +} + +fn cache_download(url: &str, data: &[u8]) -> Result<(), String> { + let mut cache = load_cache(); + let now = Utc::now(); + let expires_at = now + chrono::Duration::hours(24); // Cache downloads for 24 hours + + cache.downloads.insert(url.to_string(), CacheEntry { + data: data.to_vec(), + timestamp: now, + expires_at, + }); + + save_cache(&cache) +} + +#[tauri::command] +fn clear_cache() -> Result<(), String> { + let cache_path = cache_file_path(); + if cache_path.exists() { + fs::remove_file(cache_path).map_err(|e| e.to_string())?; + } + + // Also clear downloaded packs directory + let packs_dir = brtx_dir().join("packs"); + if packs_dir.exists() { + fs::remove_dir_all(&packs_dir).map_err(|e| e.to_string())?; + } + + Ok(()) +} + +#[tauri::command] +fn get_cache_info() -> Result { + let cache = load_cache(); + let mut info = serde_json::Map::new(); + + if let Some(ref presets_cache) = cache.presets { + info.insert("presets_cached".to_string(), serde_json::Value::Bool(true)); + info.insert("presets_count".to_string(), serde_json::Value::Number(presets_cache.data.len().into())); + info.insert("presets_expires".to_string(), serde_json::Value::String(presets_cache.expires_at.to_rfc3339())); + } else { + info.insert("presets_cached".to_string(), serde_json::Value::Bool(false)); + } + + info.insert("downloads_cached".to_string(), serde_json::Value::Number(cache.downloads.len().into())); + + Ok(serde_json::Value::Object(info)) +} + +#[tauri::command] +fn download_and_install_pack(uuid: String, selected_names: Vec) -> Result<(), String> { + let all = list_installations()?; + // Map by InstallLocation because the UI sends InstallLocation values + let map: std::collections::HashMap<_, _> = all + .into_iter() + .map(|i| (i.install_location.clone(), i)) + .collect(); + + // Get the preset info from cached API data + let packs = get_api_packs()?; + let preset = packs.iter().find(|p| p.uuid == uuid).ok_or("Preset not found")?; + + let dir = brtx_dir().join("packs").join(&uuid); + ensure_dir(&dir).map_err(|e| e.to_string())?; + let client = Client::new(); + + // Download files with caching + let dl = |url: &str, name: &str| -> Result<(), String> { + let file_path = dir.join(name); + + // Check if we have cached data + if let Some(cached_data) = get_cached_download(url) { + fs::write(&file_path, cached_data).map_err(|e| e.to_string())?; + return Ok(()); + } + + // Download fresh data + let mut resp = client.get(url).send().map_err(|e| e.to_string())?; + let mut data = Vec::new(); + resp.copy_to(&mut data).map_err(|e| e.to_string())?; + + // Cache the download + let _ = cache_download(url, &data); + + // Save to file + fs::write(&file_path, data).map_err(|e| e.to_string())?; + Ok(()) + }; + dl(&preset.stub, "RTXStub.material.bin")?; + dl(&preset.tonemapping, "RTXPostFX.Tonemapping.material.bin")?; + dl(&preset.bloom, "RTXPostFX.Bloom.material.bin")?; + + let materials = vec![ + dir.join("RTXStub.material.bin"), + dir.join("RTXPostFX.Tonemapping.material.bin"), + dir.join("RTXPostFX.Bloom.material.bin"), + ]; + for install_location in selected_names { + if let Some(ins) = map.get(&install_location) { + copy_shader_files(&ins.install_location, &materials, preset)?; + } else { + println!("⚠ Skipping unknown selection (no matching installation): {}", install_location); + } + } + Ok(()) +} + +#[tauri::command] +fn install_from_rtpack(rtpack_path: String, selected_names: Vec) -> Result<(), String> { + if !rtpack_path.to_ascii_lowercase().ends_with(".rtpack") { return Err("Invalid file type; expected .rtpack".into()); } + let pack_name = Path::new(&rtpack_path).file_stem().and_then(|s| s.to_str()).ok_or("Invalid pack path")?.to_string(); + let out_dir = brtx_dir().join("packs").join(&pack_name); + extract_rtpack_to(Path::new(&rtpack_path), &out_dir)?; + let materials = find_materials(&out_dir); + if materials.is_empty() { return Err("No materials found in pack".into()); } + let all = list_installations()?; + let map: std::collections::HashMap<_, _> = all + .into_iter() + .map(|i| (i.install_location.clone(), i)) + .collect(); + for install_location in selected_names { + if let Some(ins) = map.get(&install_location) { + // Create a dummy pack for material file installation + let dummy_pack = PackInfo { + name: "Material Files".to_string(), + uuid: "material-files".to_string(), + stub: String::new(), + tonemapping: String::new(), + bloom: String::new(), + }; + copy_shader_files(&ins.install_location, &materials, &dummy_pack)?; + } else { + println!("⚠ Skipping unknown selection (no matching installation): {}", install_location); + } + } + Ok(()) +} + +#[tauri::command] +fn install_materials(material_paths: Vec, selected_names: Vec) -> Result<(), String> { + if material_paths.is_empty() { return Err("No files provided".into()); } + let materials: Vec = material_paths.iter().map(PathBuf::from).collect(); + let all = list_installations()?; + let map: std::collections::HashMap<_, _> = all.into_iter().map(|i| (i.install_location.clone(), i)).collect(); + for install_location in selected_names { + if let Some(ins) = map.get(&install_location) { + // Create a dummy pack for material file installation + let dummy_pack = PackInfo { + name: "Material Files".to_string(), + uuid: "material-files".to_string(), + stub: String::new(), + tonemapping: String::new(), + bloom: String::new(), + }; + copy_shader_files(&ins.install_location, &materials, &dummy_pack)?; + } else { + println!("⚠ Skipping unknown selection (no matching installation): {}", install_location); + } + } + Ok(()) +} + +fn backup_initial_shader_files(location: &str, backup_dir: &Path) -> Result<(), String> { + ensure_dir(backup_dir).map_err(|e| e.to_string())?; + let dlss = Path::new(location).join("nvngx_dlss.dll"); + if dlss.exists() { let _ = fs::copy(&dlss, backup_dir.join("nvngx_dlss.dll")); } + let materials = [ + "RTXStub.material.bin", + "RTXPostFX.Tonemapping.material.bin", + "RTXPostFX.Bloom.material.bin", + ]; + let mc_src = Path::new(location).join("data").join("renderer").join("materials"); + for m in materials { let src = mc_src.join(m); if src.exists() { let _ = fs::copy(&src, backup_dir.join(m)); } } + Ok(()) +} + +fn zip_dir(src_dir: &Path, dest_zip: &Path) -> Result<(), String> { + let file = File::create(dest_zip).map_err(|e| e.to_string())?; + let mut zip = zip::ZipWriter::new(file); + let options = zip::write::FileOptions::default().compression_method(zip::CompressionMethod::Deflated); + let src = src_dir.to_path_buf(); + for entry in WalkDir::new(&src).into_iter().filter_map(Result::ok) { + let path = entry.path(); + let name = path.strip_prefix(&src).map_err(|e| e.to_string())?.to_string_lossy().replace('\\', "/"); + if path.is_file() { + zip.start_file(name, options).map_err(|e| e.to_string())?; + let mut f = File::open(path).map_err(|e| e.to_string())?; + std::io::copy(&mut f, &mut zip).map_err(|e| e.to_string())?; + } else if !name.is_empty() { + zip.add_directory(name + "/", options).map_err(|e| e.to_string())?; + } + } + zip.finish().map_err(|e| e.to_string())?; + Ok(()) +} + +#[tauri::command] +fn backup_selected(dest_dir: String, selected_names: Option>) -> Result, String> { + let dest = PathBuf::from(dest_dir); + if !dest.exists() { return Err("Destination directory does not exist".into()); } + let all = list_installations()?; + // UI sends InstallLocation values in selected_names + let targets: Vec = if let Some(names) = selected_names { + all + .into_iter() + .filter(|i| names.contains(&i.install_location)) + .collect() + } else { + all + }; + let mut created = Vec::new(); + for ins in targets { + let instance = ins.install_location.split(['\\', '/']).last().unwrap_or("instance").replace(' ', "_"); + let backup_dir = brtx_dir().join("backup").join(&ins.friendly_name); + ensure_dir(backup_dir.parent().unwrap()) .map_err(|e| e.to_string())?; + ensure_dir(&backup_dir).map_err(|e| e.to_string())?; + backup_initial_shader_files(&ins.install_location, &backup_dir)?; + let ts = Local::now().format("%Y-%m-%d_%H-%M"); + let zip_path = dest.join(format!("betterrtx_backup_{}_{}.zip", instance, ts)); + zip_dir(&backup_dir, &zip_path)?; + let rtpack = zip_path.with_extension("rtpack"); + fs::rename(&zip_path, &rtpack).map_err(|e| e.to_string())?; + // Clean temp backup dir + let _ = fs::remove_dir_all(&backup_dir); + created.push(rtpack.to_string_lossy().to_string()); + } + Ok(created) +} + +#[tauri::command] +fn install_dlss_for_selected(selected_names: Vec) -> Result<(), String> { + let dir = brtx_dir().join("dlss"); + if !dir.exists() { + ensure_dir(&dir).map_err(|e| e.to_string())?; + let client = Client::new(); + let versions: serde_json::Value = client.get("https://bedrock.graphics/api/dlss").send().map_err(|e| e.to_string())?.json().map_err(|e| e.to_string())?; + let latest = versions.get("latest").and_then(|v| v.as_str()).ok_or("Invalid DLSS API response")?; + let zip_path = dir.join("nvngx_dlss.zip"); + let mut resp = client.get(latest).send().map_err(|e| e.to_string())?; + let mut f = File::create(&zip_path).map_err(|e| e.to_string())?; + resp.copy_to(&mut f).map_err(|e| e.to_string())?; + // extract + extract_rtpack_to(&zip_path, &dir).or_else(|_| { + // Some DLSS zips may not be .rtpack format; try normal zip extraction path + let file = File::open(&zip_path).map_err(|e| e.to_string())?; + let mut zip = zip::ZipArchive::new(file).map_err(|e| e.to_string())?; + for i in 0..zip.len() { + let mut file = zip.by_index(i).map_err(|e| e.to_string())?; + let out = dir.join(file.name()); + if file.name().ends_with('/') { ensure_dir(&out).map_err(|e| e.to_string())?; } else { + if let Some(par) = out.parent() { ensure_dir(par).map_err(|e| e.to_string())?; } + let mut of = File::create(&out).map_err(|e| e.to_string())?; + std::io::copy(&mut file, &mut of).map_err(|e| e.to_string())?; + } + } + Ok::<(), String>(()) + })?; + let _ = fs::remove_file(&zip_path); + } + + let all = list_installations()?; + let map: std::collections::HashMap<_, _> = all + .into_iter() + .map(|i| (i.install_location.clone(), i)) + .collect(); + for install_location in selected_names { + if let Some(ins) = map.get(&install_location) { + let src = dir.join("nvngx_dlss.dll"); + if !src.exists() { return Err("DLSS DLL not found".into()); } + let dest = Path::new(&ins.install_location).join("nvngx_dlss.dll"); + if is_sideloaded(&ins.install_location) { + fs::copy(&src, &dest).map_err(|e| e.to_string())?; + } else if let Some(ioexe) = get_iobit_unlocker_exe() { + // Use IObit via PowerShell to mirror quoting behavior from v2 + println!("Attempting to delete existing DLSS via IObit: {}", dest.display()); + let ioexe_ps = ioexe.display().to_string().replace("'", "''"); + let del_arglist = format!("/Delete \"{}\"", dest.display()); + let del_arglist_ps = del_arglist.replace("'", "''"); + let del_ps_cmd = format!( + "Start-Process -FilePath '{}' -ArgumentList '{}' -Wait -PassThru", + ioexe_ps, del_arglist_ps + ); + let out = Command::new("powershell.exe") + .arg("-NoProfile") + .arg("-ExecutionPolicy").arg("Bypass") + .arg("-Command") + .arg(del_ps_cmd) + .output() + .map_err(|e| format!("Failed to run IObit Unlocker: {e}"))?; + if !out.status.success() { + let stderr = String::from_utf8_lossy(&out.stderr); + println!("IObit DLSS delete reported non-success for {}: {}", dest.display(), stderr); + } + println!("Copying DLSS via IObit: {} -> {}", src.display(), dest.display()); + let copy_arglist = format!("/Copy \"{}\" \"{}\"", src.display(), dest.display()); + let copy_arglist_ps = copy_arglist.replace("'", "''"); + let copy_ps_cmd = format!( + "Start-Process -FilePath '{}' -ArgumentList '{}' -Wait -PassThru", + ioexe_ps, copy_arglist_ps + ); + let out = Command::new("powershell.exe") + .arg("-NoProfile") + .arg("-ExecutionPolicy").arg("Bypass") + .arg("-Command") + .arg(copy_ps_cmd) + .output() + .map_err(|e| format!("Failed to run IObit Unlocker: {e}"))?; + if !out.status.success() { + let stderr = String::from_utf8_lossy(&out.stderr); + return Err(format!("IObit copy failed for {}: {}", src.display(), stderr)); + } + // Skipping post-copy file verification per user preference + } else { + return Err("IObit Unlocker not found; cannot update DLSS in WindowsApps".into()); + } + } else { + println!("⚠ Skipping unknown selection (no matching installation): {}", install_location); + } + } + Ok(()) +} + +fn update_options_file(path: &Path) -> Result<(), String> { + if !path.exists() { return Err(format!("Options file not found: {}", path.display())); } + let mut content = fs::read_to_string(path).map_err(|e| e.to_string())?; + if content.contains("show_advanced_video_settings:0") { + content = content.replace("show_advanced_video_settings:0", "show_advanced_video_settings:1"); + } else if !content.contains("show_advanced_video_settings:1") { + content.push_str("\nshow_advanced_video_settings:1"); + } + fs::write(path, content).map_err(|e| e.to_string()) +} + +#[tauri::command] +fn update_options_for_selected(selected_names: Vec) -> Result<(), String> { + let all = list_installations()?; + // Map by InstallLocation because the UI sends InstallLocation values + let map: std::collections::HashMap<_, _> = all + .into_iter() + .map(|i| (i.install_location.clone(), i)) + .collect(); + let com_mojang = local_app_data().join(r"Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\minecraftpe\options.txt"); + let preview_com_mojang = local_app_data().join(r"Packages\Microsoft.MinecraftPreview_8wekyb3d8bbwe\LocalState\games\com.mojang\minecraftpe\options.txt"); + for install_location in selected_names { + if let Some(ins) = map.get(&install_location) { + if ins.preview { update_options_file(&preview_com_mojang)?; } else { update_options_file(&com_mojang)?; } + } else { + println!("⚠ Skipping unknown selection (no matching installation): {}", install_location); + } + } + Ok(()) +} + +#[tauri::command] +fn register_rtpack_extension() -> Result<(), String> { + let hkcu = RegKey::predef(HKEY_CURRENT_USER); + let classes = hkcu.open_subkey_with_flags("Software\\Classes", KEY_ALL_ACCESS).map_err(|e| e.to_string())?; + // .rtpack -> BetterRTX.PackageFile + let rtpack_key = classes.create_subkey(".rtpack").map_err(|e| e.to_string())?.0; + rtpack_key.set_value("", &"BetterRTX.PackageFile").map_err(|e| e.to_string())?; + // BetterRTX.PackageFile + let app_key = classes.create_subkey("BetterRTX.PackageFile").map_err(|e| e.to_string())?.0; + app_key.set_value("", &"BetterRTX Preset").map_err(|e| e.to_string())?; + + // Icon file + let icon_path = brtx_dir().join("rtpack.ico"); + if !icon_path.exists() { + if let Ok(mut resp) = get("https://bedrock.graphics/favicon.ico") { + let mut f = File::create(&icon_path).map_err(|e| e.to_string())?; + let _ = resp.copy_to(&mut f); + } + } + let _ = app_key.set_value("DefaultIcon", &icon_path.to_string_lossy().to_string()); + + // Shell open command -> this app exe + let exe = std::env::current_exe().map_err(|e| e.to_string())?; + let shell_open = app_key.create_subkey("shell\\open\\command").map_err(|e| e.to_string())?.0; + let cmd = format!("\"{}\" \"%1\"", exe.display()); + shell_open.set_value("", &cmd).map_err(|e| e.to_string())?; + Ok(()) +} + +#[tauri::command] +fn check_iobit_unlocker() -> Result { + if let Some(path) = get_iobit_unlocker_exe() { + Ok(format!("IObit Unlocker found at: {}", path.display())) + } else { + Err("IObit Unlocker not found. Please install IObit Unlocker to modify WindowsApps installations.".into()) + } +} + +#[tauri::command] +fn set_iobit_path(path: String) -> Result { + let path_buf = PathBuf::from(&path); + + // Validate the path exists and is an executable + if !path_buf.exists() { + return Err("The specified file does not exist.".into()); + } + + // Check if it's IObitUnlocker.exe or a shortcut to it + let file_name = path_buf.file_name() + .and_then(|n| n.to_str()) + .unwrap_or("") + .to_lowercase(); + + if !file_name.contains("iobitunlocker") && !file_name.ends_with(".lnk") { + return Err("Please select IObitUnlocker.exe or a shortcut to it.".into()); + } + + // Save the path to config file + let config_dir = brtx_dir(); + ensure_dir(&config_dir).map_err(|e| format!("Failed to create config directory: {e}"))?; + let config_file = config_dir.join("iobit_path.txt"); + fs::write(&config_file, &path).map_err(|e| format!("Failed to save IObit path: {e}"))?; + + Ok(format!("IObit Unlocker path set to: {}", path)) +} + +#[tauri::command] +fn uninstall_package(restore_initial: bool) -> Result<(), String> { + if restore_initial { + let all = list_installations()?; + for ins in all { + let backup = brtx_dir().join("backup").join(&ins.friendly_name); + if backup.exists() { + let materials = vec![ + backup.join("RTXStub.material.bin"), + backup.join("RTXPostFX.Tonemapping.material.bin"), + backup.join("RTXPostFX.Bloom.material.bin"), + ]; + let existing: Vec = materials.into_iter().filter(|p| p.exists()).collect(); + if !existing.is_empty() { + let dummy_pack = PackInfo { + name: "Backup Restore".to_string(), + uuid: "backup-restore".to_string(), + stub: String::new(), + tonemapping: String::new(), + bloom: String::new(), + }; + copy_shader_files(&ins.install_location, &existing, &dummy_pack)?; + } + } + } + } + + // Clear installed presets tracking + let presets_file = brtx_dir().join("installed_presets.json"); + if presets_file.exists() { + let _ = fs::remove_file(&presets_file); + } + + let _ = fs::remove_dir_all(brtx_dir()); + Ok(()) +} + +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + tauri::Builder::default() + .plugin(tauri_plugin_opener::init()) + .plugin(tauri_plugin_dialog::init()) + .invoke_handler(tauri::generate_handler![ + list_installations, + get_api_packs, + list_presets, + download_and_install_pack, + install_from_rtpack, + install_materials, + backup_selected, + install_dlss_for_selected, + update_options_for_selected, + register_rtpack_extension, + check_iobit_unlocker, + set_iobit_path, + uninstall_package, + clear_cache, + get_cache_info, + ]) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} diff --git a/v3/src-tauri/src/main.rs b/v3/src-tauri/src/main.rs new file mode 100644 index 0000000..4cac942 --- /dev/null +++ b/v3/src-tauri/src/main.rs @@ -0,0 +1,6 @@ +// Prevents additional console window on Windows in release, DO NOT REMOVE!! +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + v3_lib::run() +} diff --git a/v3/src-tauri/tauri.conf.json b/v3/src-tauri/tauri.conf.json new file mode 100644 index 0000000..29573c7 --- /dev/null +++ b/v3/src-tauri/tauri.conf.json @@ -0,0 +1,36 @@ +{ + "$schema": "https://schema.tauri.app/config/2", + "productName": "v3", + "version": "0.1.0", + "identifier": "graphics.bedrock.brtx", + "build": { + "beforeDevCommand": "bun run dev", + "devUrl": "http://localhost:1420", + "beforeBuildCommand": "bun run build", + "frontendDist": "../dist" + }, + "app": { + "withGlobalTauri": true, + "windows": [ + { + "title": "v3", + "width": 800, + "height": 600 + } + ], + "security": { + "csp": null + } + }, + "bundle": { + "active": true, + "targets": "all", + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ] + } +} diff --git a/v3/src/assets/tauri.svg b/v3/src/assets/tauri.svg new file mode 100644 index 0000000..31b62c9 --- /dev/null +++ b/v3/src/assets/tauri.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/v3/src/assets/typescript.svg b/v3/src/assets/typescript.svg new file mode 100644 index 0000000..30a5edd --- /dev/null +++ b/v3/src/assets/typescript.svg @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/v3/src/assets/vite.svg b/v3/src/assets/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/v3/src/assets/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v3/src/main.ts b/v3/src/main.ts new file mode 100644 index 0000000..5f53dfb --- /dev/null +++ b/v3/src/main.ts @@ -0,0 +1,642 @@ +import { invoke } from "@tauri-apps/api/core"; +import { open } from "@tauri-apps/plugin-dialog"; +import { message, confirm } from "@tauri-apps/plugin-dialog"; + +interface Installation { + FriendlyName: string; + InstallLocation: string; + Preview: boolean; + installed_preset?: { + uuid: string; + name: string; + installed_at: string; + }; +} + +interface PackInfo { + name: string; + uuid: string; + stub: string; + tonemapping: string; + bloom: string; +} + +let installations: Installation[] = []; +let presets: PackInfo[] = []; +let selectedInstallations: Set = new Set(); +let selectedPreset: string | null = null; + +// UI Elements +let presetsList: HTMLElement; +let statusEl: HTMLElement; +let progressEl: HTMLElement; +let dropZone: HTMLElement; +let actionsSidepanel: HTMLElement; +let sidepanelOverlay: HTMLElement; +let mobileMenuToggle: HTMLElement; +let installationsCount: HTMLElement; +let presetsCount: HTMLElement; + +function setStatus(msg: string, isError = false) { + if (statusEl) { + statusEl.textContent = msg; + statusEl.className = `status ${isError ? 'error' : ''}`; + } +} + +function showProgress() { + if (progressEl) progressEl.style.display = 'block'; +} + +function hideProgress() { + if (progressEl) progressEl.style.display = 'none'; +} + +async function refreshInstallations() { + try { + setStatus("Loading Minecraft installations..."); + showProgress(); + installations = await invoke("list_installations"); + renderInstallations(installations); + updateInstallationsCount(); + setStatus(`Found ${installations.length} Minecraft installation(s)`); + } catch (error) { + setStatus(`Error loading installations: ${error}`, true); + } finally { + hideProgress(); + } +} + +function renderInstallations(installations: Installation[]) { + const container = document.getElementById("installations-list"); + const countElement = document.getElementById("installations-count"); + + if (!container || !countElement) return; + + countElement.textContent = `${installations.length} found`; + + if (installations.length === 0) { + container.innerHTML = ` +

+ `; + return; + } + + container.innerHTML = installations.map(installation => { + const isSelected = selectedInstallations.has(installation.InstallLocation); + const presetIcon = installation.installed_preset + ? `${installation.installed_preset.name}` + : ''; + + return ` +
+
+
+ ${presetIcon} +

${installation.FriendlyName}

+
+ ${installation.Preview ? 'Preview' : ''} +
+

${installation.InstallLocation}

+ ${installation.installed_preset ? + `

Current preset: ${installation.installed_preset.name}

` : + '

No preset installed

' + } +
+ + +
+
+ `; + }).join(''); + + // Add event listeners for checkboxes + document.querySelectorAll('.installation-checkbox').forEach(checkbox => { + checkbox.addEventListener('change', (e) => { + const target = e.target as HTMLInputElement; + const card = target.closest('.installation-card') as HTMLElement; + + if (target.checked) { + selectedInstallations.add(target.value); + card.classList.add('selected'); + } else { + selectedInstallations.delete(target.value); + card.classList.remove('selected'); + } + + updateInstallationsCount(); + }); + }); +} + +async function refreshPresets(forceRefresh = false) { + try { + setStatus("Loading available presets..."); + showProgress(); + presets = await invoke("list_presets", { forceRefresh }); + renderPresets(); + updatePresetsCount(); + setStatus(`Loaded ${presets.length} preset(s)`); + } catch (error) { + setStatus(`Error loading presets: ${error}`, true); + } finally { + hideProgress(); + } +} + +function renderPresets() { + if (!presetsList) return; + + presetsList.innerHTML = presets.map(preset => ` +
+
+ ${preset.name} icon +

${preset.name}

+
+ +
+ `).join(''); + + // Add click handlers + presetsList.querySelectorAll('.preset-card').forEach(card => { + card.addEventListener('click', (e) => { + if ((e.target as HTMLElement).classList.contains('install-preset-btn')) return; + + const uuid = card.getAttribute('data-uuid')!; + presetsList.querySelectorAll('.preset-card').forEach(c => c.classList.remove('selected')); + card.classList.add('selected'); + selectedPreset = uuid; + }); + }); + + // Add install button handlers + presetsList.querySelectorAll('.install-preset-btn').forEach(btn => { + btn.addEventListener('click', async (e) => { + e.stopPropagation(); + const uuid = (btn as HTMLElement).getAttribute('data-uuid')!; + await installPreset(uuid); + }); + }); +} + +async function installPreset(uuid: string) { + if (selectedInstallations.size === 0) { + await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); + return; + } + + const preset = presets.find(p => p.uuid === uuid); + const presetName = preset ? preset.name : uuid; + + try { + addConsoleOutput(`Starting installation of preset: ${presetName}`); + addConsoleOutput(`Target installations: ${Array.from(selectedInstallations).join(', ')}`); + setStatus("Installing preset..."); + showProgress(); + await invoke("download_and_install_pack", { + uuid, + selectedNames: Array.from(selectedInstallations) + }); + addConsoleOutput(`Preset "${presetName}" installed successfully!`); + setStatus("Preset installed successfully!"); + await refreshInstallations(); + } catch (error) { + const errorMsg = String(error); + addConsoleOutput(`Error installing preset: ${errorMsg}`); + if (errorMsg.includes("IObit Unlocker not found")) { + await message( + "IObit Unlocker is required to install presets to Microsoft Store Minecraft installations.\n\nPlease download and install IObit Unlocker from iobit.com, then try again.", + { title: "IObit Unlocker Required", kind: "error" } + ); + } else if (errorMsg.includes("Access is denied")) { + await message( + "Access denied when copying files. This usually means:\n\n1. IObit Unlocker is needed for Microsoft Store installations\n2. The app needs to run as administrator\n3. Antivirus software is blocking the operation", + { title: "Access Denied", kind: "error" } + ); + } + setStatus(`Error installing preset: ${error}`, true); + } finally { + hideProgress(); + } +} + +async function installRtpackFile() { + if (selectedInstallations.size === 0) { + await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); + return; + } + + try { + const file = await open({ + title: "Select .rtpack file", + filters: [{ name: "RTX Pack", extensions: ["rtpack"] }] + }); + + if (!file) return; + + setStatus("Installing .rtpack file..."); + showProgress(); + await invoke("install_from_rtpack", { + rtpackPath: file, + selectedNames: Array.from(selectedInstallations) + }); + setStatus("RTX pack installed successfully!"); + await refreshInstallations(); + } catch (error) { + setStatus(`Error installing .rtpack: ${error}`, true); + } finally { + hideProgress(); + } +} + +async function installMaterialFiles() { + if (selectedInstallations.size === 0) { + await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); + return; + } + + try { + const files = await open({ + title: "Select material files", + filters: [{ name: "Material Files", extensions: ["bin"] }], + multiple: true + }); + + if (!files || files.length === 0) return; + + setStatus("Installing material files..."); + showProgress(); + await invoke("install_materials", { + materialPaths: files, + selectedNames: Array.from(selectedInstallations) + }); + setStatus("Material files installed successfully!"); + await refreshInstallations(); + } catch (error) { + setStatus(`Error installing materials: ${error}`, true); + } finally { + hideProgress(); + } +} + +async function backupSelected() { + if (selectedInstallations.size === 0) { + await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); + return; + } + + try { + const dir = await open({ + title: "Select backup destination", + directory: true + }); + + if (!dir) return; + + setStatus("Creating backups..."); + showProgress(); + const created = await invoke("backup_selected", { + destDir: dir, + selectedNames: Array.from(selectedInstallations) + }); + setStatus(`Created ${created.length} backup file(s)`); + } catch (error) { + setStatus(`Error creating backup: ${error}`, true); + } finally { + hideProgress(); + } +} + +async function installDlss() { + if (selectedInstallations.size === 0) { + await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); + return; + } + + try { + setStatus("Installing DLSS..."); + showProgress(); + await invoke("install_dlss_for_selected", { + selectedNames: Array.from(selectedInstallations) + }); + setStatus("DLSS installed successfully!"); + await refreshInstallations(); + } catch (error) { + setStatus(`Error installing DLSS: ${error}`, true); + } finally { + hideProgress(); + } +} + +async function updateOptions() { + if (selectedInstallations.size === 0) { + await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); + return; + } + + try { + setStatus("Updating options..."); + showProgress(); + await invoke("update_options_for_selected", { + selectedNames: Array.from(selectedInstallations) + }); + setStatus("Options updated successfully!"); + } catch (error) { + setStatus(`Error updating options: ${error}`, true); + } finally { + hideProgress(); + } +} + +async function registerRtpack() { + try { + setStatus("Registering .rtpack extension..."); + showProgress(); + await invoke("register_rtpack_extension"); + setStatus(".rtpack extension registered successfully!"); + } catch (error) { + setStatus(`Error registering extension: ${error}`, true); + } finally { + hideProgress(); + } +} + +async function locateIobit() { + try { + const file = await open({ + title: "Locate IObit Unlocker", + filters: [ + { name: "Executable Files", extensions: ["exe"] }, + { name: "Shortcuts", extensions: ["lnk"] }, + { name: "All Files", extensions: ["*"] } + ] + }); + + if (!file) return; + + setStatus("Setting IObit Unlocker path..."); + showProgress(); + + const result = await invoke("set_iobit_path", { path: file }); + setStatus(result); + + await message("IObit Unlocker path has been set successfully!", { + title: "Success", + kind: "info" + }); + } catch (error) { + setStatus(`Error setting IObit path: ${error}`, true); + await message(String(error), { + title: "Error", + kind: "error" + }); + } finally { + hideProgress(); + } +} + +async function uninstallPackage() { + const shouldRestore = await confirm( + "Do you want to restore original shader files before uninstalling?", + { title: "Uninstall BetterRTX", kind: "warning" } + ); + + try { + setStatus("Uninstalling..."); + showProgress(); + await invoke("uninstall_package", { restoreInitial: shouldRestore }); + setStatus("Uninstalled successfully!"); + // Reload lists to reflect changes + selectedInstallations.clear(); + selectedPreset = null; + await refreshInstallations(); + await refreshPresets(); + } catch (error) { + setStatus(`Error during uninstall: ${error}`, true); + } finally { + hideProgress(); + } +} + +// Console panel functions +function toggleConsole() { + const panel = document.getElementById("console-panel"); + const arrow = document.getElementById("console-arrow"); + + if (panel?.classList.contains("collapsed")) { + panel.classList.remove("collapsed"); + panel.classList.add("expanded"); + if (arrow) arrow.textContent = "▲"; + } else { + panel?.classList.remove("expanded"); + panel?.classList.add("collapsed"); + if (arrow) arrow.textContent = "▼"; + } +} + +function clearConsole() { + const output = document.getElementById("console-output"); + if (output) output.textContent = ""; +} + +function addConsoleOutput(message: string) { + const output = document.getElementById("console-output"); + if (output) { + const timestamp = new Date().toLocaleTimeString(); + output.textContent += `[${timestamp}] ${message}\n`; + output.scrollTop = output.scrollHeight; + + // Auto-expand console when new output is added + const panel = document.getElementById("console-panel"); + if (panel?.classList.contains("collapsed")) { + toggleConsole(); + } + } +} + +function handleDragOver(e: DragEvent) { + e.preventDefault(); + e.stopPropagation(); + dropZone?.classList.add('drag-over'); +} + +function handleDragLeave(e: DragEvent) { + e.preventDefault(); + e.stopPropagation(); + dropZone?.classList.remove('drag-over'); +} + +async function handleDrop(e: DragEvent) { + e.preventDefault(); + e.stopPropagation(); + dropZone?.classList.remove('drag-over'); + + if (selectedInstallations.size === 0) { + await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); + return; + } + + // Note: Browser File objects don't have path property in standard web context + // This drag-and-drop functionality would need additional Tauri APIs to work properly + // For now, show a message directing users to use the file picker buttons instead + await message( + "Drag and drop is not fully supported yet. Please use the 'Install .rtpack File' or 'Install Material Files' buttons instead.", + { title: "Feature Not Available", kind: "info" } + ); +} + +// Slideout sidepanel functions +function openSidepanel() { + actionsSidepanel?.classList.add("open"); + sidepanelOverlay?.classList.add("visible"); + mobileMenuToggle?.classList.add("active"); +} + +function closeSidepanel() { + actionsSidepanel?.classList.remove("open"); + sidepanelOverlay?.classList.remove("visible"); + mobileMenuToggle?.classList.remove("active"); +} + +function updateInstallationsCount() { + if (installationsCount) { + installationsCount.textContent = `${installations.length} found`; + } +} + +function updatePresetsCount() { + if (presetsCount) { + presetsCount.textContent = `${presets.length} loaded`; + } +} + +async function clearCache() { + try { + setStatus("Clearing cache..."); + await invoke("clear_cache"); + setStatus("Cache cleared successfully"); + } catch (error) { + setStatus(`Error clearing cache: ${error}`, true); + } +} + +async function showCacheInfo() { + try { + const info = await invoke("get_cache_info"); + console.log("Cache info:", info); + addConsoleOutput(`Cache Info: ${JSON.stringify(info, null, 2)}`); + } catch (error) { + setStatus(`Error getting cache info: ${error}`, true); + } +} + +window.addEventListener("DOMContentLoaded", () => { + // Get UI elements + presetsList = document.getElementById("presets-list")!; + statusEl = document.getElementById("status")!; + progressEl = document.getElementById("progress")!; + dropZone = document.getElementById("drop-zone")!; + actionsSidepanel = document.getElementById("actions-sidepanel")!; + sidepanelOverlay = document.getElementById("sidepanel-overlay")!; + mobileMenuToggle = document.getElementById("mobile-menu-toggle")!; + installationsCount = document.getElementById("installations-count")!; + presetsCount = document.getElementById("presets-count")!; + + // Add event listeners + document.getElementById("refresh-installations")?.addEventListener("click", refreshInstallations); + document.getElementById("refresh-presets")?.addEventListener("click", () => refreshPresets(false)); + document.getElementById("force-refresh-presets")?.addEventListener("click", () => refreshPresets(true)); + document.getElementById("clear-cache")?.addEventListener("click", clearCache); + document.getElementById("show-cache-info")?.addEventListener("click", showCacheInfo); + + // Mobile sidepanel controls + mobileMenuToggle?.addEventListener("click", openSidepanel); + document.getElementById("show-actions")?.addEventListener("click", openSidepanel); + document.getElementById("close-sidepanel")?.addEventListener("click", closeSidepanel); + sidepanelOverlay?.addEventListener("click", closeSidepanel); + + // Action buttons (both sidepanel and desktop versions) + document.getElementById("install-rtpack")?.addEventListener("click", installRtpackFile); + document.getElementById("install-rtpack-desktop")?.addEventListener("click", installRtpackFile); + document.getElementById("install-materials")?.addEventListener("click", installMaterialFiles); + document.getElementById("install-materials-desktop")?.addEventListener("click", installMaterialFiles); + document.getElementById("backup-selected")?.addEventListener("click", backupSelected); + document.getElementById("backup-selected-desktop")?.addEventListener("click", backupSelected); + document.getElementById("install-dlss")?.addEventListener("click", installDlss); + document.getElementById("install-dlss-desktop")?.addEventListener("click", installDlss); + document.getElementById("update-options")?.addEventListener("click", updateOptions); + document.getElementById("update-options-desktop")?.addEventListener("click", updateOptions); + document.getElementById("register-rtpack")?.addEventListener("click", registerRtpack); + document.getElementById("register-rtpack-desktop")?.addEventListener("click", registerRtpack); + document.getElementById("locate-iobit")?.addEventListener("click", locateIobit); + document.getElementById("locate-iobit-desktop")?.addEventListener("click", locateIobit); + document.getElementById("uninstall")?.addEventListener("click", uninstallPackage); + document.getElementById("uninstall-desktop")?.addEventListener("click", uninstallPackage); + + // Console panel toggle + document.getElementById("console-toggle")?.addEventListener("click", toggleConsole); + document.getElementById("clear-console")?.addEventListener("click", clearConsole); + + // Popover action buttons + document.getElementById("clear-cache-popover")?.addEventListener("click", clearCache); + document.getElementById("show-cache-info-popover")?.addEventListener("click", showCacheInfo); + document.getElementById("locate-iobit-popover")?.addEventListener("click", locateIobit); + document.getElementById("check-iobit-popover")?.addEventListener("click", async () => { + addConsoleOutput("Checking IObit Unlocker status..."); + try { + const result = await invoke("check_iobit_unlocker"); + await message(result, { title: "IObit Unlocker", kind: "info" }); + } catch (error) { + await message(String(error), { title: "IObit Unlocker", kind: "error" }); + } + }); + document.getElementById("register-rtpack-popover")?.addEventListener("click", registerRtpack); + document.getElementById("uninstall-popover")?.addEventListener("click", uninstallPackage); + + // Navigation buttons + document.querySelectorAll('.nav-btn').forEach(btn => { + btn.addEventListener('click', (e) => { + const target = e.target as HTMLButtonElement; + const section = target.dataset.section; + + // Update active state + document.querySelectorAll('.nav-btn').forEach(b => b.classList.remove('active')); + target.classList.add('active'); + + // Show/hide sections + document.querySelectorAll('main section').forEach(s => { + (s as HTMLElement).style.display = 'none'; + }); + + if (section === 'installations') { + document.getElementById('installations-section')!.style.display = 'block'; + } else if (section === 'presets') { + document.getElementById('presets-section')!.style.display = 'block'; + } else if (section === 'actions') { + document.getElementById('actions-section')!.style.display = 'block'; + } + }); + }); + + // Drag and drop + dropZone?.addEventListener("dragover", handleDragOver); + dropZone?.addEventListener("dragleave", handleDragLeave); + dropZone?.addEventListener("drop", handleDrop); + + // Initial load + refreshInstallations(); + refreshPresets(); +}); diff --git a/v3/src/styles.css b/v3/src/styles.css new file mode 100644 index 0000000..16f0dd5 --- /dev/null +++ b/v3/src/styles.css @@ -0,0 +1,824 @@ +:root { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif; + font-size: 16px; + line-height: 1.6; + font-weight: 400; + + color: #e5e7eb; + background-color: #0a0a0a; + + font-synthesis: none; + text-rendering: optimizeLegibility; +} + +/* Top toolbar styles */ +.top-toolbar { + position: fixed; + top: 0; + left: 0; + right: 0; + height: 60px; + background: #1a1a1a; + border-bottom: 1px solid #2d2d2d; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 20px; + z-index: 1002; + contain: layout style; +} + +.toolbar-left .app-title { + font-size: 1.25rem; + font-weight: 600; + color: #ffffff; + margin: 0; +} + +.toolbar-nav { + display: flex; + gap: 8px; +} + +.nav-btn { + padding: 8px 16px; + background: transparent; + border: 1px solid #404040; + border-radius: 6px; + color: #e5e7eb; + font-size: 0.875rem; + font-weight: 500; + cursor: pointer; + transition: all 0.15s ease; +} + +.nav-btn:hover { + background: #2d2d2d; + border-color: #525252; +} + +.nav-btn.active { + background: #ff6b35; + border-color: #ff6b35; + color: #ffffff; +} + +.toolbar-right { + display: flex; + gap: 8px; +} + +.toolbar-icon-btn { + width: 36px; + height: 36px; + background: transparent; + border: 1px solid #404040; + border-radius: 6px; + color: #e5e7eb; + cursor: pointer; + transition: all 0.15s ease; + display: flex; + align-items: center; + justify-content: center; +} + +.toolbar-icon-btn:hover { + background: #2d2d2d; + border-color: #525252; +} + +.toolbar-icon-btn .icon { + font-size: 16px; +} + +/* Popover styles */ +[popover] { + background: #1a1a1a; + border: 1px solid #2d2d2d; + border-radius: 8px; + box-shadow: 0 8px 25px rgba(0, 0, 0, 0.4); + padding: 0; + margin: 0; + color: #e5e7eb; +} + +.settings-popover, .help-popover { + width: 320px; + max-height: 400px; + overflow-y: auto; +} + +.popover-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px 20px; + border-bottom: 1px solid #2d2d2d; + background: #0f0f0f; +} + +.popover-header h3 { + margin: 0; + font-size: 1.125rem; + font-weight: 600; + color: #ffffff; +} + +.popover-close { + background: none; + border: none; + color: #6b6b6b; + font-size: 20px; + cursor: pointer; + padding: 4px; + line-height: 1; + transition: color 0.15s ease; +} + +.popover-close:hover { + color: #ffffff; +} + +.popover-content { + padding: 20px; +} + +.setting-group { + margin-bottom: 20px; +} + +.setting-group:last-child { + margin-bottom: 0; +} + +.setting-group label { + display: block; + font-size: 0.875rem; + font-weight: 600; + color: #ffffff; + margin-bottom: 8px; +} + +.setting-buttons { + display: flex; + flex-direction: column; + gap: 8px; +} + +.setting-btn { + padding: 8px 12px; + background: #404040; + border: 1px solid #525252; + border-radius: 4px; + color: #ffffff; + font-size: 0.875rem; + font-weight: 500; + cursor: pointer; + transition: all 0.15s ease; + text-align: left; +} + +.setting-btn:hover { + background: #525252; + border-color: #666666; +} + +.setting-btn.danger { + background: #2d1b1b; + border-color: #4a2c2c; +} + +.setting-btn.danger:hover { + background: #3d2525; + border-color: #ff6b35; +} + +.help-section { + margin-bottom: 20px; +} + +.help-section:last-child { + margin-bottom: 0; +} + +.help-section h4 { + margin: 0 0 8px 0; + font-size: 1rem; + font-weight: 600; + color: #ffffff; +} + +.help-section p { + margin: 4px 0; + font-size: 0.875rem; + color: #e5e7eb; + line-height: 1.4; +} + +.help-section a { + color: #ff6b35; + text-decoration: none; +} + +.help-section a:hover { + text-decoration: underline; +} + +.container { + margin: 0; + padding: 24px; + max-width: 1400px; + margin: 0 auto; + min-height: 100vh; +} + +header { + text-align: center; + margin-bottom: 48px; + padding: 32px 0; +} + +header h1 { + color: #ffffff; + margin-bottom: 8px; + font-size: 2.5rem; + font-weight: 700; + letter-spacing: -0.025em; +} + +header p { + color: #9ca3af; + margin: 0; + font-size: 1.125rem; +} + +section { + margin-bottom: 32px; + padding: 0; + background: transparent; + border-radius: 0; + box-shadow: none; +} + +section h2 { + margin-top: 0; + margin-bottom: 24px; + color: #ffffff; + border-bottom: none; + padding-bottom: 0; + font-size: 1.5rem; + font-weight: 600; +} + +/* Section toolbars */ +.section-toolbar { + display: flex; + padding-top: 60px; +} + +.toolbar-title { + display: flex; + align-items: center; + gap: 16px; +} + +.toolbar-title h2 { + margin: 0; + font-size: 1.5rem; + font-weight: 600; + color: #ffffff; +} + +.item-count { + font-size: 0.875rem; + color: #6b6b6b; + background: #2d2d2d; + padding: 4px 8px; + border-radius: 12px; +} + +.toolbar-actions { + display: flex; + gap: 12px; + align-items: center; +} + +.toolbar-btn { + display: flex; + align-items: center; + gap: 6px; + padding: 8px 16px; + background: #404040; + border: 1px solid #525252; + border-radius: 4px; + color: #ffffff; + font-size: 0.875rem; + font-weight: 500; + cursor: pointer; + transition: all 0.15s ease; +} + +.toolbar-btn:hover { + background: #525252; + border-color: #666666; +} + +.btn-icon { + font-size: 1rem; +} + +.installations-grid, .presets-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); + gap: 20px; + contain: layout style; +} + +/* Container queries for responsive grids */ +@container (max-width: 768px) { + .installations-grid, .presets-grid { + grid-template-columns: 1fr; + } +} + +@container (min-width: 1200px) { + .installations-grid, .presets-grid { + grid-template-columns: repeat(3, 1fr); + } +} + +.installation-card { + background: #1a1a1a; + border: 1px solid #2d2d2d; + border-radius: 8px; + padding: 20px; + transition: all 0.2s ease; + cursor: pointer; +} + +.installation-title { + display: flex; + align-items: center; + gap: 12px; +} + +.preset-icon { + width: 24px; + height: 24px; + border-radius: 4px; + object-fit: cover; + border: 1px solid #404040; +} + +.installed-preset-info { + color: #10b981; + font-size: 0.875rem; + margin: 8px 0 4px 0; + font-weight: 500; +} + +.no-preset-info { + color: #6b7280; + font-size: 0.875rem; + margin: 8px 0 4px 0; + font-style: italic; +} + +.installation-card:hover, .preset-card:hover { + border-color: #404040; + transform: translateY(-2px); + box-shadow: 0 8px 25px rgba(0, 0, 0, 0.4); +} + +.installation-card.selected, .preset-card.selected { + border-color: #ff6b35; + background: #1f1f1f; + box-shadow: 0 0 0 1px #ff6b35; +} + +.installation-card h3, .preset-card h3 { + margin: 0 0 12px 0; + color: #ffffff; + font-size: 1.25rem; + font-weight: 600; +} + +.preset-header { + display: flex; + align-items: flex-start; + gap: 16px; + margin-bottom: 16px; +} + +.preset-icon { + width: 64px; + height: 64px; + border-radius: 8px; + object-fit: cover; + border: 1px solid #2d2d2d; + background: #0f0f0f; + flex-shrink: 0; +} + +.preset-header h3 { + margin: 0; + flex: 1; + color: #ffffff; + font-size: 1.25rem; + font-weight: 600; + line-height: 1.4; +} + +.install-path { + font-size: 0.875rem; + color: #6b6b6b; + margin: 8px 0; + word-break: break-all; + line-height: 1.4; +} + +.badge { + display: inline-block; + padding: 4px 12px; + border-radius: 20px; + font-size: 0.75rem; + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.badge.preview { + background: rgba(245, 158, 11, 0.1); + color: #f59e0b; + border: 1px solid rgba(245, 158, 11, 0.2); +} + +.badge.release { + background: rgba(34, 197, 94, 0.1); + color: #22c55e; + border: 1px solid rgba(34, 197, 94, 0.2); +} + +.actions-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: 16px; +} + +.action-btn { + padding: 14px 24px; + border: 1px solid #525252; + border-radius: 4px; + font-weight: 600; + font-size: 0.875rem; + cursor: pointer; + transition: all 0.15s ease; + background: #404040; + color: #ffffff; + text-transform: uppercase; + letter-spacing: 0.025em; +} + +.action-btn:hover { + background: #525252; + border-color: #666666; +} + +.action-btn.danger { + background: #2d1b1b; + border-color: #4a2c2c; +} + +.action-btn.danger:hover { + background: #3d2525; + border-color: #ff6b35; +} + +.drop-zone { + border: 2px dashed #2d2d2d; + border-radius: 12px; + padding: 48px; + text-align: center; + color: #6b6b6b; + transition: all 0.2s ease; + background: #1a1a1a; +} + +.drop-zone.drag-over { + border-color: #ff6b35; + background: #2d1f1a; + color: #ff9f7a; +} + +.status { + padding: 16px 20px; + border-radius: 12px; + margin-bottom: 16px; + background: rgba(59, 130, 246, 0.1); + color: #60a5fa; + border: 1px solid rgba(59, 130, 246, 0.2); + font-size: 0.875rem; +} + +.status.error { + background: rgba(239, 68, 68, 0.1); + color: #f87171; + border-color: rgba(239, 68, 68, 0.2); +} + +.progress-container { + width: 100%; + background-color: var(--surface); + border-radius: 8px; + overflow: hidden; + margin-top: 1rem; +} + +.progress-bar { + height: 8px; + background: linear-gradient(90deg, var(--primary), var(--accent)); + width: 0%; + transition: width 0.3s ease; + animation: pulse 2s infinite; +} + +@keyframes pulse { + 0%, 100% { opacity: 1; } + 50% { opacity: 0.7; } +} + +#console-section { + margin-top: 2rem; + border: 1px solid #e5e7eb; + border-radius: 8px; + background: white; + overflow: hidden; +} + +.console-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem; + background: #f9fafb; + border-bottom: 1px solid #e5e7eb; + cursor: pointer; + user-select: none; + transition: background-color 0.2s ease; +} + +.console-header:hover { + background: #f3f4f6; +} + +.console-header h3 { + margin: 0; + font-size: 1.1rem; + color: #374151; +} + +.console-arrow { + font-size: 1.2rem; + color: #6b7280; + transition: transform 0.2s ease; +} + +.console-panel { + max-height: 300px; + overflow: hidden; + transition: max-height 0.3s ease; +} + +.console-panel.collapsed { + max-height: 0; +} + +.console-panel.expanded .console-arrow { + transform: rotate(180deg); +} + +.console-output { + padding: 1rem; + background: #1a1a1a; + color: #00ff00; + font-family: 'Courier New', monospace; + font-size: 0.9rem; + line-height: 1.4; + max-height: 250px; + overflow-y: auto; + white-space: pre-wrap; + word-break: break-word; +} + +.console-clear-btn { + position: absolute; + top: 0.5rem; + right: 0.5rem; + background: rgba(255, 255, 255, 0.1); + border: 1px solid rgba(255, 255, 255, 0.2); + color: #ccc; + padding: 0.25rem 0.5rem; + border-radius: 4px; + font-size: 0.8rem; + cursor: pointer; + transition: background-color 0.2s ease; +} + +.console-clear-btn:hover { + background: rgba(255, 255, 255, 0.2); +} + +.console-panel { + position: relative; +} + +.install-preset-btn { + margin-top: 16px; + padding: 14px 24px; + background: #404040; + color: #ffffff; + border: 1px solid #525252; + border-radius: 4px; + font-size: 0.875rem; + font-weight: 600; + cursor: pointer; + transition: all 0.15s ease; + width: 100%; + text-transform: uppercase; + letter-spacing: 0.025em; +} + +.install-preset-btn:hover { + background: #525252; + border-color: #666666; + color: #ffffff; +} + +button { + border-radius: 6px; + border: 1px solid #2d2d2d; + padding: 12px 20px; + font-size: 0.875rem; + font-weight: 500; + font-family: inherit; + color: #ffffff; + background: #1a1a1a; + cursor: pointer; + transition: all 0.2s ease; +} + +button:hover { + background: #2d2d2d; + border-color: #404040; +} + +button:active { + transform: translateY(0); +} + +/* Slideout Sidepanel */ +.actions-sidepanel { + position: fixed; + top: 0; + left: -320px; + width: 320px; + height: 100vh; + background: #1a1a1a; + border-right: 1px solid #2d2d2d; + z-index: 1000; + transition: left 0.3s ease; + contain: layout style paint; + overflow-y: auto; +} + +.actions-sidepanel.open { + left: 0; +} + +.sidepanel-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 20px; + border-bottom: 1px solid #2d2d2d; + background: #0f0f0f; +} + +.sidepanel-header h2 { + margin: 0; + color: #ffffff; + font-size: 1.25rem; + font-weight: 600; +} + +.close-sidepanel { + background: none; + border: none; + color: #6b6b6b; + font-size: 24px; + cursor: pointer; + padding: 4px; + line-height: 1; + transition: color 0.15s ease; +} + +.close-sidepanel:hover { + color: #ffffff; +} + +.sidepanel-content { + padding: 20px; +} + +.actions-list { + display: flex; + flex-direction: column; + gap: 12px; +} + +.actions-list .action-btn { + width: 100%; + text-align: left; + justify-content: flex-start; +} + +.sidepanel-overlay { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background: rgba(0, 0, 0, 0.5); + z-index: 999; + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; +} + +.sidepanel-overlay.visible { + opacity: 1; + visibility: visible; +} + +/* Responsive visibility classes */ +.mobile-only { + display: none; +} + +.desktop-only { + display: block; +} + +/* Container queries for responsive behavior */ +@container (max-width: 768px) { + .mobile-menu-toggle { + display: flex; + } + + .mobile-only { + display: block; + } + + .desktop-only { + display: none; + } + + .main-content { + padding: 20px; + gap: 24px; + } + + .app-header h1 { + font-size: 2rem; + } + + .section-toolbar { + flex-direction: column; + align-items: stretch; + gap: 16px; + } + + .toolbar-actions { + justify-content: space-between; + } +} + +@container (max-width: 480px) { + .main-content { + padding: 16px; + } + + .section-toolbar { + padding: 12px 16px; + } + + .toolbar-title { + flex-direction: column; + align-items: flex-start; + gap: 8px; + } + + .installation-card, .preset-card { + padding: 16px; + } +} diff --git a/v3/tsconfig.json b/v3/tsconfig.json new file mode 100644 index 0000000..75abdef --- /dev/null +++ b/v3/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/v3/vite.config.ts b/v3/vite.config.ts new file mode 100644 index 0000000..fc3fe85 --- /dev/null +++ b/v3/vite.config.ts @@ -0,0 +1,30 @@ +import { defineConfig } from "vite"; + +// @ts-expect-error process is a nodejs global +const host = process.env.TAURI_DEV_HOST; + +// https://vite.dev/config/ +export default defineConfig(async () => ({ + + // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` + // + // 1. prevent Vite from obscuring rust errors + clearScreen: false, + // 2. tauri expects a fixed port, fail if that port is not available + server: { + port: 1420, + strictPort: true, + host: host || false, + hmr: host + ? { + protocol: "ws", + host, + port: 1421, + } + : undefined, + watch: { + // 3. tell Vite to ignore watching `src-tauri` + ignored: ["**/src-tauri/**"], + }, + }, +})); From cf3b1296ea0122edab68263b8e9fe2a57c417983 Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Fri, 15 Aug 2025 22:27:03 -0500 Subject: [PATCH 05/38] feat: initialize v3 installer with base components and UI structure --- .vscode/settings.json | 5 +- v3/bun.lock | 110 +++ v3/index.html | 42 +- v3/package.json | 6 +- v3/src-tauri/src/lib.rs | 105 +- v3/src/assets/brtx.svg | 1 + v3/src/assets/icon.png | Bin 0 -> 10925 bytes v3/src/assets/typescript.svg | 25 - v3/src/assets/vite.svg | 1 - v3/src/components/base-component.ts | 42 + v3/src/components/console-panel.ts | 154 +++ v3/src/components/installation-card.ts | 183 ++++ v3/src/components/preset-card.ts | 146 +++ v3/src/components/status-bar.ts | 92 ++ v3/src/components/toolbar-section.ts | 124 +++ v3/src/icons.ts | 149 +++ v3/src/main.ts | 1209 ++++++++++++------------ v3/src/styles.css | 1090 +++++++-------------- v3/src/theme.css | 68 ++ v3/vite.config.ts | 3 +- 20 files changed, 2088 insertions(+), 1467 deletions(-) create mode 100644 v3/src/assets/brtx.svg create mode 100644 v3/src/assets/icon.png delete mode 100644 v3/src/assets/typescript.svg delete mode 100644 v3/src/assets/vite.svg create mode 100644 v3/src/components/base-component.ts create mode 100644 v3/src/components/console-panel.ts create mode 100644 v3/src/components/installation-card.ts create mode 100644 v3/src/components/preset-card.ts create mode 100644 v3/src/components/status-bar.ts create mode 100644 v3/src/components/toolbar-section.ts create mode 100644 v3/src/icons.ts create mode 100644 v3/src/theme.css diff --git a/.vscode/settings.json b/.vscode/settings.json index 37d7e32..3872551 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,6 @@ { - "github.copilot.chat.codeGeneration.useInstructionFiles": true + "github.copilot.chat.codeGeneration.useInstructionFiles": true, + "css.lint.unknownAtRules": "ignore", + "less.lint.unknownAtRules": "ignore", + "scss.lint.unknownAtRules": "ignore" } \ No newline at end of file diff --git a/v3/bun.lock b/v3/bun.lock index 522903d..f852096 100644 --- a/v3/bun.lock +++ b/v3/bun.lock @@ -4,9 +4,13 @@ "": { "name": "v3", "dependencies": { + "@fontsource-variable/inter": "^5.2.6", + "@tailwindcss/vite": "^4.1.12", "@tauri-apps/api": "^2", "@tauri-apps/plugin-dialog": "^2", "@tauri-apps/plugin-opener": "^2", + "lucide": "^0.539.0", + "tailwindcss": "^4.1.12", }, "devDependencies": { "@tauri-apps/cli": "^2", @@ -68,6 +72,20 @@ "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.9", "", { "os": "win32", "cpu": "x64" }, "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ=="], + "@fontsource-variable/inter": ["@fontsource-variable/inter@5.2.6", "", {}, "sha512-jks/bficUPQ9nn7GvXvHtlQIPudW7Wx8CrlZoY8bhxgeobNxlQan8DclUJuYF2loYRrGpfrhCIZZspXYysiVGg=="], + + "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.30", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q=="], + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.46.2", "", { "os": "android", "cpu": "arm" }, "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA=="], "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.46.2", "", { "os": "android", "cpu": "arm64" }, "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ=="], @@ -108,6 +126,36 @@ "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.46.2", "", { "os": "win32", "cpu": "x64" }, "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg=="], + "@tailwindcss/node": ["@tailwindcss/node@4.1.12", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.5.1", "lightningcss": "1.30.1", "magic-string": "^0.30.17", "source-map-js": "^1.2.1", "tailwindcss": "4.1.12" } }, "sha512-3hm9brwvQkZFe++SBt+oLjo4OLDtkvlE8q2WalaD/7QWaeM7KEJbAiY/LJZUaCs7Xa8aUu4xy3uoyX4q54UVdQ=="], + + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.12", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.4.3" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.12", "@tailwindcss/oxide-darwin-arm64": "4.1.12", "@tailwindcss/oxide-darwin-x64": "4.1.12", "@tailwindcss/oxide-freebsd-x64": "4.1.12", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.12", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.12", "@tailwindcss/oxide-linux-arm64-musl": "4.1.12", "@tailwindcss/oxide-linux-x64-gnu": "4.1.12", "@tailwindcss/oxide-linux-x64-musl": "4.1.12", "@tailwindcss/oxide-wasm32-wasi": "4.1.12", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.12", "@tailwindcss/oxide-win32-x64-msvc": "4.1.12" } }, "sha512-gM5EoKHW/ukmlEtphNwaGx45fGoEmP10v51t9unv55voWh6WrOL19hfuIdo2FjxIaZzw776/BUQg7Pck++cIVw=="], + + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.12", "", { "os": "android", "cpu": "arm64" }, "sha512-oNY5pq+1gc4T6QVTsZKwZaGpBb2N1H1fsc1GD4o7yinFySqIuRZ2E4NvGasWc6PhYJwGK2+5YT1f9Tp80zUQZQ=="], + + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-cq1qmq2HEtDV9HvZlTtrj671mCdGB93bVY6J29mwCyaMYCP/JaUBXxrQQQm7Qn33AXXASPUb2HFZlWiiHWFytw=="], + + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-6UCsIeFUcBfpangqlXay9Ffty9XhFH1QuUFn0WV83W8lGdX8cD5/+2ONLluALJD5+yJ7k8mVtwy3zMZmzEfbLg=="], + + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JOH/f7j6+nYXIrHobRYCtoArJdMJh5zy5lr0FV0Qu47MID/vqJAY3r/OElPzx1C/wdT1uS7cPq+xdYYelny1ww=="], + + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.12", "", { "os": "linux", "cpu": "arm" }, "sha512-v4Ghvi9AU1SYgGr3/j38PD8PEe6bRfTnNSUE3YCMIRrrNigCFtHZ2TCm8142X8fcSqHBZBceDx+JlFJEfNg5zQ=="], + + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-YP5s1LmetL9UsvVAKusHSyPlzSRqYyRB0f+Kl/xcYQSPLEw/BvGfxzbH+ihUciePDjiXwHh+p+qbSP3SlJw+6g=="], + + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-V8pAM3s8gsrXcCv6kCHSuwyb/gPsd863iT+v1PGXC4fSL/OJqsKhfK//v8P+w9ThKIoqNbEnsZqNy+WDnwQqCA=="], + + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.12", "", { "os": "linux", "cpu": "x64" }, "sha512-xYfqYLjvm2UQ3TZggTGrwxjYaLB62b1Wiysw/YE3Yqbh86sOMoTn0feF98PonP7LtjsWOWcXEbGqDL7zv0uW8Q=="], + + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.12", "", { "os": "linux", "cpu": "x64" }, "sha512-ha0pHPamN+fWZY7GCzz5rKunlv9L5R8kdh+YNvP5awe3LtuXb5nRi/H27GeL2U+TdhDOptU7T6Is7mdwh5Ar3A=="], + + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.12", "", { "dependencies": { "@emnapi/core": "^1.4.5", "@emnapi/runtime": "^1.4.5", "@emnapi/wasi-threads": "^1.0.4", "@napi-rs/wasm-runtime": "^0.2.12", "@tybys/wasm-util": "^0.10.0", "tslib": "^2.8.0" }, "cpu": "none" }, "sha512-4tSyu3dW+ktzdEpuk6g49KdEangu3eCYoqPhWNsZgUhyegEda3M9rG0/j1GV/JjVVsj+lG7jWAyrTlLzd/WEBg=="], + + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-iGLyD/cVP724+FGtMWslhcFyg4xyYyM+5F4hGvKA7eifPkXHRAUDFaimu53fpNg9X8dfP75pXx/zFt/jlNF+lg=="], + + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.12", "", { "os": "win32", "cpu": "x64" }, "sha512-NKIh5rzw6CpEodv/++r0hGLlfgT/gFN+5WNdZtvh6wpU2BpGNgdjvj6H2oFc8nCM839QM1YOhjpgbAONUb4IxA=="], + + "@tailwindcss/vite": ["@tailwindcss/vite@4.1.12", "", { "dependencies": { "@tailwindcss/node": "4.1.12", "@tailwindcss/oxide": "4.1.12", "tailwindcss": "4.1.12" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-4pt0AMFDx7gzIrAOIYgYP0KCBuKWqyW8ayrdiLEjoJTT4pKTjrzG/e4uzWtTLDziC+66R9wbUqZBccJalSE5vQ=="], + "@tauri-apps/api": ["@tauri-apps/api@2.7.0", "", {}, "sha512-v7fVE8jqBl8xJFOcBafDzXFc8FnicoH3j8o8DNNs0tHuEBmXUDqrCOAzMRX0UkfpwqZLqvrvK0GNQ45DfnoVDg=="], "@tauri-apps/cli": ["@tauri-apps/cli@2.7.1", "", { "optionalDependencies": { "@tauri-apps/cli-darwin-arm64": "2.7.1", "@tauri-apps/cli-darwin-x64": "2.7.1", "@tauri-apps/cli-linux-arm-gnueabihf": "2.7.1", "@tauri-apps/cli-linux-arm64-gnu": "2.7.1", "@tauri-apps/cli-linux-arm64-musl": "2.7.1", "@tauri-apps/cli-linux-riscv64-gnu": "2.7.1", "@tauri-apps/cli-linux-x64-gnu": "2.7.1", "@tauri-apps/cli-linux-x64-musl": "2.7.1", "@tauri-apps/cli-win32-arm64-msvc": "2.7.1", "@tauri-apps/cli-win32-ia32-msvc": "2.7.1", "@tauri-apps/cli-win32-x64-msvc": "2.7.1" }, "bin": { "tauri": "tauri.js" } }, "sha512-RcGWR4jOUEl92w3uvI0h61Llkfj9lwGD1iwvDRD2isMrDhOzjeeeVn9aGzeW1jubQ/kAbMYfydcA4BA0Cy733Q=="], @@ -140,12 +188,54 @@ "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], + + "detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="], + + "enhanced-resolve": ["enhanced-resolve@5.18.3", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww=="], + "esbuild": ["esbuild@0.25.9", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.9", "@esbuild/android-arm": "0.25.9", "@esbuild/android-arm64": "0.25.9", "@esbuild/android-x64": "0.25.9", "@esbuild/darwin-arm64": "0.25.9", "@esbuild/darwin-x64": "0.25.9", "@esbuild/freebsd-arm64": "0.25.9", "@esbuild/freebsd-x64": "0.25.9", "@esbuild/linux-arm": "0.25.9", "@esbuild/linux-arm64": "0.25.9", "@esbuild/linux-ia32": "0.25.9", "@esbuild/linux-loong64": "0.25.9", "@esbuild/linux-mips64el": "0.25.9", "@esbuild/linux-ppc64": "0.25.9", "@esbuild/linux-riscv64": "0.25.9", "@esbuild/linux-s390x": "0.25.9", "@esbuild/linux-x64": "0.25.9", "@esbuild/netbsd-arm64": "0.25.9", "@esbuild/netbsd-x64": "0.25.9", "@esbuild/openbsd-arm64": "0.25.9", "@esbuild/openbsd-x64": "0.25.9", "@esbuild/openharmony-arm64": "0.25.9", "@esbuild/sunos-x64": "0.25.9", "@esbuild/win32-arm64": "0.25.9", "@esbuild/win32-ia32": "0.25.9", "@esbuild/win32-x64": "0.25.9" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g=="], "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "jiti": ["jiti@2.5.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w=="], + + "lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="], + + "lucide": ["lucide@0.539.0", "", {}, "sha512-FBF3rgamBJEwoOnE1NW6uPD++Al/VQA+TC3vRCoIky4Sv0Se7P22axPQ7VA85swPPGe843lztUxo8T23PDrFAA=="], + + "magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], + + "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], + + "minizlib": ["minizlib@3.0.2", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA=="], + + "mkdirp": ["mkdirp@3.0.1", "", { "bin": { "mkdirp": "dist/cjs/src/bin.js" } }, "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg=="], + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], @@ -158,10 +248,30 @@ "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + "tailwindcss": ["tailwindcss@4.1.12", "", {}, "sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA=="], + + "tapable": ["tapable@2.2.2", "", {}, "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg=="], + + "tar": ["tar@7.4.3", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" } }, "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw=="], + "tinyglobby": ["tinyglobby@0.2.14", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ=="], "typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], "vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], + + "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.4.5", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.4", "tslib": "^2.4.0" }, "bundled": true }, "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.4.5", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.0.4", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" }, "bundled": true }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="], + + "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ=="], + + "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], } } diff --git a/v3/index.html b/v3/index.html index 18329ee..3f41f3d 100644 --- a/v3/index.html +++ b/v3/index.html @@ -22,12 +22,8 @@

BetterRTX Installer

- - + +
@@ -134,15 +130,16 @@

Minecraft Installations

+
@@ -154,23 +151,24 @@

Available Presets

+
@@ -195,23 +193,11 @@

Actions

-
-
- -
+ + -
-
-

Console Output

- -
- -
+ + diff --git a/v3/package.json b/v3/package.json index 0ebb442..0c5eb07 100644 --- a/v3/package.json +++ b/v3/package.json @@ -10,9 +10,13 @@ "tauri": "tauri" }, "dependencies": { + "@fontsource-variable/inter": "^5.2.6", + "@tailwindcss/vite": "^4.1.12", "@tauri-apps/api": "^2", + "@tauri-apps/plugin-dialog": "^2", "@tauri-apps/plugin-opener": "^2", - "@tauri-apps/plugin-dialog": "^2" + "lucide": "^0.539.0", + "tailwindcss": "^4.1.12" }, "devDependencies": { "@tauri-apps/cli": "^2", diff --git a/v3/src-tauri/src/lib.rs b/v3/src-tauri/src/lib.rs index c690449..01ea025 100644 --- a/v3/src-tauri/src/lib.rs +++ b/v3/src-tauri/src/lib.rs @@ -192,58 +192,71 @@ fn iobit_delete(iobit: &Path, location: &Path, materials: &[PathBuf]) -> Result< "RTXPostFX.Bloom.material.bin" ]; - // Attempt to delete RTX material files first (unconditional) + // Collect all files to delete (RTX files + materials), avoiding duplicates + let mut files_to_delete = std::collections::HashSet::new(); + + // Add hardcoded RTX files for file_name in &rtx_files_to_delete { - let target = location.join("data").join("renderer").join("materials").join(file_name); - println!("Attempting to delete RTX file via IObit: {}", target.display()); - // Use PowerShell to mirror quoting behavior of v2 - let arglist = format!("/Delete \"{}\"", target.display()); - let ioexe_ps = iobit.display().to_string().replace("'", "''"); - let arglist_ps = arglist.replace("'", "''"); - let ps_cmd = format!( - "Start-Process -FilePath '{}' -ArgumentList '{}' -Wait -PassThru", - ioexe_ps, arglist_ps - ); - let output = Command::new("powershell.exe") - .arg("-NoProfile") - .arg("-ExecutionPolicy").arg("Bypass") - .arg("-Command") - .arg(ps_cmd) - .output() - .map_err(|e| format!("Failed to run IObit Unlocker: {e}"))?; - if !output.status.success() { - let stderr = String::from_utf8_lossy(&output.stderr); - println!("IObit delete reported non-success for {}: {}", target.display(), stderr); - } - std::thread::sleep(std::time::Duration::from_millis(100)); + files_to_delete.insert(file_name.to_string()); } - // Also delete any files that match the materials we're about to install (unconditional) + // Add material files being installed for m in materials { - let name = m.file_name().ok_or("invalid material filename")?; - let target = location.join("data").join("renderer").join("materials").join(name); - println!("Attempting to delete material via IObit: {}", target.display()); - // Use PowerShell to mirror quoting behavior of v2 - let arglist = format!("/Delete \"{}\"", target.display()); - let ioexe_ps = iobit.display().to_string().replace("'", "''"); - let arglist_ps = arglist.replace("'", "''"); - let ps_cmd = format!( - "Start-Process -FilePath '{}' -ArgumentList '{}' -Wait -PassThru", - ioexe_ps, arglist_ps - ); - let output = Command::new("powershell.exe") - .arg("-NoProfile") - .arg("-ExecutionPolicy").arg("Bypass") - .arg("-Command") - .arg(ps_cmd) - .output() - .map_err(|e| format!("Failed to run IObit Unlocker: {e}"))?; - if !output.status.success() { - let stderr = String::from_utf8_lossy(&output.stderr); - println!("IObit delete reported non-success for {}: {}", target.display(), stderr); + if let Some(name) = m.file_name() { + if let Some(name_str) = name.to_str() { + files_to_delete.insert(name_str.to_string()); + } } - std::thread::sleep(std::time::Duration::from_millis(100)); } + + if files_to_delete.is_empty() { + println!("No files to delete"); + return Ok(()); + } + + // Build target paths for all files to delete + let targets: Vec<_> = files_to_delete + .iter() + .map(|file_name| location.join("data").join("renderer").join("materials").join(file_name)) + .collect(); + + // Build the exact ArgumentList string for single-pass delete: + // '/Delete "target1","target2","target3"' + let targets_joined = targets + .iter() + .map(|t| t.display().to_string()) + .collect::>() + .join("\",\""); + let arglist = format!("/Delete \"{}\"", targets_joined); + + // Escape single quotes for embedding in a single-quoted PS string + let ioexe_ps = iobit.display().to_string().replace("'", "''"); + let arglist_ps = arglist.replace("'", "''"); + + let ps_cmd = format!( + "Start-Process -FilePath '{}' -ArgumentList '{}' -Wait -PassThru", + ioexe_ps, arglist_ps + ); + + println!( + "Deleting materials via IObit (single pass): [{}]", + files_to_delete.iter().cloned().collect::>().join(", ") + ); + + let output = Command::new("powershell.exe") + .arg("-NoProfile") + .arg("-ExecutionPolicy").arg("Bypass") + .arg("-Command") + .arg(ps_cmd) + .output() + .map_err(|e| format!("Failed to run PowerShell for IObit delete: {e}"))?; + + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr); + println!("IObit delete reported non-success: {}", stderr); + } + + println!("IObit single-pass delete completed"); Ok(()) } diff --git a/v3/src/assets/brtx.svg b/v3/src/assets/brtx.svg new file mode 100644 index 0000000..14b2bc1 --- /dev/null +++ b/v3/src/assets/brtx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/v3/src/assets/icon.png b/v3/src/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..251b3dbd443ee179993939cc757c5120b742087d GIT binary patch literal 10925 zcmV;eDpJ*nP)_H$TcCg?T zMy!wq2^iMh&jLb1XvE8KPX-J7i})h!tgb2;-CA6C*FAYMopv~WzKF1$dF)sJ_BRd; zm>Jw1W(EM;F#!2~!EBWC^Y{W_>+f3E9&n$>vpCEi(GE+t=TXP~S?HMOytVDCg$uxF z*Phsmtv<&3)bpezkF$+&XiE!e=lEUDk2s#=yySY)K^|nCO3yrJA}bw3j_Wsm>-Td! zegUR5**Z6LRP5}6`xSzi$Io^B5@wqac&+0LW{*WwXP7c%NISj;G~oV(nXUV?{WNn8LM9^`|KmfpURN+QqYrE52Qi3 z7yzO^+f(6JdQ&;{eo)EG0QdQwpElO@7~LqsRc0i^NC+)3Es^&nkL@gn!7wJQN>;cDfC ze2aV1iddAniYWb)1HN!wU*g_Gh_3i5uu3ltgFtK|%7zeA=XO%?W38us;U#-M1ZjLdVhzVf3Q8%rvOi^2>LHPRR>lBTlwGL(e( z;05pTD_z5K2_pn<3eBp)N@OLb`XG%DdSGUt&(8aRDlq!q=j!Wm^zG?4HL#&oJW++N zhykSHm?(`hleDJ)uc$LZIC3d$ z-H--{q(fr>rT53;B7`Lp+2(kjP?xaBNRYnRUzR%7ip;5y7RsH?nD~8&|4;c!7T}>B zW&@56`}3v=i3vwZfMyU^{H1?Nrq;oZqF@zWAji~x_5B)`)Zi<#7h2hf?}-#=IIc>K zu;%>Blryb31vGiY?51ZtGc)0Rq>TpD6``Vp2BZ)fsGItNO#4hMzh^(QjA+ybAkn1R zV_nVEWqzhWIUhjbjPbIiUTMuL43;T4M)DeO%)wMR*R(5{e#*~B&{3@q+xKK-RX(+T z4IWbn8PlXv4rqpvmfPT2kSxESteoxBEoL^7u?(||C%QX9NdtQ(0l+Veu-+>L5EeoK z8x^6ZZ)q8vxT%4c28}r|WxhuKY0+vWRf&2Y?;_Ba`tV!C5E`{>K-n{d4!??GI*t@p z^}%|LW2-JhgXcZ49Ktglw~mL$JySE7y{ubL=q9dg(fi{5Ts)xVh;{F+L@Nb*sUkRWLnl|zabvWcD8<*`5+WOY1OuPzfT&0Jm2e# zvG?Vkbvfx43_;$*`$*e~re3dqSAOuA^?v&g{v?S3V6dsqOJGKYLZpE?ox6q&*jQGd zBZvX=?5MyPnFmscB=)*cG7u__2B@s#K99S=$B;g*^?m&

Mj;xNp|&NNV>){x=| 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 P00000NkvXXu0mjf?T8#< literal 0 HcmV?d00001 diff --git a/v3/src/assets/typescript.svg b/v3/src/assets/typescript.svg deleted file mode 100644 index 30a5edd..0000000 --- a/v3/src/assets/typescript.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - diff --git a/v3/src/assets/vite.svg b/v3/src/assets/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/v3/src/assets/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/v3/src/components/base-component.ts b/v3/src/components/base-component.ts new file mode 100644 index 0000000..8139108 --- /dev/null +++ b/v3/src/components/base-component.ts @@ -0,0 +1,42 @@ +/** + * Base Web Component class with common functionality + */ +export abstract class BaseComponent extends HTMLElement { + protected shadow: ShadowRoot; + + constructor() { + super(); + this.shadow = this.attachShadow({ mode: 'open' }); + } + + protected connectedCallback() { + this.render(); + this.attachEventListeners(); + } + + protected disconnectedCallback() { + this.cleanup(); + } + + protected abstract render(): void; + protected abstract attachEventListeners(): void; + protected cleanup(): void { + // Override in child classes if needed + } + + protected emit(eventName: string, detail?: any) { + this.dispatchEvent(new CustomEvent(eventName, { + detail, + bubbles: true, + composed: true + })); + } + + protected applyExternalStyles() { + // Link to external stylesheet for BEM classes + const link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = '/src/styles.css'; + this.shadow.appendChild(link); + } +} diff --git a/v3/src/components/console-panel.ts b/v3/src/components/console-panel.ts new file mode 100644 index 0000000..ebcca89 --- /dev/null +++ b/v3/src/components/console-panel.ts @@ -0,0 +1,154 @@ +import { BaseComponent } from './base-component'; +import { createIcons, ChevronDown, ChevronUp } from 'lucide'; + +export class ConsolePanel extends BaseComponent { + private isExpanded: boolean = false; + private output: string[] = []; + + constructor() { + super(); + } + + protected render() { + this.shadow.innerHTML = ` + +

+

Console Output

+ +
+
+
${this.output.join('\n')}
+ +
+ `; + + // Initialize Lucide icons + createIcons({ + icons: { ChevronDown, ChevronUp }, + attrs: { 'stroke-width': 2, 'width': 16, 'height': 16 } + }); + } + + protected attachEventListeners() { + const header = this.shadow.querySelector('.console-header'); + const clearBtn = this.shadow.querySelector('.console-clear-btn'); + + header?.addEventListener('click', () => { + this.toggle(); + }); + + clearBtn?.addEventListener('click', () => { + this.clear(); + }); + } + + public addOutput(message: string) { + const timestamp = new Date().toLocaleTimeString(); + this.output.push(`[${timestamp}] ${message}`); + this.updateOutput(); + + // Auto-expand if collapsed + if (!this.isExpanded) { + this.toggle(); + } + } + + public clear() { + this.output = []; + this.updateOutput(); + } + + private toggle() { + this.isExpanded = !this.isExpanded; + const panel = this.shadow.querySelector('.console-panel'); + const arrow = this.shadow.querySelector('.console-arrow'); + + if (this.isExpanded) { + panel?.classList.remove('collapsed'); + panel?.classList.add('expanded'); + arrow?.setAttribute('data-lucide', 'chevron-up'); + } else { + panel?.classList.remove('expanded'); + panel?.classList.add('collapsed'); + arrow?.setAttribute('data-lucide', 'chevron-down'); + } + + // Re-render icons + createIcons({ + icons: { ChevronDown, ChevronUp }, + attrs: { 'stroke-width': 2, 'width': 16, 'height': 16 } + }); + } + + private updateOutput() { + const outputEl = this.shadow.querySelector('.console-output'); + if (outputEl) { + outputEl.textContent = this.output.join('\n'); + outputEl.scrollTop = outputEl.scrollHeight; + } + } +} + +customElements.define('console-panel', ConsolePanel); diff --git a/v3/src/components/installation-card.ts b/v3/src/components/installation-card.ts new file mode 100644 index 0000000..a194148 --- /dev/null +++ b/v3/src/components/installation-card.ts @@ -0,0 +1,183 @@ +import { BaseComponent } from './base-component'; + +export interface Installation { + FriendlyName: string; + InstallLocation: string; + Preview: boolean; + installed_preset?: { + uuid: string; + name: string; + installed_at: string; + }; +} + +export class InstallationCard extends BaseComponent { + private installation: Installation | null = null; + private isSelected: boolean = false; + + static get observedAttributes() { + return ['selected']; + } + + constructor() { + super(); + } + + set data(installation: Installation) { + this.installation = installation; + this.render(); + } + + get selected() { + return this.isSelected; + } + + set selected(value: boolean) { + this.isSelected = value; + if (value) { + this.setAttribute('selected', ''); + } else { + this.removeAttribute('selected'); + } + this.render(); + } + + protected render() { + if (!this.installation) return; + + const presetIcon = this.installation.installed_preset + ? `${this.installation.installed_preset.name}` + : ''; + + const checkboxId = `install-${this.installation.InstallLocation.replace(/[^a-zA-Z0-9]/g, '')}`; + + this.shadow.innerHTML = ` + +
+
+
+ ${presetIcon} +

${this.installation.FriendlyName}

+
+ ${this.installation.Preview ? 'Preview' : ''} +
+

${this.installation.InstallLocation}

+ ${this.installation.installed_preset ? + `

Current preset: ${this.installation.installed_preset.name}

` : + '

No preset installed

' + } +
+ + +
+
+ `; + } + + protected attachEventListeners() { + const checkbox = this.shadow.querySelector('.installation-checkbox'); + checkbox?.addEventListener('change', (e) => { + const target = e.target as HTMLInputElement; + this.isSelected = target.checked; + if (this.installation) { + this.emit('selection-changed', { + path: this.installation.InstallLocation, + selected: this.isSelected + }); + } + }); + } + + attributeChangedCallback(name: string, _oldValue: string, newValue: string) { + if (name === 'selected') { + this.isSelected = newValue !== null; + this.render(); + } + } +} + +customElements.define('installation-card', InstallationCard); diff --git a/v3/src/components/preset-card.ts b/v3/src/components/preset-card.ts new file mode 100644 index 0000000..75c4608 --- /dev/null +++ b/v3/src/components/preset-card.ts @@ -0,0 +1,146 @@ +import { BaseComponent } from './base-component'; + +export interface PackInfo { + name: string; + uuid: string; + stub: string; + tonemapping: string; + bloom: string; +} + +export class PresetCard extends BaseComponent { + private preset: PackInfo; + private isSelected: boolean = false; + + static get observedAttributes() { + return ['selected']; + } + + constructor() { + super(); + } + + set data(preset: PackInfo) { + this.preset = preset; + this.render(); + } + + get selected() { + return this.isSelected; + } + + set selected(value: boolean) { + this.isSelected = value; + if (value) { + this.setAttribute('selected', ''); + } else { + this.removeAttribute('selected'); + } + this.render(); + } + + protected render() { + if (!this.preset) return; + + this.shadow.innerHTML = ` + +
+
+ ${this.preset.name} icon +

${this.preset.name}

+
+ +
+ `; + } + + protected attachEventListeners() { + const card = this.shadow.querySelector('.preset-card'); + const installBtn = this.shadow.querySelector('.install-preset-btn'); + + card?.addEventListener('click', (e) => { + if ((e.target as HTMLElement).classList.contains('install-preset-btn')) return; + + this.isSelected = !this.isSelected; + this.emit('selection-changed', { + uuid: this.preset.uuid, + selected: this.isSelected + }); + }); + + installBtn?.addEventListener('click', (e) => { + e.stopPropagation(); + this.emit('install-preset', { uuid: this.preset.uuid }); + }); + } + + attributeChangedCallback(name: string, oldValue: string, newValue: string) { + if (name === 'selected') { + this.isSelected = newValue !== null; + this.render(); + } + } +} + +customElements.define('preset-card', PresetCard); diff --git a/v3/src/components/status-bar.ts b/v3/src/components/status-bar.ts new file mode 100644 index 0000000..0b5303b --- /dev/null +++ b/v3/src/components/status-bar.ts @@ -0,0 +1,92 @@ +import { BaseComponent } from './base-component'; + +export class StatusBar extends BaseComponent { + private message: string = 'Ready'; + private isError: boolean = false; + private isLoading: boolean = false; + + constructor() { + super(); + } + + protected render() { + this.shadow.innerHTML = ` + +
+ ${this.message} +
+
+ `; + } + + protected attachEventListeners() { + // No event listeners needed for status bar + } + + public setStatus(message: string, isError: boolean = false) { + this.message = message; + this.isError = isError; + this.updateStatus(); + } + + public showProgress() { + this.isLoading = true; + this.updateProgress(); + } + + public hideProgress() { + this.isLoading = false; + this.updateProgress(); + } + + private updateStatus() { + const messageEl = this.shadow.querySelector('.status-message'); + if (messageEl) { + messageEl.textContent = this.message; + messageEl.className = `status-message ${this.isError ? 'error' : ''}`; + } + } + + private updateProgress() { + const spinner = this.shadow.querySelector('.progress-spinner') as HTMLElement; + if (spinner) { + spinner.style.display = this.isLoading ? 'block' : 'none'; + } + } +} + +customElements.define('status-bar', StatusBar); diff --git a/v3/src/components/toolbar-section.ts b/v3/src/components/toolbar-section.ts new file mode 100644 index 0000000..1e8a465 --- /dev/null +++ b/v3/src/components/toolbar-section.ts @@ -0,0 +1,124 @@ +import { BaseComponent } from './base-component'; +import { createIcons, Settings, HelpCircle, RefreshCw, RefreshCcw, Trash2, Info } from 'lucide'; + +export class ToolbarSection extends BaseComponent { + constructor() { + super(); + } + + protected render() { + this.shadow.innerHTML = ` + +
+
+ + +
+
+ + + + +
+
+ `; + + // Initialize Lucide icons + this.initializeIcons(); + } + + protected attachEventListeners() { + const buttons = { + 'settings-btn': 'settings-clicked', + 'help-btn': 'help-clicked', + 'refresh-btn': 'refresh-clicked', + 'force-refresh-btn': 'force-refresh-clicked', + 'clear-cache-btn': 'clear-cache-clicked', + 'about-btn': 'about-clicked' + }; + + Object.entries(buttons).forEach(([id, event]) => { + const btn = this.shadow.getElementById(id); + btn?.addEventListener('click', () => this.emit(event)); + }); + } + + private initializeIcons() { + createIcons({ + icons: { + Settings, + HelpCircle, + RefreshCw, + RefreshCcw, + Trash2, + Info + }, + attrs: { + 'stroke-width': 2, + 'width': 16, + 'height': 16 + } + }); + } +} + +customElements.define('toolbar-section', ToolbarSection); diff --git a/v3/src/icons.ts b/v3/src/icons.ts new file mode 100644 index 0000000..7e2e6f1 --- /dev/null +++ b/v3/src/icons.ts @@ -0,0 +1,149 @@ +import { createElement } from 'lucide'; + +// Icon mappings +export const icons = { + // Navigation & UI + settings: 'settings', + help: 'help-circle', + close: 'x', + menu: 'menu', + chevronDown: 'chevron-down', + chevronUp: 'chevron-up', + + // Actions + refresh: 'refresh-cw', + forceRefresh: 'refresh-ccw', + trash: 'trash-2', + info: 'info', + download: 'download', + upload: 'upload', + save: 'save', + folder: 'folder', + file: 'file', + package: 'package', + + // Status + check: 'check', + x: 'x-circle', + alert: 'alert-triangle', + + // Tools + wrench: 'wrench', + shield: 'shield', + database: 'database', + terminal: 'terminal', + + // Gaming + gamepad: 'gamepad-2', + monitor: 'monitor', + cpu: 'cpu', + + // File operations + fileText: 'file-text', + filePlus: 'file-plus', + archive: 'archive', + hardDrive: 'hard-drive', + + // System + power: 'power', + link: 'link', + externalLink: 'external-link', + search: 'search', + zap: 'zap', + layers: 'layers' +}; + +/** + * Create a Lucide icon element + * @param name - The name of the icon from the icons mapping + * @param options - Optional configuration for the icon + * @returns SVG string for the icon + */ +export function createIcon(name: keyof typeof icons, options: { + size?: number, + class?: string, + strokeWidth?: number +} = {}): string { + const iconName = icons[name]; + const size = options.size || 16; + const className = options.class || 'icon'; + const strokeWidth = options.strokeWidth || 2; + + const icon = createElement({ + name: iconName, + size, + strokeWidth, + class: className + }); + + return icon; +} + +/** + * Replace an element's content with a Lucide icon + * @param element - The DOM element to replace content in + * @param iconName - The name of the icon from the icons mapping + * @param options - Optional configuration for the icon + */ +export function replaceWithIcon( + element: HTMLElement, + iconName: keyof typeof icons, + options: { size?: number, strokeWidth?: number } = {} +): void { + const icon = createIcon(iconName, { + ...options, + class: element.className || 'icon' + }); + element.innerHTML = icon; +} + +/** + * Initialize all icons in the document + */ +export function initializeIcons(): void { + // Settings and help buttons + const settingsBtn = document.querySelector('#settings-btn .icon'); + if (settingsBtn) replaceWithIcon(settingsBtn as HTMLElement, 'settings'); + + const helpBtn = document.querySelector('#help-btn .icon'); + if (helpBtn) replaceWithIcon(helpBtn as HTMLElement, 'help'); + + // Toolbar buttons + const refreshBtns = document.querySelectorAll('.btn-icon'); + refreshBtns.forEach((btn) => { + const text = btn.textContent?.trim(); + const element = btn as HTMLElement; + + switch(text) { + case '⟳': + replaceWithIcon(element, 'refresh'); + break; + case '🔄': + replaceWithIcon(element, 'forceRefresh'); + break; + case '🗑': + replaceWithIcon(element, 'trash'); + break; + case 'ℹ': + replaceWithIcon(element, 'info'); + break; + case '⚙': + replaceWithIcon(element, 'settings'); + break; + } + }); + + // Console arrows + const consoleArrow = document.getElementById('console-arrow'); + if (consoleArrow) { + const isExpanded = consoleArrow.textContent === '▲'; + replaceWithIcon(consoleArrow, isExpanded ? 'chevronUp' : 'chevronDown'); + } +} + +/** + * Get icon HTML string for embedding + */ +export function getIconHtml(name: keyof typeof icons, size = 16): string { + return createIcon(name, { size }); +} diff --git a/v3/src/main.ts b/v3/src/main.ts index 5f53dfb..47f0c42 100644 --- a/v3/src/main.ts +++ b/v3/src/main.ts @@ -1,642 +1,657 @@ -import { invoke } from "@tauri-apps/api/core"; -import { open } from "@tauri-apps/plugin-dialog"; -import { message, confirm } from "@tauri-apps/plugin-dialog"; - -interface Installation { - FriendlyName: string; - InstallLocation: string; - Preview: boolean; - installed_preset?: { - uuid: string; - name: string; - installed_at: string; - }; -} - -interface PackInfo { - name: string; - uuid: string; - stub: string; - tonemapping: string; - bloom: string; -} - -let installations: Installation[] = []; -let presets: PackInfo[] = []; -let selectedInstallations: Set = new Set(); -let selectedPreset: string | null = null; - -// UI Elements -let presetsList: HTMLElement; -let statusEl: HTMLElement; -let progressEl: HTMLElement; -let dropZone: HTMLElement; -let actionsSidepanel: HTMLElement; -let sidepanelOverlay: HTMLElement; -let mobileMenuToggle: HTMLElement; -let installationsCount: HTMLElement; -let presetsCount: HTMLElement; - -function setStatus(msg: string, isError = false) { - if (statusEl) { - statusEl.textContent = msg; - statusEl.className = `status ${isError ? 'error' : ''}`; - } -} - -function showProgress() { - if (progressEl) progressEl.style.display = 'block'; -} - -function hideProgress() { - if (progressEl) progressEl.style.display = 'none'; +import './styles.css'; +import { invoke } from '@tauri-apps/api/core'; +import { open, message } from '@tauri-apps/plugin-dialog'; +import { createIcons, RefreshCw, RefreshCcw, Trash2, Info, Settings, HelpCircle, ChevronDown, ChevronUp } from 'lucide'; + +// Import Web Components +import './components/installation-card'; +import './components/preset-card'; +import './components/console-panel'; +import './components/status-bar'; +import './components/toolbar-section'; +import type { Installation, InstallationCard } from './components/installation-card'; +import type { PackInfo, PresetCard } from './components/preset-card'; +import type { ConsolePanel } from './components/console-panel'; +import type { StatusBar } from './components/status-bar'; +import type { ToolbarSection } from './components/toolbar-section'; + +// Application state +class AppState { + installations: Installation[] = []; + presets: PackInfo[] = []; + selectedInstallations: Set = new Set(); + selectedPreset: string | null = null; } -async function refreshInstallations() { - try { - setStatus("Loading Minecraft installations..."); - showProgress(); - installations = await invoke("list_installations"); - renderInstallations(installations); - updateInstallationsCount(); - setStatus(`Found ${installations.length} Minecraft installation(s)`); - } catch (error) { - setStatus(`Error loading installations: ${error}`, true); - } finally { - hideProgress(); - } -} - -function renderInstallations(installations: Installation[]) { - const container = document.getElementById("installations-list"); - const countElement = document.getElementById("installations-count"); - - if (!container || !countElement) return; +// Main application controller +class BetterRTXInstaller { + private state: AppState; + private installationsContainer: HTMLElement | null = null; + private presetsContainer: HTMLElement | null = null; + private consolePanel: ConsolePanel | null = null; + private statusBar: StatusBar | null = null; + private dropZone: HTMLElement | null = null; + private actionsSidepanel: HTMLElement | null = null; + private sidepanelOverlay: HTMLElement | null = null; + private mobileMenuToggle: HTMLElement | null = null; - countElement.textContent = `${installations.length} found`; - - if (installations.length === 0) { - container.innerHTML = ` -
-

No Minecraft installations found.

-

Make sure Minecraft is installed from the Microsoft Store.

-
- `; - return; + constructor() { + this.state = new AppState(); } - - container.innerHTML = installations.map(installation => { - const isSelected = selectedInstallations.has(installation.InstallLocation); - const presetIcon = installation.installed_preset - ? `${installation.installed_preset.name}` - : ''; + + async init() { + // Get DOM elements + this.installationsContainer = document.getElementById('installations-list'); + this.presetsContainer = document.getElementById('presets-list'); + this.consolePanel = document.getElementById('console-panel') as ConsolePanel; + this.statusBar = document.getElementById('status-bar') as StatusBar; - return ` -
-
-
- ${presetIcon} -

${installation.FriendlyName}

-
- ${installation.Preview ? 'Preview' : ''} -
-

${installation.InstallLocation}

- ${installation.installed_preset ? - `

Current preset: ${installation.installed_preset.name}

` : - '

No preset installed

' - } -
- - -
-
- `; - }).join(''); - - // Add event listeners for checkboxes - document.querySelectorAll('.installation-checkbox').forEach(checkbox => { - checkbox.addEventListener('change', (e) => { - const target = e.target as HTMLInputElement; - const card = target.closest('.installation-card') as HTMLElement; - - if (target.checked) { - selectedInstallations.add(target.value); - card.classList.add('selected'); - } else { - selectedInstallations.delete(target.value); - card.classList.remove('selected'); - } - - updateInstallationsCount(); + // Initialize Lucide icons + createIcons({ + icons: { + RefreshCw, RefreshCcw, Trash2, Info, Settings, HelpCircle, ChevronDown, ChevronUp + } }); - }); -} - -async function refreshPresets(forceRefresh = false) { - try { - setStatus("Loading available presets..."); - showProgress(); - presets = await invoke("list_presets", { forceRefresh }); - renderPresets(); - updatePresetsCount(); - setStatus(`Loaded ${presets.length} preset(s)`); - } catch (error) { - setStatus(`Error loading presets: ${error}`, true); - } finally { - hideProgress(); + + // Initialize components + this.attachEventListeners(); + + // Load initial data + await this.refreshInstallations(); + await this.refreshPresets(); } -} - -function renderPresets() { - if (!presetsList) return; - - presetsList.innerHTML = presets.map(preset => ` -
-
- ${preset.name} icon -

${preset.name}

-
- -
- `).join(''); - - // Add click handlers - presetsList.querySelectorAll('.preset-card').forEach(card => { - card.addEventListener('click', (e) => { - if ((e.target as HTMLElement).classList.contains('install-preset-btn')) return; - - const uuid = card.getAttribute('data-uuid')!; - presetsList.querySelectorAll('.preset-card').forEach(c => c.classList.remove('selected')); - card.classList.add('selected'); - selectedPreset = uuid; - }); - }); - - // Add install button handlers - presetsList.querySelectorAll('.install-preset-btn').forEach(btn => { - btn.addEventListener('click', async (e) => { - e.stopPropagation(); - const uuid = (btn as HTMLElement).getAttribute('data-uuid')!; - await installPreset(uuid); - }); - }); -} - -async function installPreset(uuid: string) { - if (selectedInstallations.size === 0) { - await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); - return; + + private updateInstallationsCount() { + const count = document.getElementById('installations-count'); + if (count) { + count.textContent = `${this.state.installations.length} found`; + } } - - const preset = presets.find(p => p.uuid === uuid); - const presetName = preset ? preset.name : uuid; - - try { - addConsoleOutput(`Starting installation of preset: ${presetName}`); - addConsoleOutput(`Target installations: ${Array.from(selectedInstallations).join(', ')}`); - setStatus("Installing preset..."); - showProgress(); - await invoke("download_and_install_pack", { - uuid, - selectedNames: Array.from(selectedInstallations) - }); - addConsoleOutput(`Preset "${presetName}" installed successfully!`); - setStatus("Preset installed successfully!"); - await refreshInstallations(); - } catch (error) { - const errorMsg = String(error); - addConsoleOutput(`Error installing preset: ${errorMsg}`); - if (errorMsg.includes("IObit Unlocker not found")) { - await message( - "IObit Unlocker is required to install presets to Microsoft Store Minecraft installations.\n\nPlease download and install IObit Unlocker from iobit.com, then try again.", - { title: "IObit Unlocker Required", kind: "error" } - ); - } else if (errorMsg.includes("Access is denied")) { - await message( - "Access denied when copying files. This usually means:\n\n1. IObit Unlocker is needed for Microsoft Store installations\n2. The app needs to run as administrator\n3. Antivirus software is blocking the operation", - { title: "Access Denied", kind: "error" } - ); + + private updatePresetsCount() { + const count = document.getElementById('presets-count'); + if (count) { + count.textContent = `${this.state.presets.length} available`; } - setStatus(`Error installing preset: ${error}`, true); - } finally { - hideProgress(); } -} - -async function installRtpackFile() { - if (selectedInstallations.size === 0) { - await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); - return; + + private async setupComponents() { + // Create and insert status bar + const statusContainer = document.getElementById('status-container'); + if (statusContainer) { + this.statusBar = document.createElement('status-bar') as StatusBar; + statusContainer.appendChild(this.statusBar); + } + + // Create and insert console panel + const consoleContainer = document.getElementById('console-container'); + if (consoleContainer) { + this.consolePanel = document.createElement('console-panel') as ConsolePanel; + consoleContainer.appendChild(this.consolePanel); + } + + // Create and insert toolbar + const toolbarContainer = document.getElementById('toolbar-container'); + if (toolbarContainer) { + const toolbar = document.createElement('toolbar-section') as ToolbarSection; + toolbarContainer.appendChild(toolbar); + + // Listen to toolbar events + toolbar.addEventListener('settings-clicked', () => this.handleSettings()); + toolbar.addEventListener('help-clicked', () => this.handleHelp()); + toolbar.addEventListener('refresh-clicked', () => this.refreshInstallations()); + toolbar.addEventListener('force-refresh-clicked', () => this.refreshPresets(true)); + toolbar.addEventListener('clear-cache-clicked', () => this.clearCache()); + toolbar.addEventListener('about-clicked', () => this.handleAbout()); + } + + // Get containers + this.installationsContainer = document.getElementById('installations-list'); + this.presetsContainer = document.getElementById('presets-list'); + this.dropZone = document.getElementById('drop-zone'); + this.actionsSidepanel = document.getElementById('actions-sidepanel'); + this.sidepanelOverlay = document.getElementById('sidepanel-overlay'); + this.mobileMenuToggle = document.getElementById('mobile-menu-toggle'); } - - try { - const file = await open({ - title: "Select .rtpack file", - filters: [{ name: "RTX Pack", extensions: ["rtpack"] }] - }); - - if (!file) return; - - setStatus("Installing .rtpack file..."); - showProgress(); - await invoke("install_from_rtpack", { - rtpackPath: file, - selectedNames: Array.from(selectedInstallations) + + private attachEventListeners() { + // Get additional DOM elements + this.dropZone = document.getElementById('drop-zone'); + this.actionsSidepanel = document.getElementById('actions-sidepanel'); + this.sidepanelOverlay = document.getElementById('sidepanel-overlay'); + this.mobileMenuToggle = document.getElementById('mobile-menu-toggle'); + + // Mobile menu toggle + this.mobileMenuToggle?.addEventListener('click', () => this.toggleMobileMenu()); + document.getElementById('close-sidepanel')?.addEventListener('click', () => this.closeSidepanel()); + this.sidepanelOverlay?.addEventListener('click', () => this.closeSidepanel()); + + // Action buttons (both sidepanel and desktop versions) + const actionHandlers = { + 'install-rtpack': () => this.installRtpackFile(), + 'install-materials': () => this.installMaterialFiles(), + 'backup-selected': () => this.backupSelected(), + 'install-dlss': () => this.installDlss(), + 'update-options': () => this.updateOptions(), + 'register-rtpack': () => this.registerRtpack(), + 'locate-iobit': () => this.locateIobit(), + 'uninstall': () => this.uninstallPackage() + }; + + Object.entries(actionHandlers).forEach(([id, handler]) => { + document.getElementById(id)?.addEventListener('click', handler); + document.getElementById(`${id}-desktop`)?.addEventListener('click', handler); + document.getElementById(`${id}-popover`)?.addEventListener('click', handler); }); - setStatus("RTX pack installed successfully!"); - await refreshInstallations(); - } catch (error) { - setStatus(`Error installing .rtpack: ${error}`, true); - } finally { - hideProgress(); - } -} - -async function installMaterialFiles() { - if (selectedInstallations.size === 0) { - await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); - return; - } - - try { - const files = await open({ - title: "Select material files", - filters: [{ name: "Material Files", extensions: ["bin"] }], - multiple: true + + // Special popover actions + document.getElementById('check-iobit-popover')?.addEventListener('click', async () => { + this.addToConsole('Checking IObit Unlocker status...'); + try { + const cacheInfo = await invoke('get_cache_info'); + await message(`Cache Info:\n${JSON.stringify(cacheInfo, null, 2)}`, { title: 'Cache Information' }); + } catch (error) { + await message(String(error), { title: 'IObit Unlocker', kind: 'error' }); + } }); - - if (!files || files.length === 0) return; - - setStatus("Installing material files..."); - showProgress(); - await invoke("install_materials", { - materialPaths: files, - selectedNames: Array.from(selectedInstallations) + + // Navigation buttons + document.querySelectorAll('.nav-btn').forEach(btn => { + btn.addEventListener('click', (e) => this.handleNavigation(e)); }); - setStatus("Material files installed successfully!"); - await refreshInstallations(); - } catch (error) { - setStatus(`Error installing materials: ${error}`, true); - } finally { - hideProgress(); + + // Drag and drop + this.dropZone?.addEventListener('dragover', (e: DragEvent) => this.handleDragOver(e)); + this.dropZone?.addEventListener('dragleave', (e: DragEvent) => this.handleDragLeave(e)); + this.dropZone?.addEventListener('drop', (e: DragEvent) => this.handleDrop(e)); } -} - -async function backupSelected() { - if (selectedInstallations.size === 0) { - await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); - return; + + private setStatus(message: string, isError = false) { + // Update status bar component + if (this.statusBar) { + this.statusBar.setStatus(message, isError); + } } - - try { - const dir = await open({ - title: "Select backup destination", - directory: true - }); - - if (!dir) return; - - setStatus("Creating backups..."); - showProgress(); - const created = await invoke("backup_selected", { - destDir: dir, - selectedNames: Array.from(selectedInstallations) - }); - setStatus(`Created ${created.length} backup file(s)`); - } catch (error) { - setStatus(`Error creating backup: ${error}`, true); - } finally { - hideProgress(); + + private showProgress() { + this.statusBar?.showProgress(); } -} - -async function installDlss() { - if (selectedInstallations.size === 0) { - await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); - return; + + private hideProgress() { + this.statusBar?.hideProgress(); } - - try { - setStatus("Installing DLSS..."); - showProgress(); - await invoke("install_dlss_for_selected", { - selectedNames: Array.from(selectedInstallations) - }); - setStatus("DLSS installed successfully!"); - await refreshInstallations(); - } catch (error) { - setStatus(`Error installing DLSS: ${error}`, true); - } finally { - hideProgress(); + + private addToConsole(text: string) { + if (this.consolePanel) { + this.consolePanel.addOutput(text); + } } -} - -async function updateOptions() { - if (selectedInstallations.size === 0) { - await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); - return; + + + async refreshInstallations() { + try { + this.setStatus('Loading Minecraft installations...'); + this.showProgress(); + this.state.installations = await invoke('list_installations'); + this.renderInstallations(); + this.setStatus(`Found ${this.state.installations.length} Minecraft installation(s)`); + } catch (error) { + this.setStatus(`Error loading installations: ${error}`, true); + } finally { + this.hideProgress(); + } } - - try { - setStatus("Updating options..."); - showProgress(); - await invoke("update_options_for_selected", { - selectedNames: Array.from(selectedInstallations) + + private renderInstallations() { + if (!this.installationsContainer) return; + + const countElement = document.getElementById('installations-count'); + if (countElement) { + countElement.textContent = `${this.state.installations.length} found`; + } + + if (this.state.installations.length === 0) { + this.installationsContainer.innerHTML = ` +
+

No Minecraft installations found.

+

Make sure Minecraft is installed from the Microsoft Store.

+
+ `; + return; + } + + // Clear container + this.installationsContainer.innerHTML = ''; + + // Create installation cards + this.state.installations.forEach(installation => { + const card = document.createElement('installation-card') as InstallationCard; + card.data = installation; + card.selected = this.state.selectedInstallations.has(installation.InstallLocation); + + // Listen for selection changes + card.addEventListener('selection-changed', ((e: CustomEvent) => { + if (e.detail.selected) { + this.state.selectedInstallations.add(e.detail.path); + } else { + this.state.selectedInstallations.delete(e.detail.path); + } + }) as EventListener); + + this.installationsContainer!.appendChild(card); }); - setStatus("Options updated successfully!"); - } catch (error) { - setStatus(`Error updating options: ${error}`, true); - } finally { - hideProgress(); } -} - -async function registerRtpack() { - try { - setStatus("Registering .rtpack extension..."); - showProgress(); - await invoke("register_rtpack_extension"); - setStatus(".rtpack extension registered successfully!"); - } catch (error) { - setStatus(`Error registering extension: ${error}`, true); - } finally { - hideProgress(); + + async refreshPresets(forceRefresh = false) { + try { + this.setStatus('Loading available presets...'); + this.showProgress(); + this.state.presets = await invoke('list_presets', { forceRefresh }); + this.renderPresets(); + this.setStatus(`Loaded ${this.state.presets.length} preset(s)`); + } catch (error) { + this.setStatus(`Error loading presets: ${error}`, true); + } finally { + this.hideProgress(); + } } -} - -async function locateIobit() { - try { - const file = await open({ - title: "Locate IObit Unlocker", - filters: [ - { name: "Executable Files", extensions: ["exe"] }, - { name: "Shortcuts", extensions: ["lnk"] }, - { name: "All Files", extensions: ["*"] } - ] - }); - - if (!file) return; - - setStatus("Setting IObit Unlocker path..."); - showProgress(); + + private renderPresets() { + if (!this.presetsContainer) return; - const result = await invoke("set_iobit_path", { path: file }); - setStatus(result); + // Clear container + this.presetsContainer.innerHTML = ''; - await message("IObit Unlocker path has been set successfully!", { - title: "Success", - kind: "info" - }); - } catch (error) { - setStatus(`Error setting IObit path: ${error}`, true); - await message(String(error), { - title: "Error", - kind: "error" + // Create preset cards + this.state.presets.forEach(preset => { + const card = document.createElement('preset-card') as PresetCard; + card.data = preset; + card.selected = this.state.selectedPreset === preset.uuid; + + // Listen for selection changes + card.addEventListener('selection-changed', ((e: CustomEvent) => { + const { uuid, selected } = e.detail; + if (selected) { + this.state.selectedPreset = uuid; + // Deselect other presets + this.state.presets.forEach(p => { + if (p.uuid !== uuid) { + const otherCard = this.presetsContainer?.querySelector(`preset-card[data-uuid="${p.uuid}"]`); + if (otherCard) { + otherCard.removeAttribute('selected'); + } + } + }); + } else { + this.state.selectedPreset = null; + } + }) as EventListener); + + // Listen for install events + card.addEventListener('install-preset', ((e: CustomEvent) => { + const { uuid } = e.detail; + this.installPreset(uuid); + }) as EventListener); + + this.presetsContainer!.appendChild(card); }); - } finally { - hideProgress(); } -} - -async function uninstallPackage() { - const shouldRestore = await confirm( - "Do you want to restore original shader files before uninstalling?", - { title: "Uninstall BetterRTX", kind: "warning" } - ); - - try { - setStatus("Uninstalling..."); - showProgress(); - await invoke("uninstall_package", { restoreInitial: shouldRestore }); - setStatus("Uninstalled successfully!"); - // Reload lists to reflect changes - selectedInstallations.clear(); - selectedPreset = null; - await refreshInstallations(); - await refreshPresets(); - } catch (error) { - setStatus(`Error during uninstall: ${error}`, true); - } finally { - hideProgress(); - } -} - -// Console panel functions -function toggleConsole() { - const panel = document.getElementById("console-panel"); - const arrow = document.getElementById("console-arrow"); - - if (panel?.classList.contains("collapsed")) { - panel.classList.remove("collapsed"); - panel.classList.add("expanded"); - if (arrow) arrow.textContent = "▲"; - } else { - panel?.classList.remove("expanded"); - panel?.classList.add("collapsed"); - if (arrow) arrow.textContent = "▼"; - } -} - -function clearConsole() { - const output = document.getElementById("console-output"); - if (output) output.textContent = ""; -} - -function addConsoleOutput(message: string) { - const output = document.getElementById("console-output"); - if (output) { - const timestamp = new Date().toLocaleTimeString(); - output.textContent += `[${timestamp}] ${message}\n`; - output.scrollTop = output.scrollHeight; + + private async installPreset(uuid: string) { + if (this.state.selectedInstallations.size === 0) { + await message('Please select at least one Minecraft installation first.', { + title: 'No Installation Selected', + kind: 'warning' + }); + return; + } - // Auto-expand console when new output is added - const panel = document.getElementById("console-panel"); - if (panel?.classList.contains("collapsed")) { - toggleConsole(); + const preset = this.state.presets.find(p => p.uuid === uuid); + + try { + this.addToConsole(`Installing preset: ${preset?.name || uuid}`); + this.addToConsole(`To installations: ${Array.from(this.state.selectedInstallations).join(', ')}`); + + const result = await invoke('download_and_install_pack', { + uuid: uuid, + selectedNames: Array.from(this.state.selectedInstallations) + }); + + this.addToConsole(`Installation complete: ${result}`); + this.setStatus('Preset installed successfully!'); + await this.refreshInstallations(); + } catch (error) { + const errorMsg = String(error); + this.addToConsole(`Error: ${errorMsg}`); + this.setStatus(`Installation failed: ${errorMsg}`, true); + + if (errorMsg.includes('IObit Unlocker not found')) { + await message( + 'IObit Unlocker is required to install presets to Microsoft Store Minecraft installations.\n\nPlease download and install IObit Unlocker from iobit.com, then try again.', + { title: 'IObit Unlocker Required', kind: 'error' } + ); + } else if (errorMsg.includes('Access is denied')) { + await message( + 'Access denied when copying files. This usually means:\n\n1. IObit Unlocker is needed for Microsoft Store installations\n2. The app needs to run as administrator\n3. Antivirus software is blocking the operation', + { title: 'Access Denied', kind: 'error' } + ); + } + } finally { + this.hideProgress(); } } -} - -function handleDragOver(e: DragEvent) { - e.preventDefault(); - e.stopPropagation(); - dropZone?.classList.add('drag-over'); -} - -function handleDragLeave(e: DragEvent) { - e.preventDefault(); - e.stopPropagation(); - dropZone?.classList.remove('drag-over'); -} - -async function handleDrop(e: DragEvent) { - e.preventDefault(); - e.stopPropagation(); - dropZone?.classList.remove('drag-over'); - - if (selectedInstallations.size === 0) { - await message("Please select at least one Minecraft installation first.", { title: "No Installation Selected", kind: "warning" }); - return; + + private async installRtpackFile() { + if (this.state.selectedInstallations.size === 0) { + await message('Please select at least one Minecraft installation first.', { + title: 'No Installation Selected', + kind: 'warning' + }); + return; + } + + try { + const file = await open({ + title: 'Select .rtpack file', + filters: [{ name: 'RTX Pack', extensions: ['rtpack'] }] + }); + + if (!file) return; + + this.addToConsole(`Installing .rtpack file: ${file}`); + this.addToConsole(`To installations: ${Array.from(this.state.selectedInstallations).join(', ')}`); + const result = await invoke('install_rtpack', { + rtpackPath: file, + installPaths: Array.from(this.state.selectedInstallations) + }); + this.addToConsole(`Installation complete: ${result}`); + this.setStatus('.rtpack file installed successfully!'); + } catch (error) { + this.addToConsole(`Error: ${error}`); + this.setStatus(`Installation failed: ${error}`, true); + } finally { + this.hideProgress(); + } } - - // Note: Browser File objects don't have path property in standard web context - // This drag-and-drop functionality would need additional Tauri APIs to work properly - // For now, show a message directing users to use the file picker buttons instead - await message( - "Drag and drop is not fully supported yet. Please use the 'Install .rtpack File' or 'Install Material Files' buttons instead.", - { title: "Feature Not Available", kind: "info" } - ); -} - -// Slideout sidepanel functions -function openSidepanel() { - actionsSidepanel?.classList.add("open"); - sidepanelOverlay?.classList.add("visible"); - mobileMenuToggle?.classList.add("active"); -} - -function closeSidepanel() { - actionsSidepanel?.classList.remove("open"); - sidepanelOverlay?.classList.remove("visible"); - mobileMenuToggle?.classList.remove("active"); -} - -function updateInstallationsCount() { - if (installationsCount) { - installationsCount.textContent = `${installations.length} found`; + + private async installMaterialFiles() { + if (this.state.selectedInstallations.size === 0) { + await message('Please select at least one Minecraft installation first.', { + title: 'No Installation Selected', + kind: 'warning' + }); + return; + } + + try { + const files = await open({ + title: 'Select material files', + filters: [{ name: 'Material Files', extensions: ['bin'] }], + multiple: true + }); + + if (!files || files.length === 0) return; + + this.setStatus('Installing material files...'); + this.showProgress(); + await invoke('install_materials', { + materialPaths: files, + selectedNames: Array.from(this.state.selectedInstallations) + }); + this.setStatus('Material files installed successfully!'); + await this.refreshInstallations(); + } catch (error) { + this.setStatus(`Error installing materials: ${error}`, true); + } finally { + this.hideProgress(); + } } -} - -function updatePresetsCount() { - if (presetsCount) { - presetsCount.textContent = `${presets.length} loaded`; + + private async backupSelected() { + if (this.state.selectedInstallations.size === 0) { + await message('Please select at least one Minecraft installation first.', { + title: 'No Installation Selected', + kind: 'warning' + }); + return; + } + + try { + const dir = await open({ + title: 'Select backup destination', + directory: true + }); + + if (!dir) return; + + this.setStatus('Creating backups...'); + this.showProgress(); + const created = await invoke('backup_selected', { + destDir: dir, + selectedNames: Array.from(this.state.selectedInstallations) + }); + this.setStatus(`Created ${created.length} backup file(s)`); + } catch (error) { + this.setStatus(`Error creating backup: ${error}`, true); + } finally { + this.hideProgress(); + } } -} - -async function clearCache() { - try { - setStatus("Clearing cache..."); - await invoke("clear_cache"); - setStatus("Cache cleared successfully"); - } catch (error) { - setStatus(`Error clearing cache: ${error}`, true); + + private async installDlss() { + if (this.state.selectedInstallations.size === 0) { + await message('Please select at least one Minecraft installation first.', { + title: 'No Installation Selected', + kind: 'warning' + }); + return; + } + + try { + this.setStatus('Installing DLSS...'); + this.showProgress(); + await invoke('install_dlss_for_selected', { + selectedNames: Array.from(this.state.selectedInstallations) + }); + this.setStatus('DLSS installed successfully!'); + await this.refreshInstallations(); + } catch (error) { + this.setStatus(`Error installing DLSS: ${error}`, true); + } finally { + this.hideProgress(); + } } -} - -async function showCacheInfo() { - try { - const info = await invoke("get_cache_info"); - console.log("Cache info:", info); - addConsoleOutput(`Cache Info: ${JSON.stringify(info, null, 2)}`); - } catch (error) { - setStatus(`Error getting cache info: ${error}`, true); + + private async updateOptions() { + if (this.state.selectedInstallations.size === 0) { + await message('Please select at least one Minecraft installation first.', { + title: 'No Installation Selected', + kind: 'warning' + }); + return; + } + + try { + this.setStatus('Updating options...'); + this.showProgress(); + await invoke('update_options_for_selected', { + selectedNames: Array.from(this.state.selectedInstallations) + }); + this.setStatus('Options updated successfully!'); + } catch (error) { + this.setStatus(`Error updating options: ${error}`, true); + } finally { + this.hideProgress(); + } } -} - -window.addEventListener("DOMContentLoaded", () => { - // Get UI elements - presetsList = document.getElementById("presets-list")!; - statusEl = document.getElementById("status")!; - progressEl = document.getElementById("progress")!; - dropZone = document.getElementById("drop-zone")!; - actionsSidepanel = document.getElementById("actions-sidepanel")!; - sidepanelOverlay = document.getElementById("sidepanel-overlay")!; - mobileMenuToggle = document.getElementById("mobile-menu-toggle")!; - installationsCount = document.getElementById("installations-count")!; - presetsCount = document.getElementById("presets-count")!; - - // Add event listeners - document.getElementById("refresh-installations")?.addEventListener("click", refreshInstallations); - document.getElementById("refresh-presets")?.addEventListener("click", () => refreshPresets(false)); - document.getElementById("force-refresh-presets")?.addEventListener("click", () => refreshPresets(true)); - document.getElementById("clear-cache")?.addEventListener("click", clearCache); - document.getElementById("show-cache-info")?.addEventListener("click", showCacheInfo); - - // Mobile sidepanel controls - mobileMenuToggle?.addEventListener("click", openSidepanel); - document.getElementById("show-actions")?.addEventListener("click", openSidepanel); - document.getElementById("close-sidepanel")?.addEventListener("click", closeSidepanel); - sidepanelOverlay?.addEventListener("click", closeSidepanel); - - // Action buttons (both sidepanel and desktop versions) - document.getElementById("install-rtpack")?.addEventListener("click", installRtpackFile); - document.getElementById("install-rtpack-desktop")?.addEventListener("click", installRtpackFile); - document.getElementById("install-materials")?.addEventListener("click", installMaterialFiles); - document.getElementById("install-materials-desktop")?.addEventListener("click", installMaterialFiles); - document.getElementById("backup-selected")?.addEventListener("click", backupSelected); - document.getElementById("backup-selected-desktop")?.addEventListener("click", backupSelected); - document.getElementById("install-dlss")?.addEventListener("click", installDlss); - document.getElementById("install-dlss-desktop")?.addEventListener("click", installDlss); - document.getElementById("update-options")?.addEventListener("click", updateOptions); - document.getElementById("update-options-desktop")?.addEventListener("click", updateOptions); - document.getElementById("register-rtpack")?.addEventListener("click", registerRtpack); - document.getElementById("register-rtpack-desktop")?.addEventListener("click", registerRtpack); - document.getElementById("locate-iobit")?.addEventListener("click", locateIobit); - document.getElementById("locate-iobit-desktop")?.addEventListener("click", locateIobit); - document.getElementById("uninstall")?.addEventListener("click", uninstallPackage); - document.getElementById("uninstall-desktop")?.addEventListener("click", uninstallPackage); - - // Console panel toggle - document.getElementById("console-toggle")?.addEventListener("click", toggleConsole); - document.getElementById("clear-console")?.addEventListener("click", clearConsole); - - // Popover action buttons - document.getElementById("clear-cache-popover")?.addEventListener("click", clearCache); - document.getElementById("show-cache-info-popover")?.addEventListener("click", showCacheInfo); - document.getElementById("locate-iobit-popover")?.addEventListener("click", locateIobit); - document.getElementById("check-iobit-popover")?.addEventListener("click", async () => { - addConsoleOutput("Checking IObit Unlocker status..."); + + private async registerRtpack() { try { - const result = await invoke("check_iobit_unlocker"); - await message(result, { title: "IObit Unlocker", kind: "info" }); + this.setStatus('Registering .rtpack extension...'); + this.showProgress(); + await invoke('register_rtpack_extension'); + this.setStatus('.rtpack extension registered successfully!'); } catch (error) { - await message(String(error), { title: "IObit Unlocker", kind: "error" }); + this.setStatus(`Error registering extension: ${error}`, true); + } finally { + this.hideProgress(); } - }); - document.getElementById("register-rtpack-popover")?.addEventListener("click", registerRtpack); - document.getElementById("uninstall-popover")?.addEventListener("click", uninstallPackage); - - // Navigation buttons - document.querySelectorAll('.nav-btn').forEach(btn => { - btn.addEventListener('click', (e) => { - const target = e.target as HTMLButtonElement; - const section = target.dataset.section; + } + + private async locateIobit() { + try { + const file = await open({ + title: 'Locate IObit Unlocker', + filters: [ + { name: 'Executable Files', extensions: ['exe'] }, + { name: 'Shortcuts', extensions: ['lnk'] }, + { name: 'All Files', extensions: ['*'] } + ] + }); + + if (!file) return; - // Update active state - document.querySelectorAll('.nav-btn').forEach(b => b.classList.remove('active')); - target.classList.add('active'); + this.setStatus('Setting IObit Unlocker path...'); + this.showProgress(); - // Show/hide sections - document.querySelectorAll('main section').forEach(s => { - (s as HTMLElement).style.display = 'none'; + const result = await invoke('set_iobit_path', { path: file }); + this.setStatus(result); + + await message('IObit Unlocker path has been set successfully!', { + title: 'Success', + kind: 'info' }); + } catch (error) { + this.setStatus(`Error setting IObit path: ${error}`, true); + await message(String(error), { + title: 'Error', + kind: 'error' + }); + } finally { + this.hideProgress(); + } + } + + private async uninstallPackage() { + try { + this.setStatus('Uninstalling...'); + this.showProgress(); + await invoke('uninstall_package'); + this.setStatus('Uninstalled successfully!'); - if (section === 'installations') { - document.getElementById('installations-section')!.style.display = 'block'; - } else if (section === 'presets') { - document.getElementById('presets-section')!.style.display = 'block'; - } else if (section === 'actions') { - document.getElementById('actions-section')!.style.display = 'block'; - } + // Reload lists to reflect changes + this.state.selectedInstallations.clear(); + this.state.selectedPreset = null; + await this.refreshInstallations(); + await this.refreshPresets(); + } catch (error) { + this.setStatus(`Error during uninstall: ${error}`, true); + } finally { + this.hideProgress(); + } + } + + private async clearCache() { + try { + this.setStatus('Clearing cache...'); + await invoke('clear_cache'); + this.setStatus('Cache cleared successfully'); + } catch (error) { + this.setStatus(`Error clearing cache: ${error}`, true); + } + } + + private async handleSettings() { + this.addToConsole('Settings clicked - Feature coming soon'); + } + + private async handleHelp() { + this.addToConsole('Help clicked - Feature coming soon'); + } + + private async handleAbout() { + this.addToConsole('About clicked - Feature coming soon'); + } + + private handleNavigation(e: Event) { + const target = e.target as HTMLButtonElement; + const section = target.dataset.section; + + // Update active state + document.querySelectorAll('.nav-btn').forEach(b => b.classList.remove('active')); + target.classList.add('active'); + + // Show/hide only the main content sections + const mainSections = ['installations-section', 'presets-section', 'actions-section']; + mainSections.forEach(id => { + const el = document.getElementById(id); + if (el) (el as HTMLElement).style.display = 'none'; }); - }); - - // Drag and drop - dropZone?.addEventListener("dragover", handleDragOver); - dropZone?.addEventListener("dragleave", handleDragLeave); - dropZone?.addEventListener("drop", handleDrop); + + if (section === 'installations') { + document.getElementById('installations-section')!.style.display = 'block'; + } else if (section === 'presets') { + document.getElementById('presets-section')!.style.display = 'block'; + } else if (section === 'actions') { + document.getElementById('actions-section')!.style.display = 'block'; + } + } + + private handleDragOver(e: DragEvent) { + e.preventDefault(); + e.stopPropagation(); + this.dropZone?.classList.add('drag-over'); + } + + private handleDragLeave(e: DragEvent) { + e.preventDefault(); + e.stopPropagation(); + this.dropZone?.classList.remove('drag-over'); + } + + private async handleDrop(e: DragEvent) { + e.preventDefault(); + e.stopPropagation(); + this.dropZone?.classList.remove('drag-over'); + + if (this.state.selectedInstallations.size === 0) { + await message('Please select at least one Minecraft installation first.', { + title: 'No Installation Selected', + kind: 'warning' + }); + return; + } + + await message( + 'Drag and drop is not fully supported yet. Please use the "Install .rtpack File" or "Install Material Files" buttons instead.', + { title: 'Feature Not Available', kind: 'info' } + ); + } + + private toggleMobileMenu() { + if (this.actionsSidepanel?.classList.contains('open')) { + this.closeSidepanel(); + } else { + this.openSidepanel(); + } + } + + private openSidepanel() { + this.actionsSidepanel?.classList.add('open'); + this.sidepanelOverlay?.classList.add('visible'); + this.mobileMenuToggle?.classList.add('active'); + } + + private closeSidepanel() { + this.actionsSidepanel?.classList.remove('open'); + this.sidepanelOverlay?.classList.remove('visible'); + this.mobileMenuToggle?.classList.remove('active'); + } + +} - // Initial load - refreshInstallations(); - refreshPresets(); +// Initialize the application +window.addEventListener('DOMContentLoaded', async () => { + const app = new BetterRTXInstaller(); + await app.init(); }); diff --git a/v3/src/styles.css b/v3/src/styles.css index 16f0dd5..81d6350 100644 --- a/v3/src/styles.css +++ b/v3/src/styles.css @@ -1,824 +1,380 @@ -:root { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif; - font-size: 16px; - line-height: 1.6; - font-weight: 400; - - color: #e5e7eb; - background-color: #0a0a0a; - - font-synthesis: none; - text-rendering: optimizeLegibility; -} - -/* Top toolbar styles */ -.top-toolbar { - position: fixed; - top: 0; - left: 0; - right: 0; - height: 60px; - background: #1a1a1a; - border-bottom: 1px solid #2d2d2d; - display: flex; - align-items: center; - justify-content: space-between; - padding: 0 20px; - z-index: 1002; - contain: layout style; -} - -.toolbar-left .app-title { - font-size: 1.25rem; - font-weight: 600; - color: #ffffff; - margin: 0; -} - -.toolbar-nav { - display: flex; - gap: 8px; -} - -.nav-btn { - padding: 8px 16px; - background: transparent; - border: 1px solid #404040; - border-radius: 6px; - color: #e5e7eb; - font-size: 0.875rem; - font-weight: 500; - cursor: pointer; - transition: all 0.15s ease; -} - -.nav-btn:hover { - background: #2d2d2d; - border-color: #525252; -} - -.nav-btn.active { - background: #ff6b35; - border-color: #ff6b35; - color: #ffffff; -} - -.toolbar-right { - display: flex; - gap: 8px; -} - -.toolbar-icon-btn { - width: 36px; - height: 36px; - background: transparent; - border: 1px solid #404040; - border-radius: 6px; - color: #e5e7eb; - cursor: pointer; - transition: all 0.15s ease; - display: flex; - align-items: center; - justify-content: center; -} - -.toolbar-icon-btn:hover { - background: #2d2d2d; - border-color: #525252; -} - -.toolbar-icon-btn .icon { - font-size: 16px; -} - -/* Popover styles */ -[popover] { - background: #1a1a1a; - border: 1px solid #2d2d2d; - border-radius: 8px; - box-shadow: 0 8px 25px rgba(0, 0, 0, 0.4); - padding: 0; - margin: 0; - color: #e5e7eb; -} - -.settings-popover, .help-popover { - width: 320px; - max-height: 400px; - overflow-y: auto; -} - -.popover-header { - display: flex; - align-items: center; - justify-content: space-between; - padding: 16px 20px; - border-bottom: 1px solid #2d2d2d; - background: #0f0f0f; -} - -.popover-header h3 { - margin: 0; - font-size: 1.125rem; - font-weight: 600; - color: #ffffff; -} - -.popover-close { - background: none; - border: none; - color: #6b6b6b; - font-size: 20px; - cursor: pointer; - padding: 4px; - line-height: 1; - transition: color 0.15s ease; -} - -.popover-close:hover { - color: #ffffff; -} - -.popover-content { - padding: 20px; -} - -.setting-group { - margin-bottom: 20px; -} - -.setting-group:last-child { - margin-bottom: 0; -} - -.setting-group label { - display: block; - font-size: 0.875rem; - font-weight: 600; - color: #ffffff; - margin-bottom: 8px; -} - -.setting-buttons { - display: flex; - flex-direction: column; - gap: 8px; -} - -.setting-btn { - padding: 8px 12px; - background: #404040; - border: 1px solid #525252; - border-radius: 4px; - color: #ffffff; - font-size: 0.875rem; - font-weight: 500; - cursor: pointer; - transition: all 0.15s ease; - text-align: left; -} - -.setting-btn:hover { - background: #525252; - border-color: #666666; -} - -.setting-btn.danger { - background: #2d1b1b; - border-color: #4a2c2c; -} - -.setting-btn.danger:hover { - background: #3d2525; - border-color: #ff6b35; -} - -.help-section { - margin-bottom: 20px; -} - -.help-section:last-child { - margin-bottom: 0; -} - -.help-section h4 { - margin: 0 0 8px 0; - font-size: 1rem; - font-weight: 600; - color: #ffffff; -} - -.help-section p { - margin: 4px 0; - font-size: 0.875rem; - color: #e5e7eb; - line-height: 1.4; -} - -.help-section a { - color: #ff6b35; - text-decoration: none; -} - -.help-section a:hover { - text-decoration: underline; -} - -.container { - margin: 0; - padding: 24px; - max-width: 1400px; - margin: 0 auto; - min-height: 100vh; -} - -header { - text-align: center; - margin-bottom: 48px; - padding: 32px 0; -} - -header h1 { - color: #ffffff; - margin-bottom: 8px; - font-size: 2.5rem; - font-weight: 700; - letter-spacing: -0.025em; +@import "tailwindcss"; +@import "./theme.css"; + +/* Custom utilities - must be at top level, not nested in @layer */ +@utility panel { @apply rounded-lg border shadow-sm; background-color: var(--app-panel); border-color: var(--app-border); } +@utility panel__header { @apply border-b px-4 py-3; border-color: var(--app-border); } +@utility panel__title { @apply text-base font-semibold; } +@utility panel__body { @apply p-4; } + +@utility button { + @apply inline-flex items-center justify-center gap-2 rounded-md border-2 px-4 py-2 text-sm font-medium transition-all select-none disabled:pointer-events-none disabled:opacity-50 cursor-pointer; + color: var(--app-fg); + border-color: var(--app-border); + background-color: color-mix(in oklab, var(--app-panel) 96%, transparent); + box-shadow: 0 3px 0 0 color-mix(in oklab, var(--app-border) 80%, black 20%); + transform: translateY(0); + &:hover { + background-color: color-mix(in oklab, var(--app-panel) 88%, transparent); + transform: translateY(1px); + box-shadow: 0 2px 0 0 color-mix(in oklab, var(--app-border) 80%, black 20%); + } + &:active { + transform: translateY(3px); + box-shadow: 0 0 0 0 color-mix(in oklab, var(--app-border) 80%, black 20%); + } } -header p { - color: #9ca3af; - margin: 0; - font-size: 1.125rem; +@utility button--primary { + color: white; + background-color: var(--brand-accent-600); + border-color: var(--brand-accent-500); + box-shadow: 0 3px 0 0 color-mix(in oklab, var(--brand-accent-600) 80%, black 20%); + &:hover { + background-color: var(--brand-accent-500); + transform: translateY(1px); + box-shadow: 0 2px 0 0 color-mix(in oklab, var(--brand-accent-600) 80%, black 20%); + } + &:active { + transform: translateY(3px); + box-shadow: 0 0 0 0 color-mix(in oklab, var(--brand-accent-600) 80%, black 20%); + } } -section { - margin-bottom: 32px; - padding: 0; - background: transparent; - border-radius: 0; +@utility button--ghost { + background-color: transparent; box-shadow: none; -} - -section h2 { - margin-top: 0; - margin-bottom: 24px; - color: #ffffff; - border-bottom: none; - padding-bottom: 0; - font-size: 1.5rem; - font-weight: 600; -} - -/* Section toolbars */ -.section-toolbar { - display: flex; - padding-top: 60px; -} - -.toolbar-title { - display: flex; - align-items: center; - gap: 16px; -} - -.toolbar-title h2 { - margin: 0; - font-size: 1.5rem; - font-weight: 600; - color: #ffffff; -} - -.item-count { - font-size: 0.875rem; - color: #6b6b6b; - background: #2d2d2d; - padding: 4px 8px; - border-radius: 12px; -} - -.toolbar-actions { - display: flex; - gap: 12px; - align-items: center; -} - -.toolbar-btn { - display: flex; - align-items: center; - gap: 6px; - padding: 8px 16px; - background: #404040; - border: 1px solid #525252; - border-radius: 4px; - color: #ffffff; - font-size: 0.875rem; - font-weight: 500; - cursor: pointer; - transition: all 0.15s ease; -} - -.toolbar-btn:hover { - background: #525252; - border-color: #666666; -} - -.btn-icon { - font-size: 1rem; -} - -.installations-grid, .presets-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); - gap: 20px; - contain: layout style; -} - -/* Container queries for responsive grids */ -@container (max-width: 768px) { - .installations-grid, .presets-grid { - grid-template-columns: 1fr; + &:hover { + box-shadow: none; } -} - -@container (min-width: 1200px) { - .installations-grid, .presets-grid { - grid-template-columns: repeat(3, 1fr); + &:active { + box-shadow: none; } } -.installation-card { - background: #1a1a1a; - border: 1px solid #2d2d2d; - border-radius: 8px; - padding: 20px; - transition: all 0.2s ease; - cursor: pointer; -} - -.installation-title { - display: flex; - align-items: center; - gap: 12px; -} - -.preset-icon { - width: 24px; - height: 24px; - border-radius: 4px; - object-fit: cover; - border: 1px solid #404040; -} - -.installed-preset-info { - color: #10b981; - font-size: 0.875rem; - margin: 8px 0 4px 0; - font-weight: 500; -} - -.no-preset-info { - color: #6b7280; - font-size: 0.875rem; - margin: 8px 0 4px 0; - font-style: italic; -} - -.installation-card:hover, .preset-card:hover { - border-color: #404040; - transform: translateY(-2px); - box-shadow: 0 8px 25px rgba(0, 0, 0, 0.4); -} - -.installation-card.selected, .preset-card.selected { - border-color: #ff6b35; - background: #1f1f1f; - box-shadow: 0 0 0 1px #ff6b35; -} - -.installation-card h3, .preset-card h3 { - margin: 0 0 12px 0; - color: #ffffff; - font-size: 1.25rem; - font-weight: 600; -} - -.preset-header { - display: flex; - align-items: flex-start; - gap: 16px; - margin-bottom: 16px; -} - -.preset-icon { - width: 64px; - height: 64px; - border-radius: 8px; - object-fit: cover; - border: 1px solid #2d2d2d; - background: #0f0f0f; - flex-shrink: 0; -} - -.preset-header h3 { - margin: 0; - flex: 1; - color: #ffffff; - font-size: 1.25rem; - font-weight: 600; - line-height: 1.4; -} - -.install-path { - font-size: 0.875rem; - color: #6b6b6b; - margin: 8px 0; - word-break: break-all; - line-height: 1.4; -} - -.badge { - display: inline-block; - padding: 4px 12px; - border-radius: 20px; - font-size: 0.75rem; - font-weight: 500; - text-transform: uppercase; - letter-spacing: 0.05em; -} - -.badge.preview { - background: rgba(245, 158, 11, 0.1); - color: #f59e0b; - border: 1px solid rgba(245, 158, 11, 0.2); -} - -.badge.release { - background: rgba(34, 197, 94, 0.1); - color: #22c55e; - border: 1px solid rgba(34, 197, 94, 0.2); -} - -.actions-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); - gap: 16px; -} - -.action-btn { - padding: 14px 24px; - border: 1px solid #525252; - border-radius: 4px; - font-weight: 600; - font-size: 0.875rem; - cursor: pointer; - transition: all 0.15s ease; - background: #404040; - color: #ffffff; - text-transform: uppercase; - letter-spacing: 0.025em; -} - -.action-btn:hover { - background: #525252; - border-color: #666666; -} - -.action-btn.danger { - background: #2d1b1b; - border-color: #4a2c2c; -} - -.action-btn.danger:hover { - background: #3d2525; - border-color: #ff6b35; -} - -.drop-zone { - border: 2px dashed #2d2d2d; - border-radius: 12px; - padding: 48px; - text-align: center; - color: #6b6b6b; - transition: all 0.2s ease; - background: #1a1a1a; -} - -.drop-zone.drag-over { - border-color: #ff6b35; - background: #2d1f1a; - color: #ff9f7a; -} - -.status { - padding: 16px 20px; - border-radius: 12px; - margin-bottom: 16px; - background: rgba(59, 130, 246, 0.1); - color: #60a5fa; - border: 1px solid rgba(59, 130, 246, 0.2); - font-size: 0.875rem; -} - -.status.error { - background: rgba(239, 68, 68, 0.1); - color: #f87171; - border-color: rgba(239, 68, 68, 0.2); -} - -.progress-container { - width: 100%; - background-color: var(--surface); - border-radius: 8px; - overflow: hidden; - margin-top: 1rem; -} - -.progress-bar { - height: 8px; - background: linear-gradient(90deg, var(--primary), var(--accent)); - width: 0%; - transition: width 0.3s ease; - animation: pulse 2s infinite; -} - -@keyframes pulse { - 0%, 100% { opacity: 1; } - 50% { opacity: 0.7; } -} - -#console-section { - margin-top: 2rem; - border: 1px solid #e5e7eb; - border-radius: 8px; - background: white; - overflow: hidden; -} - -.console-header { - display: flex; - justify-content: space-between; - align-items: center; - padding: 1rem; - background: #f9fafb; - border-bottom: 1px solid #e5e7eb; - cursor: pointer; - user-select: none; - transition: background-color 0.2s ease; -} - -.console-header:hover { - background: #f3f4f6; -} - -.console-header h3 { - margin: 0; - font-size: 1.1rem; - color: #374151; -} - -.console-arrow { - font-size: 1.2rem; - color: #6b7280; - transition: transform 0.2s ease; -} - -.console-panel { - max-height: 300px; - overflow: hidden; - transition: max-height 0.3s ease; -} - -.console-panel.collapsed { - max-height: 0; -} - -.console-panel.expanded .console-arrow { - transform: rotate(180deg); +@utility button--danger { + color: white; + background-color: var(--danger-600); + border-color: var(--danger-700); + box-shadow: 0 3px 0 0 color-mix(in oklab, var(--danger-700) 80%, black 20%); + &:hover { + background-color: var(--danger-700); + transform: translateY(1px); + box-shadow: 0 2px 0 0 color-mix(in oklab, var(--danger-700) 80%, black 20%); + } + &:active { + transform: translateY(3px); + box-shadow: 0 0 0 0 color-mix(in oklab, var(--danger-700) 80%, black 20%); + } } -.console-output { - padding: 1rem; - background: #1a1a1a; - color: #00ff00; - font-family: 'Courier New', monospace; - font-size: 0.9rem; - line-height: 1.4; - max-height: 250px; - overflow-y: auto; - white-space: pre-wrap; - word-break: break-word; -} +@utility badge { @apply inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-semibold; border-color: var(--app-border); } -.console-clear-btn { - position: absolute; - top: 0.5rem; - right: 0.5rem; - background: rgba(255, 255, 255, 0.1); - border: 1px solid rgba(255, 255, 255, 0.2); - color: #ccc; - padding: 0.25rem 0.5rem; - border-radius: 4px; - font-size: 0.8rem; - cursor: pointer; - transition: background-color 0.2s ease; +@utility hover-lift { + @apply transition-transform; + &:hover { transform: translateY(-1px); } } -.console-clear-btn:hover { - background: rgba(255, 255, 255, 0.2); -} +/* Tailwind layers + BEM-style component classes for the installer UI */ +@layer base { + html, + body, + #root { + @apply h-full; + } -.console-panel { - position: relative; -} + body { + @apply antialiased; + background-color: var(--app-bg, var(--color-minecraft-slate-900)); + color: var(--app-fg, var(--color-minecraft-slate-50)); + font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); + } -.install-preset-btn { - margin-top: 16px; - padding: 14px 24px; - background: #404040; - color: #ffffff; - border: 1px solid #525252; - border-radius: 4px; - font-size: 0.875rem; - font-weight: 600; - cursor: pointer; - transition: all 0.15s ease; - width: 100%; - text-transform: uppercase; - letter-spacing: 0.025em; + :root { + /* App semantic tokens backed by theme colors */ + --app-bg: var(--color-minecraft-slate-900); + --app-panel: var(--color-minecraft-slate-800); + --app-elev: var(--color-minecraft-slate-700); + --app-fg: var(--color-minecraft-slate-50); + --app-muted: var(--color-minecraft-slate-300); + --app-border: var(--color-minecraft-slate-700); + --brand-accent-500: var(--color-minecraft-blue-500); + --brand-accent-600: var(--color-minecraft-blue-600); + --success-500: var(--color-minecraft-green-500); + --success-600: var(--color-minecraft-green-600); + --danger-600: var(--color-minecraft-red-600); + --danger-700: var(--color-minecraft-red-700); + --danger-800: var(--color-minecraft-red-800); + } } -.install-preset-btn:hover { - background: #525252; - border-color: #666666; - color: #ffffff; -} +@layer components { + /* App shell */ + .app { + @apply grid min-h-screen; + grid-template-rows: 3rem 1fr; + } -button { - border-radius: 6px; - border: 1px solid #2d2d2d; - padding: 12px 20px; - font-size: 0.875rem; - font-weight: 500; - font-family: inherit; - color: #ffffff; - background: #1a1a1a; - cursor: pointer; - transition: all 0.2s ease; -} + .app__header { + @apply sticky top-0 z-40 flex items-center gap-3 border-b px-4; + background-color: color-mix(in oklab, var(--app-bg) 85%, black 15%); + border-color: var(--app-border); + } -button:hover { - background: #2d2d2d; - border-color: #404040; -} + .app__brand { + @apply text-sm font-semibold tracking-wide; + } -button:active { - transform: translateY(0); -} + .app__badge { + @apply inline-flex items-center rounded px-2 py-0.5 text-xs font-semibold border; + border-color: var(--app-border); + background-color: var(--success-600); + color: white; + } -/* Slideout Sidepanel */ -.actions-sidepanel { - position: fixed; - top: 0; - left: -320px; - width: 320px; - height: 100vh; - background: #1a1a1a; - border-right: 1px solid #2d2d2d; - z-index: 1000; - transition: left 0.3s ease; - contain: layout style paint; - overflow-y: auto; -} + .app__body { + @apply grid; + grid-template-columns: var(--width-sidenav) 1fr; + } -.actions-sidepanel.open { - left: 0; -} + .app__sidebar { + @apply hidden md:flex md:flex-col gap-1 border-r p-4; + background-color: var(--app-panel); + border-color: var(--app-border); + } -.sidepanel-header { - display: flex; - align-items: center; - justify-content: space-between; - padding: 20px; - border-bottom: 1px solid #2d2d2d; - background: #0f0f0f; -} + .app__content { + @apply p-4 md:p-6; + } -.sidepanel-header h2 { - margin: 0; - color: #ffffff; - font-size: 1.25rem; - font-weight: 600; -} + /* Sidebar navigation */ + .nav { @apply flex flex-col gap-1; } -.close-sidepanel { - background: none; - border: none; - color: #6b6b6b; - font-size: 24px; - cursor: pointer; - padding: 4px; - line-height: 1; - transition: color 0.15s ease; -} + .nav__link { + @apply w-full text-left rounded-md px-3 py-2 text-sm border transition-colors; + color: var(--app-fg); + border-color: transparent; + background-color: color-mix(in oklab, var(--app-panel) 96%, transparent); + } -.close-sidepanel:hover { - color: #ffffff; -} + .nav__link:hover { + border-color: var(--app-border); + background-color: color-mix(in oklab, var(--app-panel) 88%, transparent); + } -.sidepanel-content { - padding: 20px; -} + .nav__link--active { + border-color: var(--brand-accent-500); + outline: 2px solid color-mix(in oklab, var(--brand-accent-500) 35%, transparent); + background-color: color-mix(in oklab, var(--brand-accent-500) 20%, var(--app-panel)); + } -.actions-list { - display: flex; - flex-direction: column; - gap: 12px; -} + /* Panels / cards - utilities moved to top level */ -.actions-list .action-btn { - width: 100%; - text-align: left; - justify-content: flex-start; -} + /* Sections */ + .section { @apply space-y-2; } + .section__title { @apply text-xs font-semibold uppercase tracking-wider; color: var(--app-muted); } + .divider { @apply my-4 h-px w-full; background-color: var(--app-border); } -.sidepanel-overlay { - position: fixed; - top: 0; - left: 0; - width: 100vw; - height: 100vh; - background: rgba(0, 0, 0, 0.5); - z-index: 999; - opacity: 0; - visibility: hidden; - transition: all 0.3s ease; -} + /* Buttons - utilities moved to top level */ -.sidepanel-overlay.visible { - opacity: 1; - visibility: visible; -} + /* Form controls */ + .field { @apply grid gap-1; } + .field__label { @apply text-xs font-medium; color: var(--app-muted); } + .field__control { @apply relative; } + .field__input { @apply w-full rounded-md border bg-transparent px-3 py-2 text-sm outline-none focus:ring-2; border-color: var(--app-border); color: var(--app-fg); } + .field__input:focus { --tw-ring-color: var(--brand-accent-500); border-color: var(--brand-accent-500); } -/* Responsive visibility classes */ -.mobile-only { - display: none; + /* Badges - utilities moved to top level */ + .badge--on { color: black; background-color: var(--color-minecraft-green-300); border-color: var(--color-minecraft-green-400); } } -.desktop-only { - display: block; +@layer utilities { + .surface { background-color: var(--app-panel); border-color: var(--app-border); } } -/* Container queries for responsive behavior */ -@container (max-width: 768px) { - .mobile-menu-toggle { - display: flex; +/* Map existing markup in index.html to styled components */ +@layer components { + /* Top toolbar */ + .top-toolbar { + @apply sticky top-0 z-50 flex h-12 items-center justify-between border-b px-3 md:px-4; + background-color: color-mix(in oklab, var(--app-bg) 85%, black 15%); + border-color: var(--app-border); + } + .app-title { @apply text-sm md:text-base font-semibold; } + .toolbar-nav { @apply flex items-center gap-1; } + .nav-btn { + @apply rounded-md border px-3 py-1.5 text-xs md:text-sm font-medium transition-colors; + color: var(--app-fg); + border-color: transparent; + background-color: color-mix(in oklab, var(--app-panel) 96%, transparent); } + .nav-btn:hover { border-color: var(--app-border); background-color: color-mix(in oklab, var(--app-panel) 88%, transparent); } + .nav-btn.active { border-color: var(--brand-accent-500); outline: 2px solid color-mix(in oklab, var(--brand-accent-500) 35%, transparent); background-color: color-mix(in oklab, var(--brand-accent-500) 20%, var(--app-panel)); } + .toolbar-icon-btn { @apply grid h-8 w-8 place-items-center rounded-md border text-sm; border-color: var(--app-border); } + + /* Layout */ + .app-layout { @apply relative; } + .main-content { @apply mx-auto max-w-7xl p-4 md:p-6; } + .app-header h1 { @apply text-xl font-semibold; } + .app-header p { @apply text-sm; } + + /* Slideout sidepanel (mobile) */ + .mobile-menu-toggle { @apply md:hidden absolute left-3 top-14 z-40 grid h-10 w-10 place-items-center rounded-md border; border-color: var(--app-border); background-color: var(--app-panel); } + .mobile-menu-toggle > span { @apply block h-0.5 w-5 rounded; background-color: var(--app-fg); } + .mobile-menu-toggle > span + span { @apply mt-1; } + + .actions-sidepanel { + @apply fixed left-0 top-0 z-50 h-full w-72 -translate-x-full transform border-r p-4 transition-transform md:hidden; + background-color: var(--app-panel); + border-color: var(--app-border); + } + .actions-sidepanel.open { @apply translate-x-0; } + .sidepanel-header { @apply mb-3 flex items-center justify-between; } + .sidepanel-content { @apply overflow-y-auto; } + .sidepanel-overlay { @apply fixed inset-0 z-40 hidden bg-black/50 md:hidden; } + .sidepanel-overlay.visible { @apply block; } + + /* Desktop/Mobile visibility helpers */ + .desktop-only { @apply hidden md:block; } + .mobile-only { @apply md:hidden; } + + /* Section toolbars */ + .section-toolbar { @apply mb-3 flex items-center justify-between; } + .toolbar-title { @apply flex items-center gap-2; } + .toolbar-title h2 { @apply text-lg font-semibold; } + .item-count { @apply text-xs text-muted; } + .toolbar-actions { @apply flex items-center gap-2; } + .toolbar-btn { @apply button; } + + /* Actions */ + .actions-list { @apply grid gap-2; } + .actions-grid { @apply grid gap-2 sm:grid-cols-2 lg:grid-cols-3; } + .action-btn { @apply button; } + .action-btn.danger { @apply button--danger; } + + /* Installations grid/cards */ + .installations-grid { @apply grid gap-3 md:grid-cols-2 lg:grid-cols-3; } + .installation-card { @apply panel hover-lift; } + .installation-card.selected { border-color: var(--brand-accent-500); outline: 2px solid color-mix(in oklab, var(--brand-accent-500) 35%, transparent); } + .installation-header { @apply flex items-center justify-between border-b px-4 py-3; border-color: var(--app-border); } + .installation-title { @apply flex items-center gap-2; } + .installation-title h3 { @apply text-sm font-semibold; } + .preset-icon { @apply size-6 rounded-sm object-cover; } + .preview-badge { @apply badge; background-color: var(--brand-accent-600); color: white; border-color: color-mix(in oklab, var(--brand-accent-600) 70%, black 30%); } + .installation-path { @apply px-4 pt-2 text-xs text-muted break-all; } + .installed-preset-info, .no-preset-info { @apply px-4 text-xs; } + .no-preset-info { @apply text-muted; } + .installation-actions { @apply panel__body flex items-center gap-2; } + .checkbox-label { @apply text-xs text-muted; } + + /* Presets */ + .presets-grid { @apply grid gap-3 sm:grid-cols-2 lg:grid-cols-3; } + .preset-card { @apply panel hover-lift cursor-pointer; } + .preset-card.selected { border-color: var(--brand-accent-500); outline: 2px solid color-mix(in oklab, var(--brand-accent-500) 35%, transparent); } + .preset-header { @apply flex items-center gap-3 border-b px-4 py-3; border-color: var(--app-border); } + .install-preset-btn { @apply m-4 button button--primary; } + + /* Empty state */ + .empty-state { @apply panel p-6 text-center text-sm; color: var(--app-muted); } + + /* Drag & drop */ + .drop-zone { @apply my-6 grid h-28 place-items-center rounded-md border-2 border-dashed; border-color: var(--app-border); background-color: color-mix(in oklab, var(--app-panel) 92%, transparent); } + .drop-zone.drag-over { background-color: color-mix(in oklab, var(--brand-accent-500) 10%, var(--app-panel)); border-color: var(--brand-accent-500); } + + /* Status & progress */ + .status { @apply text-sm; } + .status.error { color: var(--danger-600); } + .progress-container { @apply mt-2 h-2 w-full overflow-hidden rounded bg-black/30; } + .progress-bar { @apply h-full w-1/2 bg-[color:var(--brand-accent-600)]; } + + /* Console */ + .console-header { @apply mt-6 flex cursor-pointer items-center justify-between rounded-t-md border px-4 py-2; border-color: var(--app-border); background-color: var(--app-panel); } + .console-panel { @apply overflow-hidden rounded-b-md border; border-color: var(--app-border); background-color: var(--app-panel); max-height: 18rem; transition: max-height .2s ease; } + .console-panel.collapsed { max-height: 0; border-top-width: 0; } + .console-panel.expanded { max-height: 18rem; } + .console-output { @apply h-56 whitespace-pre-wrap overflow-auto p-3 text-xs font-mono; } + .console-clear-btn { @apply m-2 self-end button; } + + /* Popovers */ + .settings-popover, .help-popover { @apply rounded-md border shadow-lg; border-color: var(--app-border); background-color: var(--app-panel); color: var(--app-fg); } + .popover-header { @apply flex items-center justify-between border-b px-4 py-2; border-color: var(--app-border); } + .popover-content { @apply p-4 space-y-4; } + .setting-group > label { @apply block text-xs font-semibold text-muted mb-1; } + .setting-buttons { @apply flex flex-wrap gap-2; } + .setting-btn { @apply button; } + .setting-btn.danger { @apply button--danger; } + + /* Web Component BEM Classes */ + /* These classes are used within Web Component shadow DOM */ - .mobile-only { - display: block; + /* Installation Card Component */ + .wc-installation-card { + @apply rounded-lg border p-4 transition-all duration-200; + background-color: var(--app-panel); + border-color: var(--app-border); } - .desktop-only { - display: none; + .wc-installation-card.selected { + border-color: var(--brand-accent-600); + background: color-mix(in oklab, var(--brand-accent-600) 5%, var(--app-panel)); } - .main-content { - padding: 20px; - gap: 24px; + /* Preset Card Component */ + .wc-preset-card { + @apply rounded-lg border p-4 transition-all duration-200 cursor-pointer; + background-color: var(--app-panel); + border-color: var(--app-border); } - .app-header h1 { - font-size: 2rem; + .wc-preset-card:hover { + @apply -translate-y-0.5 shadow-lg; + border-color: var(--brand-accent-500); } - .section-toolbar { - flex-direction: column; - align-items: stretch; - gap: 16px; + .wc-preset-card.selected { + border-color: var(--brand-accent-600); + background: color-mix(in oklab, var(--brand-accent-600) 5%, var(--app-panel)); } - .toolbar-actions { - justify-content: space-between; + /* Console Panel Component */ + .wc-console-panel { + @apply rounded-b-lg overflow-hidden transition-all duration-300; + background-color: var(--app-bg); + border: 1px solid var(--app-border); + border-top: none; } -} - -@container (max-width: 480px) { - .main-content { - padding: 16px; + + .wc-console-header { + @apply flex justify-between items-center px-4 py-3 rounded-t-lg cursor-pointer select-none; + background-color: var(--app-panel); + border: 1px solid var(--app-border); } - .section-toolbar { - padding: 12px 16px; + /* Status Bar Component */ + .wc-status-bar { + @apply flex items-center gap-3 px-4 py-3 rounded-lg; + background-color: var(--app-panel); + border: 1px solid var(--app-border); } - .toolbar-title { - flex-direction: column; - align-items: flex-start; - gap: 8px; + /* Toolbar Component */ + .wc-toolbar { + @apply flex justify-between items-center p-4 rounded-lg; + background-color: var(--app-panel); + border: 1px solid var(--app-border); } - .installation-card, .preset-card { - padding: 16px; + .wc-toolbar-btn { + @apply inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm cursor-pointer transition-all duration-200; + background-color: var(--app-bg); + border: 1px solid var(--app-border); } -} + + .wc-toolbar-btn:hover { + background-color: var(--app-border); + } + + .wc-toolbar-btn:active { + @apply scale-95; + } +} \ No newline at end of file diff --git a/v3/src/theme.css b/v3/src/theme.css new file mode 100644 index 0000000..fd92d1e --- /dev/null +++ b/v3/src/theme.css @@ -0,0 +1,68 @@ +@import "tailwindcss"; +@theme { + --font-mono: var(--font-monocraft), monospace; + + --height-app: calc(100vh - (--spacing(16))); + + --width-app: calc(100vw - (--spacing(64))); + --width-sidenav: --spacing(64); + + --color-minecraft-slate-50: oklch(99.33% 0.0011 197.14deg); + --color-minecraft-slate-100: oklch(92.75% 0.0017 247.84deg); + --color-minecraft-slate-200: oklch(86.08% 0.0043 271.36deg); + --color-minecraft-slate-300: oklch(64.35% 0.0046 271.34deg); + --color-minecraft-slate-400: oklch(53.09% 0.0067 264.51deg); + --color-minecraft-slate-500: oklch(49.54% 0.0054 258.34deg); + --color-minecraft-slate-600: oklch(47.06% 0.0021 247.87deg); + --color-minecraft-slate-700: oklch(40.48% 0.0021 247.88deg); + --color-minecraft-slate-800: oklch(31.65% 0.0023 247.90deg); + --color-minecraft-slate-900: oklch(23.54% 0.0019 286.25deg); + + --color-minecraft-blue-50: oklch(97.09% 0.0125 255.50deg); + --color-minecraft-blue-100: oklch(93.43% 0.0293 252.95deg); + --color-minecraft-blue-200: oklch(88.50% 0.0529 252.79deg); + --color-minecraft-blue-300: oklch(81.38% 0.0890 249.96deg); + --color-minecraft-blue-400: oklch(72.20% 0.1313 252.45deg); + --color-minecraft-blue-500: oklch(63.16% 0.1729 258.52deg); + --color-minecraft-blue-600: oklch(55.97% 0.1962 262.16deg); + --color-minecraft-blue-700: oklch(49.75% 0.2002 263.90deg); + --color-minecraft-blue-800: oklch(43.15% 0.1669 265.52deg); + --color-minecraft-blue-900: oklch(38.65% 0.1273 264.74deg); + + --color-minecraft-green-50: oklch(71.41% 0.1403 137.92deg); + --color-minecraft-green-100: oklch(64.63% 0.1684 138.72deg); + --color-minecraft-green-200: oklch(54.98% 0.1477 139.52deg); + --color-minecraft-green-300: oklch(46.35% 0.1168 139.76deg); + --color-minecraft-green-400: oklch(37.34% 0.1020 140.48deg); + --color-minecraft-green-500: oklch(40.21% 0.0936 139.86deg); + --color-minecraft-green-600: oklch(36.45% 0.0776 140.27deg); + --color-minecraft-green-700: oklch(33.22% 0.0730 141.61deg); + --color-minecraft-green-800: oklch(29.53% 0.0610 141.10deg); + --color-minecraft-green-900: oklch(27.32% 0.0505 138.53deg); + + --color-minecraft-purple-50: oklch(97.00% 0.0133 286.15deg); + --color-minecraft-purple-100: oklch(94.42% 0.0255 290.74deg); + --color-minecraft-purple-200: oklch(89.59% 0.0491 289.19deg); + --color-minecraft-purple-300: oklch(81.32% 0.0925 290.43deg); + --color-minecraft-purple-400: oklch(71.10% 0.1449 290.41deg); + --color-minecraft-purple-500: oklch(60.38% 0.2013 289.50deg); + --color-minecraft-purple-600: oklch(53.85% 0.2266 289.76deg); + --color-minecraft-purple-700: oklch(47.97% 0.2262 288.96deg); + --color-minecraft-purple-800: oklch(42.29% 0.1967 289.28deg); + --color-minecraft-purple-900: oklch(37.21% 0.1651 289.87deg); + --color-minecraft-purple-950: oklch(27.78% 0.1260 287.63deg); + + --color-minecraft-red-50: oklch(97.19% 0.0108 17.34deg); + --color-minecraft-red-100: oklch(93.96% 0.0241 17.59deg); + --color-minecraft-red-200: oklch(89.04% 0.0475 18.08deg); + --color-minecraft-red-300: oklch(81.48% 0.0837 19.04deg); + --color-minecraft-red-400: oklch(71.46% 0.1345 20.98deg); + --color-minecraft-red-500: oklch(63.05% 0.1719 23.41deg); + --color-minecraft-red-600: oklch(55.90% 0.1851 25.52deg); + --color-minecraft-red-700: oklch(49.07% 0.1638 25.63deg); + --color-minecraft-red-800: oklch(43.37% 0.1374 24.96deg); + --color-minecraft-red-900: oklch(39.10% 0.1124 23.91deg); + --color-minecraft-red-950: oklch(25.35% 0.0735 23.99deg); + + --color-muted: oklch(60% 0.1719 23.41deg); + } \ No newline at end of file diff --git a/v3/vite.config.ts b/v3/vite.config.ts index fc3fe85..9893d41 100644 --- a/v3/vite.config.ts +++ b/v3/vite.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "vite"; +import tailwindcss from "@tailwindcss/vite"; -// @ts-expect-error process is a nodejs global const host = process.env.TAURI_DEV_HOST; // https://vite.dev/config/ @@ -27,4 +27,5 @@ export default defineConfig(async () => ({ ignored: ["**/src-tauri/**"], }, }, + plugins: [tailwindcss()], })); From 721895336eda78972fe529ebd5838e252066fd9f Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Sat, 16 Aug 2025 07:34:39 -0500 Subject: [PATCH 06/38] feat: initialize v3 installer with Tauri and React setup --- v3/app-icon.png | Bin 0 -> 48876 bytes v3/bun.lock | 117 +++- v3/index.html | 194 +----- v3/package.json | 11 +- v3/src-tauri/icons/128x128.png | Bin 3512 -> 12889 bytes v3/src-tauri/icons/128x128@2x.png | Bin 7012 -> 22346 bytes v3/src-tauri/icons/32x32.png | Bin 974 -> 1510 bytes v3/src-tauri/icons/64x64.png | Bin 0 -> 3895 bytes v3/src-tauri/icons/Square107x107Logo.png | Bin 2863 -> 9357 bytes v3/src-tauri/icons/Square142x142Logo.png | Bin 3858 -> 15122 bytes v3/src-tauri/icons/Square150x150Logo.png | Bin 3966 -> 16520 bytes v3/src-tauri/icons/Square284x284Logo.png | Bin 7737 -> 34545 bytes v3/src-tauri/icons/Square30x30Logo.png | Bin 903 -> 1484 bytes v3/src-tauri/icons/Square310x310Logo.png | Bin 8591 -> 37124 bytes v3/src-tauri/icons/Square44x44Logo.png | Bin 1299 -> 2124 bytes v3/src-tauri/icons/Square71x71Logo.png | Bin 2011 -> 4665 bytes v3/src-tauri/icons/Square89x89Logo.png | Bin 2468 -> 6697 bytes v3/src-tauri/icons/StoreLogo.png | Bin 1523 -> 2792 bytes .../icons/android/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2688 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 18399 bytes .../android/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 2688 bytes .../icons/android/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2331 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 9435 bytes .../android/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2331 bytes .../android/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 7546 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 26494 bytes .../mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7546 bytes .../android/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 15545 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 37781 bytes .../mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 15545 bytes .../android/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 24095 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 48152 bytes .../mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 24095 bytes v3/src-tauri/icons/icon.icns | Bin 98451 -> 188082 bytes v3/src-tauri/icons/icon.ico | Bin 86642 -> 32991 bytes v3/src-tauri/icons/icon.png | Bin 14183 -> 38277 bytes v3/src-tauri/icons/ios/AppIcon-20x20@1x.png | Bin 0 -> 907 bytes v3/src-tauri/icons/ios/AppIcon-20x20@2x-1.png | Bin 0 -> 2120 bytes v3/src-tauri/icons/ios/AppIcon-20x20@2x.png | Bin 0 -> 2120 bytes v3/src-tauri/icons/ios/AppIcon-20x20@3x.png | Bin 0 -> 3232 bytes v3/src-tauri/icons/ios/AppIcon-29x29@1x.png | Bin 0 -> 1410 bytes v3/src-tauri/icons/ios/AppIcon-29x29@2x-1.png | Bin 0 -> 3389 bytes v3/src-tauri/icons/ios/AppIcon-29x29@2x.png | Bin 0 -> 3389 bytes v3/src-tauri/icons/ios/AppIcon-29x29@3x.png | Bin 0 -> 6504 bytes v3/src-tauri/icons/ios/AppIcon-40x40@1x.png | Bin 0 -> 2120 bytes v3/src-tauri/icons/ios/AppIcon-40x40@2x-1.png | Bin 0 -> 5320 bytes v3/src-tauri/icons/ios/AppIcon-40x40@2x.png | Bin 0 -> 5320 bytes v3/src-tauri/icons/ios/AppIcon-40x40@3x.png | Bin 0 -> 11493 bytes v3/src-tauri/icons/ios/AppIcon-512@2x.png | Bin 0 -> 44079 bytes v3/src-tauri/icons/ios/AppIcon-60x60@2x.png | Bin 0 -> 11493 bytes v3/src-tauri/icons/ios/AppIcon-60x60@3x.png | Bin 0 -> 21265 bytes v3/src-tauri/icons/ios/AppIcon-76x76@1x.png | Bin 0 -> 5197 bytes v3/src-tauri/icons/ios/AppIcon-76x76@2x.png | Bin 0 -> 16562 bytes .../icons/ios/AppIcon-83.5x83.5@2x.png | Bin 0 -> 19208 bytes v3/src/assets/icon.png | Bin 10925 -> 0 bytes v3/src/components/App.tsx | 260 +++++++ v3/src/components/ConsolePanel.tsx | 77 ++ v3/src/components/InstallationCard.tsx | 97 +++ v3/src/components/PresetCard.tsx | 66 ++ v3/src/components/StatusBar.tsx | 28 + v3/src/components/ToolbarSection.tsx | 71 ++ v3/src/components/base-component.ts | 42 -- v3/src/components/console-panel.ts | 154 ---- v3/src/components/installation-card.ts | 183 ----- v3/src/components/preset-card.ts | 146 ---- v3/src/components/status-bar.ts | 92 --- v3/src/components/toolbar-section.ts | 124 ---- v3/src/icons.ts | 149 ---- v3/src/main.ts | 657 ------------------ v3/src/main.tsx | 13 + v3/src/store/appStore.ts | 149 ++++ v3/src/styles.css | 242 ++----- v3/src/theme.css | 21 +- v3/tsconfig.json | 4 + v3/vite.config.ts | 3 +- 75 files changed, 981 insertions(+), 1919 deletions(-) create mode 100644 v3/app-icon.png create mode 100644 v3/src-tauri/icons/64x64.png create mode 100644 v3/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png create mode 100644 v3/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 v3/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png create mode 100644 v3/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png create mode 100644 v3/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 v3/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png create mode 100644 v3/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png create mode 100644 v3/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 v3/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png create mode 100644 v3/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png create mode 100644 v3/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 v3/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 v3/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png create mode 100644 v3/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 v3/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-20x20@1x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-20x20@2x-1.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-20x20@2x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-20x20@3x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-29x29@1x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-29x29@2x-1.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-29x29@2x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-29x29@3x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-40x40@1x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-40x40@2x-1.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-40x40@2x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-40x40@3x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-512@2x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-60x60@2x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-60x60@3x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-76x76@1x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-76x76@2x.png create mode 100644 v3/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png delete mode 100644 v3/src/assets/icon.png create mode 100644 v3/src/components/App.tsx create mode 100644 v3/src/components/ConsolePanel.tsx create mode 100644 v3/src/components/InstallationCard.tsx create mode 100644 v3/src/components/PresetCard.tsx create mode 100644 v3/src/components/StatusBar.tsx create mode 100644 v3/src/components/ToolbarSection.tsx delete mode 100644 v3/src/components/base-component.ts delete mode 100644 v3/src/components/console-panel.ts delete mode 100644 v3/src/components/installation-card.ts delete mode 100644 v3/src/components/preset-card.ts delete mode 100644 v3/src/components/status-bar.ts delete mode 100644 v3/src/components/toolbar-section.ts delete mode 100644 v3/src/icons.ts delete mode 100644 v3/src/main.ts create mode 100644 v3/src/main.tsx create mode 100644 v3/src/store/appStore.ts diff --git a/v3/app-icon.png b/v3/app-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..01c1bfaa16ee99392304e1e0555af30e79969761 GIT binary patch literal 48876 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
gX->kojNsLM0cVGmqz) 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%0A&MNV_fm4^r2D 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 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw=="], + "vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], + "zustand": ["zustand@5.0.7", "", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["@types/react", "immer", "react", "use-sync-external-store"] }, "sha512-Ot6uqHDW/O2VdYsKLLU8GQu8sCOM1LcoE8RwvLv9uuRT9s6SOHCKs0ZEOhxg+I1Ld+A1Q5lwx+UlKXXUoCZITg=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.4.5", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.4", "tslib": "^2.4.0" }, "bundled": true }, "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.4.5", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg=="], @@ -273,5 +384,7 @@ "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ=="], "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], } } diff --git a/v3/index.html b/v3/index.html index 3f41f3d..706de07 100644 --- a/v3/index.html +++ b/v3/index.html @@ -5,200 +5,10 @@ BetterRTX Installer - - -
-
-

BetterRTX Installer

-
-
- -
-
- - -
-
- - -
-
-

Settings

- -
-
-
- -
- - -
-
-
- -
- - -
-
-
- -
- - -
-
-
-
- - -
- -
- - - - - - - -
- -
-
-

BetterRTX Installer

-

Minecraft RTX Preset Manager

-
- -
- -
-
-

Minecraft Installations

- 0 found -
-
- - -
-
- -
-
- -
-
-
-

Available Presets

- 0 loaded -
-
- - - - -
-
- -
-
- - -
-

Actions

-
- - - - - - - - -
-
- -
-
-

Drop .rtpack files or material files here

-
-
- - - - - - -
-
+
+ diff --git a/v3/package.json b/v3/package.json index 0c5eb07..cf00697 100644 --- a/v3/package.json +++ b/v3/package.json @@ -11,15 +11,22 @@ }, "dependencies": { "@fontsource-variable/inter": "^5.2.6", + "@fontsource-variable/martian-mono": "^5.2.6", "@tailwindcss/vite": "^4.1.12", "@tauri-apps/api": "^2", "@tauri-apps/plugin-dialog": "^2", "@tauri-apps/plugin-opener": "^2", - "lucide": "^0.539.0", - "tailwindcss": "^4.1.12" + "lucide-react": "^0.539.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "tailwindcss": "^4.1.12", + "zustand": "^5.0.7" }, "devDependencies": { "@tauri-apps/cli": "^2", + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@vitejs/plugin-react": "^4.2.1", "vite": "^6.0.3", "typescript": "~5.6.2" } diff --git a/v3/src-tauri/icons/128x128.png b/v3/src-tauri/icons/128x128.png index 6be5e50e9b9ae84d9e2ee433f32ef446495eaf3b..fbf08577737b6714ae7d3de756b0bbd7d8dbafa6 100644 GIT binary patch literal 12889 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�Gbwu#z!Ue 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 DQF9x| literal 3512 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 diff --git a/v3/src-tauri/icons/128x128@2x.png b/v3/src-tauri/icons/128x128@2x.png index e81becee571e96f76aa5667f9324c05e5e7a4479..f06f47b0280d45847338da30a67154a0c6370ef6 100644 GIT binary patch literal 22346 zcmV)AK*Ya^P)0W|d+%Lk9e=a;?yjz`pNxnVE7ltS@8AAMm}Rre|0km5Uts(7 z!#2M^T0VpCzx-SmUZ4N#*!zavVX^HA=m|9-FEXRh)4 z`FR=5Pyf+BTmCIS#`!lY=ZV?+R=hk${So zP5vA$Vxt-v%M5|C*ZcR!1t{NN%s?jg`T21dD>nO__Ls zs7IVugex;Kr({f&MJoMzxN3~yfuQ`pq-2J2#4q_tb;dvw^CF1(XuSGyDqk_8P8!@BNGM#e2 zlM>mr*HPp3P_PxlGBX)70rq7W{P@evg_Qg4Qq5e;^E>Rq1hm&_nTk!afb|fF9SeId zXm6&D=VSoqc5d%!;~6VoFtnewfFS|iyMjOR3gCbYz;@MaTEx)M@m>@=MpDy=fO(By zMot-hEh8Q&kxBX9MP%owKV_LfS&JGaa*>izXee^)=e!1W;K!L`EoB5F<-Cz{K5PTc z=GciA*-cjsUEX)DidDtW@4b(Wa-7t8-mUoewAPmv0u2LL_k-npyLn$=r-Wkxe&1Bj zTnxj&&J5t(&g}tM7GH4q>u<{f=vV+?UI0SmDM|;ctfcaaSEAmN7^&llAQqueMfc-M zNmZ<(T!HKTZw=E3ksPcmQe2QpMEA=G!?6MuAqwokHo6?98Y#&*CF9!O52|(t%FIf> zUT&+MNx@Wf-U1rk32J0c)P*gyGF$yYCU$>2<#YLcWUJi=y}MHK9xPFEZ@3usrSruf zVE)>oTVT!%;M~sb|6k3>wsq!$&jLUZRnrtI8%QFrA^PQ5RX*`Vl^WyoFBR&V~ z+RVgWtVTooop@hs$E9Z)@xEMNt1vBR1R%vrcqDIiA;?yF0rp&D&+Xh^17CQHZR8Om zt`J}m(TEYmuVk?n92)&-j(TemN~__h5$UzQJ9To;dCjXGuU4D#^CqMHmg*T+nQ2fp zlZwaJ>chA8XQ~lDe%_>HG^QHq_wq$zgl}=@weFK^WJadJZ!lfVz%moTF3e1uRhhq^ z$YRtM4ZtX%UW*8HZs&Gx=CjTM5N8|smDM?MrRAu1S!7Q+OE}_)R=bj zk*bWW8ah8HEC1BR4d;>Guo(co``{Xp#wi$yt9e%ifaX-_nE{;JxtVt{ z2mo_fCt&2YDp?XEe^CpD;i8WYH0gKz`pBccpott@WCcvRQfLP0bMgB%)0*}P3 zFRM(=ah?E=fDv1$Gv3;fjn|x09n~(n6t0RLaJ0S5L~NtWphZ;EIp1%p-ya1gF*UFg zh_!YT{Vp<_UJL*YEC5~DNLiz!QM21l#^TVJqC}SxlBWEmVJ2LMV*Z)ZI9(_JnNDRV zIb#@~H^_|c*DWWzxc`xqMC|oKb1t5S@=-|1PpIcvCI?BA_aXjXemffcafq*9U&_xL zCG9+c@(kR;7}r5f`FJ|sSH0S`_rVEO?8bcmWP3qY;}MC7V-^WpV=rD7{0*?}>~Nz4qEl`Xl* z4t{oEs0O};8I|y)qvn~W{IcDU;HYh~q7%i>&DdG#{?ZJG@{hg#?_t3Zs8D)YZwRLF zk}AF!+H~L2nw!*lbACMjScdAI+b|YPnw0m#07-(wkTiVmY)%CnDD^!;UcMxNfO~BKTpN^lwO4ReZou$ zJAcJcSMmO-EbXXVnE83tO2P6v=GQNPweBJ>0L%AAJPr>IZc&t%T=DgOAyp*F{CSEe zO1$ql=p27`B}Ja{^8o*Qq$$mGeOAY7=KuBj>*4zERKW>|mFUn*f^Gj}TM3AD3H%B1 zE3IEKmz8Ucw)4aPfByG>zW)2eS{oq>npiI6qcG-5<(!U6g3{wdcJBpAG%f2>7F2#c zYH#hz!>Oof-QYUx1A>%NL;d95l{bV*w~X z-`wH;KANt^werB3b|OeeQ207Rr@eiX855~RY2m45U8jU4TdHIf8^#ZW4( zXujT!kNRK+Ycq(Bh+(!+A_6tQR<|WiHop-gp8;8sPLw{!(8ta>m}FZan;JI|*n85~ zD}WA?MW=!GhL>9YIcds6Ok<)v+2Oj_BIqlR8RGj$IUZAb~rEOl3@{Cuh8uYFE_+{n*I@r995TB-VdAij?WB>ysge)#biMi`428tMna zGP3OZQsseWOO++6mK;_)ZbEkdM3i5?zU6(G+|S8FPpmxl!eCSrfW1jK2z(k)R?;a% z5(`F^NB?bh7)vA>%D_p={Iy@%h#Q%()XUdwJf$KqJ_1Ya{QHOPb0)@MT+=40OTfS! zT3=VD-uVMOY=0+cH6$qy_I8}x`==@YzM7+wE#})%lY)zkPv3=MHCFt*a(`6i)I%<8 zAeRWF5Z4Av)gia=exdfJiX>MV5#{}*3EbBFABrmQPRtUCb)-f|Fee2>JaF0jU+i15TNhCj5T(#T!w38UP7i1kH z_uq=BzkXvts5Si&&{CMJ``Esv?}s`lLrpPfq^(Uk?{b=)`1y{l=w~#d z|2>bSz0Z}kMp5yV7dZZU?fXUkz`pay_ZRm|^@W$>`2^b6DO`V0ku~_^Cf~-IF@TL6 z1W!hzAxoKE0Ba*yHoq<`Sd4KwK2P;TuVH-|#KBFXc7$#r-jU6=Z&u>m&g~KRd<(nj z@erVn{r5b3Vg}%+xa_di3M}I4D!eA=1CYl6Tn4qwzn&jn527sm42m_oKR`FJ+T9=E zXluhv>M05+beM5aYEl;Yi*}96BcW!=79$c>x+GE?je$TkPWhDVW zFD0gsXA1my`TMj;ZLJa8wFL-g<@3~fT|CeEdEuB1KX2OpTMt^1AyA$Hs`~*I5kJiY z7CwvhgcKJdeDq}i%j7J(zowi)i6<)pX(#lVkvJVKxP^4`UNeR>%XyviuSIM5UW=Ik z?u`EZ-hiIdJPbM2Qd2%*ZlfM`oNJHtwd(?ejT22~x@-|^lywLSOn{vzpD9?ja>Hr* z_Q>{6#;E9a`Z*=~UavXJ$Rlq&V)NJgzw>!?&Ues=Pi4gCXgF1C(aS~7ctZDNs_&=9 z*h`PkA8#uHml;+aE6{5Bn6c!a$FH-70cgj;uYWD$lOEb?hJk!mVENDY;(SUQp1U!d zF-eFldE{rQ@c5piQEdf`Dbe%3PwhK)YBZ{CF|F7klFx_sAf4I4>)`|YnqH5+aAWkP zmsgb13eB;|Pf5EAYh*}t%sqOpQ6h~(@QA~P>(3X*`r{Xc6tVr?h9R7k2m--Sg)$ae z4I5a{R9?fgj6};&A_&`tD3LdG4Ok@Pk+&&7-^gfgodV>a9}`gQ+JEbN z^ll;38tE<~PI~^*;1aMLuB>%^PG_#p`n=NiTv8bOF2)P}bIO>4j%gf@&spuLlpWs_ z;c-hw&|Z37LH|9sb9*7~K=Dk$R0h6p>I{sfFTG)rU)E$Ru!BH5b+I0qg)%H<5p{X! z(oDdyVV=;p-}<2_DVRtygAl3M)R@(3IaAIU%%5WmYA7=O2j1W35tT=T-dfSQKBJcw zdffUPEz+xf^?}5ji)TLk^+l$lWD=yH?mR>B$E#sJ+WWPL&%bZ%N>LRn(5|zF`RrvJ za@OErh1n5Lk4@2jHVjvcEgMpXvglw8fYOPmTWW5mwHLlv(ksoRCA}6Mbz%=xh+*=Q z;7kn6;h4_3?K}T?@IFV&YyVK&k7B>S)KN#$r;Ppnxi(#S_uO0159e?X!g4rc#SYem z09Q<6{TG>1kMZM}KL2n@DTMh8vYLvG|9S@GqPqYHqMIx;;WGj(Qt(LSBL=VW3Z4V2 zWqBmxD0$I+Q0(Bf*A+7XlYDEnBBPd>NSTC`q88l%rKWF1^j757B6KTqYZ=b17)L8} zGi+vMZ9So)9hmPp%m{=T2pJ1FSQC&Q7cI6t{LA-03!;<|9>fgf!+N9B(sq)^S^eEO zefw>OuhNP9Kems3o2_Z_PLqJcE&{{r%SY(jumWS?odQd5y0s zRhho&!QLrDiM%!cE}i1EfnyV;K?=WwG$TMwR@-q=Q1c9TGgX+jiSBP-W`6j`FMoIv z=Ffimr_QJzZ4@|0RM0U`KH2|0$}?L9Bgo~5gSI=;*?@Va-G090(|gl}WfpeTAetk8 z&@#L8Zdjwdy&lWAB~s00!@w3FJFtu6P!-+?;AEpa5Z-U8Iz!Ovv$weEJmR(e4OHG65};@(9f%e>e|HM!?_K%Ts98_*$lP%fQ&)j6r&@H1n|FSDr}Y9~iIscfC=) zz^B9zEX7yz=X`uDOApEoyC1*wfSfBdt9RiZc4(!B&Sl zFQKIipegah`F5EZ*UKZ|5wMqspk)SHpIqZfs2PcqBYv1p9I31J?p+`XjG}SgTl;He zDD&UJW)b|ekf{UbN{2-q9c9R!QtMl$2f+9NZ^g~8zmE>6cIsk6X8`#)8Nr#g?aBZk z*ZxFIP1Q>1ocd6GyGEp0Ta4cXn=lKo8X!Or2Y(>3#pW(n#N>TB*I#9_ zsm2`0m{%bunoKp~Xpv0I6tvpC6~Rbh#%cX+9?^N^)X@3jb;?wtmZ22-59k|vZcP{R z>)Cr=jJa(FLd#%sy#y-UmMI~>r75QM;vvCH^1>q9wB_{!`Z&2+1g+XC)~K)%{MhZptWvy%!p&=00c#t1jSAn zexB1uo6+Kgf}!y6lT8^uLE^QzOl$XHXfpru8HdOtkePoDvht8NC(k3g7O~0dwQRP? zDiOO?!?t(~EzuH=3GfU-V@|fPidJ90w;Q4{AT{P<3tQ;HX7b=CPXp5C_Uxy19a-L9 zVksXp6AeGx$6x@pS%AXn9{r$PCOL&;*IE>yC7($^=4AX_4THDQQ$R8z&9gEnZLIh3 z{ofCkK~KpHMro=qH;}Nh`63OX@A}-Q4;IJCT4uL9fs~pyod&dK^#fSifDWo6@naIL zHT2JT#mc%`QGd?;*OYR2gem&(jQ>#f(@9ioB~$kwXhqUABS;@s(USqW79yF{b=Zj7 zfZX#SRox{aGideeTT_Z!rlHM7^mHS7N}rHPO?~Nke7TG0PYwJ0O%{)fqs=9JYl*mHFcF{0E*we6HK6|hOb$l@7*^sZ@`bi zzWcaa@CArOn}KBnD5n0>X{20z7Llkk_s)lOwPjXSMybuVDZr7|_c-q|bYuxIXC^k< zs?W#hSK`6?m3g%|ABH~09?t|c@57QuAiIZawWl^ipmq_q$itP6xEgV<1CZa3ro+$A zO|QmZOEHO0Kk{x$FUMcYG>Tb*PKKg3lfbngC0@kJ1f(GDgJ3TO*4~6}YaBAioYxao zgPA$#VKLP|Ow0H!ig|mk%%c%yaA2^7@&lCYfN`7(OSAWo4fLE#2x&k7D-G?^O5E#? zb218_ll>OnfIjlOiEI6l=w3@f8*oZ^1Spm?@~XhJ=magJ%^nqBy#L%5k+%I^E-qIO z#_`?1)S5b7iMh^xI@P$K{8YlIS_CO-P>R?<+9goUES1R8Lix)+bX#4Qgt>HU^BGLP zpXKi;y#=-Yw}ggsb=;cvp@z~!b3SThM0*v6dNB>I_n;|AsZ7o79CI#z>L zhL{qUbGbgi#tRtVLNkU(_Zk!Ma1H=^`{9Xwa{^mHac$ib^&Y7^us4ErzrM2pa!a&7 zy995D0Thvc$QgkV#x@Kikna*8pYi8THWOQdzYI(PW!uj*Q5?o0b1(*=FEY;iz=cVVCDJFrKf63T27x2$$aEBBu7eyT0K zm?BU>_qT?1m;vzAHtTtPQ$Bqbx&qO8g#7IC+`rryeFpMM@4N#F<35EI7sr(WBq<6} z%t+FRHf=Y)WooS{R*@pLVY-X?3{)9v2|`C2mT+lw4NP=Yg5t#Fot#pCL@>Vze%$HQ z6e`l{OJ+c8=D;}!;(233JiT0htb9)(pVJ1OQMB?2AZR)ZmV4`6M#r*<~0l4+q zxIULik^eBWqkXYS4yKI1Gad!2rTp3j*cJiG%Aqtxrv_9qUu&|*vB?1qhoSO~WP-}Fn1PW{Mp1qp)6c7Qf!;F~@LVpz z<3DIbAt%d9|LMZG={Aekfg+nxXRmnwb=nA5#hnE`Pof5xZaFa_|2!JerrPuEkSYL6 zr2lrUhrb5n5+Y^1I^-$&sPe)KKvXHln({X z70IhAljxYVTwmn-S-!`js!B#VoJ@9(q|D&@{nH12u(HcEd5y?M|DQ+f$;p{O%e}X# z?UkCpaD#Szs>r=F6r2ed`v1v+FMbu4f{y0OjCD-ZhG79guj9f6Hn!Kf;CpdX1|ZjY zVDcZhs`&oH>&^aSG&wBv{kMo|`0xsn=ym+fQ5Bd`dcFy!5UVrp#6FatkfH2?hNyPueU{inaYuFij7@DniA79WJ#e153r zeLfBi*g6p3|HS;_&wpiLARdSIY5K9RYQsNnYQtZD{IwZ}??O4SY70`Vju3eS`uu%s zzI;u&-K3?alxJ$RUgPPSS@|I;5Ys>^Ox zTfRn{f$|vw--WP>u7a=SoBjWtW63SWAdRU=O60e;@AG(OGVgy?!h$*kA}1s8#CQbD+{2`&mJ4&x#%_QeDF+*!%qWDwC|jJAu9<-O@_4o7kbRK+pmRRK zFi@3A+3T~gmzdN-{f(l5sOm9T>Rt$lDm;o*WOuIDms(~j|W7}{S%j-#dl zLw&nld_Qjc8659Ix>()k{htT7zxIcbJ!TCZqqfXzy4-f{++L>(5NZf&uI?!|K!TP? zW>HS(rApD(g~&w`(MDc0%04_>WIThAttq8fp$j;QiDMbuSLX4J;4n84y&%c+D-?c0 zPg$cyXpQm5m4q~fAs@-Lu7H+NaQ;B8>rf+L`RE_AfK3s5$;`Yrrq}kfj)}Qi z%V>^$B%SuOk!`QnkE#i~vH&NDsp5Ix9VX`kK)GM&bT@jt41ho^~LpA9+Z$G3?w>m^mmOl5aE;OXB zH3$qrUIT}zzzJ1%Vy+pe%^2`ok-vX(buGk}%Cg2wXz3hi;HTrm9ckHA696Ksq~V-* z!7_wLW&r2b)KEP})(q4<22J(onG4~$y>1&|3=to>EZvr~S??t%1t{q9Ed$ ztn}+VeExLuDLnsrbt;ca@4cCX6*%%+wqVI0%O<{h(1Y(8Y+;ewd>%a8t#F=VT7qR0 zNUr@`wYSEf(A<@8?j~4y)t-bNU!-cw zq$w>_SC^JjO}-ymP+_j}bHo7ndK*Et?xKVjApO2{UaET;Y7tiB4;0#ewl6c#_GfuF z!pUmHT${0AMDoRR&YFOrz*TyB%8pcliNY|XVe96d8NgXTK0TV9xWMbo5{#SyNG+Le zX@>mVic>V#wDW(PmD%+Q4M^jYVi zpT`A$t=Q+O!}JL|AZPDM)B~VQDI~5Cj?Mi$HZ2HU7U^6RmP~5(HKdGTX*bxPG_;;% z^q-WO0JOXV{S@7VTyG&!`#Jn}%+zj?wF!s`k3^GO66f@zUxAF?_v-s|^0QJ zwJ%x=;aQ$*W}hVcxtX`n1VpC$&oKZ#P2_){&n1_Ts9m(+T24adg9(E8I`RwCb~B+1 z5a+Vx+E(+q=gc$zx~Mrv#Z+0UG7C0J?Eib#f@3%FR81L&N8Z8Kx&19|zg{gsj@GMQ zeblG*r|}zljA6LCw(%a7+jBJk7gd9;;r$;;7a;HfkQb%Ct2Z7JO|N&>EC^|@qM(bQ z!5-~;<-z*$-A@l_Ib79ifBdZ|3VPe#q9`aCL~FCkf`J3sRIQd04u0xUIfhd+=0!39 z7$51!3{A9ytvaY^ch9T}d-?V|^H=}%=T~I&$2e0UF_w|)4MZ2ysK`x=zTT`_`)~j3 zZ#MzYN8CE=KIVu2fBxkkEsNEx-kW+85od6vk$|KKktelo`rTD*bBr}Bp{O})4?oWg z)Q5bKU+)8iWmAMmvo<YKFvTJpF%4vaf1mduugx_kpoZ>iwYlam(A)mz z*FkbE_8ov!6?j;90VS(*(R6^X@m<0IwBi(C{CUW45Uvnp9;gXOiL=g}TDa@k`}*T= zu2$c_UyVeV%TAsOBG4XFFe`{wZUUP}Os>uQoFD!lfA~8y%?iezsyhE4^Tgx+1wKXd z-^YVmUZZ0i#!tzYe?@zrDNuO%d z6lq#hea)#q+%^!vryPgmye#MIBKrhr3ko%S1X{BLg-fyW zGtYc^2BGl+G-aT4ztWvBxpYQ^a*2O2(%b5ID0uBpId(L5soc`7ig4KErt3oy^)mRl zYL%i9)|O#F$ZWV#U}~Vn3R=7amSoOAemiWHPA2J#U;tC5^6N1H%g}rNIy1O@dJwET z={6SAsMKCl{tIiFldMg8=?78Ppv>f_tTmUKUM8$I7%HgNtMkv=^VdA&mcDk9QTfQH zbpuq*Iwcd}eeKY7u&c|AGk6LJ=p&bp{FB=>0E-CDY{qOoQ;HcX;|Y*F1<3Cmj@~(MX`uy z*$R;S`H7nLRt~hkOKriz6X9>}xP!vKz&x+Zs*d~O1PpdzDRhiCVCV*fOkh&<|G9FB z%YMDA_->8bq0Qt01?#r?i*L;{M`S4x%*-MY-h9fC zl+W%FaqM}`^S=`b8i3C|j$U5`+#oD_iqSl*3y|0TOO-g+u$2E^yR72-4Ol;SMS&q; z0Gz=Flf&?O9ks&t{;akNY$ib*?#* z-;<&qbo>ecLdL1slD^fiAVaHVUjPkFpPN+cdq|m`$TKWWomW%v(fkN{c>^t;LgWJE zJb=j|cXN&)#I?iZ1eIS`bmP`p05(EoIUnF@z5wxI3K>8(ZsEB~b_LM{Vir(l1$fh_ z5A@PrsZ{5s=ak)&k~{|=fitSV@hpI61`S#5&mTRG1rWn?*PpTcYqx=z`Ts`Cy~&gn zlsE%yT`GJx;n2yoO6qTktF_2lh#=&wK*;5R>-4XuWEw8T4ID$c3)C7hQl-Z^rPG2~ z|E@*9$7mw1!D){4v}H=^x#oTnT#<*@+}cb8kyb_!A7AalWK@SC)YXA$r`Mt90q_jQ za;-+nm(NlY5Nzsm$QiZ_3-D8cenwz?tjZ6GtG|q#Q#A{~lbPbFcAtjyw>IC}d1QWF z$GdeZT%W(1mZAVA6RUhe?<^pf&Vn+8NOPrL>RnI8}ja8Ss#F0khEn~+DW z&`DqU&aH8-BTqFbc-VTCUSHcgb{TBL873?ggCd2^B7AKcDoykK=LR&}|9vXo2$Unr zltgA9;Wn1`p{dpSdD!l$)Y}l*Ge1p8$}NhSz$JGP(p-Sk2)tqmW|zJKkuqgy>kQ38 zXTZO1q$>YKRTXBs4t9%7i^3F;@H<#W9vr@=?L^Dn0mFO+-pm)kCVh9w41>0t<|#Y? zijrMK{pkJ?V1+i0+KYmx0N=$q=E(c}BD;oFh&TcA@&JBt2)AWI?>h^iXJi147ERy> zvqr6tLcbMN*`wo@h6 zzn=|piK?*a_a}xLbIgP^D)^esl#wphx<^4P#QYJ{V@r?6t0z--Ef~{o#t^8@f8b6* z02(D6$qNzHX8~IJ|2!j*6ot}7o~T~_&F`ZH)nD}h3{A504`c!u&un4>#+ZP>K|c0q z;{mBb#+&f~$n0k|(lMTWvdCmPJ}gD_8SJ|_*LR>tM@p1q)qV^(9f<{UQq?^f#Ydh- zq@(lz(!Re#J`2Dje*IKqd4IOblgYT?#J*1YrDhyp@>5bc9t@!*T&1<1^w39i7Hj?H zI)_>ulkulK6Ckii0HvS3WgI{{{YH6q0zZ~ar3kEv-2tNG=K!!}7(+p+rc5PxzTTAh z1}xfm$skrbFE8o-YYa*6H5hAd1~P(`#HHwEHcqciueQ1Zt#)v_R!dW}@o(2DTiC?2 zb5gLVwF>~|9}u-Z^Df``%zCM31zRY>4moW&(F1sd#$cx1NBhwJ))?-QXAhaoHWh6} zY%5yUIUq?xC4wt-c!QO);}BJ#5?uuc6WYk0IY!d8L!Zpnb4DMZJst44FEjc`?}`-# zjV^!{FS^G7_`_s9`-FIxHlL-9l;QQNT{iS{(HIoa&wI7|G1UA$I-)2Fy=0iey)RZ zV$$qg=!A^V<3H0hB*SoVqR|d{>ByOT#IXUFV+g~SZU5h(w5LhrZxsBF2~`~ejwQ%} zhl-8>LjQkQ=K-Ip9xa#?_gjzN?7`q8|x8>%W2$!2wD+ zKTJQT|IsLU`|npx#H%b?sznCYF%Bs;lp5T}4(GFpRch^s9AMt(cgyk43;&mJAXG?w zArBB~vVgQhG++P!mjPaGFKy~mR*WKZ(ZNmFiyH=09;ExYt5k#&Ce*Kvv%M3r8-0ZcGhC~<((h? z@yj2+8@zfIaDB4K#0L{Ee1>$y7*T&)WCH8rV{bZB!~{0t_f_ zI=0}4$UMIwrI8Z*`_kP=*kxJBPNt`bI(*wLJKjl-_@UM(+2JOXY6;j`JG+HA>T+G^ z#hXiyd9v1PW0&uqGASu-855(=vOwS?f0#B^BD;^!j?Wqd<)%)Fvmw8qIYUrWDDuZ= z3%N-JW5AXi&n_FPv zNG!mB`e()u@1X#u2L^o-I|iRkiI|RL0;aY93cl3Qe~lqX$?Q3Z;+(Yej4!!bb;Xc6 ziv1bNHPmXQwY9h1Y(=S%HmS3ak=OX42J`*>B+~PiR9YuCfyaaO`^`I(#sX8+_5FTB zGN(SeDzDek2TIO3Ech3`OJGT17Lpd`M0eC8B2#4g@ra)*AW_y*wboAqGE!K`2)N{w z6(he$1%Am@PZ4XR9nQ1Vq2}|fS)|rza{+FibMjfpu=iwX%⪻Vgz*DEI{A+a22&+ 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 B0OtSz literal 7012 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 Sh@|aRs9+fH!S2ojc?KxUr-t*r zMUb01dilLrQaw{HO%qUI2vO3LXJeNrWnlO3$MEw{pMX}OUyk1QDU7|S*eS0n&Qvd_SYMEmNIc8_zfwM;jLM5Y_TOn)u}#J)gwi)qaQ#`}EWK&Ip2 z7MN&So)xc4;-?ZvuRMPdOgLj_d29$NuSbQ=_`p$($SY%<+jn4k?lipo<~5G}J_J!; zCd1YYoV)TBm|y}{A1uP1&o1#?SEMIwxd~?A?JKvTJ9Qi${(1veKE25K-K_x^ON2o* z8XDsivVXbRX5qaN_gD}{?OFNP?jB|0pptP8)lqv!{sqyLgmElYWHOwj7xxg!~Y0zB}*v|6E3@}-mtYXM5s zTxV31xkhON0V|^QKF7A}+{5=Un&2aLK`}=#Kt!zNiQ#}r1h;dc#I(9Uu*z)-pP*`~FS# z(tiZ}_{{=rK3)+6Z1Hj4rb<*W!+>`ey5J#d*m%4QcAw2CDIAz>(T*qh@R_+YBPNBM zIdd;va6-c=h}j!j$E-l&Qcl99Ye6uWQ-t@0BA;r4G*+N1ZWsMnND4dbl|fEImR2*! zrwl})SVXb>;#DV$c_Q8}fzxLJHGi=dD`5{Y!C`pkz1zYEWYKP|Aj;kD4li7q z{Xc!-x>FLBcp%`~zk1*D$YnODHB#YCQOmI)4RSHF0=m89V`@B&9S_1@ZM5B;XYZw; zDqBpkjVkP=#OjClZ?M2ApXVqR^=D5?% zBxz*1fBEx^C5BTlU~rwk`~}R-pU-2S@8ZLd5B+{=0UrJKB}9>S7$A_tP1t6c@dzJy z5Mmzxkw$|36-J#>iDjbU+|PKTe7FQrIeRR3L@irOx*+LP)XrK1WvJZKVZED?N||#z zNyB1!!ls(m9XNgNy2O0*$vwEcbbpl@vkOnxzhgd$czK-jGJ2s@#{fOIqoLA|b>-&T z3JixSTiDA}a-U=V=>9E;m@w_(((zDc7`cO~4%(at4%%7~+BEENIx!VnwEHI3x<6`Z zj(b00&L7bq_a87T*^5P`{ zo8)=Wavb6tkE&$X{*RtuQrnK%_;J1_N#cD*2aE&PN8xs7p4W~p+brh)y4?Gr;|Ola voF<9zc)|@~k+<|51#nDdq-VTA*T?<=F%gv2H$P>T00000NkvXXu0mjfYe~|0>}wMPLT8jm@Y!H33Sz}5aFI6M9Lzqz|;A*0sGs=27i|Alfd@({CV%spP6rf ze;o)bf|~g>UnV~jkGjJ}<}W3{CRG%T?@stpm0p{GXu#O2vKTYY*TMqm>uwo{YT&Fm z&V3b&clullScJT_tMh-wKS(D38?GRgSD*JYU>y(dKEtX4IP7Im@Z3Xe@UxDGot9+B zBA~*=We-hcB!3bKu$?N{gz0{hj>T>@W{$>lYSRIWjyNX_*-n8ZNGT%hXYPw)L40tc2P@0*DCA%V@V0K`ue3T5tf9gtcfxwn-ELLB4t0Ki<6Qp9jcAVk-C` zeq13nX&#e_sJTc%QJxLYLFOMkwqAkwInKk+%R;M?qdpl8e% zz~nk_Qj=U_0yHHPHDsDRW_s?^i3Mb@dzxKNGZ@O)I+M(<0uvFs62p$?X_!dBc6%Ti z%8VST-rvt1_1W$wQ< zz3)YCphBMrVaP(O_j_+b9dmisnY8Ran!K25A^{weA{)CvpL5X*#7Rg(A&LFNOSRM4 zFbjoga@nP6w_x%dO5D058rj@3M8%)A+y{1Kn}5`w*B|@?cJg}3HE!J(5P`V@h*0$j zu;`a;gJ>VeVc-uFC^7jN%t1hamjuD`o$bAYtp*P|2Mi}D-|PK%xt655>kxM`@=+az zKpBcESo=MCn2?NKK4rXn?AUbdjwX-$d~h=N4{`>?AP@nwkP%J|S00ObRSDV@hGFEn z_J7ZE_NI5a_Bna=mt~%Xsgg&%zn4qgJ!8L! zvOQWZhcLtuEWp8iEG+_R7EQT+M;<0p4*>9$3nf>gqLzqmU+?<>s?Eecj04iNBDsIfDjPWzgE)GWRg+qD!%yt9E7oLRU^H0J!1}BKp2|~Vr zvb+C3yZE=SUxnqM!B_zl?;LlF&p+Oa*rs$HJ+&sB58;FbV8_s?Rf3*j1=9|n$IS@$ zx3}$T--qqyED9i;X`LWd;e=pewO}|HtlF&XS0h(T#qRk15wTq-$w`*)aeNG)X`=PG zdVH-|c~h{Q-^vkT3-|q67K=kL20?j05q{Ii7Dt46H^ai+o8py~JwpXQksMI8FRVjY zH5tB;bUX~U zoDf9^xQLK+_sfA4s(?WnpLSI&ega=0N#B`|V=q(};G%O}kN-NAUJPqkt}cKcRzCcV z=B_<<)CIZA)%jr04n8|^*)L{1_3z}dbI3FWq=W+s^uhTmwRX<+)Si1{ zGr%^fM48`}ACq=^0VFU%$sX-u^^slhp?}YNShP6cq2{m~Pt~0H4jFHYK`L(XdU>uH zZ%D#l(`TNhkhsds#s^ht$OvR*!Oj$z`1zq?0* z73#`rnI_J*4zc9ueAn`#k)iTBQ^c@GSeXJ+FO!mBLW>~c|2Nk81&62f!44NBeZnHT z6hA&CJHW^m7gDhbi4&$p44kEmJf+HfHwCEbkW!R$n~1wnatJyQD41iUoBW-dzlFDN zUiHH8dBE8{c+^7SM;?F9t18AV8Mhz8-#rw*XOAUkc?9p+@p?e79pPTwU^(kFZC2T7 znj)-TRA@{BQd-Yoc8$KUBr00aZFYoS9>J}DUV$6eU$ct{H#oKM|J%=@7eJWNBBH|+ z_>1-UXQwAN)hw6MOBddbJTxw;E*9<}3WWB6ur-v0351xOUxN}k$Y)_NX^s|DloxXl z!s_S{21_Fa1o)l}Sx248DI2OTS_sQ66Y-VQwE2g4ZT~8oUP5J-_Gm+{+%P~Fj%v4U@W7m zqHJ{_!!DiBk_GOME`+7juPh21+6L>;ZohTKe{~B9Kx1Kjz`X!@7rJafQ=CEXL?8Lw z3-UJo8=f3wB6Q4-ddQH!j0nJBMNUKybvlOhK7( zNi?X_#-`jsz&PzBAc{CZgkQ=mPINCmGTeRp3f#K>iYPs}bC!o|&#@)P2I=M)>>fR# zLh#7vFTqpae0iQek9vFY@n`+JjtsZnyljzYP%ENN>PKbUX*PP7D5Mh`6tP^%GlerT zemC@Tkv$VK@IxusVhDL*a?-Z9o5Cl!l)8r_N_uRvX*i$b%x>$MDCSHlIc=8kU{%DT zsajPre2qf+RUteZ#>QmH^VBm3?05?B{M~a2(L*5T6ZDQ0L*;8KQ>ZzwRS_ICDvlC1 zo8&9lUXb90Ao2mSJXwq-ZK}dje(JHi;|8d*eOa8)Hl2pz>^|npfht$i*p6pD^3*J{ z@cLFrj#CKaM+Yf^$;_bU1uj$9V3AdEx_I1WgBPr{vBx+CZA9(8eRg&q^X2@|a<%sN zbB<9Z#))K+&J!t~k2r~>N^1+LCJ_rGD8e5$oEvgf5v;^Gn7gq);Q~DW!;;VUV|s{H zNdUXlzZo6R|H?OBf-ipkMPTl~t0kUK_@m_${uKBGhaV7S5f@oGP$#1B#!0q$-;T(M0uZ2aW?!DK!!;vIH5rh!9hU=-)W=%`i@GFHOp3hH0+u0)E-d{S6f zSwk%N>ZYNgM^RUW17zXq;P66Zf`@%pu}3ANKaPjSN!5=E?GR=ush6PT1gioA~O5#-Ij+{f(vXWkE{ACd_ zOk&k|5GA-;KiDl#=PNqohwo*Y?UUeuwcY&H`r+8>HWhS3*bODS*a)E{Q4lm03ltW) z6Jb@tqPp4@0FFwaX)7FbX?!5zQWL-Lu)Q)coeLz#%5wo9t+#QCj;I|2s{>VI1OjWG zsv$cMM95fSQ67&_kNJSyeF1%w$UdI+0QeG_kabCIsu6Ln+oMNJiuNex6WnfUOPbudc_ot_fprRez*nDsDFU2QxbzOs=KfA-PTf7x z`qpL7HKz8x0#1{Lq0Cb#DKoXbo4`21(oI>#_^HlVek~GhLlUK?$(WEzzjO1lC0k#~ zq8_alA6PEoOJ94jAiU)8?BZYly@RqP3J=z+4<6x-vK*G@K$$*6k&R=c7DP>5KmveV zEv^y-65JOfSM&8~s zlWFu?Phh4{0j$qxwy?Y_`NNLzRixaj6n!pI^{F>op-4@GoDrCCo)ZO$ndbOT^r(9U z_Nk6hzkZtONNieRcy1Rp8`~NB8e*F)v|VGkBTa8;XqZZ!8Lx;tG+;tg8lgmu=&Y|o zh}131DFmEsd4QRDHlBaxkpP-$o~BfCvwuy5%hV%KY35on?xT|0)z>g&C>P};Gsyb) zvlMX;^QGNFkZOgQy**f6WPHLPVDoIpdB629N1(f+U?EgTfpHb^3_*aoQ7z zv5wag94#!pe_HqicAi`O;DusDI*&M!?^J|VPTjdfL~NcYtCFD!220@D>HMJUd}7-z z*3Uf|%0-vM)q_2Hvs*Q89uTXDPgw-59=Z_4;nGE>1293>&d!>aBD$euvxKs(g{Ged zfvNtz>gf{R5hlYUwg89rdd{lTC61z)lkxzs0nYm(d$!IMJVsmY+H76wvBs9TA^4o8#jr?3ect zZJWJl{ki`B>4&F2oialITG%{d=S`pny;$N#%$rs2x36ur<_+hB(tCJnXD)y};k8eU z)+PJ?cWlaHqBh7=#=3;nYiK0a^0{yJ#VgKyBD)~hTxu(-*ib)8i=s~%D%RS)RWCu1 zH=v0qK=ZwR(BF+R$vImu*G8O!>{6AIpD__tn1>@7GsQ`#Y}B z_s@!OO)UT7Yv797-w_@sb-m*{`s=(O?=$t^_51DT)OE1;htJ`fD8e zY#6+s+Ko^X$aa~L)lCuH5ShjBHZV96Z5N7+dZ~|5 zyGd^UE042PKP*zXEjU^gkJH1B8q?ZgY;1zZlXH*ctO*L?cpOats`_zqSqTV;^n9Ht z5bN);?k?VZbku}Z4NYY^5;#;78%ZX!Aniu7y|g#Cx%p{B3&aiew)$S zjM`Jq8!oCYfeeGdQGITy%ir|s6jQ7hO4+c*xy#)+IFHxMUGmUCH z`P$A}iN^QhYrFTmqbQ@kT93)FQ|-%=9GL19EwOk}EV0&D zt?od~0i<$T)<5=po5Lk&Z=#6)& zTE?l$PwW(;Obt_u=w}e*q*jB#m$$;>@A`On$1i*;T;07@9_!|>BLH#tP`LH#e}o_Y z+h45)?i@C(ovC)?`>O`c^mt^?DwowA3eVnIb;)epw4m)3TZe;(5J}7gD!HD}c@xHG zl2&t&Bl8>?QvoFqW&5RpbFbgZI`JTKvLJyB0Q^{Mc|kNxSvMBI;G z{HO4r-}}pOzPr{=Ym2|Yg(Krp#vRS+E@Lmnks#}-1qF(BN242fHkq87J|goxOK=Y$ z$`lt8ZQr*W0yx;M9GHH1^4ieIUgU$c6dl6}HX*ePXvff!cy+RttTVuAf4ls<-``nZ zvzUupz0GxlF7LcD>+RS=h88x64-0lGr8zzt@!dEe#35roy3(BX!axEpHUX#awAu zDZ4575pNM}O6Ukl#breGYz3I&4wK$Q>fU8X4fbP2#p&trlX1Zj5b!WC-U!;2Z3NAR zuR%3lzB?dHB}|mIX(@2WRaaLxvPoZHdbxtCq>*|M7v^^MP9@sp_xE&6es3CRNkT*4 zg(A{eRQ4sd<95nm1J5CUN8L=l=@t)__%Fe05~%%zwx~M=prsQl?u5jeJl>Dmz{ZD? zLEwD{%%+Q7kUfKGXMyc82`7@>HZ+clIOQkb&%U4;JW2R&{UgU~dC|~5OnM$)0VQ1S2%tRq|QH09@*n zH$#>t3mX^$?rHf?NF;sHJ<@nnxX1QfKq z4lqZ9$--^1$P3!T#3Q8H5o8H4mpE>Ydv-%&-|o7%tKo*_l^~49k*R<0YEFi@r;gSe zk4>uMiCn{7`JA4DiNQcR#p>_1mlaV`8EmSB(?*<=xFZ5B00&CffYLOlqpQ6D&{1OL z2Me(!Hm}j59fCD5X|KZg?960@f=0@yoJ3ZLbxED9YdpMx7V6jM_eu?2-Mtwu?%WQ` z?zX{pDO_Hx&tKg>eyGyb`r53If1*_x2x?Yq%h|&!F}6dXih_bs#>nEjSx1F(gdWk4<;}iCyaR_qb`_> z>MEzYi}n0x807JH{bqRd@tY0sWm%N0OS4P<*w23OK)_KSyLSDF@YH)gSvG^k&@|H* z>*-AEBLDcsZ?`ya*e*x}x5Y*E0v;@9yLTDh_V)LMM;?1``Mqe0sC99qvvB9ujqvKr z|Ga|GXDXCX2cn&30bdQ~hXK4s{t2@iRq)_-`#mdwy!#4e?PJtNSUx1fP5lotx!RtD z+usep_FI1*&aS`ns6p}=sy!wD_ILbB_~h^Z-N8?|ym%#i?Jx2ouY!?7fMUppJ&=U} zY*1OVH9WYybs2u~1D^};|L7MEe%Fm3JRQFE*PjmY`nC0Q_R7Wq3sJzW)Q1XU})aJ}EeB#AV~OnHywkyg>|h z02ATFVGdI$ycIu|ER!JE?Obq1W+7v^fkYIaHRxq}Y3r`q=^BYi&D+d--!~;j+BDS~ zAZ}qpvW%r+2xDP5!548ul)}i!MhwKNF-&jOo}3(t4RF(NWtojiBxNH!u0=Ru<0ib4 z0JR4v0FjMBdI1}+5DEzJAsa1}yhwt)XgY(XqwfXaT{F-YKhzU?>nq`^%w>X4!m zn_5s*Faw9tX+pt<++%@Pg;HQF=28mArbHqKnI~71j3uAri*egE7OuR(H1boLc!?5L z36hoEXwxRA*|AZJWf!id0E(l5AOS&oI4@k%R5C@hY2GW*>FSy#pK91y2=a<$Afg6Wq5&h+@;0!A%P-uBu*@B-e^ZeBLf}IYpBkI5BZU z8||9seN72T>|`4t-{_Qy_RtRIDYh6#9MmQZ=%>Lx37j0W-~rHcg4`Qztcvm^8QB$H zw%(TgaE6;kiXBx8Vsv+IKEFP7wl35qK>8hEPAd}dXgIs}*kKTNb*C@xysS`(fxoTU zJa&xK6;T8O>ZyXnCf9C1WhMTWHzaI5-f%7Xfb{B5ndNF+PqkkMe z{P904kdhbIm{AXiY$uerx2oG3z#m;SGLIGZOUSo<*NXc~;SkknPtRMRBpk9xTd)IY&#qQ{P5^i?QjG{o;WGO064~EOqiCln{kcc*~}O53Bg}1?8Jb zotaBCmB5~|VG#&9T>@iMKT_Wo!^~7d05==!!jPrLvw+&(dpKQvgILOZfoWHFFemUHF?b&sa zE+D;*Ny)Qy5nl+)^3dQ>5RfyeQ9dXD`~vm4W#d*({pHQ@fsg)4c;d-VtW<;7L=brB zsSS z+bT6JwIw=Iv!uRFw;G^UznrK8=%aFkwC9%}%rv$qp87=ixu-sPqH9i@iO`20e&n>GsZyp%JvS;(sl46ubILe{p5F+QS^oI^yb z?&Es8&K_EKA{K*rW)62jpt-8dMrM;DZ0Q^o=k^Jm_-XloSC_8|eC1)4ou5XhWUiBw z4k~JES4cvs<&?P53x=1d8@W*TB-4PtR1(n`;$DcC(f}VuBQN6u!_P9u9;~3n0Mz(M zb6TB+wUQJUPAN@-o)0`zk>!M$T!%dv3A5I5@w<}ULo$n^_x@gdzEd3dUL4-nNaCrs zX{CNEwJby9@==9$90Tgwf99uK! zhA0)DP$bcIwi8RyhzbOCmEcY?*$<9huoO!{rId-KA&FdHFt!#6@m*DBq2BKsC_rGt zz-;hL?Gq=ZBtUC@_tGT>h|1H35p-**h%vT!8+%RIEHfddM9Kq8gg>A=K8hot)ebUkgvcc>>2Ro?2+)ovtJD_|Mxe` z@7z2*+gT?tYMeB*QVZJhuZv~^@IczV{$q@^tRAaqFQlppAexk5_9{H`=zGKaKJtY( zP3q|_+pMlZmi2l+|E7G_)#a<o z@dlCaiY?Qo<{A?Zj&;?cC6(}S(Ir1qg4r1UFZ{R&$-SJ;1gtK$5lr)Z_fW*nVDw27 z{EMwjPM1oCQdRaU*GbpVs!lNGi3~g-#b-0*@AI1dWLm9m{t72M5CiP)!jv5vHm4Z%8i^ z#RrCBFw{5S@B7OV3%buHx5&DYN{rCOl$x8*(&}~@MaH8y;826md}G7GP=bNY8I7|M zTRCXySo!8atPcRe*uAm$@9O(^Ytl7_5ll~gn@Fp@s*PxXbKK!3XaFf)qC=Wmop!E+ zhC_4}pyGz65#46gaO1hBYsDexROzv6IO1%2x8`e0Ysu{6KmQvgarjnmSUwdu zp8I;K`s}sT!2!E?vqx-Ad7Pa;7G8hlU)K#o2oC!V`b=KzrQaQrWdM!a3868T0jOSH zIZ>LMfaHze?H*n;$=?az`s$}gBS=1eaBLdpa^+0?_Gi8lp8BQVgC0|FNn)hLgU@_z zrH#LOV?`dE41+11wH`A9+quVZ=Afk31;HjH5LW61_IFkW!usmsZfPIbBwQ%Wp+LY}%Uv&|HH2OUa6d4>!XmP#8)24mCry=J)DjIk*? zvyF+FA8cZ)A_@CKVkd*x4q=37R3W?Md(lD<$H@vbHA>d=ws>?!3jsk&;1~p5>=nE! zJ<@3=DTEM0=GdG_M^4iYP3Qs}i_#B;}WHEx91>1IGvZg3e*AT`F`sb*wSAX|0HQ{zOM zI~hc%#F!dW;YLhk8P?8?=wLp*vis$JjcRUsnrOJwT5wKTUa=f9ak&3CEXul@YkQmyTJ7pHETB_n?iGkq9(QNV!yY93( zr?F&*LzsJ55YKJr*lz@BCSeHSrkA*l)`Q)aw>b zBHSFq2@?iy>fHyzoM{hp7j8RE4+;~4QHKCJfoqMt3U91bFEr<^Q|H+_GN%#Msnq_g zBVy04hwuEu=fijZ@rx4cB^*+-ZqS`uFNI(J^)H3@efaYS%VuAE?i=Bmzx`~jg_iD_ zxcF&}>(*yM!B$w06>SOsWzP6Vet!_dl9r+`=o6EsiStz|#^jd8yb zHUUaJJFMra%&n0ZjNPc$Yq?x&m=jdDjrIg}vu@wIQ&REAe)enW?dz|-5Y8{x*X9QJ zM9@E}EzWX2vgR<|$n7T&1li7bB5M+`)3%)^gd7;R4@oA>fVm3%#? zu?-`LW^yYl+s_lFPcd>`XN{-H>I=4h*HmiW%<_^qhnk##81X)G8hWIysy(B!Vg8jg zIX2D3INWo)8-*~C;jwRRQV-~DQ*yX zIGm*&!_=7Aj@R&09vl7Wr=bLWd3nka+I5WxkxT>O#i zVRQ3d|JkWxh3vr1dsBtvI0v=@q;HsI6L=Hs4mlr5<+@smsmH5{=h!vO!@VM@>in&2 zT5x-*_bU0YchVlv;>R1htv1jTI#Lb6Tmuh-#%IAewSSXe6geCl6h5ybDhGE~3Oib8 zu%UU3=7quy?BuDr?yZlOH)EbAe{`M=#eA&0SX;WQ4s($OVS{sDjXFQFwWpMl8QMIEQ z!5GDCbi_t?JdD`SDw~*gRwX4@ox*~LT(Ay$*+Nahcg5L5 z^T|1_?5iO+PTT^V%qS-DE z&AUnpsmM7`4w4taP&_hh6Zsbjs0wj3DwF9Bwrv5239Z16q*6>Lx>^{b5xDOoX+|_h z&Wtw_W*BH9d^!*m&;2MTPjU<772bW)F-$j@c&`D;J^-nyAfOSf#OG34&EaUjgbDu)X;ThjV* zo}?=ItgY$b#&ut?7dg3*eN<40WiP4TfN36kuCm5%N?Z4rnj8$88$R-6=t+`=%W^%u z^!zu%3;*?Xof|aYpEY3~cBcCK(T4x;#fQ!qUO`lnnH_0hG*+#W*f<>yA*cPmU^9-n zo|pr>!Me1qacyCtu-AgCeUL7yz%>M(<&UYm`JJ#Zln0h@ zkjorycG8ZT*yE5=Ic=jO+N;#Y37aC%B+oG5CL)^J*69}3_Tt&8K-UHZPa4K)gq~j7 zLa5nKm&4fX3!@R+r=mS}aX7q#^Tk(;!nDx9h+ohTexZ5js zmR`f!XJL#H>cc}E4WVeWhHa=Tf+7Rm@>?7TC#bQtPPPL8^O3;X8>!@};f+i-7Fzd& zs|PVn6B#xdiXm5UXd%O0es7i5)M2&T#5dk}O{Xa(RsfV5oiKI@KyX-sKFEv_H!U&!nRgmB@U$s@zg}C=k{ro^%>F3Kb5anA`1Y=K=*)3e1vx^wgk!qnG%*A7aWI zEr>g$QSS?B4|L)J`c;v~@0||*?SsRXzDB{F10myt(0zp9&GsE~%?fP{rX)IPu*+88 zU5|8mPh=Rc1eNYh;I>Wg)|4UM)D+%O8C-jPI4GRZ_KRkg@>ET(RZB|V4bdDUoiy3a z83MthH~Kug<2Wcfvaj=Jr{r%)O4`2l`?0Lqlq}c6^k;O&TufjXW3?xYw+IL9gspM) z0!h@X{wDFXNI3I~Clr;B4{8q9#?n;n;ccX9y~oE@trs*i&s1o=Ui0Hxn~>39{$y~k z^d}zH>qzaIp>mu`ZUk3+G@rj1li_OTd5Ikbd*^)`wKS{O72T^I$?xaYQg&pCHVGsw{hVJAd7?3z>#VV7_*DK<}?C zODYY>1^&}B{WU{?mX?;5mX?;5mX?;5mX<##2-g%k=q>YaG5_j81h)XAcxuQwP<{?M zyitD!7~#g~90KOrh*gTyhfcH(M4M0uWy%N;hmhspvT#EPjD;7AMG}ENF9li#e@1iK8DLVXE7AxhNmh~nb=bn~H(eSa)Su{;RH*$Emc?+tMT9Z2xe z@sGdzJ}=j9LB`7&QD1qNh<$LPTET)7%SkArp%N&EZ){RWy#K@?S&#_j`^R7fZR7gr z8>oPw#8R6z?*U+rSkVrCdVC0;;Ah#k6pizZv{r?e7>rnIR-1c$Y&|sKnfx_W1ReHR zFdTpxNq;Gr*Tir*-e4y(oyElmQlU@+fBjvFr_}e;CobQQ-)DgUD3_dP1}_rWNKj@^lDv=i&X}cvF7lk385w!3&!DqN|kvc0L!A! zH3v2-)Pz#7EhwtX^YLh1jqX`<_Nqx>I|3yX9Dni$HG)9kXP2C%UMkGf-qoyFhihkW zaS1Gf+M!fvea1{xK`+)0wCZa7p7{N2fFq5G#WS-fS!*a_rKfB;Ux(hXGEG^!InWxM z(@od+w*<}6+-M^UVE{Mb^xB$h?{Hy zF@F?$WTG4wqJ1ApSKfPNIq%IGc8=@EH^G4*#aexJ!m|}V;}5r&-RNwe-TUj0HeaWl z^^zE#Rl9O7&uixoi+rKAN899{^&372l;buaEwfPkA0^g8>6cn0jdaGsZt(}X4>oXE zp%t-4unqv$Vl^HVi%6@lPY&3|#SPw3LVx|r5G*LN28J~;j`zxXmN8`vrQ_+v;6P)R zb@$a-oMI{gasSFe7!AP&v!w8ZWzIIp>ujBX1m^8qTwVDQk+-=i)f%jL()j37FD}*fAlnCRIK2=6~@J z8r8e3sLir&AN_kXh3r^YD8bITpcq^*c)lrg_AIB4s#?U7We+KOKIJ@AgX6wnO%DIl z7!|fyA`~wX-b>t9Qp0j|DG~fdW0X^Fuu`#Hg^G`l&1a&{Mn4O*j)QcbHB7NqzdPBn z7K->yAqdw9m`dp-7jRH}d1OL95R^(=4crtYh^+aU@i;HM+;@Z7w_D=3%1c>X}PU`PBd zgQ(ft&2D*}LRF4#U!WXCa(~2&WtmtNXVM4BgX-q7i8~!MMm_ow?turK#mX?(a$9+s+`BIOlu_FN zI~KlrBb~(}$TxMyu~T869SDf>oR)suKxBMs@=BZ>3`s4)`?Rkybbsi>s-(F__QweF zzWkj~4lkhO6ZgHOspepOpicIx^^v!L-$|^cpVFRASj`{i9ylPG5$dF}nfFl^)X6t3 zs`ou4+PwXGJczP<>*Ud$N=}-Tz4_9E80)_Xysjp0%V5z5Hxrp`uJ?bAQ%2 z7BQv{9^XD1>w2cz(0_}2+vbPUY2f?BzEiqs^=SOOyp-`uBwKO%;LZwIpc-tXZ^I;m z&p|ilwBf_TRO_|0rx9rF%NIyEwPf|4XWp$)nol5&r#Z0Wm5<(3suZaKrz?E^ro{=ry# zWYG?=QRj6JPJfn#(mDnh&lP5U+gyAAhR@YCmwM9`nuyTc@^5Egikq z8UBmMebnX0G*Fj~^hb|FxQfWhvUK;ArJqyDtywJ{Cy!P}cVGQ$ErZU%to>1zK8$et z^pjPqq_HZ06n8~E4eg$&2~LSzsb?*{PyeeibU1#{b*I9ry%QV1z6 ztt1au5?COnFH=b=U1_TE$4jrf_EP9+@2V0t`J`Qe1(J4wDW|5<=l7EvlwJeW605)Z z-48qCf82cvflyk`I&ttWjX3l^jnx!Z*Ae}8E`PiBlDOjS6iN5>+cTZ|mXzI7SXv8V zIW%b-aA{BQg}+3uZYK|y-8+~a#6>4>V~9{jCp1xhDqgdAJ)gCDbfSML31`LA{G+WV zENmi_$q}WdtxE7)BFRC&mz}WJgoT+3C3KJ)bJs88RV)?sO1ef9X}A%=x-Z{aCwom0 zXMe&}C^?w^_Ws9C$4hux(DEf?1Nn7%nzd!lj*i-b&};L4hN#2 zdkE2b>5cZm1)eCjH{4W7rD6%51gnogg%T-9Z|JWn^*#u=Q$vqU7oKUl}X9A7U8^etzu0GW?2k;*_);ju>`TQG=Ez9 z%Hp7!4~ASse7tD42Q((ugw=nZtaDCr0Iu$~9z)LA463+=tqvL&YeKo7$=RsB*F8+qzS=@brEH4a#oqpHozUKg9+C_po;`4)-;lp&u`$ZD2rmke3>rv&&!X% zK#I;0({oDk%`bm`m-xC7w56q`r6Q%JrKP2%rKP2%B@q4({c{G%w+}1O00000NkvXX Hu0mjf0d#d$ diff --git a/v3/src-tauri/icons/Square142x142Logo.png b/v3/src-tauri/icons/Square142x142Logo.png index b81f820394d1504ff4b4091473a8263542c9edc4..90005bcb2510ecae43ad0d51efd8305a76d59d32 100644 GIT binary patch literal 15122 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 A_5c6? literal 3858 zcmV+t5AE=YP)(K~#7F?VW#e z6vq|EU(c=tNk~~ffk#0iPF1SV@<)Jjm9;tn;sh)wK%9W(1eQ*KI051WTDi(W_>b)R zuOvuB!wFat>=I~ZI`8$&f)GMd_q?8&9`&aRW6Z9+(th{7*Y8&Ycsw4D$K&yMJRXn7 zMukPW)DcC{Gnq=;g$LwU?i4CV`wN| zILClO2~ixkP#6m!WfwBRm@vkl@Cd)g00p&$LK;9r@WRPKv2>vo+`>0`8O()p8YH9v z{y#QQNKak1NatEO$^`|%3jW(2uqT!;Bg8r+=^6@X1deeog>y(S_kd!Ssv#?sND|Nn zIKsISPVEG9luSVPU9dpsMmTco8VTkB)KM@;$z0e&6i@^;rSZa1C#05m1QNR777@Ps zzE~VRh8ogn;W%YwzC>ny?$_-E)>z@7Xjb!BrU^ul%B4EFuEq%`3xLHY{_6rX3(QK( z+jU7I2GAg~jIS6%^F%|a4}{!WxC1qyF~Z43LzX6lMkChI4fmm98sVy}i$=-_|2a@~ zr>v0q3rvgGpFHNh{2EVhU*TgH)a#IF^@QkxHDs^K6PNSC$zvLFPa$wZg-HP$&=wow zyWuM^K)tpWETYhsQAAV&<2~JFF;6AgX7`2jV`q~wM}tRRxr%S}nvLTx3aN)8r}RJw zJW#;gsp7Qdv~V(CuktiSu_~COFbgQk#ZzjY$64XzKm12f6mm%t?pE=s#S;>WNA#g6 z=u*Y^!`o0IP6~%97#`;-{WYi%w!l7B#nDwL2{(oF<29^3$sU+fyG$%vpC9n;SOIfN zjdz^O<0uzZOf;ja0?Ly>%XgnFAeb|win%4>UIH)+Doq*XmZp|1n<$=#|xgeSeS&(b&w!$*%S?*YzAn1Xa zwHdo4nhDBnQRdq0*?q8#L#|58+Ke%Prg^4y6wTeb1;S@0k#|9L0%{Z5j&+sz3MuRF#}i;PW@vX`sOq1(iPoNhl0j) zB^pqttVk7M^`F@TOVr*~k;QQ~xMd{oJ9@4C#Oy>l0A^}$aq27@5_SH|`uL5qvNY+b zO8{5F0)AVC1|LRVgO0{*w!S1(Fx1a>8dfp35R<#Q~L+YG7wj3g~;yB z`2jGYJ#(JTfLqBQ$*s<7&nI z!+jLYK4GsLN!S8iEW|lZ31|MAcLzeFow=nEFBS%H>~0qDa% zpy-5fCW4VdJdz;8lO8K22B-`$G>lDPZLrGYCcQkCL9#W~BIcLu^ z)vi|c?X$fw7BQLjE@*;QDFO}xbxLDKO>&xd_I>iDv|BAgV5U|UhfYf|B-&PHf&dW# z2SV7`cEOopuDn)P8{y3TeP>0TmV~sPzCQzYUc>J|#uKOeMm({QTd`%%U0KchcRxais$csI~~s(ghKSb>Jcpq0Ynejbf~np2tyn znl!-*uLK52F#X-X&FdHbP9u?Pd7p1_q}&jTBfi%t4J!4_lx}enkrY01Q=(6b^!DzJ z`6Vl&0cCYIn5@niUocPN4<-|>nlX-W+*PSE!WnB$C$N!R__g!$`kz_*T#hA?w5%wC zBJd9c>L(|;-7b_U94c5AjcWwR6|^$9qfV!k%&9sBrIOk%BhY88HiL36ccjbMbV-1H zK(RcF(@LIzDH6uyns#nnDSdkuSqrf^oYh(apsrGs9V_c(v#TC;7~2@iD@8a|PB3;+ zC>nvE`choe3FNzLG6B(G;OC6hta>*8Wo6r!QPuwV*IF3srz$!{VL*Hjg##v#Xm-B4 zV&$9HB^SfP{1?cdI@xW&m=P{zNU#;$K_O^8#eCz%$ygUo3~>((%lZ`4)I~JMQRZ@k zY!up{BQXUlr%tP`imZ(g!mL?aK);HZrnY4L&$>jmmJV1IP67vAlh}sxG`rX5AA(0= zY;8bViwo@r$HM4Sg6WgQ+FlnYF|#)0rmR_PYr?twe0SOCB!w=DYc8q@7*AVZO2Fpa zy*1$kQolLdyQoje2LjEkjevEqh!x?`XfBGN2fB!$51x;-1a(D*pigA`E-Nd-X}wRn zpb1%A^Z_A$D2g_K=^^Lu{b{X{ZtfnW^1?I ztKfA?Q5iSq*-8L*K@&VlS&MCG>_!z>rNBaKtXdLeOF;Ww441ceBmCnak*$Z(&DjVl zM*et>g5d(iVEfjFU|(~R57g~xJqhH9t9$P-N-#7%arVZi)%e2OhhknHZ*$junQYH!14#BO?FyHo72B1vy$InTx{f+TvW+7{qYM&YWEWlfDzTx%tKejNEV>J8niMP2TBrn zQOg#U>7pj^pQ_Z!Me8um7Ko}chb-LF{E@8HbpQ-x3n<}^x__MWy6cLrh~&38x)ThH zQp5pW*k=GP^kelkzA`u=xZ5gTEC1C`oaEZUnA=dWDd6F z3VS2G2CTxlxWBLe!;zB3RVmS0Sdo%KP%Lo$2xD%j`fIN%-^e8bo*(Gc0fa2Gp+^wF z7Bewf9oZ|Rq;MLwzjo-Xw37XCEE@Ce90%Ryuq?i393?J5<@<4@6d^FMfAOM~G67=@ z7J@mEn$!AzSPRh*tirMN=A8vq<(9(2aD7_sltp&0Xs2$s=&%aMq(y--hM@EKIxuq} zlc!J+!_Derb#lU@WgRbevr(&xbRN&;suU>{ev^+dVCsJkbsn5snc1pOPA9=G94YkN zg@BanxC{AJLj&LZU6xo!$W^xDt2iYW z^ieQNbqat_!bWvmJD6IQmvAUquF~Lk=7fvdq z{ya7F3jCMX=Qhw~-Zr#60~E~?R~KL&7>D^E$Jr7|*~?>?`>qLQ0(pJ^V=`)(G`-dAhB>?7B5y}9AfVI&JWt|3S*A=;@jEt|-AQ3-TRbOLg+o3Ye^{%a3H87v z7yj3A)n(-afw!pgualOrmCv$))kdy^3&CTP>}@^}SI;YnPT|A6I=Uk5T$V%ofvgHg z_2&dq+v4P`s5`A3BHyxVbUD3i`+=;tj>gmNHREcvfCrbK@0zW3K1gWMX*Dy)ghmtW^5BEi48PB@947_yVdOc$ z^H}DA(f;ORP&eZ^e91}a!XfCIMHv*o)OEr{K*@CLDfjx>4;xF1TFJxUYju5td?msm z=AXUjNyB8>7r}gyq>H^o@-&&A9+-;g(;}n@ftL-sR}>tlGT{(d1bu+!q7Syf{D_pn zC;%}^Mf^&n!B{QE4yKf#rqY9%v@OFR6*DprS5@4SZ4|T9P?k+kEH$BRq*CD!*2Pm7 z8YCK`@@*B$*NesrXV4_k5S3e;3AFf8r0~d^o2Uw!2)%x#agAxU5e~t5RIdZBAGuGW za#wX28sBZnWC?%Z>)rdsPX zcMcx+g>x8kWmu0|z(AFT-a^A+K(+dWN(2GO(fjG&p8Bm8pVKJe9EG-DO#SwUP)>=j z0-1&>1mV%g1dvAbyNtyz@$cHNy+!eOJRXn7+F3_Uuf-a4GlIJgH7=@z8VZLd+TIp?TRUtPxh|NZYi?QY@k>^}cxt-0o< zMvbbkzWVC=v!D4JLez+vY5Nipdi>Y+THfEQ@3ZgwcugDs?c?v4@po~@*?w=IZ+~NM z@H^RmK3>=FKgss#^L5*~Y`@p{+h@^y|8YJYj!kf`_{H=3?0fth{KWRNeLknxt?!}0 zaq+YA=O5?XPu|1soa*N(={o#<)@R!H`}MI;eluOJZ`$9t|1$e~q<J+2WKfWDTC&(Y6D!?-QZUl&;q ze=`Hp`+OYlxVC=(UDHLg{b76m_A`Sa>1XJ94x_v32j~Ig2j&%uM%7E}w;SY-xjkfm zLjL08;?kSE8-O!*FrM9Tf(MzeJ&fwO-uRhnXoatuUg3BhGcFE-zj?#+zsCnG<9_sXF53U|V+=p|z@$3wqfw@$?hZ!;#d1tTtj@b|+Xe~WX_J6eob88jD* zszU(XoHxipI~B28_MjR^#?L$qjDr{K&fB+k+3#lZ&@T3ZYZ^aaXCSJcV#Zr-na5~g z9KFnpTS(kig~7c)?)J*t{Z$vZVJ&%)ef90f)CbQY!)wl~RxufR7N%Biw?0OMthe-b z96XVpo1{d?Z$n_fkU?95Vi_7HG=4jz-~fE~XBl3Ht+%=3W~026G3PvY1}_y~#33BI zf6g^|3zqo-JTsFcNVYA3Ah?%lB0L{NTWoba45`6Z#t&>&<`2;LS8;`TYS}Xy?EK0Tp3kKMam z7Fno|K?HF%YQ@$OW0nqQ783#qssCvN51(sBYhHuGBA|fBp;x`#?<sUOZm)Frl*RYA+Jau%lO4%tG%b|@o^=UG3UI8a~tFm zxW(;NldA1GTFlgww=z!{jjp+E4_~{=GJQ~=|8}(iTs=>55r9NZ+y!1M(~2QJib)Y1 z$F@y$*&U8)8Hu>XH1fe0nbYu9yPZywtF};TR{0A4&D(^ z>ifN{ut4`-k+4v2VR7hoQ124sPA>LD{F;yic%)a(am0$tpcr0e1emll3@ftj1a6khfZTG`9zS=Gp z?IUinVwvHWFeHEh#&PyFUbe)qjr_}nK4vxHM*yjxai*#!b| zwqHvht6;lP_Xqv%+rLIX{a^p-{ldEeZF9SoT%cWGm-`{NBw(D^VM9Vv>{e|zw#9xg zOH2g*rXO0r=ZHhMbCETA&2}y#;M2xJYz<-=JtmD~GDLg#@B8AM=X*q;oFe`l_rK{q zV=L!`P;5WXa6jYk^q9NZiO;MVuKCm7@@@3&`GGpeTU7>@6Bizsu)b5m6;5lwaT;FkgICy+LRc%D6jH{b*sIiFnNEGj*1^aeM>9go^Jf9W}nb}8? z+cBHIi2b(6GqLNI1Zw6bE@1=pe3e!dpRvs;{`_g?h5lRZ51P4^#p)(;Ob zSQ8f>2G{4#c#Uy@(J(lGVC>Ky4fHvpwcClcM^Hzda3_l?Jt6El4$KS> zL_bWRq%!{AiWTWHJ_r~!ZaZQJcH5c$t@nK4t7NK5URv{OM!imB1e1%vMdCxU^GSFi zQ8G-CV%u8auhp@fH^hanE+lHVw}k2Hx=2&W&kV ziAanJvTbr?!uHQ^iFzK}`C}5o>{$f+zqWqxc>d8qTX^4gZp;xVq;Q@m3C*lW+IC*m z724e1kP~-2f1Zon0)LGGxA3{l{?@my@N z9mkjCWzu`baeB|M+rHfv?Dh|7;nn>>gOxHHUjIz`TsCAfQo=V#WWSz1>;{154aaJV z15NDZ3ar{bqsVEY!Y)n4@9hl7>hB}Y8lGqS-jzilqiPKA9iFU_1@*@RVR!M{@wP-l zVFI2>K*dWZODxEHrkPOOk8`;cOxO`O@`xLw=c4hT(U1hU?%VPHBS5z7u0hN=GvdZe z&#MM@yUE-g)UYcfjoUqXJ_#j1ydH))kLR<3TJ8N0T?~sn;^N_u?iaPA1_pYyu{v)q zb?I6M6JtNjmA)B4Ggo>143yS^yS7U!0!cCNpqRagON~33*K4q?>??UZEcJGc^Qv0~ zvbKdeOb@oeD(KY=3p`nXN36=>gVoLW=awc5n5==v9-cEA6&{ax?X_JwFP!69co45y zL!s^Y_x}E|c-z%NB0)YJ?bVn*P=>3cyYK*;0=H)tiCKViO^*3sm3qsbc9*ZDx#2~Q z-xY3n#%%|4f+m`b*b!ty0~~Cy!g&!xWsXt(JIy-1A@a=7n2Shw{C@Yw4Bi}$CFqiw z99E=TZ5y5vy}Irkd)T4bb}$hA+wQq<_8K*)dE5c9RM(v-M*zT1ctS$Q4?`tXw@d(! zuan&gbPr#v!?N&rh}-HD27pBhbo~h4Z?|{o#d|L-)GXo!hsoUkdwJu&r(fU7ojYuG zy3GUV)~F8%jR51Q`TGGXA~jc}-X1D%C%9z^+}!Sy9=DzFf&auza2|&lXiJ*lm=UVs z=UGh6@K7k>Fa(HDN{Kkmlm z*b?j!b{E_$N-5qOAS^$N@{3@0)oKw-p0T-VyN-6@Wn9!+eqbCa#R`*Lc%J9%4r2C@ z1$r1rOtAi3h65ak36K49ZoJQOhYXx%i>qd9-l)G`2@r4+UsH>%M&#Tg?~Hj}VYn?G zH?z_E@4lc5O-+t_S>2v?{hv>~Wwz%&F1p4`gP6KFuMbGWJ`4@5s zj`5)*o20_JriY2R*oDhy;5;Cn7rbW+#F;pGeDgl%abMiJ9-v8;G1kgU^8gph_Bk=4 zRRo1+Ut!BalM>B>3WVD-A2GcKy}*b41|DRA0*4oIu`3%7$k>x#7)f_TZ1c`~l1vCnqCTegTn zKfxl{UZXMMUSa4EKW;x?xD4`3*r51*1;nmi)B7U$cfAFDJi`Gk43Ja;BG8oGU?evL zy>5Gl22HAK9~>;BmNmA3S7U}*0N4I9Zj%b48O7?WbxYAC1=~JW^0Zy?B@oWR=mZ5@ zM#_&Ya{#gzcJW_a#c|7v9>Rm5>|l}A>nGK?(WEC`uDry#%4DP~^pdYFy#6a=U8+9;XjCQq?Rdy^(d>c^X7Eo~e@8P}=Z?$JJaOTGi9Q=2tCw{SK zw*)epxb)obi!yMr9lE$lLZssZnuz(uV^I;s#)q>VH?DAn2admaAa=Va6KI7+SXB_z z^Hd(hJqHACA%I7WuP@jldhhUBFTwB+dtq1K-8b#AvpJ5N^jU&C?!}9{lh|>r?wS=V zZngEcYxjUzZ)_0IXv1ZPpw-1y&5mUSU|w#U zx~pJ7Bd->2WOcrJC(Y_IK$<9M}Qs!oWlV9VvM@ff{i) za<|+ZrGNq*TRqv;Q(4JnZWyeZK7i+?bEzG2Jn&n8S@jzKbwi>lEKhNqEOy%@5+P?X zGZfdQ=rCtyx8*(vJVGMll7z{X8g;d%><1t8i#QF9w3iwzfpi>p8DPW#yI662)^;1Y zzDR{-<~a-_+YhvKkvAeOyVm<=>y`&@Tdv1_XYO5GNYzFv- zrONJMv=GY^wSB6?5@-fF;tjSZ1^AUqmBD-XP82U|K~P9ez-ILzpuBQ?CcEPu#aMD( z##kcqEm*Ql`x&-uQw?J0z4}Nngseb~@fjMIZu!0Ad9fn{sz+_3sEy}xl-R^I?ok!Y zk9I!<(%KQoT|i^XOW!aU5xU~TNrk?(akjVn9(LMW&d`-D3e#M+7z;W=8gvhLO1P5%Xo{XnW0VV9cBF@S zYGx>s`*pREK~rkQS@5Q94`fT#9iu@#LC-*+1W*z^6M~Mn8#IuLg|pf)!4pg4T(~Z_ z$sS8H$b-LZRSR)cZ8ZSJ#p3qbMHv*H5i2)fQ(QQ0bEW)?;(5AgW*5@%T{~#4bgK(s zila)i8P@a<&W&GoP-*Hl%x35VAZwR54p0@5VKVyef$?33H)t>KuZEHDxR+Q=AmBX+ z45}<C_!-Cobaz@)}5d>^D7cYvz$Tupq__7USF-X-<5cMwakwO{BhV=_yC}AhFz~ z1j+3jyY~0BoNdxrEVvCS2DTd&$+Fxu7vqIX&p8vC1LRAD$m7L9FJgGIs{}gC;mdDc zPZV_m?$-Lw+h4R=BwMkRapm9t`|g*B-hb~mUOKLN|Bk%B^QG-U{TgPl&`UUOAaE4l zcy_(l7T>hSkY=?p-5TZ%Rz80Boi+v&@MLIA-0c4U?|$jm6M|iF?2*R&?5z)hPO3pP zylCb)4B~D~SVhpDLZHbpHi$HKB`8Z0Ja^v+m$`qyXgc7@Ss+P}AgwvP)esXQ6}Xcl zf4th6FnFInqg-to-F|oL@6j7?ew_a3cl^DzRO&4MG`hY2CHlmtzRd$h4|uBW>r>zO zXX%gqX}KHAhoOl!@SJuI))6OM-uMvx!q5Ekd-3`+^u`+>wqR2HLsYbM$jR@qNy_rtLAZV@G_2fq9ZcU6gDP zDw(~0j{G=cWzMZ|v!5}vk?HD`7z5Ah2nOw2i{KG=U42V?%gqUs7IVMRxA*D!hrgD- z`49i?m(KC{v4(X&m*4gE-?{&LnXk8h2-MV=O!0=++qh8>&@l`vc zFK^Kw`i{TzQs?yE+n=Y;{>1kmVS{TSGq{2m#Xa3#Cuu|0D10T#ST$`_)da^D?Ky>- z(2A>%jt=?WbCfm?c-5A6o)Uu|f!{l!TQd!o`)cjC_X;tx#n!gROP7}kuuR4G5ii%m z_3ifdlmI~O1`Ym>PJJ#(at7e|maZeyHR0NK-~Ls4{?;dVHs#s%@6804XY}qnpPy&q zsXjad@mN}+LBnpqgz%wAkfZ|R->i;sqMw&Mh^iBPc0Q5ngx#w`e)&K3c?++m(TQqqz5ulfeS@!*wd|d zNVyf(xWe_HT;1e-*R{i^Wq>v{yl5@79U`~g zQ7-!Ib8vKOxv8gzelh5O!*a)0%h&AkZ8ZUh1HC4Lzk!e^UxsZRnn6+z-}o$SN)=#m zluf8iuAwC>=7hxt9Zg5a6q`1L7>^C%2J}dh74!<$L3cRl#vX3QRfn`9lt5mApzxJ5 zDx{?_ktcqD7JVg2Dmaq|Y0OYI;#aSER{efeJk%<_y4L&#)3j=EEeq$1wlAkKMkmK3 zUfi^1jfXf;LWN_b_x0c*c{SS0SK43YmA%d=n8AZ_kUWw!Q-kCc3`@f5@1ZV--Odb| z+lr~WW`~ONe3RSNxG-QY4JzF%t~?Znnl1{y@xEnVqvW)IDM zmq4G(4YpNQN$Z7Epd=ViOC3C+925%Fv`}?4 zIV)RO*ocvywUZTK<74%n1G(|$>w!4;JSl1@_Thg1I@^|ZQ9C1PTnhB;hKoAI2=J^`=nmZS)*=&u1d503nvytmLIb~!||ZZ}CD5bYs?rF)Er z`CGRDo{@EkQsu3HMJ$v>wv$W&L zZGjWIbx(i(7ys?fa5%VSIIJ?9<7P0N^=}UcEC5*yBb&ha(=6+DQynVb1!Yv6F#AHX zFxvEbp(~m>d)CTWQuYZRF=mm>embkG4@w-_Cr3*lY>k>nAb6dj=#L#NaxF&un)(|5$SB;8)rNb}9-T9#2_tCn>^Zxm;HjuorCH!6_20 z0}l=w5}{*+#)+t#9?a%61nBV#y^nN%OCnwX1)7aw3}b#~T!8@%@^i9I;`w}YlMsnf(D3+cBSCFbch zC=oDrZ0mI=#lfJfh0>Ax_paW^Y4+jqkT0{_SqDkX#10hYOo3>ZF&eW7Vbc@xldCN5 zx0S1|vcc9dt$qw5;3t`%;6*)cMBaNdid*i7uow{f(ZfF^pEP`UsSwx@4{45UtWif55|fDM?=L&a*0 z?O3(H(eC$((aCBu2<-f#Qw)5pyGx)v71UUV=izzkr3b}A1>ISQK-)Iv*5OcmVMuy z#V2zbv7x|>uekw4Zq!(AQO7>Q8^}Din87nU0It3j`JdzdOtM+lYqzYSK%2$4rJ*rJ z45=eCb{JPzZB1rq1*5&U?-hLS0FG%+SJaq9CC+gyuLj+y5+e~cU|$@U0F_i!{AO1yD@sm4kb;=(rl-}#p(0DiR@jpBvdbz z2im{1?=89sCPwyaBF|xE0sH;pJoT>p^NGT9Xda-6y33>w%hRaIz1zIS5$x`F_h#F% zKB---7u0Ezl(s5GUjjba{Y;iwlPtDR+#H7wth+%itUFz4w350fVkM~ zpV_BqMrXs@c_XdeU*4Xy4{q0U+=8}eve-FIFk?vJnjMO0AcxJK7w@zmlxBRtl>P$w z>0FZhu;Bt#3{$5NahSb$0RvOQLI*LBF|1Q)O1fXQTh8Sv4TfrSNJ>EuM;elbbf@4oX#(N(ipreDi zxf$C!*AOS=9?1JB4mWPllUKKPMf_RPba%3hQZ^RB^=>3zpfBDF*V^5yJLCmg^Ba+4 z8eHx*$*nHw#N9yTpNrX)0!+tQ)=6H?ez6(VTOav7A1Fs`>xTZw$9~_VU;oxezHVwy zq`B&1x>x(+zJ-`;Ga78p=rv)FDYkZr^Mbj)it`I$-{m&-QWb5-z3VD*;9VN1Z8b9u z&t|p;t|H4sAKq*;61o3V?>PrAjvLoNcA8-hv1_@KBJ=BzWH10CP|}D1;LHeF_Q3|K zMe$gQ&SQHW6SwTa*K8%SXZLe@Z`NApTtd!L_kzRbVGd&-?2Qej7YZ%+F%_J2X-*T@ z@^nSs9Zz?$cK1!Ys0uemnNNhZxhWO2oakOny0-vO9MFl@9w)(L2FEa;9hK#zhoD+& zIKd4V0J$Pr7I+zmh>bot%Jd_SEv%J0<;s$kG~uJ)$Tv%-akW0sC-LzW zc4@h>K+M4+3KW{e3@bky&gp*``Pw`7AJ;UFdaI<=BhElXViBkBSv7NL0L-u_P7zyS zODr%rCwlF>j+n6|#Zx_y9m7CC8`Q*2oEjn23-wlS#Ky~&XJdz_cgQ{-5VcOHvJG&^ z<~AriLl^Ir*?X*5bdGj8$f}O1z@zd`QqRbX0b%da$PDw4vgOQx!#UXjxl?X9w?gGS z2M(ANx6y5?d-~co-gXI1E?L~fe#fqU%NGVkX3n4~vljs-RKFI_LzBTEozv3W94O9A z&V%A-Tx~v1!vuZS1rgKYk!sFLx*IlmWNE6$`EXnziOHaX^-PFL%UmIo=E8Wx_(8<$!Hx=yXTXWAVDg2UlF#{^jy_}h2FCz(f$oXd z+^j5I?6wv4P^Xo}BG>0J!!D5wesb~iV8gWLGjT?tQ<9MB-psauXsKTI>VtF+5QC)R zG~t8_rbNFG2{8b{IALg5;86QcE$yf&B`N`AX@w+37i&_*tuSgf@T+t+e(?{36PxxG$ycBO#*F1ie6mR#^@6}yV?zJ4)BPaEN6ht zbDg;)kc9&3r9dvEhA6fs)IICC|L>+uOEwNE_B!q!7r0;CS*LhRd2CFv=Qy<2GQLv9 zpZE8G`F-%>%7NP&F>V8Bz7-UiNxbY~D3w1F3}hT>nF`Lmu$};#aU3*ZOz#k?`px(B zU)!8WUdi_(oGE3?P#meT(_1gJoIR{swF~Ch~ zOMt2L*0yB>HSZAKy>Ib1>6`!P_t3ZgiNAZ-@ch;LF|QwliqsU7{GZw&GOFxU#}l(SUCC^pPcj^i+Q zDbQ@h0i=1}awh%ZfPnL7C2=~bRKpenUKKl(iRr6Ouky=P)A>M_68mK95i_Kb=O$1^ z_TV$8dh(bh-W-`;IR;!l}TLWe_#jB#Z#Fi})`fZb$7~3r7&31q^Q%!XXOi<+Ud(KQw?7pQq|5(d6Fa{3C z&mkuAx=+CP|HY^Tit;#;Zqk&9UY`Q^>tkI=|ps4k{ai|+Q z5^-v~<_9#@u}D5AzG@$~c=8!Lz0UrD4e@y$5cd)t{{UB&CSn4UFK8vftybZ>t$po9 zqIN9&q=^&#t$9Uwr=pk`3#9{as`mVq9V|z2{W7M2KaI@MvzVD^0 zpa0n(pdbF%-@R+R@)#i?5=ef03_p-q%80ab0IE@Gaf)`_$0FaxB-&Dsj1MgdrORyh zjOQRGg_wHLUj`+e*h5%%Lfcp^%>c0l$aJy5Q+3#|<3~4*3 zZPgBxJqE`g$As>Qxiq-XLENutSbfMc(#_raE};{G1R8ZI4-gWV(4mFqu~3_v89d}C zhen2}{jq7K2|Az0==OtQd2c1lS`&i^EJ>U-%uWVpmXNxQUvc_Xg9XtcUb7nPXfJCV zypjrJG@F)Humzpwlv?qqitoCauPMgQQzD?HmOAW9KL%2QvvkB2f5q#*OKe!3yz!dsM-wE)hbOKssC1YFyS4x^pto*7=wz=g&ef!Z zz-gyI2B^wMlgB+Tywhvj2*w0G;l+^3c})_^E<^B_LBBN?pW9+q2!p^I`&wM?JeQDc zP||tdsmY$tj-2p?yPLR|cJfJuXSgk zlZdQ62gj)zYy#@;$#G?j;LT%;9>ve))Y6|?&Pr|;qsL;mOFvX7wU8~I%=O}0-bLHQk2!iZ@ef_Mt6hoInq0_^U@lK6 zYDiFlyS#QjYi}a;!Hw!-`I$rPy1!>nVdL4@FvUXx=>#=ext~FQCJl0M_WI;o&Av^k zRnx8na*mi8N*Yz-44z1+|$Wi&626q%9^UX&J@f?1tQ?=vhqdAL^!g z+0Gbxka+iEpS!r7Q)5(o34=VjTFfA#5_W*JlSmS7LG@Hl65=g4ei=m_34KR?)dr0OGF zA3eCF#)>b{-6H|ZaB zws>piWh<>2tsEgQMgn$)nE!4do&_ zj6oini;g-P>yUV=FHV6w$7g^^B@8`>DDA1pJ9e@PRb4V-^_M*EFF)`e&Vl@l7dNMx z4VjlPeWe`w$Z>SqauhYphlz3ko&L)Y|IMW1)w}m>`oq?g{QN#Z@l)UUU8C>syriMQ z^*dksCHl+{ez)7^`J_I+&2N6=Uc+PRJ}lvNOIU0iRXlRi305t4bL;eRCu7(H4at%J zUd@9<&v<3lZLS`3l1+_6aTNGCmvJJu?13Z%kT|(j+9F5beD}G$sS7NNDZvu@{j+Bu zHEf1Gzswi(x0dwx?_1|5h^W0}hx6rbkiYYYvvhWH81BOkoa{k;7^Z7RyRtI9cw(IO{-k|lbz{~!VGBd? zk1l?kah%=U1L}QXSoyW2zaOj+LTWgfhQ6v$cZ^-Tdb1utP~S)BNB$lG{k1AUOF0#l zle=#KD<~5|n<%819IJDV(KupozH+U^l=>B?ZM5~axWD&eJ&TpMY54^tRVwLnQulAI*H{QoPfpX*bcZES2JBJ zaULlbqiuw*bV<0Yn^%aehAM!hTFF?dv2h%zvvD*JpEMJ9FHlzP?i^;VGcDwqo;ajQ z8x&geNeCaEEPx++-qo3*=+MfF7l&TW;wGNn(LaY{mJmxGr|0U2%*Avu+dkrF<8h zD?B}sYj#A$JavRiU{J_9u;)fz2fZ@#f`j(uC@|X?J}HOL$^w7V8O~+Z zLh6aK92JBFSrITZu^9^`Un)WhYaGLSHG!=#%_hv~JD-U9r+S^7Zx2*-N7rJKK?~+U$fTdKi|@Ho#QmgloVf zxMwRun|JD={_3B@wM#E3$l^wwun}K<9ZvNxaXg?{U`;25=n4dN$owK+STQ9ce#3n3 z9o2ZqG!i@p<8IbiIYq3 zKyQv}i&!O|h=CA*pvOsKpP_`B+LcofgOwrVG2)VR*#5)C=bHFhPQ7J~kQ zdXs=nwsI%)xhGp~6MI`#^EWA$n4ShV`0;odq7jdyNr(j_W&6ZKt#%5P<*ar9#O&6x z2|h?i4i>YgEAIma_Q@1Drj@1UStLcc>O!CcI%aT%cXCu^3B325y^{2GoRyY^P^mSs zY9B<7S9OD5h02_VCQzD;?hp+LolF7QIWwTjV^?TN3Qf>kNnnsV6+m_x4ZT;|`3F6^ zRkgUPX*JC* z%JkHug=DA-*r}dWa+)A@JU?C?%M0Ds)e=D*i$fzMJILX@BZJ(?k|=K!|CJeQt2yy* zN)=93kN`LIV&ziE`kEg_S4v2YW(1ds}Z}N;FExQ%t>!yXezI@ z^&jJXRhu7Kw*tJQK4q{u&GRwcED&DnT5!|$9_pd2!-XgtEjyRa3d$>&?VDb+J7=yj zTUX2$Y{Y<>$Q>R`uVa)1Bw{=S6W*T^Xm!<$3jL0r%XC7_3$P8wYttxo8f#k{kOuDY z+O^a)k#{|3hiM{eAcb5ghf-9lIPX9~p3M}>faqn0)tXJ|a&krNgU+fJDC7&uZt@EJ zjay!oSkQLc=mq}H0pnsnHyc-eq@AFgVt-;lj*NZzfH}I3rum z0al!mt<{HZ#K}Hs>_v{J_faymkiHJcyx%f=1W2n|VPAG}#6s)5sAe4?iILK?Cu6P+ zWUYQeUK66NOFsxoI-nHeI=E*FTylUL8uOF0LKpL~7gA}LoS3ALA~vZs7 zX5+4akd79|mxD_&Lsj~^Yn~{O1Q9>dc@Cunu?-)@xBY*q%u{qU&x_(H1(~-@9CC>P zY{IT6OG{2~6t>vdIxY{Cmozh-L$+}{5}Fv$(}H)nn}`wV0I8_DQ!NZWQNN~IEm1;3 z6G2v43a(X|xww0Sg>1|o5q4-CN1-lb3GsZT(!kg;L+j}i4|^q%^C1%HR5{a$6Qzb1 zS!vH?M3SmgNM5Z1on{KvLca;Mmj&UmI3{!M6~L{&VoAjBDa}hlDJdzThbkdy^^8Io z!G_IWj!76Sc2%M$6F`YXy~uCpmaF?EzkKk15=&J5 zo@mfLWWITvS59;|FEF7DPej(l>6&0*o0fcgulL?GaBpDRwjDCm3tO5X&k-*IIiUpcKioZb|Z(G>eUlz24uk$UF~s$^7;iP`9}0Lp)V< zo`^i))4ShBa!T$S9$X!BP9=MB>cI{z{AaFVql|&bCp(d6R;d z#b=p5Nr|!>K-xnF8>ZOzlTHE8Ztz_?vwI}oDDfHrOhv7ZYuO=ZRB(f&`K(runjGqg zF6)WI3dAc5CJ?b#MPCbgo%+|v!5}y*U8vvGmP!jZg!okoRCEpMZnNAY;h_Ou^cOssv zUh$cz5>`WFUQwA*&ZwwIVr!Ui?yXY^g4_H5hkoSW|Fyj%T34&|6`fc1*82C~{o0vDbD# zZKzo6?b5?g@gjXr41->DOs~Y%ILI%tk!y~nO=GuDU zGu^7!P;z^fZw1rglL8!b@S34|Q5jT8^~UC5C|NOOhA0&Xyjx>3dF%U3oeHTIuw;gM zmBwDVnSyCiE6f~~B(f_u^*m;BF5s+Ek#^4G4#U#R0p=A~3%jM=cF~Gf$cxEcM(81y z`m}`$<4KY=!&7zC4-YGorc&W^%nNm%N`K)j6P9yE@9Z~#{zvRc>Z9yL>^pUQCp3q; zs6fN&Xt6hKf#$}YXy=YlEhR*ui+2XZ^XKEk`mO2`v7j+#aJUU(+dgvvC^kzlwuy4R7AGH9R86m4*nyQ(DfL8I{;B^!AnuE1*>C5{_$lkI&=&}<@Lwk-jTq^TxB zFKE$X9m~<9q!uL2azZWBHwSocn_9~rkV}%H_|E0@cu89!Dzzw8DbZ&nsO+$RpE4Ap zbfc-i1kq7gzzm(<)9}U0TGI(M^iTz7oTU7Ha}trvCj>t}uME@rAuzg1$+CsfyGfwP za*L8V0UL7}q7_V$fQBHR2$I{FxDF$h=yp^_A{@sek1s=U=!lL+`cSKvKzhf4i(SQG zX96#Cmr!(lVv1q|GJ|wcrTMP+^Qv!Xi%x^HF(}oT0oU^Hz)DF2uQ{N#F(!~QhLBSZ zy%Qc|c|fvKUaBGD!CpSf!flaFhJAnxoVn zmw7$*wrrY}fN8~8F~l~dcb7H%SOL!isT#*s_s=WBf;Zwf}SWdKT8k9 zhz(KpMhKMqQ6z5!##Yx81c8lWtqTBi;-tHiQk zZgO()*6<08TW}q z{tVc~DH8NjUC0l;rxp?6Fbml$0b|OJzpLrEXCxFXeQ}ufP-VK}J`0P!eq2C|xpL(s zmtS}h^3<<2;$ANe*dPc=Lo%MfY>Eo)uW}ew0is4>+N!AkP&{>}^@ZU=ejP74|2S^>W$sBN8u(B~ zLcHj&;rh^Yg|nL;XVq*2s<(EbC>~oWzE!RsM`xS|xDPajqW%PyHx?{`hlJbYg!Y^S zVax4l9e_t3M>RIS@o4j(`H-HQ5=Khw%yE29(fn(1e;T#j|P z95T6r0wnNWn5)cGis!Q$2geCwz}H7u!EeWz^jXj1eJIRajd)n5-&CAvg<0_<0nECU zIA=)wC@Jt-WK0$rWqiFX;u0wc`n+5q{`1yhNR83S`5d{E`^g+Tk!Z0aNKK?%;E2rh zgsgCZ7JDYa3fp-&BQqL{6vfS|w6ZqnmkGk_OsJ;fKIWFJvcYwNAg2a(hJDpcPIim9 zhIjZSvwmLAW{fh9?Xik`9xn>;@d(2A`{#2ECssMg<527d;J=lfA zWn37`ZHIA5Lh4uBtt@FAMG^jib6m~Y#?Sh{OVz4P1v&Oe00000NkvXXu0mjf%nnS} literal 3966 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 Y2S8W#vM)6=T>t<807*qoM6N<$f*y@n<^TWy diff --git a/v3/src-tauri/icons/Square284x284Logo.png b/v3/src-tauri/icons/Square284x284Logo.png index c021d2ba76619c08969ab688db3b27f29257aa6f..9968a4516bc6c87f7a36072f40b2b22ade718b8c 100644 GIT binary patch literal 34545 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 diff --git a/v3/src-tauri/icons/Square30x30Logo.png b/v3/src-tauri/icons/Square30x30Logo.png index 621970023096ed9f494ba18ace15421a45cd65fa..8ec32cbd6f473b2dffd687ec98336099868c641f 100644 GIT binary patch delta 1467 zcmV;s1w{IX2h0nQBYy>xNkl&Ue1^ol|rDn|Cbavar@KFrh8AkbmW$irT$=AM-m|FN;aG@*4wPXP=^smbX2+HG|1Ezmlw1Zw@}`jPHX zRf)16p_)4sah4_67B69R+b-l8M~oagFzBor}_`JeYX0+E}bf$ z-9c%Rpqt!6Y=0l4^J9kEear^J2H#uI7@MMx1Ek$$y6-~Mx*iZCrCd10bAg9a0}=BX zhM*1zYOCql`AdgrjofC4+PiV&rLS?~l`Gi$#2ZMGbtn_kZ#f-a-Y$~B!BRlrQe$i1 z7B_l(bA}oYigW|(9gDEJgdm9Ib((c4_x$@3rJ&`ESbq;MMcCa~0iR<+1=AQAB&Mys zsXQ2GbPeOvhwF=e!KD!5+VnaFV8aKMH`Pl^EM&019xs- z#Gg0LQ<_GIy?KeW=Kw#KmFgH^lq9}`$vww0KJ!8)hdFlaJ|Z_?3)enDym_0vpd2A4 z!z~;*bbm^?(TK)zbM71&)?_3fAiA}KF!%&%%4LUO%aO(%PYB9+79*n+#6&XK)RV>v zS=jG*8>UQxmK^0-2S0rI78xJK(&AU7tqqd8 zNWO`?tJt&eRm%G@kwC6_zNTi5;n2wsC@pK4n>|BDQzswR9j%7Qswtl>9MP6>?Z@}U zF@F*?VKhgiRY-;{cI-KZz58G5BjMQOLAjIe3VyzPn#!~*D7t`{+NR_{QBGAUR8B~m zBU@=RubXs7=;?VQW3kWV>zry_lT+-hCE?)`jN@e@{e&|tCF#^HPgm*e7zG5*upJ`m zz~<&E_CNI|4m^E|%IFTgGon19&%gE}AMH!HJhIm$7kWq+MJ(ca+YU0}G|~ zL7IV<=2<}jBWmrGNSp2Hnoj2uX`M9uE^18<213=)UuCLl*j84grS!{Rw=NKYwo~3$ zrF6Kar-)c%69)@;3vv=nNqi6Ub7#36yakFdPiX&&q|ntFYUCBdyzQU)5(P)z#`ozxI(MkeXpuDma3%Lrs?q226_xzFTM>i1{x z)9h)4(Ik$)_$@^RK3!$Y(xsR zTb-Ib<2}5!pp1IhagL`6h8?=%j}i_jl2qwVwwMb_qiR5_A9Aj=y>M(bEdVuS^d68*RRv9zEyWHeouVluqi%Nb^M9kXZiv1| zQA-G=s_m#(CHzi1Z*2iJbs5&*oC`grUdoy}%*C1$T$AzgTro88hzzge!&sT7u@jx1 z;Ss9Ez_c*7?JlOK|Bz`Py%PFYrs?uO2K!*9a9Ot6+kKOvI&QY6MDRyPcOe;nRN5db zSFek!;vbRf*%j9K1lhjEt2BlT{>mepJHy=2S^gO6OyJNm_x|6@+F?^i?|s>V{{ixQ Vs+Rj%w@d&4002ovPDHLkV1oX)*XaNN delta 881 zcmV-%1CIR63x@}gBYyx1a7bBm000XU000XU0RWnu7ytkO0drDELIAGL9O(c600d`2 zO+f$vv5yP2+CUKPMqaqGiH;zb!R4$B-WXS^YPmyx`A%2~!(9 zlH^ygDKV3p{Mk(=Xu`Wk{D@#IGk_gPQV&dinMYoVnA6*V3f_c6n`cZswXQR5@9G>J znhN<@*4bB}41X%vU2>E|D#2?#wmFX{G-a=92L)iYZ4U2%FU9H$9f`ktCuA&iizSf&?&-uZ+;0$pk>ntSJ}O^`}5`KJhipib(HjhGn0 zN^@i@#!6RG1|rZaEb*cJccER=BB?KFZhV$c^nL*l8x*UYZv4WK|j?~Jt6~~F%{pk~z z5A*>^M`?r5m9@RJ_x|uEtX(6Vk@Y()MVto*93wr)%3m%|#OZ~srm>zF(JvDuTq*@; zd&^>_BJm5hOU`3FjG70L#Vzv9I?`<7$T@Ry00000NkvXX Hu0mjfAj6Um diff --git a/v3/src-tauri/icons/Square310x310Logo.png b/v3/src-tauri/icons/Square310x310Logo.png index f9bc04839491e66c07b16ab03743c0c53b4109cc..b903f94d58838cfb8d83dd886e5ddb04d6f88c9a 100644 GIT binary patch literal 37124 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 delta 1998 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 Z9~7@qMtVKz_LBer002ovPDHLkV1o75tYQEF diff --git a/v3/src-tauri/icons/StoreLogo.png b/v3/src-tauri/icons/StoreLogo.png index 455638826192851ad1ae604d66f2ca352979442c..dffa33241d892fb250fd217af7297c3b539af216 100644 GIT binary patch delta 2785 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 diff --git a/v3/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png b/v3/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db1964ea990121c481efec1041cbce690a62566c GIT binary patch literal 2688 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 literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png b/v3/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..db1964ea990121c481efec1041cbce690a62566c GIT binary patch literal 2688 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 literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png b/v3/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..53fa9ea28756a065171379d0109751d3206ddf96 GIT binary patch literal 9435 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 literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png b/v3/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd52c4f3eb2556de6aa530110868a6678b5cad0 GIT binary patch literal 2331 zcmV+$3FP*PP)&5{F=8}B%CJ&z-1?IV`s@*T0ZfY&4;-$1xS^V>d`f)R|> zw&vWDl#t$qoS-Di9@8dhRFNlf&A_W{`>Fu;9~U{jIn-cx8TH8Fql+Fg&)JT z0n*-G#Q;@X^LLj!DMM}?23Q_G1K<4a4?;}%H|r7_mH3Qp zFH+DjH+RnCak5q94fHV58aA7gFzD~LvRO1?kVNxcw~+sF9ANC%@sdc=b%&xa#0IET z8>s!b+}(B!)SDkzMkkX&_KdVM0-IzgVvcoB1DI|JS8p6EAQ|B4llyWFlw(zBSXqdg z@`|t5I#2^t>=l!jxY){Z7GSjWS9gbjVOYb_^<#MX?GM7k5iZ%i{_xB1Lx1rZTWaa= zn^UG=rmbvDdTL&q8jPy+L1|+aCur-Tik*o~g{2Eb7%Sk6ir}5P5w?S)C2Z6_DJ!Ni z@*9b3qJM67p|y9H*#bTE{U*Q~q?P+&BjZsR7c&rG50qA8+>GNUxr@7COgG&u zmFXY~o;H&5!}Mh#rEkB|;@~;kVSZc*xj6G+tW2a4!nqKl;zB(3_usz(mzU>kfJ=CWli2N_+)XQPE>GdFzkL-p z7mtK$AVb;u`~hdk1J-o#f5e>x+VFkCP-q&w5k_Nxqb6`r?;ISAQbGvlzh_^30_)X7 z@gTw4#CDj2dbJWB@&}| zo^3h~8x^oAGCA`OnfL4fa9?hAVu^mdl&zc51SiWh+jw((e^*?IRBYI?N-h05TZ+7I zx~M;RAv_}Ex6>$^rxka?9pwrL5nLXABalLzV6Vg>b0@E@^6u!?Ru>OtrqR|w(fopi zzw@(uLJxd~Eqg*9v3As&BA9ofYuCR6ul)R@nM7G~Ei?yHx1topksOKz!(gXHE2lVZsFvcnXVSa)+Mx)>*wF`gOm!I0%HS@ z(WDP^HAd9K*~!NfZsInu+4RAzgM5$OgBY+{cnKaHl|OkP*Z|r6z>VZJg$v@TVuAgrpXz1jPPqECEOrI+R;1 zv9XqFVl|;%Nbd?=?%i`u;F?~4{PitaaNxYLk>G4ENaHF@H&8Y#ul+da%P;5N1DudKUEdc~3i>Au@4K$`1Izp<3H}xdM z-FRN}HB|h`Q38XQ$ywuOnG;E4rL=KWt(ky;gspA`#*z~EOGGmVGMF1>2?Vg_RfYVD zT^i-RG?P^*v*1>L$kfL`M7nv@-djyq literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png b/v3/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db887e015bcfdb73654018b6354367abbabc1f07 GIT binary patch literal 7546 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 Q761SM07*qoM6N<$f(=S|*#H0l literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png b/v3/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..47a7707719c97bee7ac80fe51bdfbc38082d2656 GIT binary patch literal 26494 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 Q761SM07*qoM6N<$f(=S|*#H0l literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png b/v3/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..1543a1f868926af0eeffdf1bdc1332e06a7baaf8 GIT binary patch literal 15545 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 Hu0mjf!r)M# literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png b/v3/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..bc626040dc071b39536f9c4deb3b03248178bf60 GIT binary patch literal 37781 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 literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png b/v3/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..1543a1f868926af0eeffdf1bdc1332e06a7baaf8 GIT binary patch literal 15545 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 Hu0mjf!r)M# literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png b/v3/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..0b69d5610b59c32599c631ca16c5dd6dac17cd7f GIT binary patch literal 24095 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%0DKt5^(UXFz_mz5&GKzAT%oH?s;KY~ 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 U|2R+iUH||907*qoM6N<$f-OtvR{#J2 literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png b/v3/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..0b69d5610b59c32599c631ca16c5dd6dac17cd7f GIT binary patch literal 24095 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%0DKt5^(UXFz_mz5&GKzAT%oH?s;KY~ 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�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

5l#v3A#xI3*z~1~fvo9Q(N^(==!|_FZ z*duZ=+M1~)8E|otX8KNZlr?qels#x_1Xq@9IIw~@9uAREJVH)Xw^}UclF6327}E42 zT)E&?U%TK?(+K7%R!`H5oX0i)4Qn5??Iw3p5J~6_u+aWehY{DSn}3V2p$bgjnAu?o)v@iC254fXeMv50$9YrpU`N?u@QIWs)T?SP|fa}(|9 zqAX+!7`cx=4)cCBg5h~pu(?@9`)aCr#oyz$ld=#RFxYCNZCZls@4v2~*e-t6PEVvV z&bbK3b3wt(Coc!ufAbXXC<**#HQ%J9k`New6iG<5RjtO4XVO?dCvwxD{kJ#tfQr(X zg^NTwF-FwAeS_{V4bfel8l`~NbfrTR2s!G>WduFWxH(t~aK4q=6rEE^$+Uox>gJO2 z{L<;6Q6nHa5#ZEM>H58not!)z(6*_=^~8}jWf*IG$AUKVWOZ4?)GfF z+BM#*wKKmLFD7E~W3U!$IVm$k_k1f&Kz6WV8@55P?r~bcg-Za-!rvW?ns&)KOGT2~ zlkAyqhQj=P$Eg3w#K~}zH@J5bo-BfHjInKSz$@?+Z)NPD4pHj^_Qxmi`UqoTy=`sV zLVxrXGuBr=QRm|}wg75yetQQK4fY3#P_~J}zEfPnb2C4Wo!E(d*(cA;b?7$g2in<( zPn)ghX}nzJPmb6(3Dpeg_GW~Hc}Lt=lgsSZz z!5QXyz7KaR;D`3Ee}d`af{H>WWZ|Io1QI3~4Ll_`g1(cRnhLK73Ro)7zPCd={1W2x zRp%Xlvv4>!<2@}$hz|!V{T}_eHx2xkLl^hQoZTCnsjCl|W_@5Fx2(+j0ogy&Y+;L- z<)G$*CiN7hOm^s!{U>1F7U=iNk{+u~dAC!eDz%=|glFW0jEZU1&o(G_c#wTxUjnG} z#cg3>jEpUi#Mlq@t?Msg_#geK^Lx@DyHWf7=AS5vVyM7YOjvUVCfcpVR<(+5!H?9- zySI6s>o3m&*zr||=wcPGyBkQV`EWJl@bH8qobjOp+sXL*)=&yX)8aAbf~tGv?a2SN zu^Ddo-z?DWk9h9Yz#5p^NU#x~wYSd?H@w@!2Gb4G)6-utEMV~~M85Br5ff(v5O1|T z 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 literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/ios/AppIcon-20x20@2x-1.png b/v3/src-tauri/icons/ios/AppIcon-20x20@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2936005d55e515d80c385ca47859e431dbf275e0 GIT binary patch literal 2120 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 Q6#xJL07*qoM6N<$f^gBeCIA2c literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/ios/AppIcon-29x29@2x-1.png b/v3/src-tauri/icons/ios/AppIcon-29x29@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..b7689e574a293c48e2f5b0ecc8b8e4004aa83968 GIT binary patch literal 3389 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 literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/ios/AppIcon-29x29@2x.png b/v3/src-tauri/icons/ios/AppIcon-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b7689e574a293c48e2f5b0ecc8b8e4004aa83968 GIT binary patch literal 3389 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 literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/ios/AppIcon-29x29@3x.png b/v3/src-tauri/icons/ios/AppIcon-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..2f89fe571fd4069be2da5d9c5626fbb605d7776e GIT binary patch literal 6504 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Ν4nwN4yA;KHGK|H)8MhWY$muPX{Do3_mq+!$j>oU2@iGR z#G>Gi7|Su$h+_P>b>g9pV|np?fW2i8*IvKSz0_;-m>yq{ zYI1^ME)D8(eEfs*c?~5d^^CAJLBnECC)v*_JZA9?~dT+ z?GK0Zyc-IGM=K8#T7f55pR0BWiH@x*gXiR1+>BTGOmWl!zkYTbu6Xud&5Q!}-YXN? z)8VD|FX({Dr55`0tp0? z4-L#G@yW+rdG)Y1dkzE7vunm;4eGIu!C!L@_7)dsPHrfh!#F*ET)6qu180J@FKPR;XTb;^eXvFvx`*Doj5tAs7lfj|okNx8B^W91W z;4XqZ55pT)1&1ro-l;;RRW0S`L!`Y9QQAbjKnO_215Ht&aQ5QUFnSzkaX-)=;ZE{M zeIqjMqYFC#+g_rv<>-P=NIrpY=&B!(EF2!@$shh{X}x_7@)?%(c>e=jn-nSdTG%xJ O0000FJp_v%6e;$z}?7!$(VSUK%6dv>aIf) z59wY63K3i;81Y=Q#Yc|@uR=0>;y>PM_vHl{jYSKrx6wZ{1=t1SO+CJN48o9{)1hd# zA<`(3QGQjNk!VvmiC1CA8BX<$&B;Hb<;EP_QS$6YH954&GA`*367Yl!Cw ztpt$iy+>isb8pL_G#S9v-#(`Mk0^9wu)OpGjcf~;2T6u zsdmLc?sVo%A@PzlXWquVnz45kp}5oUL!wrp-JA4bZFi@j*Pnv8afi}?@(;*!2z>YO`AQ5^DMfJV_}db3I4UcPw-ZvB1Qf&!fuQyAGuWE~^VCUHu}y#WUgovbKb zY>H%geErW;aQoV6VuOYaZR83JSF9APNOTnvWFE|2jt4RwyT3QGxj?wEycspdPyx=YoxfBjo zA)2k-@Y*})g@i57W#X%S&XtYJk!@6*&OQ=|fA0w}0Y6hOGL??4v@*5eww-K1X$ z#DAnnwcc%%49}GXEm4Pr9)3%n5!vcw4KDxmK6#;=^Bg5L6ZrJZo3Q8EwDyS*$l*>u$5PoX>}A(bl_5-;3gK zo6zd?VdlAGKIs?dzk=T{d`bl?^B@Y17@YZKMyuFeZkghu2X-m44FJogfRQWE;7Fb^0;0D{ib^FhopvhG4JaMtmBhEBg z!@^BdZ`+I*!& y#QxuZmh7?=Q-y{J(VxvzfaK{la3#-7o(Q%z*$> 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 a`CkCsAYDNz#Q-$`00003#-7o(Q%z*$> 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 LNkvXXu0mjfVTG!a literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/ios/AppIcon-512@2x.png b/v3/src-tauri/icons/ios/AppIcon-512@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf01d3db7c27f8536b8b46a7074e6de5233cd45 GIT binary patch literal 44079 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 literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/ios/AppIcon-60x60@2x.png b/v3/src-tauri/icons/ios/AppIcon-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c577a5198e637d821de917518d738d6006d7ef49 GIT binary patch literal 11493 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 LNkvXXu0mjfVTG!a literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/ios/AppIcon-60x60@3x.png b/v3/src-tauri/icons/ios/AppIcon-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..2312e8e655d381036eb3cb7f9447418826eb9418 GIT binary patch literal 21265 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

N-`}ZLy(vn<%Vu|Hz-+ul3 z@ajMR9h_gXWg?8vVquGtOr2{qVp|@0?F*OKp*t8r3bg4c)XMI@=3@xw=g$I7QIM2= zyzMWT!g(6NHSly%Smzhd3*b6dG?Zj$s?`cOJT!}2 zRe5d)1-`zMhErDm^nzq__&e3V(RFh*G8tQ9uF#F!UsPDe-LurA2h+1qYl4jUr2{tX zh09q2iD*2cyARSkgJ{?yUO75bE9j~yjiNGQ84DVLahX4&a6=@TQJ^vn$Vy^rd#wy+ zlW)%^Z%)IMYbaCk=8#-uN+sR>aiXCr7OO4-;;-2v$mqDH*QG(Sd|wgV!r_z@7DF8L zs*+_WHPj%}wG1X7ZK@cnFH4}i-~2(Ksx#fq$MJlMv|sx2UzSvdT7zGWhHt;|gCy+O z$Cir4A&GxC6pL4DmoX&TV>Toh7TriE8<)DSopP-g>C>_|pTIu(1nkT9Hn2#I1Jfy3 zPuIpqz591x3N?a%Q~@R;lE^xI@wfh5=Y}O3zW2^6@amnv4GFXE99*Bc0x5P{SfWBi zz()hol8dCvfPJrT{@bDtPSF1D3G7eQb>(+^V2XMTti{~*$z@t-jZmqdHt<;|r=Om} zj7a0eXn1=5d}bIhw+KW*$+M4b9*8aBLkmXa-vDztFWXYCn(IV!U(-aiEm7PC z<(QtPp0zQgW7~|GG>rh|gk)-E^KHZ@V|#EWM5l$<_3`h^{pGfI@-A_ zFk?QZyVEg4+N$tJhaR5;{SoQed=U@(N5xjuk~zv!yM64A>lusL`R*y4+GG7h;!z@z z?mpLacT2KMe;UfxB>|kx!wZH-0Tn#*lLxvO@yB5k8}~FYu0u3Q5n=In6p54!|*{{K~Uto!(Mh{Ivv3Q5n#dgw0W32suvtR zHiHI-mb}~rY)LKi`&g>q8ZwYNCCjbdmVE4-GHpAvCOi;WykSIO@Q5Ej$bUg{V*5;{ z&^u05yk+Eaz)xTr95I%~72ofSG6#dVW_ctIgr}S0CdD(F;I#3B<}?%$rz80wgQjUMr-p6OVcQO++u)8V1j>J*-N_EzZTyPw{};2~u1=~Ia1LqPry?mJ_Mb{~{Y00000NkvXX Hu0mjf>kJ!V literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/ios/AppIcon-76x76@2x.png b/v3/src-tauri/icons/ios/AppIcon-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6a72b512ce8e70efb8bba76dc3ebdc23287dac67 GIT binary patch literal 16562 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 literal 0 HcmV?d00001 diff --git a/v3/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png b/v3/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bd100876973a75706c1daec2006c59ba96774579 GIT binary patch literal 19208 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

Mj;xNp|&NNV>){x=| z7)2-Afoo~})nFZ%inC(L82IzK1bpRy2+R6msgr+* zATTs0C$eBezIzT@g41A(dny8&0J%U#h3EpH#dixL1682PY;^}f_I1jL6jsrMq4O&W zx1)`b=X%VdN*CyKRoB6GRhhJ1MJeS&=ht*w7aSMV+s6^p?e*WvMK0Lm0XIiZlFZ&X zlSNdZU%Xb*K+7-we=&a0^4q{<+MxudE<#X?I0Z_)kC02jhFkJ%?^?{hh%zFa5Tr1d zXw|J;g-RY2Wka?64VvXTdE@Px*6Ap8=cc;C5%L{eOnRB(UY6!$pkEjUI`);0jfadt zCmlv~7@ulMW5ozQ;T=d}H~<&zS4OKcFh!-nDHuhDh{~I9?vTlVGfuf{V-EM5*h!R1g&r9Vc7&{f@*2E9m%x`LtiTZd1XJ{p6BTRL zjDocRH%CtEdO|sch8?;o&<Cj`CR@?YRO(&MMxBk|PG`6{dP5z4b3eXAGOJIx zcYlJ209&a;gsPsMEZ;d+A7f1BsKvgulmUq4c7br3pLNs)Xw==^LCO2O^2m6$tU%fz z;)T+*ctC^J2=H3F8h>=RMd53oq=U!(x}sRGJ7qSP?dQ_IPeIuuCWwFwh8Mg{&d#;- z*nYfr_`+o=GB`GmBY&rc4%B)dD8Bybk$MQ35Zf441kijX*9%FA=9RNV?g8I-1j z+cFa)5Jc)q*@IM~!g%EU9LE;%ivf@p#tPLnB(amHMEKc&g(BF*^=bXS8d{dGjvmSA z2!gK4z_5(>YJl8BA*lcJ=8Gd(Ta3P&awYR(y+B~{xR`P^%T&}rqltn+_QAG!fyx){ zd!Fn3a|lX#odzyJpL}P$70RSBQt@0#G>93X8_Zq*pse>!o#BvR~ z@Khpd-~08Y=shlAAFJD%GOlAP85Q~%G#W}=p~0F8dW=NL9v^6XEL^h)L5{3Xi+5E{ z}l4Prvotu zU@!3N%j%>)C_8r&uX%uYn#8ddgB;-+z}3K!g8?F*i1mNufZkIA{veu;<_eT?mW(Nr zmK?h!vo$#Ks8IXWz_LgEm0=Zrb-d-g)%ql?Pe{f1g>EdqJ~@@#VuX?v=r|w>1x$lB z!(8;yLC6MG#sH)!c93urC|8k;tIG36ozGWg2pGgW3kNxt(yp%hdVKIr+z?Odj2pkR zl%UTt;tm0cbw(Yl0_>JnCtdPd*#H8RyuGXjUey&n9;t}rDY{^<<=UjgdIjl+BG$_6 z77EyS!3_S!x_2sv{pvsdHg(dLwa0AW?AhV?y`TOZKvUnFQn!Nt|CR55VVlM?`xt8F zNX02oe^B1<{`&2Z_5D9ABM_INfhPq(!OOZ@vDnl8hSHYMs4Js1G%8G|fn)uhpZ@V0 zuULD)=3^?tynq+j-2FRee=SnK+3Ac8tZyg&N+n=hVOkgiq$2dR>{Qn9r;-T#}`-x_4NOquo;^>ulZcSu6Yg{yy z^-U32UyJ(hclRw;ecYwwwXUXtC3awZ1B9|v_^wJeEXP``U;5N^*4Gowb2ryQ0-HWI z6>vh+3%3b7*2X~~g2MS-pZ5LAMXWypJJjH49A*?vj!RDe&h7)+z4~xHP$lW9CF^n4 zPsd^hfd=i;UdbLbenIUMpzt-2kvW|eL9eOc^xH1L_^E^s1pEd`6oe?lw1Bjzq9`(* z4AdFLH}`+lxFR~0AkptY1&lU`k))oPe|8lwY^RWKqWrVISapP zCJ~koQ6gzKuJ;Kt21oKl^y&csWo;Paf#KJ4LcLWks`d9N#jjQRDqI9WhupnH;7F_6 zHlei|^JBp@qs*<~L-rN@JeBl&wJ^6)co$yg&nv7;7{-=K@|PGt;zO z7M$~CPoDz;0D;;T@rRc?MA3b!xyKA|?t9er_)x$;3o4PhnZyJp0#^4SeGnOjBDju6 z0!p1ju%cuRD`D{^*~2xb`&VQ+fVlvKcy*e-ykM&9{^p6VTMFcPwe(x#ViQKR~_@Yw1i}DrL)!H`;2MQA0wU-D-CeUXrnesghbob*Yc$opP()y_;~S|T^R!MIgCf$Gx%e(gRhnH zpvc)hatldKXW z3UM*j`N6;{ilx4)59Rj)hlE_+BNqYCtWS$%+q9N4f%8uKDA0g;3S3tfNh1J^C4x5j zL<3@58qkHy(twaWaS?plW{f|E#QB|g4v;U*vX~k+TvOsPunFUJr>JrUL1tjv7p$ zNE-|3K0WtPVt_bzAs2w=vAz{;?hSatuP=C+BBu3ER#WJ)9UR%g3F5g(M9Hw zOtoUVF%5v4^a2{m_@|sVZ0MmD{AL<2Y;h2AQ_|?!h3BduIY+QUtarxr_c%D0cH|vdmywA*cQL6lZss73M`dN-Cej=PkIA^4)g~N@xvXHvy+bH(rv8!=I*aS z-#<_7f+sn;Ok9E~B+-|@pQ#-DCSd(kh4WN6W*sJ6BclTzBWM6r-9M5B_RXU-h|_v~ zNm=q=}v)pP^1&Px}1x`4`gjR7M6M1$3J{)d05oGr6; zat=s_DKzWu80A49EcgF0gYcz@-@Rid@;&9dzkFM}-~U4V7*a6Iaw6Y1$pY-4k4p)z zC$@<%!|skVI9-!HE6>$O{L+x;29crGp6=j0(4PLqIn>3A2!c!?d8F2_Q^&R@X#ihi z&G?}E-wJS_u!ykAgDj79l{Iif&J}b`Sgs-Bp{uQO3M$p9=P%%kqJZ`0SK|*`O`>8V zNaq0*4WM%ao&xXrbifbC-{OJL-ciqy0knz|LlE!D1PJrc>gqk8pfFSF<0%%evy@0d zQt5#@Q;4NNyteHgil+EGOY4>S{Mj4bgt&a!%k2O{2_!Xa&`$z&&_Hzyohb(7#z}}G zwfeDuBg`ShYaXcm#AMP}E)mdSUkuWxnId)cJYSw5qMX*6j-DR_<#jXa67%it3--rL zFx=OVS&)d9wDGwBJu^ZXII#YK0S1M7s1|-uIHp7yXY?%%nr@p>&>3j4} z@e2b$^bkE{kN3LM=iPV;FMWBC_9Zks~ zTKi}-W~}!KG=K&Y?-w}HiBx{x6TxtEqX7e!*TOY47vkX`@)yWvKXY@>bO{!UAoBpJ z3wJYs#ZMgquWe~lf}Uax9IT>;D1z3Fc?Nm&I0ss$a}RFkYZX;e(%Azzvvi+f`AA+V zZ_Ai6T#LAZ#+N)Fiw1dFB&HIS&H#)G0$v0@&r}x>M4q%)?^}KG)v?t0h*(9Dyx+&Z zL@DBdiB?aQ$-TDqwF<|i3ppj@A(8=LRu%V3su%YxB~n)ltNSPF+J^k7r|B~uiVBm# zkp=8q!**8c^lh2`1=3IF*K$t`Oanm&zWcM!AhQ48@~3Z{GJbFQ;UBF|3<1G(-GiXd z0P;l;Q~0SZJRbD;eK*jZ8z}SF*a_*!iV|_nP-d~dmA9ATI!B_(wa_*~4I3r@??1xH zGJ3Grr-OUZU?rk=TD1miLhxzANQ1?1d0WbTWKehhc zDjvT-BT*+mi$aJ?Ai;G62!H*pysz|0w&Gr&ing*Jphe2b_n8$8-TGA{en*)FY?DDe zCIWQA92MqOFHVu}xANmfQBxP!yvGH|AGFS2bw{LtTGnbH_XJAB-|(5gKH0ZI6ZVC+ zB)H8RNE%xwdcKvn6`ezn_dmxPO$6t2mQRH}e+l+WoagUFwuvB}tzi2#9w6j%)(^-D z8MS)NcZ<*==f5GqyG!u$N<@fVLNRwTCj@*w7*c};zB*=VP>TU<9bFp&%x4H|G~Y7< z5*C3WFsFiTenz|?*T0pw7YbR8CsRM&U3DR!>~>^Oh`4d4hmZMiC`$^y27mc8q=-)q zLQX4o5g6)8?Df8tw-=qn(2CI6KG+ z68ZO(@LPF%DZ%p{&j+xuVx3#Bi@R1@xOSj0H7pN@&Rbj5UnYo<(0-WgVd>UiR{S7w z#5WjtS1FTcl6uFfm>ckl%AUU#mURul$RCZGZE6r$Cy3UUQgq#)QGI#$&H5)a6qyO| z+z~NY#;8Z98{Or%au4eu4&lc7RRLc#QDC3Lx2t8a|pC%h$^w|Wd ztJ~2j+?@C4a{z4B*Y&Gr0e&Py6hk8Yz7ZjaDw`8?0G5qy{y!8$uIZwXPBig`Z6#9t z<7X>`Y;I@`^s}{(Pl7rXI#AQ)cm|P(y0WkG&}h{61^H?@y+|53XZp^IK)g=E%CfJa zzcipqajAF>;0h+UaLha+1<`M_Zi}fzB<~Mg3IG!3b0fLh@FaJDB|i5V(0>q z&I4rMIrR(h6|xf@VzZb_mj2q3a3SIV7#jE;1HOZzXm4ee(f4y@QR#I4GZd@is=}$~ z!hIrnmy*aQfC}FsM%89peOaD`fR-zFzU`&Dh7C0J0TKRUm~IMHBElCJyx%Q3ir2w~ zua`>dH(kCL8gGRE8LXeB2=k1-wJt;{X!YFW!5Bg+6Ct7Z@)~pfC7gT-Xzm2!@k$y7 z^5@}5pFTG3r6Z+Up(*wtG>tzAsR;TtVR};{RHf@m`5Ba;2+Gn|>tDe8`eUHi>5s9> zjv+N7Ru5OQB$^hlwJHqDp1|2;&jz?7Sp9$0ZctvSu8N{{yMH_>LJS-^*d8P)%4k2I z!WAg4tEAQ+Y3x6L$7<0;<69^Tx+rTG;4i;|MwRb@mL37%oCfyS#OO@m$zM}I8tf@V z$Gsf9)C+~!f&m00RdIr!pA`CmI@V)+Vman5mBzuuRTB}gRc3G zpwr~f=}qAwr*=sP+ZTEI>rG!Pp&Tv)ZZ0F}_^bgSQn=+)uJ!bp$3R22SK=c8`FdR8 z(Nv&Z3Cx#%K1*6S>#Vha>Hqhl@bAkRmuK*sb;o@Nf#|^Q>MP6#+8nGX^rE$uI{uZ5 zK>=(dY8wk(!*$OWMFpK0Iw8&WQmD|TYsChc3N9D0Ke4g9g9g`nPCt3S?e)uau(VMG ztZu~ep3TzRz_srm{&k;;yJObR-mxk5hhJLIcN(jX2fW@;pc{v}MJf*KpHQ>7Lor4w z(mb!7a0^%}MZPT37&GR7cZKf=(x^O`Y`gV!Esw#LHnH`nb@lT&r+~@;JxBC71(qKz zCC2#?#M2VcjEYvJPWy5fO9A=D6W(WfpVP-{1M2^|N;r24mG=W={-3>VNT7ijyHMev z`8iRNUdWXA?sY&Vy_9yhNfp%V+V)Y&4orPZIc;{?XwY#Se0^jBLJJkdtoGqR27H1d z<&}CG2Lv*tg;V&P6QJ+se1JS1%zp0GxkG93Z;OD?x9%>)dbVKZAP{v4Z02NX3cn|x zc^b_}vxbO0gvRL0^*80} z%s#~invQmtr0sqrBnWF>=&JBd;dHmA#~lrd8|?gAiYDv`8uX`fihBXT4WDWjIWNGS z!az&~pB@f5285@%^Fj6x*%08c@$GZAbT^_x5()QVg+qLtWt(1K@R}EF@Tkehrwlo*r!OlC*?89Pwfy zpagw=SJ3G2|JwF2)v~aFgP>2aN4idEa2Lq+HeM?V!KEF&rv1I%+_8l99~8W_*%7Tn z^?~-SpY9%{-_G;+zFY$Xyo?3pcZ31xYT--w^QZR)_SL`>0rbfy!W72KJ%<5xL^%bU zcM73sQtAjglpywS8}v7?ecaDuniV47^(VZ$Xt_PJOc9qdVld>7w+W_~+c# z2`$xa75(*cDSDVlZ~@2^Fx#B_1h+kbug(TG=qwhu2niR~pcrxvtsU*s+G*`GKGn*l z-bSk^PXvP6&j{PDC(^7qYU$ z^KpMLBnW9jRzZcYY)m+%ZY5ebp{NP5-_w2jQ8tiji`da#%%v|S1p2SQ@vLl0K@J$_Z>l~`onqbq`w zS|WoYLU}Hr?EjO`)68IJXc?SBZ`Wq80^FF@CAW?ZtuHdRE6?GJ9~k-(KTsgtngCTX zNM{>g$rLz5tF*z8FU4jZ$EHxdUFAFAs9VAuIX%q&X61NO=-qt4-D~0sW8}J8|K=MH zkg1G0`942fKMGx3Q9%t_W^3;w6s7 zg&L<>zuRoUlVC#Ls#H^&4$El1?1uR5+@annwg|r|_jH8l>C$`QKkjSvYBK@tUX|cj zPtYV>%W=T_u>u?>3i;{o^ra~J=#?o2 z&b$i!&g#3{VPAKKt|;QHW@JmnHP}wV~)w1mEx1*r#64>@FV;RgO<2 zkhg`)1@wIYLbXzA&lp6f`{mG?;F zYD{CGNSP1)Zf#rT{d^fTQDD9%CLa_@6c~4reqR|pO$K!$Hvif*x4^atm`oHIrSKb; z76ohWs4Hlc1I^m>o67F`~MM+!%+ytGjc>OBPt*|so>mcw8#?iU;`Rw8`^!1uqjTA!V_vFd5B zRZ3=|!tF89t&76$!ut3(x1#7^h@Z17d=5>~+&|wFAnyr`Q(N@EZ3)v)dxa_MpQ7?0X^jbjHGnf+0VMm`++|biP6>fp}-nZOSXm-SA zlB9=k3CqrN5{NN@_n(iil=eA+&XdSnNt6gw;X8;DxTbP+G&u2Ht*Rpn&lj5X+zpVa zQr`LHyHfgHL~D?%g6jTXY3vPp{4>vW#a0(lZl?@}@=pbyYXP|sG}j1jcLdEQDheo+ zQNUX?F5Q#4uLWG)Y6>F{(657Ly%Thn`rT@K|4N7NjPG+AW+*@8c$$|uW*V)%GTvUb zw|T>763-McQB~Ih2>r{D-2pr^3wUh~V4DY!v2>x3ASL!L0zT!zI0y~xE1Aps8~+Y4 ztr-CHu(=`iW5vBSxL3D!QvBO;a38%CWp39`^9$hJE` z=#f~YkF~Kgj|coHz}-eJ{u%ZQRjzy2f+rrtSjSPVZ|1(soMy&ZI-To$fn3DcR6A zMy7xC`6gppKOX%Xzxju~`vX~%gx~qyKa!3$wa`6h`DCgexRb$25;yPbbpx2AE`Joc z*Ui3eI9uB5_w;Lg#hR6|B#jpLX1#-nAI8n`)W^1VUUBzsRj^8HpVd=dY1CgAg_3uq z=kS{z?Ci{(Y`6>Xg1(w0JF@ag-$MrLMul2BKD=&fd=(lOLGrx5HQPi{DQo@6WyoY1L9vn7P}fT31HHE(0$VH-$+C?d?L2vmb3Y zr(g9Pg-LqZZ_-eA>(p`gU;n7csEDHcwMI)FE8879kSe6TR1K>Z-b+`G)O;1VT4Pm^ z6Rc9HDw>@7KD{GPg>zEmDy&(j22&@5BW+4gD$q_BT}zcpv zfZyw@;@2x;I-~BC!HXs*JXVxqABAuJ?}&Sp6m#q3Za6l7FVHWwzb1#{j3UAm~;9>^shc7#!vpu2yne5%~4a+fTi3;U!HrzoCGaUuQ` zII2K9aeF{mg{D67r1fdNgxfvXt5J4l1Qv|cz-_ngli%MhK2u!1Zl%4hAScw|r@rZ9 zk9+od^*un$B-D+J@_o4gZA_VZ2dg^ZtglwBx$9{)N;Ow4frQO#L(Wm@cIDFhY5-?j z8=1FjUslGUH0XQvYPx7Q@EpN|9V206B4-G(-pM`ueF_%i%TB% ziKhzPiBx>fzq;o8qVo#fWfd2o#CB*teXsXvc2L{VS-g`~?h`SmQq#8-bd43N8|%N4 zK|!h?RO>if^eGnLy?xF-uC}^0=1?o&=Raz+etN@q^0m8^ot9HfqO|`n=u^#Rs&Wr0 P00000NkvXXu0mjf?T8#< diff --git a/v3/src/components/App.tsx b/v3/src/components/App.tsx new file mode 100644 index 0000000..7bfc0d1 --- /dev/null +++ b/v3/src/components/App.tsx @@ -0,0 +1,260 @@ +import React, { useEffect } from 'react'; +import { invoke } from '@tauri-apps/api/core'; +import { Settings } from 'lucide-react'; +import { ToolbarSection } from './ToolbarSection'; +import { PresetCard } from './PresetCard'; +import { InstallationCard } from './InstallationCard'; +import { StatusBar } from './StatusBar'; +import { ConsolePanel } from './ConsolePanel'; +import { useAppStore } from '../store/appStore'; + +export const App: React.FC = () => { + const { + installations, + presets, + selectedInstallations, + selectedPreset, + status, + isLoading, + isError, + consoleOutput, + activeTab, + toolbarOpen, + setSelectedInstallations, + setSelectedPreset, + setStatus, + setIsError, + setActiveTab, + setToolbarOpen, + addConsoleOutput, + clearConsole, + refreshInstallations, + refreshPresets, + clearCache + } = useAppStore(); + + useEffect(() => { + refreshInstallations(); + refreshPresets(); + }, [refreshInstallations, refreshPresets]); + + + const handleInstallationSelection = (path: string, selected: boolean) => { + const newSet = new Set(selectedInstallations); + if (selected) { + newSet.add(path); + } else { + newSet.delete(path); + } + setSelectedInstallations(newSet); + }; + + const handlePresetSelection = (uuid: string, selected: boolean) => { + setSelectedPreset(selected ? uuid : null); + }; + + const handlePresetInstall = async (uuid: string) => { + if (selectedInstallations.size === 0) { + setStatus('Please select at least one installation'); + setIsError(true); + return; + } + + try { + const store = useAppStore.getState(); + store.setStatus('Installing preset...'); + store.setIsLoading(true); + store.setIsError(false); + store.addConsoleOutput(`Installing preset ${uuid} to ${selectedInstallations.size} installation(s)`); + + for (const installPath of selectedInstallations) { + await invoke('install_preset', { uuid, installPath }); + store.addConsoleOutput(`Installed to: ${installPath}`); + } + + store.setStatus('Preset installed successfully'); + store.addConsoleOutput('Installation completed successfully'); + // Refresh installations to show updated preset info + await refreshInstallations(); + } catch (error) { + const errorMsg = `Error installing preset: ${error}`; + const store = useAppStore.getState(); + store.setStatus(errorMsg); + store.setIsError(true); + store.addConsoleOutput(errorMsg); + } + }; + + const handleSettings = () => { + addConsoleOutput('Settings clicked - Feature coming soon'); + }; + + const handleHelp = () => { + addConsoleOutput('Help clicked - Feature coming soon'); + }; + + const handleAbout = () => { + addConsoleOutput('About clicked - Feature coming soon'); + }; + + return ( +

+ {/* Top toolbar with popover API */} +
+
+ +
+
+ {/* Menu button to show toolbar */} + + + {/* Toolbar popover */} + +
+
+ + {/* Status bar */} +
+ +
+ + {/* Main content */} +
+ {/* Tab Content */} +
+ {activeTab === 'installations' && ( +
+
+
+

Minecraft Installations

+ {installations.length} found +
+
+
+ {installations.length > 0 ? ( + installations.map((installation) => ( + + )) + ) : ( +
+

No Minecraft installations found

+
+ )} +
+
+ )} + + {activeTab === 'presets' && ( +
+
+
+

Available Presets

+ {presets.length} loaded +
+
+
+ {presets.length > 0 ? ( + presets.map((preset) => ( + + )) + ) : ( +
+

No presets available

+
+ )} +
+
+ )} + + {activeTab === 'actions' && ( +
+
+

Actions

+
+
+ + + +
+
+ )} +
+ +
+ + {/* Fixed Console Panel at bottom */} +
+ +
+
+ ); +}; diff --git a/v3/src/components/ConsolePanel.tsx b/v3/src/components/ConsolePanel.tsx new file mode 100644 index 0000000..c8a4567 --- /dev/null +++ b/v3/src/components/ConsolePanel.tsx @@ -0,0 +1,77 @@ +import React, { useState, useRef, useEffect } from 'react'; +import { ChevronDown, ChevronUp } from 'lucide-react'; + +interface ConsolePanelProps { + output?: string[]; + onClear?: () => void; +} + +export const ConsolePanel: React.FC = ({ + output = [], + onClear, +}) => { + const [isExpanded, setIsExpanded] = useState(false); + const outputRef = useRef(null); + + // Auto-scroll to bottom when new output is added + useEffect(() => { + if (outputRef.current) { + outputRef.current.scrollTop = outputRef.current.scrollHeight; + } + }, [output]); + + // Auto-expand when new output is added + useEffect(() => { + if (output.length > 0 && !isExpanded) { + setIsExpanded(true); + } + }, [output.length]); + + const handleToggle = () => { + setIsExpanded(!isExpanded); + }; + + const handleClear = () => { + onClear?.(); + }; + + return ( +
+
+

+ Console Output +

+ + {isExpanded ? ( + + ) : ( + + )} + +
+ +
+
+ {output.length > 0 ? output.join('\n') : 'No output yet...'} + + +
+
+
+ ); +}; diff --git a/v3/src/components/InstallationCard.tsx b/v3/src/components/InstallationCard.tsx new file mode 100644 index 0000000..9b6d975 --- /dev/null +++ b/v3/src/components/InstallationCard.tsx @@ -0,0 +1,97 @@ +import React from 'react'; + +export interface Installation { + FriendlyName: string; + InstallLocation: string; + Preview: boolean; + installed_preset?: { + uuid: string; + name: string; + installed_at: string; + }; +} + +interface InstallationCardProps { + installation: Installation; + selected?: boolean; + onSelectionChange?: (path: string, selected: boolean) => void; +} + +export const InstallationCard: React.FC = ({ + installation, + selected = false, + onSelectionChange, +}) => { + const handleCheckboxChange = (e: React.ChangeEvent) => { + const isSelected = e.target.checked; + onSelectionChange?.(installation.InstallLocation, isSelected); + }; + + const checkboxId = `install-${installation.InstallLocation.replace(/[^a-zA-Z0-9]/g, '')}`; + + const presetIcon = installation.installed_preset ? ( + {installation.installed_preset.name} { + (e.target as HTMLImageElement).style.display = 'none'; + }} + /> + ) : null; + + return ( +
+
+
+ {presetIcon} +

+ {installation.FriendlyName} +

+
+ {installation.Preview && ( + + Preview + + )} +
+ +

+ {installation.InstallLocation} +

+ + {installation.installed_preset ? ( +

+ Current preset: {installation.installed_preset.name} +

+ ) : ( +

+ No preset installed +

+ )} + +
+ + +
+
+ ); +}; diff --git a/v3/src/components/PresetCard.tsx b/v3/src/components/PresetCard.tsx new file mode 100644 index 0000000..84751a2 --- /dev/null +++ b/v3/src/components/PresetCard.tsx @@ -0,0 +1,66 @@ +import React from 'react'; + +export interface PackInfo { + name: string; + uuid: string; + stub: string; + tonemapping: string; + bloom: string; +} + +interface PresetCardProps { + preset: PackInfo; + selected?: boolean; + onSelectionChange?: (uuid: string, selected: boolean) => void; + onInstall?: (uuid: string) => void; +} + +export const PresetCard: React.FC = ({ + preset, + selected = false, + onSelectionChange, + onInstall, +}) => { + const handleCardClick = (e: React.MouseEvent) => { + if ((e.target as HTMLElement).closest('.install-preset-btn')) return; + + const newSelected = !selected; + onSelectionChange?.(preset.uuid, newSelected); + }; + + const handleInstallClick = (e: React.MouseEvent) => { + e.stopPropagation(); + onInstall?.(preset.uuid); + }; + + return ( +
+
+ {`${preset.name} { + (e.target as HTMLImageElement).style.display = 'none'; + }} + /> +

+ {preset.name} +

+
+ +
+ ); +}; diff --git a/v3/src/components/StatusBar.tsx b/v3/src/components/StatusBar.tsx new file mode 100644 index 0000000..5ea7b1f --- /dev/null +++ b/v3/src/components/StatusBar.tsx @@ -0,0 +1,28 @@ +import React from 'react'; + +interface StatusBarProps { + message?: string; + isError?: boolean; + isLoading?: boolean; +} + +export const StatusBar: React.FC = ({ + message = 'Ready', + isError = false, + isLoading = false, +}) => { + return ( +
+ + {message} + + {isLoading && ( +
+ )} +
+ ); +}; diff --git a/v3/src/components/ToolbarSection.tsx b/v3/src/components/ToolbarSection.tsx new file mode 100644 index 0000000..0995f0d --- /dev/null +++ b/v3/src/components/ToolbarSection.tsx @@ -0,0 +1,71 @@ +import React from 'react'; +import { Settings, HelpCircle, RefreshCw, RefreshCcw, Trash2, Info } from 'lucide-react'; + +interface ToolbarSectionProps { + onSettingsClick?: () => void; + onHelpClick?: () => void; + onRefreshClick?: () => void; + onForceRefreshClick?: () => void; + onClearCacheClick?: () => void; + onAboutClick?: () => void; +} + +export const ToolbarSection: React.FC = ({ + onSettingsClick, + onHelpClick, + onRefreshClick, + onForceRefreshClick, + onClearCacheClick, + onAboutClick, +}) => { + return ( +
+
+ + +
+
+ + + + +
+
+ ); +}; diff --git a/v3/src/components/base-component.ts b/v3/src/components/base-component.ts deleted file mode 100644 index 8139108..0000000 --- a/v3/src/components/base-component.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Base Web Component class with common functionality - */ -export abstract class BaseComponent extends HTMLElement { - protected shadow: ShadowRoot; - - constructor() { - super(); - this.shadow = this.attachShadow({ mode: 'open' }); - } - - protected connectedCallback() { - this.render(); - this.attachEventListeners(); - } - - protected disconnectedCallback() { - this.cleanup(); - } - - protected abstract render(): void; - protected abstract attachEventListeners(): void; - protected cleanup(): void { - // Override in child classes if needed - } - - protected emit(eventName: string, detail?: any) { - this.dispatchEvent(new CustomEvent(eventName, { - detail, - bubbles: true, - composed: true - })); - } - - protected applyExternalStyles() { - // Link to external stylesheet for BEM classes - const link = document.createElement('link'); - link.rel = 'stylesheet'; - link.href = '/src/styles.css'; - this.shadow.appendChild(link); - } -} diff --git a/v3/src/components/console-panel.ts b/v3/src/components/console-panel.ts deleted file mode 100644 index ebcca89..0000000 --- a/v3/src/components/console-panel.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { BaseComponent } from './base-component'; -import { createIcons, ChevronDown, ChevronUp } from 'lucide'; - -export class ConsolePanel extends BaseComponent { - private isExpanded: boolean = false; - private output: string[] = []; - - constructor() { - super(); - } - - protected render() { - this.shadow.innerHTML = ` - -
-

Console Output

- -
-
-
${this.output.join('\n')}
- -
- `; - - // Initialize Lucide icons - createIcons({ - icons: { ChevronDown, ChevronUp }, - attrs: { 'stroke-width': 2, 'width': 16, 'height': 16 } - }); - } - - protected attachEventListeners() { - const header = this.shadow.querySelector('.console-header'); - const clearBtn = this.shadow.querySelector('.console-clear-btn'); - - header?.addEventListener('click', () => { - this.toggle(); - }); - - clearBtn?.addEventListener('click', () => { - this.clear(); - }); - } - - public addOutput(message: string) { - const timestamp = new Date().toLocaleTimeString(); - this.output.push(`[${timestamp}] ${message}`); - this.updateOutput(); - - // Auto-expand if collapsed - if (!this.isExpanded) { - this.toggle(); - } - } - - public clear() { - this.output = []; - this.updateOutput(); - } - - private toggle() { - this.isExpanded = !this.isExpanded; - const panel = this.shadow.querySelector('.console-panel'); - const arrow = this.shadow.querySelector('.console-arrow'); - - if (this.isExpanded) { - panel?.classList.remove('collapsed'); - panel?.classList.add('expanded'); - arrow?.setAttribute('data-lucide', 'chevron-up'); - } else { - panel?.classList.remove('expanded'); - panel?.classList.add('collapsed'); - arrow?.setAttribute('data-lucide', 'chevron-down'); - } - - // Re-render icons - createIcons({ - icons: { ChevronDown, ChevronUp }, - attrs: { 'stroke-width': 2, 'width': 16, 'height': 16 } - }); - } - - private updateOutput() { - const outputEl = this.shadow.querySelector('.console-output'); - if (outputEl) { - outputEl.textContent = this.output.join('\n'); - outputEl.scrollTop = outputEl.scrollHeight; - } - } -} - -customElements.define('console-panel', ConsolePanel); diff --git a/v3/src/components/installation-card.ts b/v3/src/components/installation-card.ts deleted file mode 100644 index a194148..0000000 --- a/v3/src/components/installation-card.ts +++ /dev/null @@ -1,183 +0,0 @@ -import { BaseComponent } from './base-component'; - -export interface Installation { - FriendlyName: string; - InstallLocation: string; - Preview: boolean; - installed_preset?: { - uuid: string; - name: string; - installed_at: string; - }; -} - -export class InstallationCard extends BaseComponent { - private installation: Installation | null = null; - private isSelected: boolean = false; - - static get observedAttributes() { - return ['selected']; - } - - constructor() { - super(); - } - - set data(installation: Installation) { - this.installation = installation; - this.render(); - } - - get selected() { - return this.isSelected; - } - - set selected(value: boolean) { - this.isSelected = value; - if (value) { - this.setAttribute('selected', ''); - } else { - this.removeAttribute('selected'); - } - this.render(); - } - - protected render() { - if (!this.installation) return; - - const presetIcon = this.installation.installed_preset - ? `${this.installation.installed_preset.name}` - : ''; - - const checkboxId = `install-${this.installation.InstallLocation.replace(/[^a-zA-Z0-9]/g, '')}`; - - this.shadow.innerHTML = ` - -
-
-
- ${presetIcon} -

${this.installation.FriendlyName}

-
- ${this.installation.Preview ? 'Preview' : ''} -
-

${this.installation.InstallLocation}

- ${this.installation.installed_preset ? - `

Current preset: ${this.installation.installed_preset.name}

` : - '

No preset installed

' - } -
- - -
-
- `; - } - - protected attachEventListeners() { - const checkbox = this.shadow.querySelector('.installation-checkbox'); - checkbox?.addEventListener('change', (e) => { - const target = e.target as HTMLInputElement; - this.isSelected = target.checked; - if (this.installation) { - this.emit('selection-changed', { - path: this.installation.InstallLocation, - selected: this.isSelected - }); - } - }); - } - - attributeChangedCallback(name: string, _oldValue: string, newValue: string) { - if (name === 'selected') { - this.isSelected = newValue !== null; - this.render(); - } - } -} - -customElements.define('installation-card', InstallationCard); diff --git a/v3/src/components/preset-card.ts b/v3/src/components/preset-card.ts deleted file mode 100644 index 75c4608..0000000 --- a/v3/src/components/preset-card.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { BaseComponent } from './base-component'; - -export interface PackInfo { - name: string; - uuid: string; - stub: string; - tonemapping: string; - bloom: string; -} - -export class PresetCard extends BaseComponent { - private preset: PackInfo; - private isSelected: boolean = false; - - static get observedAttributes() { - return ['selected']; - } - - constructor() { - super(); - } - - set data(preset: PackInfo) { - this.preset = preset; - this.render(); - } - - get selected() { - return this.isSelected; - } - - set selected(value: boolean) { - this.isSelected = value; - if (value) { - this.setAttribute('selected', ''); - } else { - this.removeAttribute('selected'); - } - this.render(); - } - - protected render() { - if (!this.preset) return; - - this.shadow.innerHTML = ` - -
-
- ${this.preset.name} icon -

${this.preset.name}

-
- -
- `; - } - - protected attachEventListeners() { - const card = this.shadow.querySelector('.preset-card'); - const installBtn = this.shadow.querySelector('.install-preset-btn'); - - card?.addEventListener('click', (e) => { - if ((e.target as HTMLElement).classList.contains('install-preset-btn')) return; - - this.isSelected = !this.isSelected; - this.emit('selection-changed', { - uuid: this.preset.uuid, - selected: this.isSelected - }); - }); - - installBtn?.addEventListener('click', (e) => { - e.stopPropagation(); - this.emit('install-preset', { uuid: this.preset.uuid }); - }); - } - - attributeChangedCallback(name: string, oldValue: string, newValue: string) { - if (name === 'selected') { - this.isSelected = newValue !== null; - this.render(); - } - } -} - -customElements.define('preset-card', PresetCard); diff --git a/v3/src/components/status-bar.ts b/v3/src/components/status-bar.ts deleted file mode 100644 index 0b5303b..0000000 --- a/v3/src/components/status-bar.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { BaseComponent } from './base-component'; - -export class StatusBar extends BaseComponent { - private message: string = 'Ready'; - private isError: boolean = false; - private isLoading: boolean = false; - - constructor() { - super(); - } - - protected render() { - this.shadow.innerHTML = ` - -
- ${this.message} -
-
- `; - } - - protected attachEventListeners() { - // No event listeners needed for status bar - } - - public setStatus(message: string, isError: boolean = false) { - this.message = message; - this.isError = isError; - this.updateStatus(); - } - - public showProgress() { - this.isLoading = true; - this.updateProgress(); - } - - public hideProgress() { - this.isLoading = false; - this.updateProgress(); - } - - private updateStatus() { - const messageEl = this.shadow.querySelector('.status-message'); - if (messageEl) { - messageEl.textContent = this.message; - messageEl.className = `status-message ${this.isError ? 'error' : ''}`; - } - } - - private updateProgress() { - const spinner = this.shadow.querySelector('.progress-spinner') as HTMLElement; - if (spinner) { - spinner.style.display = this.isLoading ? 'block' : 'none'; - } - } -} - -customElements.define('status-bar', StatusBar); diff --git a/v3/src/components/toolbar-section.ts b/v3/src/components/toolbar-section.ts deleted file mode 100644 index 1e8a465..0000000 --- a/v3/src/components/toolbar-section.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { BaseComponent } from './base-component'; -import { createIcons, Settings, HelpCircle, RefreshCw, RefreshCcw, Trash2, Info } from 'lucide'; - -export class ToolbarSection extends BaseComponent { - constructor() { - super(); - } - - protected render() { - this.shadow.innerHTML = ` - -
-
- - -
-
- - - - -
-
- `; - - // Initialize Lucide icons - this.initializeIcons(); - } - - protected attachEventListeners() { - const buttons = { - 'settings-btn': 'settings-clicked', - 'help-btn': 'help-clicked', - 'refresh-btn': 'refresh-clicked', - 'force-refresh-btn': 'force-refresh-clicked', - 'clear-cache-btn': 'clear-cache-clicked', - 'about-btn': 'about-clicked' - }; - - Object.entries(buttons).forEach(([id, event]) => { - const btn = this.shadow.getElementById(id); - btn?.addEventListener('click', () => this.emit(event)); - }); - } - - private initializeIcons() { - createIcons({ - icons: { - Settings, - HelpCircle, - RefreshCw, - RefreshCcw, - Trash2, - Info - }, - attrs: { - 'stroke-width': 2, - 'width': 16, - 'height': 16 - } - }); - } -} - -customElements.define('toolbar-section', ToolbarSection); diff --git a/v3/src/icons.ts b/v3/src/icons.ts deleted file mode 100644 index 7e2e6f1..0000000 --- a/v3/src/icons.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { createElement } from 'lucide'; - -// Icon mappings -export const icons = { - // Navigation & UI - settings: 'settings', - help: 'help-circle', - close: 'x', - menu: 'menu', - chevronDown: 'chevron-down', - chevronUp: 'chevron-up', - - // Actions - refresh: 'refresh-cw', - forceRefresh: 'refresh-ccw', - trash: 'trash-2', - info: 'info', - download: 'download', - upload: 'upload', - save: 'save', - folder: 'folder', - file: 'file', - package: 'package', - - // Status - check: 'check', - x: 'x-circle', - alert: 'alert-triangle', - - // Tools - wrench: 'wrench', - shield: 'shield', - database: 'database', - terminal: 'terminal', - - // Gaming - gamepad: 'gamepad-2', - monitor: 'monitor', - cpu: 'cpu', - - // File operations - fileText: 'file-text', - filePlus: 'file-plus', - archive: 'archive', - hardDrive: 'hard-drive', - - // System - power: 'power', - link: 'link', - externalLink: 'external-link', - search: 'search', - zap: 'zap', - layers: 'layers' -}; - -/** - * Create a Lucide icon element - * @param name - The name of the icon from the icons mapping - * @param options - Optional configuration for the icon - * @returns SVG string for the icon - */ -export function createIcon(name: keyof typeof icons, options: { - size?: number, - class?: string, - strokeWidth?: number -} = {}): string { - const iconName = icons[name]; - const size = options.size || 16; - const className = options.class || 'icon'; - const strokeWidth = options.strokeWidth || 2; - - const icon = createElement({ - name: iconName, - size, - strokeWidth, - class: className - }); - - return icon; -} - -/** - * Replace an element's content with a Lucide icon - * @param element - The DOM element to replace content in - * @param iconName - The name of the icon from the icons mapping - * @param options - Optional configuration for the icon - */ -export function replaceWithIcon( - element: HTMLElement, - iconName: keyof typeof icons, - options: { size?: number, strokeWidth?: number } = {} -): void { - const icon = createIcon(iconName, { - ...options, - class: element.className || 'icon' - }); - element.innerHTML = icon; -} - -/** - * Initialize all icons in the document - */ -export function initializeIcons(): void { - // Settings and help buttons - const settingsBtn = document.querySelector('#settings-btn .icon'); - if (settingsBtn) replaceWithIcon(settingsBtn as HTMLElement, 'settings'); - - const helpBtn = document.querySelector('#help-btn .icon'); - if (helpBtn) replaceWithIcon(helpBtn as HTMLElement, 'help'); - - // Toolbar buttons - const refreshBtns = document.querySelectorAll('.btn-icon'); - refreshBtns.forEach((btn) => { - const text = btn.textContent?.trim(); - const element = btn as HTMLElement; - - switch(text) { - case '⟳': - replaceWithIcon(element, 'refresh'); - break; - case '🔄': - replaceWithIcon(element, 'forceRefresh'); - break; - case '🗑': - replaceWithIcon(element, 'trash'); - break; - case 'ℹ': - replaceWithIcon(element, 'info'); - break; - case '⚙': - replaceWithIcon(element, 'settings'); - break; - } - }); - - // Console arrows - const consoleArrow = document.getElementById('console-arrow'); - if (consoleArrow) { - const isExpanded = consoleArrow.textContent === '▲'; - replaceWithIcon(consoleArrow, isExpanded ? 'chevronUp' : 'chevronDown'); - } -} - -/** - * Get icon HTML string for embedding - */ -export function getIconHtml(name: keyof typeof icons, size = 16): string { - return createIcon(name, { size }); -} diff --git a/v3/src/main.ts b/v3/src/main.ts deleted file mode 100644 index 47f0c42..0000000 --- a/v3/src/main.ts +++ /dev/null @@ -1,657 +0,0 @@ -import './styles.css'; -import { invoke } from '@tauri-apps/api/core'; -import { open, message } from '@tauri-apps/plugin-dialog'; -import { createIcons, RefreshCw, RefreshCcw, Trash2, Info, Settings, HelpCircle, ChevronDown, ChevronUp } from 'lucide'; - -// Import Web Components -import './components/installation-card'; -import './components/preset-card'; -import './components/console-panel'; -import './components/status-bar'; -import './components/toolbar-section'; -import type { Installation, InstallationCard } from './components/installation-card'; -import type { PackInfo, PresetCard } from './components/preset-card'; -import type { ConsolePanel } from './components/console-panel'; -import type { StatusBar } from './components/status-bar'; -import type { ToolbarSection } from './components/toolbar-section'; - -// Application state -class AppState { - installations: Installation[] = []; - presets: PackInfo[] = []; - selectedInstallations: Set = new Set(); - selectedPreset: string | null = null; -} - -// Main application controller -class BetterRTXInstaller { - private state: AppState; - private installationsContainer: HTMLElement | null = null; - private presetsContainer: HTMLElement | null = null; - private consolePanel: ConsolePanel | null = null; - private statusBar: StatusBar | null = null; - private dropZone: HTMLElement | null = null; - private actionsSidepanel: HTMLElement | null = null; - private sidepanelOverlay: HTMLElement | null = null; - private mobileMenuToggle: HTMLElement | null = null; - - constructor() { - this.state = new AppState(); - } - - async init() { - // Get DOM elements - this.installationsContainer = document.getElementById('installations-list'); - this.presetsContainer = document.getElementById('presets-list'); - this.consolePanel = document.getElementById('console-panel') as ConsolePanel; - this.statusBar = document.getElementById('status-bar') as StatusBar; - - // Initialize Lucide icons - createIcons({ - icons: { - RefreshCw, RefreshCcw, Trash2, Info, Settings, HelpCircle, ChevronDown, ChevronUp - } - }); - - // Initialize components - this.attachEventListeners(); - - // Load initial data - await this.refreshInstallations(); - await this.refreshPresets(); - } - - private updateInstallationsCount() { - const count = document.getElementById('installations-count'); - if (count) { - count.textContent = `${this.state.installations.length} found`; - } - } - - private updatePresetsCount() { - const count = document.getElementById('presets-count'); - if (count) { - count.textContent = `${this.state.presets.length} available`; - } - } - - private async setupComponents() { - // Create and insert status bar - const statusContainer = document.getElementById('status-container'); - if (statusContainer) { - this.statusBar = document.createElement('status-bar') as StatusBar; - statusContainer.appendChild(this.statusBar); - } - - // Create and insert console panel - const consoleContainer = document.getElementById('console-container'); - if (consoleContainer) { - this.consolePanel = document.createElement('console-panel') as ConsolePanel; - consoleContainer.appendChild(this.consolePanel); - } - - // Create and insert toolbar - const toolbarContainer = document.getElementById('toolbar-container'); - if (toolbarContainer) { - const toolbar = document.createElement('toolbar-section') as ToolbarSection; - toolbarContainer.appendChild(toolbar); - - // Listen to toolbar events - toolbar.addEventListener('settings-clicked', () => this.handleSettings()); - toolbar.addEventListener('help-clicked', () => this.handleHelp()); - toolbar.addEventListener('refresh-clicked', () => this.refreshInstallations()); - toolbar.addEventListener('force-refresh-clicked', () => this.refreshPresets(true)); - toolbar.addEventListener('clear-cache-clicked', () => this.clearCache()); - toolbar.addEventListener('about-clicked', () => this.handleAbout()); - } - - // Get containers - this.installationsContainer = document.getElementById('installations-list'); - this.presetsContainer = document.getElementById('presets-list'); - this.dropZone = document.getElementById('drop-zone'); - this.actionsSidepanel = document.getElementById('actions-sidepanel'); - this.sidepanelOverlay = document.getElementById('sidepanel-overlay'); - this.mobileMenuToggle = document.getElementById('mobile-menu-toggle'); - } - - private attachEventListeners() { - // Get additional DOM elements - this.dropZone = document.getElementById('drop-zone'); - this.actionsSidepanel = document.getElementById('actions-sidepanel'); - this.sidepanelOverlay = document.getElementById('sidepanel-overlay'); - this.mobileMenuToggle = document.getElementById('mobile-menu-toggle'); - - // Mobile menu toggle - this.mobileMenuToggle?.addEventListener('click', () => this.toggleMobileMenu()); - document.getElementById('close-sidepanel')?.addEventListener('click', () => this.closeSidepanel()); - this.sidepanelOverlay?.addEventListener('click', () => this.closeSidepanel()); - - // Action buttons (both sidepanel and desktop versions) - const actionHandlers = { - 'install-rtpack': () => this.installRtpackFile(), - 'install-materials': () => this.installMaterialFiles(), - 'backup-selected': () => this.backupSelected(), - 'install-dlss': () => this.installDlss(), - 'update-options': () => this.updateOptions(), - 'register-rtpack': () => this.registerRtpack(), - 'locate-iobit': () => this.locateIobit(), - 'uninstall': () => this.uninstallPackage() - }; - - Object.entries(actionHandlers).forEach(([id, handler]) => { - document.getElementById(id)?.addEventListener('click', handler); - document.getElementById(`${id}-desktop`)?.addEventListener('click', handler); - document.getElementById(`${id}-popover`)?.addEventListener('click', handler); - }); - - // Special popover actions - document.getElementById('check-iobit-popover')?.addEventListener('click', async () => { - this.addToConsole('Checking IObit Unlocker status...'); - try { - const cacheInfo = await invoke('get_cache_info'); - await message(`Cache Info:\n${JSON.stringify(cacheInfo, null, 2)}`, { title: 'Cache Information' }); - } catch (error) { - await message(String(error), { title: 'IObit Unlocker', kind: 'error' }); - } - }); - - // Navigation buttons - document.querySelectorAll('.nav-btn').forEach(btn => { - btn.addEventListener('click', (e) => this.handleNavigation(e)); - }); - - // Drag and drop - this.dropZone?.addEventListener('dragover', (e: DragEvent) => this.handleDragOver(e)); - this.dropZone?.addEventListener('dragleave', (e: DragEvent) => this.handleDragLeave(e)); - this.dropZone?.addEventListener('drop', (e: DragEvent) => this.handleDrop(e)); - } - - private setStatus(message: string, isError = false) { - // Update status bar component - if (this.statusBar) { - this.statusBar.setStatus(message, isError); - } - } - - private showProgress() { - this.statusBar?.showProgress(); - } - - private hideProgress() { - this.statusBar?.hideProgress(); - } - - private addToConsole(text: string) { - if (this.consolePanel) { - this.consolePanel.addOutput(text); - } - } - - - async refreshInstallations() { - try { - this.setStatus('Loading Minecraft installations...'); - this.showProgress(); - this.state.installations = await invoke('list_installations'); - this.renderInstallations(); - this.setStatus(`Found ${this.state.installations.length} Minecraft installation(s)`); - } catch (error) { - this.setStatus(`Error loading installations: ${error}`, true); - } finally { - this.hideProgress(); - } - } - - private renderInstallations() { - if (!this.installationsContainer) return; - - const countElement = document.getElementById('installations-count'); - if (countElement) { - countElement.textContent = `${this.state.installations.length} found`; - } - - if (this.state.installations.length === 0) { - this.installationsContainer.innerHTML = ` -
-

No Minecraft installations found.

-

Make sure Minecraft is installed from the Microsoft Store.

-
- `; - return; - } - - // Clear container - this.installationsContainer.innerHTML = ''; - - // Create installation cards - this.state.installations.forEach(installation => { - const card = document.createElement('installation-card') as InstallationCard; - card.data = installation; - card.selected = this.state.selectedInstallations.has(installation.InstallLocation); - - // Listen for selection changes - card.addEventListener('selection-changed', ((e: CustomEvent) => { - if (e.detail.selected) { - this.state.selectedInstallations.add(e.detail.path); - } else { - this.state.selectedInstallations.delete(e.detail.path); - } - }) as EventListener); - - this.installationsContainer!.appendChild(card); - }); - } - - async refreshPresets(forceRefresh = false) { - try { - this.setStatus('Loading available presets...'); - this.showProgress(); - this.state.presets = await invoke('list_presets', { forceRefresh }); - this.renderPresets(); - this.setStatus(`Loaded ${this.state.presets.length} preset(s)`); - } catch (error) { - this.setStatus(`Error loading presets: ${error}`, true); - } finally { - this.hideProgress(); - } - } - - private renderPresets() { - if (!this.presetsContainer) return; - - // Clear container - this.presetsContainer.innerHTML = ''; - - // Create preset cards - this.state.presets.forEach(preset => { - const card = document.createElement('preset-card') as PresetCard; - card.data = preset; - card.selected = this.state.selectedPreset === preset.uuid; - - // Listen for selection changes - card.addEventListener('selection-changed', ((e: CustomEvent) => { - const { uuid, selected } = e.detail; - if (selected) { - this.state.selectedPreset = uuid; - // Deselect other presets - this.state.presets.forEach(p => { - if (p.uuid !== uuid) { - const otherCard = this.presetsContainer?.querySelector(`preset-card[data-uuid="${p.uuid}"]`); - if (otherCard) { - otherCard.removeAttribute('selected'); - } - } - }); - } else { - this.state.selectedPreset = null; - } - }) as EventListener); - - // Listen for install events - card.addEventListener('install-preset', ((e: CustomEvent) => { - const { uuid } = e.detail; - this.installPreset(uuid); - }) as EventListener); - - this.presetsContainer!.appendChild(card); - }); - } - - private async installPreset(uuid: string) { - if (this.state.selectedInstallations.size === 0) { - await message('Please select at least one Minecraft installation first.', { - title: 'No Installation Selected', - kind: 'warning' - }); - return; - } - - const preset = this.state.presets.find(p => p.uuid === uuid); - - try { - this.addToConsole(`Installing preset: ${preset?.name || uuid}`); - this.addToConsole(`To installations: ${Array.from(this.state.selectedInstallations).join(', ')}`); - - const result = await invoke('download_and_install_pack', { - uuid: uuid, - selectedNames: Array.from(this.state.selectedInstallations) - }); - - this.addToConsole(`Installation complete: ${result}`); - this.setStatus('Preset installed successfully!'); - await this.refreshInstallations(); - } catch (error) { - const errorMsg = String(error); - this.addToConsole(`Error: ${errorMsg}`); - this.setStatus(`Installation failed: ${errorMsg}`, true); - - if (errorMsg.includes('IObit Unlocker not found')) { - await message( - 'IObit Unlocker is required to install presets to Microsoft Store Minecraft installations.\n\nPlease download and install IObit Unlocker from iobit.com, then try again.', - { title: 'IObit Unlocker Required', kind: 'error' } - ); - } else if (errorMsg.includes('Access is denied')) { - await message( - 'Access denied when copying files. This usually means:\n\n1. IObit Unlocker is needed for Microsoft Store installations\n2. The app needs to run as administrator\n3. Antivirus software is blocking the operation', - { title: 'Access Denied', kind: 'error' } - ); - } - } finally { - this.hideProgress(); - } - } - - private async installRtpackFile() { - if (this.state.selectedInstallations.size === 0) { - await message('Please select at least one Minecraft installation first.', { - title: 'No Installation Selected', - kind: 'warning' - }); - return; - } - - try { - const file = await open({ - title: 'Select .rtpack file', - filters: [{ name: 'RTX Pack', extensions: ['rtpack'] }] - }); - - if (!file) return; - - this.addToConsole(`Installing .rtpack file: ${file}`); - this.addToConsole(`To installations: ${Array.from(this.state.selectedInstallations).join(', ')}`); - const result = await invoke('install_rtpack', { - rtpackPath: file, - installPaths: Array.from(this.state.selectedInstallations) - }); - this.addToConsole(`Installation complete: ${result}`); - this.setStatus('.rtpack file installed successfully!'); - } catch (error) { - this.addToConsole(`Error: ${error}`); - this.setStatus(`Installation failed: ${error}`, true); - } finally { - this.hideProgress(); - } - } - - private async installMaterialFiles() { - if (this.state.selectedInstallations.size === 0) { - await message('Please select at least one Minecraft installation first.', { - title: 'No Installation Selected', - kind: 'warning' - }); - return; - } - - try { - const files = await open({ - title: 'Select material files', - filters: [{ name: 'Material Files', extensions: ['bin'] }], - multiple: true - }); - - if (!files || files.length === 0) return; - - this.setStatus('Installing material files...'); - this.showProgress(); - await invoke('install_materials', { - materialPaths: files, - selectedNames: Array.from(this.state.selectedInstallations) - }); - this.setStatus('Material files installed successfully!'); - await this.refreshInstallations(); - } catch (error) { - this.setStatus(`Error installing materials: ${error}`, true); - } finally { - this.hideProgress(); - } - } - - private async backupSelected() { - if (this.state.selectedInstallations.size === 0) { - await message('Please select at least one Minecraft installation first.', { - title: 'No Installation Selected', - kind: 'warning' - }); - return; - } - - try { - const dir = await open({ - title: 'Select backup destination', - directory: true - }); - - if (!dir) return; - - this.setStatus('Creating backups...'); - this.showProgress(); - const created = await invoke('backup_selected', { - destDir: dir, - selectedNames: Array.from(this.state.selectedInstallations) - }); - this.setStatus(`Created ${created.length} backup file(s)`); - } catch (error) { - this.setStatus(`Error creating backup: ${error}`, true); - } finally { - this.hideProgress(); - } - } - - private async installDlss() { - if (this.state.selectedInstallations.size === 0) { - await message('Please select at least one Minecraft installation first.', { - title: 'No Installation Selected', - kind: 'warning' - }); - return; - } - - try { - this.setStatus('Installing DLSS...'); - this.showProgress(); - await invoke('install_dlss_for_selected', { - selectedNames: Array.from(this.state.selectedInstallations) - }); - this.setStatus('DLSS installed successfully!'); - await this.refreshInstallations(); - } catch (error) { - this.setStatus(`Error installing DLSS: ${error}`, true); - } finally { - this.hideProgress(); - } - } - - private async updateOptions() { - if (this.state.selectedInstallations.size === 0) { - await message('Please select at least one Minecraft installation first.', { - title: 'No Installation Selected', - kind: 'warning' - }); - return; - } - - try { - this.setStatus('Updating options...'); - this.showProgress(); - await invoke('update_options_for_selected', { - selectedNames: Array.from(this.state.selectedInstallations) - }); - this.setStatus('Options updated successfully!'); - } catch (error) { - this.setStatus(`Error updating options: ${error}`, true); - } finally { - this.hideProgress(); - } - } - - private async registerRtpack() { - try { - this.setStatus('Registering .rtpack extension...'); - this.showProgress(); - await invoke('register_rtpack_extension'); - this.setStatus('.rtpack extension registered successfully!'); - } catch (error) { - this.setStatus(`Error registering extension: ${error}`, true); - } finally { - this.hideProgress(); - } - } - - private async locateIobit() { - try { - const file = await open({ - title: 'Locate IObit Unlocker', - filters: [ - { name: 'Executable Files', extensions: ['exe'] }, - { name: 'Shortcuts', extensions: ['lnk'] }, - { name: 'All Files', extensions: ['*'] } - ] - }); - - if (!file) return; - - this.setStatus('Setting IObit Unlocker path...'); - this.showProgress(); - - const result = await invoke('set_iobit_path', { path: file }); - this.setStatus(result); - - await message('IObit Unlocker path has been set successfully!', { - title: 'Success', - kind: 'info' - }); - } catch (error) { - this.setStatus(`Error setting IObit path: ${error}`, true); - await message(String(error), { - title: 'Error', - kind: 'error' - }); - } finally { - this.hideProgress(); - } - } - - private async uninstallPackage() { - try { - this.setStatus('Uninstalling...'); - this.showProgress(); - await invoke('uninstall_package'); - this.setStatus('Uninstalled successfully!'); - - // Reload lists to reflect changes - this.state.selectedInstallations.clear(); - this.state.selectedPreset = null; - await this.refreshInstallations(); - await this.refreshPresets(); - } catch (error) { - this.setStatus(`Error during uninstall: ${error}`, true); - } finally { - this.hideProgress(); - } - } - - private async clearCache() { - try { - this.setStatus('Clearing cache...'); - await invoke('clear_cache'); - this.setStatus('Cache cleared successfully'); - } catch (error) { - this.setStatus(`Error clearing cache: ${error}`, true); - } - } - - private async handleSettings() { - this.addToConsole('Settings clicked - Feature coming soon'); - } - - private async handleHelp() { - this.addToConsole('Help clicked - Feature coming soon'); - } - - private async handleAbout() { - this.addToConsole('About clicked - Feature coming soon'); - } - - private handleNavigation(e: Event) { - const target = e.target as HTMLButtonElement; - const section = target.dataset.section; - - // Update active state - document.querySelectorAll('.nav-btn').forEach(b => b.classList.remove('active')); - target.classList.add('active'); - - // Show/hide only the main content sections - const mainSections = ['installations-section', 'presets-section', 'actions-section']; - mainSections.forEach(id => { - const el = document.getElementById(id); - if (el) (el as HTMLElement).style.display = 'none'; - }); - - if (section === 'installations') { - document.getElementById('installations-section')!.style.display = 'block'; - } else if (section === 'presets') { - document.getElementById('presets-section')!.style.display = 'block'; - } else if (section === 'actions') { - document.getElementById('actions-section')!.style.display = 'block'; - } - } - - private handleDragOver(e: DragEvent) { - e.preventDefault(); - e.stopPropagation(); - this.dropZone?.classList.add('drag-over'); - } - - private handleDragLeave(e: DragEvent) { - e.preventDefault(); - e.stopPropagation(); - this.dropZone?.classList.remove('drag-over'); - } - - private async handleDrop(e: DragEvent) { - e.preventDefault(); - e.stopPropagation(); - this.dropZone?.classList.remove('drag-over'); - - if (this.state.selectedInstallations.size === 0) { - await message('Please select at least one Minecraft installation first.', { - title: 'No Installation Selected', - kind: 'warning' - }); - return; - } - - await message( - 'Drag and drop is not fully supported yet. Please use the "Install .rtpack File" or "Install Material Files" buttons instead.', - { title: 'Feature Not Available', kind: 'info' } - ); - } - - private toggleMobileMenu() { - if (this.actionsSidepanel?.classList.contains('open')) { - this.closeSidepanel(); - } else { - this.openSidepanel(); - } - } - - private openSidepanel() { - this.actionsSidepanel?.classList.add('open'); - this.sidepanelOverlay?.classList.add('visible'); - this.mobileMenuToggle?.classList.add('active'); - } - - private closeSidepanel() { - this.actionsSidepanel?.classList.remove('open'); - this.sidepanelOverlay?.classList.remove('visible'); - this.mobileMenuToggle?.classList.remove('active'); - } - -} - -// Initialize the application -window.addEventListener('DOMContentLoaded', async () => { - const app = new BetterRTXInstaller(); - await app.init(); -}); diff --git a/v3/src/main.tsx b/v3/src/main.tsx new file mode 100644 index 0000000..5cc72e4 --- /dev/null +++ b/v3/src/main.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import { App } from './components/App'; +import '@fontsource-variable/martian-mono'; +import './styles.css'; + +// Mount React app +const root = ReactDOM.createRoot(document.getElementById('root')!); +root.render( + + + +); diff --git a/v3/src/store/appStore.ts b/v3/src/store/appStore.ts new file mode 100644 index 0000000..f68515a --- /dev/null +++ b/v3/src/store/appStore.ts @@ -0,0 +1,149 @@ +import { create } from 'zustand'; +import { invoke } from '@tauri-apps/api/core'; + +export interface Installation { + FriendlyName: string; + InstallLocation: string; + Preview: boolean; + installed_preset?: { + uuid: string; + name: string; + installed_at: string; + }; +} + +export interface PackInfo { + name: string; + uuid: string; + stub: string; + tonemapping: string; + bloom: string; +} + +interface AppState { + // State + installations: Installation[]; + presets: PackInfo[]; + selectedInstallations: Set; + selectedPreset: string | null; + status: string; + isLoading: boolean; + isError: boolean; + consoleOutput: string[]; + activeTab: 'installations' | 'presets' | 'actions'; + toolbarOpen: boolean; + + // Actions + setInstallations: (installations: Installation[]) => void; + setPresets: (presets: PackInfo[]) => void; + setSelectedInstallations: (selected: Set) => void; + setSelectedPreset: (preset: string | null) => void; + setStatus: (status: string) => void; + setIsLoading: (loading: boolean) => void; + setIsError: (error: boolean) => void; + setActiveTab: (tab: 'installations' | 'presets' | 'actions') => void; + setToolbarOpen: (open: boolean) => void; + addConsoleOutput: (message: string) => void; + clearConsole: () => void; + + // Async actions + refreshInstallations: () => Promise; + refreshPresets: (forceRefresh?: boolean) => Promise; + clearCache: () => Promise; +} + +export const useAppStore = create((set, get) => ({ + // Initial state + installations: [], + presets: [], + selectedInstallations: new Set(), + selectedPreset: null, + status: 'Ready', + isLoading: false, + isError: false, + consoleOutput: [], + activeTab: 'installations', + toolbarOpen: false, + + // Setters + setInstallations: (installations) => set({ installations }), + setPresets: (presets) => set({ presets }), + setSelectedInstallations: (selectedInstallations) => set({ selectedInstallations }), + setSelectedPreset: (selectedPreset) => set({ selectedPreset }), + setStatus: (status) => set({ status }), + setIsLoading: (isLoading) => set({ isLoading }), + setIsError: (isError) => set({ isError }), + setActiveTab: (activeTab) => set({ activeTab }), + setToolbarOpen: (toolbarOpen) => set({ toolbarOpen }), + + addConsoleOutput: (message) => { + const timestamp = new Date().toLocaleTimeString(); + set((state) => ({ + consoleOutput: [...state.consoleOutput, `[${timestamp}] ${message}`] + })); + }, + + clearConsole: () => set({ consoleOutput: [] }), + + // Async actions + refreshInstallations: async () => { + const { setStatus, setIsLoading, setIsError, addConsoleOutput, setInstallations } = get(); + + try { + setStatus('Loading Minecraft installations...'); + setIsLoading(true); + setIsError(false); + addConsoleOutput('Scanning for Minecraft installations...'); + + const data = await invoke('list_installations'); + setInstallations(data); + setStatus(`Found ${data.length} Minecraft installation(s)`); + addConsoleOutput(`Found ${data.length} installations`); + } catch (error) { + const errorMsg = `Error loading installations: ${error}`; + setStatus(errorMsg); + setIsError(true); + addConsoleOutput(errorMsg); + } finally { + setIsLoading(false); + } + }, + + refreshPresets: async (forceRefresh = false) => { + const { setStatus, setIsLoading, setIsError, addConsoleOutput, setPresets } = get(); + + try { + setStatus('Loading RTX presets...'); + setIsLoading(true); + setIsError(false); + addConsoleOutput('Fetching RTX presets...'); + + const data = await invoke('list_presets', { forceRefresh }); + setPresets(data); + setStatus(`Loaded ${data.length} RTX preset(s)`); + addConsoleOutput(`Loaded ${data.length} presets`); + } catch (error) { + const errorMsg = `Error loading presets: ${error}`; + setStatus(errorMsg); + setIsError(true); + addConsoleOutput(errorMsg); + } finally { + setIsLoading(false); + } + }, + + clearCache: async () => { + const { addConsoleOutput, setStatus } = get(); + + try { + addConsoleOutput('Clearing cache...'); + await invoke('clear_cache'); + addConsoleOutput('Cache cleared successfully'); + setStatus('Cache cleared'); + } catch (error) { + const errorMsg = `Error clearing cache: ${error}`; + addConsoleOutput(errorMsg); + setStatus(errorMsg); + } + }, +})); diff --git a/v3/src/styles.css b/v3/src/styles.css index 81d6350..e832c2c 100644 --- a/v3/src/styles.css +++ b/v3/src/styles.css @@ -2,42 +2,38 @@ @import "./theme.css"; /* Custom utilities - must be at top level, not nested in @layer */ -@utility panel { @apply rounded-lg border shadow-sm; background-color: var(--app-panel); border-color: var(--app-border); } -@utility panel__header { @apply border-b px-4 py-3; border-color: var(--app-border); } +@utility panel { @apply rounded-lg border shadow-sm bg-app-panel border-app-border; } +@utility panel__header { @apply border-b px-4 py-3 border-app-border; } @utility panel__title { @apply text-base font-semibold; } @utility panel__body { @apply p-4; } @utility button { @apply inline-flex items-center justify-center gap-2 rounded-md border-2 px-4 py-2 text-sm font-medium transition-all select-none disabled:pointer-events-none disabled:opacity-50 cursor-pointer; - color: var(--app-fg); - border-color: var(--app-border); - background-color: color-mix(in oklab, var(--app-panel) 96%, transparent); - box-shadow: 0 3px 0 0 color-mix(in oklab, var(--app-border) 80%, black 20%); + @apply text-app-fg border-app-border bg-app-panel/95; + box-shadow: 0 3px 0 0 color-mix(in oklab, var(--color-app-border) 80%, black 20%); transform: translateY(0); &:hover { - background-color: color-mix(in oklab, var(--app-panel) 88%, transparent); + @apply bg-app-panel/90; transform: translateY(1px); - box-shadow: 0 2px 0 0 color-mix(in oklab, var(--app-border) 80%, black 20%); + box-shadow: 0 2px 0 0 color-mix(in oklab, var(--color-app-border) 80%, black 20%); } &:active { transform: translateY(3px); - box-shadow: 0 0 0 0 color-mix(in oklab, var(--app-border) 80%, black 20%); + box-shadow: 0 0 0 0 color-mix(in oklab, var(--color-app-border) 80%, black 20%); } } @utility button--primary { - color: white; - background-color: var(--brand-accent-600); - border-color: var(--brand-accent-500); - box-shadow: 0 3px 0 0 color-mix(in oklab, var(--brand-accent-600) 80%, black 20%); + @apply text-white bg-brand-accent-600 border-brand-accent; + box-shadow: 0 3px 0 0 color-mix(in oklab, var(--color-brand-accent-600) 80%, black 20%); &:hover { - background-color: var(--brand-accent-500); + @apply bg-brand-accent; transform: translateY(1px); - box-shadow: 0 2px 0 0 color-mix(in oklab, var(--brand-accent-600) 80%, black 20%); + box-shadow: 0 2px 0 0 color-mix(in oklab, var(--color-brand-accent-600) 80%, black 20%); } &:active { transform: translateY(3px); - box-shadow: 0 0 0 0 color-mix(in oklab, var(--brand-accent-600) 80%, black 20%); + box-shadow: 0 0 0 0 color-mix(in oklab, var(--color-brand-accent-600) 80%, black 20%); } } @@ -53,22 +49,20 @@ } @utility button--danger { - color: white; - background-color: var(--danger-600); - border-color: var(--danger-700); - box-shadow: 0 3px 0 0 color-mix(in oklab, var(--danger-700) 80%, black 20%); + @apply text-white bg-danger-600 border-danger-700; + box-shadow: 0 3px 0 0 color-mix(in oklab, var(--color-danger-700) 80%, black 20%); &:hover { - background-color: var(--danger-700); + @apply bg-danger-700; transform: translateY(1px); - box-shadow: 0 2px 0 0 color-mix(in oklab, var(--danger-700) 80%, black 20%); + box-shadow: 0 2px 0 0 color-mix(in oklab, var(--color-danger-700) 80%, black 20%); } &:active { transform: translateY(3px); - box-shadow: 0 0 0 0 color-mix(in oklab, var(--danger-700) 80%, black 20%); + box-shadow: 0 0 0 0 color-mix(in oklab, var(--color-danger-700) 80%, black 20%); } } -@utility badge { @apply inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-semibold; border-color: var(--app-border); } +@utility badge { @apply inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-semibold border-app-border; } @utility hover-lift { @apply transition-transform; @@ -84,28 +78,9 @@ } body { - @apply antialiased; - background-color: var(--app-bg, var(--color-minecraft-slate-900)); - color: var(--app-fg, var(--color-minecraft-slate-50)); - font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); + @apply antialiased font-sans bg-app-bg text-app-fg; } - :root { - /* App semantic tokens backed by theme colors */ - --app-bg: var(--color-minecraft-slate-900); - --app-panel: var(--color-minecraft-slate-800); - --app-elev: var(--color-minecraft-slate-700); - --app-fg: var(--color-minecraft-slate-50); - --app-muted: var(--color-minecraft-slate-300); - --app-border: var(--color-minecraft-slate-700); - --brand-accent-500: var(--color-minecraft-blue-500); - --brand-accent-600: var(--color-minecraft-blue-600); - --success-500: var(--color-minecraft-green-500); - --success-600: var(--color-minecraft-green-600); - --danger-600: var(--color-minecraft-red-600); - --danger-700: var(--color-minecraft-red-700); - --danger-800: var(--color-minecraft-red-800); - } } @layer components { @@ -116,9 +91,8 @@ } .app__header { - @apply sticky top-0 z-40 flex items-center gap-3 border-b px-4; - background-color: color-mix(in oklab, var(--app-bg) 85%, black 15%); - border-color: var(--app-border); + @apply sticky top-0 z-40 flex items-center gap-3 border-b px-4 border-app-border; + background-color: color-mix(in oklab, var(--color-app-bg) 85%, black 15%); } .app__brand { @@ -126,21 +100,16 @@ } .app__badge { - @apply inline-flex items-center rounded px-2 py-0.5 text-xs font-semibold border; - border-color: var(--app-border); - background-color: var(--success-600); - color: white; + @apply inline-flex items-center rounded px-2 py-0.5 text-xs font-semibold border border-app-border bg-success-600 text-white; } .app__body { @apply grid; - grid-template-columns: var(--width-sidenav) 1fr; + grid-template-columns: 16rem 1fr; } .app__sidebar { - @apply hidden md:flex md:flex-col gap-1 border-r p-4; - background-color: var(--app-panel); - border-color: var(--app-border); + @apply hidden md:flex md:flex-col gap-1 border-r p-4 bg-app-panel border-app-border; } .app__content { @@ -151,66 +120,52 @@ .nav { @apply flex flex-col gap-1; } .nav__link { - @apply w-full text-left rounded-md px-3 py-2 text-sm border transition-colors; - color: var(--app-fg); - border-color: transparent; - background-color: color-mix(in oklab, var(--app-panel) 96%, transparent); + @apply w-full text-left rounded-md px-3 py-2 text-sm border transition-colors text-app-fg border-transparent bg-app-panel/95; } .nav__link:hover { - border-color: var(--app-border); - background-color: color-mix(in oklab, var(--app-panel) 88%, transparent); + @apply border-app-border bg-app-panel/90; } .nav__link--active { - border-color: var(--brand-accent-500); - outline: 2px solid color-mix(in oklab, var(--brand-accent-500) 35%, transparent); - background-color: color-mix(in oklab, var(--brand-accent-500) 20%, var(--app-panel)); + @apply border-brand-accent bg-brand-accent/20; + outline: 2px solid color-mix(in oklab, var(--color-brand-accent) 35%, transparent); } /* Panels / cards - utilities moved to top level */ /* Sections */ .section { @apply space-y-2; } - .section__title { @apply text-xs font-semibold uppercase tracking-wider; color: var(--app-muted); } - .divider { @apply my-4 h-px w-full; background-color: var(--app-border); } + .section__title { @apply text-xs font-semibold uppercase tracking-wider text-app-muted; } + .divider { @apply my-4 h-px w-full bg-app-border; } /* Buttons - utilities moved to top level */ /* Form controls */ .field { @apply grid gap-1; } - .field__label { @apply text-xs font-medium; color: var(--app-muted); } + .field__label { @apply text-xs font-medium text-app-muted; } .field__control { @apply relative; } - .field__input { @apply w-full rounded-md border bg-transparent px-3 py-2 text-sm outline-none focus:ring-2; border-color: var(--app-border); color: var(--app-fg); } - .field__input:focus { --tw-ring-color: var(--brand-accent-500); border-color: var(--brand-accent-500); } + .field__input { @apply w-full rounded-md border bg-transparent px-3 py-2 text-sm outline-none focus:ring-2 border-app-border text-app-fg; } + .field__input:focus { @apply ring-brand-accent border-brand-accent; } /* Badges - utilities moved to top level */ - .badge--on { color: black; background-color: var(--color-minecraft-green-300); border-color: var(--color-minecraft-green-400); } -} - -@layer utilities { - .surface { background-color: var(--app-panel); border-color: var(--app-border); } + .badge--on { @apply text-black bg-minecraft-green-300 border-minecraft-green-400; } } -/* Map existing markup in index.html to styled components */ @layer components { /* Top toolbar */ .top-toolbar { - @apply sticky top-0 z-50 flex h-12 items-center justify-between border-b px-3 md:px-4; - background-color: color-mix(in oklab, var(--app-bg) 85%, black 15%); - border-color: var(--app-border); + @apply sticky top-0 z-50 flex h-12 items-center justify-between border-b px-3 md:px-4 border-app-border; + background-color: color-mix(in oklab, var(--color-app-bg) 85%, black 15%); } .app-title { @apply text-sm md:text-base font-semibold; } .toolbar-nav { @apply flex items-center gap-1; } .nav-btn { - @apply rounded-md border px-3 py-1.5 text-xs md:text-sm font-medium transition-colors; - color: var(--app-fg); - border-color: transparent; - background-color: color-mix(in oklab, var(--app-panel) 96%, transparent); + @apply rounded-md border px-3 py-1.5 text-xs md:text-sm font-medium transition-colors text-app-fg border-transparent bg-app-panel/95; } - .nav-btn:hover { border-color: var(--app-border); background-color: color-mix(in oklab, var(--app-panel) 88%, transparent); } - .nav-btn.active { border-color: var(--brand-accent-500); outline: 2px solid color-mix(in oklab, var(--brand-accent-500) 35%, transparent); background-color: color-mix(in oklab, var(--brand-accent-500) 20%, var(--app-panel)); } - .toolbar-icon-btn { @apply grid h-8 w-8 place-items-center rounded-md border text-sm; border-color: var(--app-border); } + .nav-btn:hover { @apply border-app-border bg-app-panel/90; } + .nav-btn.active { @apply border-brand-accent bg-brand-accent/20; outline: 2px solid color-mix(in oklab, var(--color-brand-accent) 35%, transparent); } + .toolbar-icon-btn { @apply grid h-8 w-8 place-items-center rounded-md border text-sm border-app-border; } /* Layout */ .app-layout { @apply relative; } @@ -219,14 +174,12 @@ .app-header p { @apply text-sm; } /* Slideout sidepanel (mobile) */ - .mobile-menu-toggle { @apply md:hidden absolute left-3 top-14 z-40 grid h-10 w-10 place-items-center rounded-md border; border-color: var(--app-border); background-color: var(--app-panel); } - .mobile-menu-toggle > span { @apply block h-0.5 w-5 rounded; background-color: var(--app-fg); } + .mobile-menu-toggle { @apply md:hidden absolute left-3 top-14 z-40 grid h-10 w-10 place-items-center rounded-md border border-app-border bg-app-panel; } + .mobile-menu-toggle > span { @apply block h-0.5 w-5 rounded bg-app-fg; } .mobile-menu-toggle > span + span { @apply mt-1; } .actions-sidepanel { - @apply fixed left-0 top-0 z-50 h-full w-72 -translate-x-full transform border-r p-4 transition-transform md:hidden; - background-color: var(--app-panel); - border-color: var(--app-border); + @apply fixed left-0 top-0 z-50 h-full w-72 -translate-x-full transform border-r p-4 transition-transform md:hidden bg-app-panel border-app-border; } .actions-sidepanel.open { @apply translate-x-0; } .sidepanel-header { @apply mb-3 flex items-center justify-between; } @@ -255,12 +208,12 @@ /* Installations grid/cards */ .installations-grid { @apply grid gap-3 md:grid-cols-2 lg:grid-cols-3; } .installation-card { @apply panel hover-lift; } - .installation-card.selected { border-color: var(--brand-accent-500); outline: 2px solid color-mix(in oklab, var(--brand-accent-500) 35%, transparent); } - .installation-header { @apply flex items-center justify-between border-b px-4 py-3; border-color: var(--app-border); } + .installation-card.selected { @apply border-brand-accent; outline: 2px solid color-mix(in oklab, var(--color-brand-accent) 35%, transparent); } + .installation-header { @apply flex items-center justify-between border-b px-4 py-3 border-app-border; } .installation-title { @apply flex items-center gap-2; } .installation-title h3 { @apply text-sm font-semibold; } .preset-icon { @apply size-6 rounded-sm object-cover; } - .preview-badge { @apply badge; background-color: var(--brand-accent-600); color: white; border-color: color-mix(in oklab, var(--brand-accent-600) 70%, black 30%); } + .preview-badge { @apply badge bg-brand-accent-600 text-white; border-color: color-mix(in oklab, var(--color-brand-accent-600) 70%, black 30%); } .installation-path { @apply px-4 pt-2 text-xs text-muted break-all; } .installed-preset-info, .no-preset-info { @apply px-4 text-xs; } .no-preset-info { @apply text-muted; } @@ -270,111 +223,54 @@ /* Presets */ .presets-grid { @apply grid gap-3 sm:grid-cols-2 lg:grid-cols-3; } .preset-card { @apply panel hover-lift cursor-pointer; } - .preset-card.selected { border-color: var(--brand-accent-500); outline: 2px solid color-mix(in oklab, var(--brand-accent-500) 35%, transparent); } - .preset-header { @apply flex items-center gap-3 border-b px-4 py-3; border-color: var(--app-border); } + .preset-card.selected { @apply border-brand-accent; outline: 2px solid color-mix(in oklab, var(--color-brand-accent) 35%, transparent); } + .preset-header { @apply flex items-center gap-3 border-b px-4 py-3 border-app-border; } .install-preset-btn { @apply m-4 button button--primary; } /* Empty state */ - .empty-state { @apply panel p-6 text-center text-sm; color: var(--app-muted); } + .empty-state { @apply panel p-6 text-center text-sm text-app-muted; } /* Drag & drop */ - .drop-zone { @apply my-6 grid h-28 place-items-center rounded-md border-2 border-dashed; border-color: var(--app-border); background-color: color-mix(in oklab, var(--app-panel) 92%, transparent); } - .drop-zone.drag-over { background-color: color-mix(in oklab, var(--brand-accent-500) 10%, var(--app-panel)); border-color: var(--brand-accent-500); } + .drop-zone { @apply my-6 grid h-28 place-items-center rounded-md border-2 border-dashed border-app-border bg-app-panel/90; } + .drop-zone.drag-over { @apply border-brand-accent bg-brand-accent/10; } /* Status & progress */ .status { @apply text-sm; } - .status.error { color: var(--danger-600); } + .status.error { @apply text-danger-600; } .progress-container { @apply mt-2 h-2 w-full overflow-hidden rounded bg-black/30; } - .progress-bar { @apply h-full w-1/2 bg-[color:var(--brand-accent-600)]; } + .progress-bar { @apply h-full w-1/2 bg-brand-accent-600; } /* Console */ - .console-header { @apply mt-6 flex cursor-pointer items-center justify-between rounded-t-md border px-4 py-2; border-color: var(--app-border); background-color: var(--app-panel); } - .console-panel { @apply overflow-hidden rounded-b-md border; border-color: var(--app-border); background-color: var(--app-panel); max-height: 18rem; transition: max-height .2s ease; } + .console-header { @apply mt-6 flex cursor-pointer items-center justify-between border px-4 py-2 border-app-border bg-app-panel; } + .console-panel { @apply overflow-hidden rounded-b-md border border-app-border bg-app-panel; max-height: 18rem; transition: max-height .2s ease; } .console-panel.collapsed { max-height: 0; border-top-width: 0; } .console-panel.expanded { max-height: 18rem; } .console-output { @apply h-56 whitespace-pre-wrap overflow-auto p-3 text-xs font-mono; } .console-clear-btn { @apply m-2 self-end button; } + /* Toolbar menu button */ + .toolbar-menu-btn { @apply button button--ghost p-2; } + /* Popovers */ - .settings-popover, .help-popover { @apply rounded-md border shadow-lg; border-color: var(--app-border); background-color: var(--app-panel); color: var(--app-fg); } - .popover-header { @apply flex items-center justify-between border-b px-4 py-2; border-color: var(--app-border); } + .settings-popover, .help-popover { @apply rounded-md border shadow-lg border-app-border bg-app-panel text-app-fg; } + + .toolbar-popover { + @apply rounded-md border shadow-lg border-app-border bg-app-panel text-app-fg fixed top-16 right-1 z-1000 min-w-80; + } + .popover-header { @apply flex items-center justify-between border-b px-4 py-2 border-app-border; } .popover-content { @apply p-4 space-y-4; } .setting-group > label { @apply block text-xs font-semibold text-muted mb-1; } .setting-buttons { @apply flex flex-wrap gap-2; } .setting-btn { @apply button; } .setting-btn.danger { @apply button--danger; } - /* Web Component BEM Classes */ - /* These classes are used within Web Component shadow DOM */ - - /* Installation Card Component */ - .wc-installation-card { - @apply rounded-lg border p-4 transition-all duration-200; - background-color: var(--app-panel); - border-color: var(--app-border); - } - - .wc-installation-card.selected { - border-color: var(--brand-accent-600); - background: color-mix(in oklab, var(--brand-accent-600) 5%, var(--app-panel)); - } - - /* Preset Card Component */ - .wc-preset-card { - @apply rounded-lg border p-4 transition-all duration-200 cursor-pointer; - background-color: var(--app-panel); - border-color: var(--app-border); - } - - .wc-preset-card:hover { - @apply -translate-y-0.5 shadow-lg; - border-color: var(--brand-accent-500); - } - - .wc-preset-card.selected { - border-color: var(--brand-accent-600); - background: color-mix(in oklab, var(--brand-accent-600) 5%, var(--app-panel)); - } - /* Console Panel Component */ - .wc-console-panel { - @apply rounded-b-lg overflow-hidden transition-all duration-300; - background-color: var(--app-bg); - border: 1px solid var(--app-border); - border-top: none; - } - - .wc-console-header { - @apply flex justify-between items-center px-4 py-3 rounded-t-lg cursor-pointer select-none; - background-color: var(--app-panel); - border: 1px solid var(--app-border); - } - - /* Status Bar Component */ - .wc-status-bar { - @apply flex items-center gap-3 px-4 py-3 rounded-lg; - background-color: var(--app-panel); - border: 1px solid var(--app-border); - } - - /* Toolbar Component */ - .wc-toolbar { - @apply flex justify-between items-center p-4 rounded-lg; - background-color: var(--app-panel); - border: 1px solid var(--app-border); - } - - .wc-toolbar-btn { - @apply inline-flex items-center gap-2 px-4 py-2 rounded-md text-sm cursor-pointer transition-all duration-200; - background-color: var(--app-bg); - border: 1px solid var(--app-border); - } - - .wc-toolbar-btn:hover { - background-color: var(--app-border); + .console-container { + @apply font-mono; } - .wc-toolbar-btn:active { - @apply scale-95; + .console-output { + @apply font-mono; + font-feature-settings: "liga" 0, "calt" 0; } } \ No newline at end of file diff --git a/v3/src/theme.css b/v3/src/theme.css index fd92d1e..b21a6c1 100644 --- a/v3/src/theme.css +++ b/v3/src/theme.css @@ -1,7 +1,8 @@ @import "tailwindcss"; +@import "@fontsource-variable/inter"; @theme { - --font-mono: var(--font-monocraft), monospace; - + --font-mono: 'Martian Mono Variable', 'Martian Mono', var(--font-monocraft), monospace; + --font-sans: 'Inter Variable', Inter, Helvetica, Arial, system-ui, sans-serif; --height-app: calc(100vh - (--spacing(16))); --width-app: calc(100vw - (--spacing(64))); @@ -65,4 +66,20 @@ --color-minecraft-red-950: oklch(25.35% 0.0735 23.99deg); --color-muted: oklch(60% 0.1719 23.41deg); + + /* App semantic color tokens */ + --color-app-bg: var(--color-minecraft-slate-900); + --color-app-panel: var(--color-minecraft-slate-800); + --color-app-elev: var(--color-minecraft-slate-700); + --color-app-fg: var(--color-minecraft-slate-50); + --color-app-muted: var(--color-minecraft-slate-300); + --color-app-border: var(--color-minecraft-slate-700); + --color-brand-accent: var(--color-minecraft-blue-500); + --color-brand-accent-600: var(--color-minecraft-blue-600); + --color-success: var(--color-minecraft-green-500); + --color-success-600: var(--color-minecraft-green-600); + --color-danger: var(--color-minecraft-red-600); + --color-danger-600: var(--color-minecraft-red-600); + --color-danger-700: var(--color-minecraft-red-700); + --color-danger-800: var(--color-minecraft-red-800); } \ No newline at end of file diff --git a/v3/tsconfig.json b/v3/tsconfig.json index 75abdef..95d1426 100644 --- a/v3/tsconfig.json +++ b/v3/tsconfig.json @@ -6,6 +6,10 @@ "lib": ["ES2020", "DOM", "DOM.Iterable"], "skipLibCheck": true, + /* React */ + "jsx": "react-jsx", + "jsxImportSource": "react", + /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, diff --git a/v3/vite.config.ts b/v3/vite.config.ts index 9893d41..6ee3450 100644 --- a/v3/vite.config.ts +++ b/v3/vite.config.ts @@ -1,4 +1,5 @@ import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; import tailwindcss from "@tailwindcss/vite"; const host = process.env.TAURI_DEV_HOST; @@ -27,5 +28,5 @@ export default defineConfig(async () => ({ ignored: ["**/src-tauri/**"], }, }, - plugins: [tailwindcss()], + plugins: [react(), tailwindcss()], })); From 79e7b0f7593c1d90cfee756dd49f9301783bf368 Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Sat, 16 Aug 2025 07:44:23 -0500 Subject: [PATCH 07/38] ci: add Tauri build workflow and configuration rules for Windows app --- .github/workflows/tauri.yml | 63 +++++++++++++++++++++++++++++++++++++ .windsurf/rules/tauri.md | 9 ++++++ v3/src/assets/tauri.svg | 6 ---- 3 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/tauri.yml create mode 100644 .windsurf/rules/tauri.md delete mode 100644 v3/src/assets/tauri.svg diff --git a/.github/workflows/tauri.yml b/.github/workflows/tauri.yml new file mode 100644 index 0000000..3929261 --- /dev/null +++ b/.github/workflows/tauri.yml @@ -0,0 +1,63 @@ +name: Build Tauri App + +on: + push: + branches: [ main, master ] + paths: [ 'v3/**' ] + pull_request: + branches: [ main, master ] + paths: [ 'v3/**' ] + workflow_dispatch: + +jobs: + build-tauri: + runs-on: windows-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Rust + uses: dtolnay/rust-toolchain@stable + + - name: Rust cache + uses: swatinem/rust-cache@v2 + with: + workspaces: './v3/src-tauri -> target' + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: Install frontend dependencies + working-directory: ./v3 + run: bun install + + - name: Cache frontend dependencies + uses: actions/cache@v4 + with: + path: | + ./v3/node_modules + ~/.bun/install/cache + key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }} + restore-keys: | + ${{ runner.os }}-bun- + + - name: Build frontend + working-directory: ./v3 + run: bun run build + + - name: Build Tauri app + uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + projectPath: ./v3 + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: tauri-app-windows + path: | + ./v3/src-tauri/target/release/bundle/ + if-no-files-found: warn \ No newline at end of file diff --git a/.windsurf/rules/tauri.md b/.windsurf/rules/tauri.md new file mode 100644 index 0000000..144d4a3 --- /dev/null +++ b/.windsurf/rules/tauri.md @@ -0,0 +1,9 @@ +--- +trigger: always_on +--- + +# Project Rules — BetterRTX Installer (Tauri v2) + +- Use **Tauri v2** APIs and docs; prefer NSIS installer on Windows. +- Frontend: React + TS; strict mode; Tailwind CSS v4; keep UI edits isolated. Reference Tailwind @docs +- Rust core: small commands with `#[tauri::command]`; pure helpers. \ No newline at end of file diff --git a/v3/src/assets/tauri.svg b/v3/src/assets/tauri.svg deleted file mode 100644 index 31b62c9..0000000 --- a/v3/src/assets/tauri.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - From 973d316ac1a6ddf7b80ea0264ced49652205de87 Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Sat, 16 Aug 2025 08:19:33 -0500 Subject: [PATCH 08/38] upd: Improve styles --- .windsurf/rules/typescript.md | 37 +++++++++++ v3/bun.lock | 28 +++++++++ v3/package.json | 4 ++ v3/public/locales/en/translation.json | 30 +++++++++ v3/src/components/App.tsx | 86 +++++++++++--------------- v3/src/components/ConsolePanel.tsx | 7 ++- v3/src/components/InstallationCard.tsx | 32 +++++----- v3/src/components/PresetIcon.tsx | 12 ++++ v3/src/components/StatusBar.tsx | 62 +++++++++++++------ v3/src/i18n.ts | 25 ++++++++ v3/src/main.tsx | 1 + v3/src/store/appStore.ts | 36 +---------- v3/src/store/statusStore.ts | 25 ++++++++ v3/src/styles.css | 27 ++++++-- v3/src/theme.css | 3 +- 15 files changed, 287 insertions(+), 128 deletions(-) create mode 100644 .windsurf/rules/typescript.md create mode 100644 v3/public/locales/en/translation.json create mode 100644 v3/src/components/PresetIcon.tsx create mode 100644 v3/src/i18n.ts create mode 100644 v3/src/store/statusStore.ts diff --git a/.windsurf/rules/typescript.md b/.windsurf/rules/typescript.md new file mode 100644 index 0000000..f87f3c0 --- /dev/null +++ b/.windsurf/rules/typescript.md @@ -0,0 +1,37 @@ +--- +trigger: glob +globs: **/*.ts +--- + +# General Code Style & Formatting +- Use English for all code and documentation. +- Always declare the type of each variable and function (parameters and return value). +- Avoid using any. +- Create necessary types. +- Use JSDoc to document public classes and methods. +- Don't leave blank lines within a function. +- One export per file. + +# Naming Conventions +- Use PascalCase for classes. +- Use camelCase for variables, functions, and methods. +- Use kebab-case for file and directory names. +- Use UPPERCASE for environment variables. +- Avoid magic numbers and define constants. + +# Functions & Logic +- Keep functions short and single-purpose (<20 lines). +- Avoid deeply nested blocks by: +- Using early returns. +- Extracting logic into utility functions. +- Use higher-order functions (map, filter, reduce) to simplify logic. +- Use arrow functions for simple cases (<3 instructions), named functions otherwise. +- Use default parameter values instead of null/undefined checks. +- Use RO-RO (Receive Object, Return Object) for passing and returning multiple parameters. + +# Data Handling +- Avoid excessive use of primitive types; encapsulate data in composite types. +- Avoid placing validation inside functions—use classes with internal validation instead. +- Prefer immutability for data: +- Use readonly for immutable properties. +- Use as const for literals that never change. \ No newline at end of file diff --git a/v3/bun.lock b/v3/bun.lock index 2411ab7..62b4359 100644 --- a/v3/bun.lock +++ b/v3/bun.lock @@ -10,9 +10,13 @@ "@tauri-apps/api": "^2", "@tauri-apps/plugin-dialog": "^2", "@tauri-apps/plugin-opener": "^2", + "i18next": "^25.3.6", + "i18next-browser-languagedetector": "^8.2.0", + "i18next-http-backend": "^3.0.2", "lucide-react": "^0.539.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-i18next": "^15.6.1", "tailwindcss": "^4.1.12", "zustand": "^5.0.7", }, @@ -61,6 +65,8 @@ "@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw=="], + "@babel/runtime": ["@babel/runtime@7.28.3", "", {}, "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA=="], + "@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], "@babel/traverse": ["@babel/traverse@7.28.3", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", "@babel/types": "^7.28.2", "debug": "^4.3.1" } }, "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ=="], @@ -263,6 +269,8 @@ "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + "cross-fetch": ["cross-fetch@4.0.0", "", { "dependencies": { "node-fetch": "^2.6.12" } }, "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g=="], + "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], "debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], @@ -285,6 +293,14 @@ "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + "html-parse-stringify": ["html-parse-stringify@3.0.1", "", { "dependencies": { "void-elements": "3.1.0" } }, "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg=="], + + "i18next": ["i18next@25.3.6", "", { "dependencies": { "@babel/runtime": "^7.27.6" }, "peerDependencies": { "typescript": "^5" }, "optionalPeers": ["typescript"] }, "sha512-dThZ0CTCM3sUG/qS0ZtQYZQcUI6DtBN8yBHK+SKEqihPcEYmjVWh/YJ4luic73Iq6Uxhp6q7LJJntRK5+1t7jQ=="], + + "i18next-browser-languagedetector": ["i18next-browser-languagedetector@8.2.0", "", { "dependencies": { "@babel/runtime": "^7.23.2" } }, "sha512-P+3zEKLnOF0qmiesW383vsLdtQVyKtCNA9cjSoKCppTKPQVfKd2W8hbVo5ZhNJKDqeM7BOcvNoKJOjpHh4Js9g=="], + + "i18next-http-backend": ["i18next-http-backend@3.0.2", "", { "dependencies": { "cross-fetch": "4.0.0" } }, "sha512-PdlvPnvIp4E1sYi46Ik4tBYh/v/NbYfFFgTjkwFl0is8A18s7/bx9aXqsrOax9WUbeNS6mD2oix7Z0yGGf6m5g=="], + "jiti": ["jiti@2.5.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w=="], "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], @@ -333,6 +349,8 @@ "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], + "node-releases": ["node-releases@2.0.19", "", {}, "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="], "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], @@ -345,6 +363,8 @@ "react-dom": ["react-dom@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw=="], + "react-i18next": ["react-i18next@15.6.1", "", { "dependencies": { "@babel/runtime": "^7.27.6", "html-parse-stringify": "^3.0.1" }, "peerDependencies": { "i18next": ">= 23.2.3", "react": ">= 16.8.0", "typescript": "^5" }, "optionalPeers": ["typescript"] }, "sha512-uGrzSsOUUe2sDBG/+FJq2J1MM+Y4368/QW8OLEKSFvnDflHBbZhSd1u3UkW0Z06rMhZmnB/AQrhCpYfE5/5XNg=="], + "react-refresh": ["react-refresh@0.17.0", "", {}, "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ=="], "rollup": ["rollup@4.46.2", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.46.2", "@rollup/rollup-android-arm64": "4.46.2", "@rollup/rollup-darwin-arm64": "4.46.2", "@rollup/rollup-darwin-x64": "4.46.2", "@rollup/rollup-freebsd-arm64": "4.46.2", "@rollup/rollup-freebsd-x64": "4.46.2", "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", "@rollup/rollup-linux-arm-musleabihf": "4.46.2", "@rollup/rollup-linux-arm64-gnu": "4.46.2", "@rollup/rollup-linux-arm64-musl": "4.46.2", "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", "@rollup/rollup-linux-ppc64-gnu": "4.46.2", "@rollup/rollup-linux-riscv64-gnu": "4.46.2", "@rollup/rollup-linux-riscv64-musl": "4.46.2", "@rollup/rollup-linux-s390x-gnu": "4.46.2", "@rollup/rollup-linux-x64-gnu": "4.46.2", "@rollup/rollup-linux-x64-musl": "4.46.2", "@rollup/rollup-win32-arm64-msvc": "4.46.2", "@rollup/rollup-win32-ia32-msvc": "4.46.2", "@rollup/rollup-win32-x64-msvc": "4.46.2", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg=="], @@ -363,12 +383,20 @@ "tinyglobby": ["tinyglobby@0.2.14", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ=="], + "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], + "typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], "update-browserslist-db": ["update-browserslist-db@1.1.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw=="], "vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], + "void-elements": ["void-elements@3.1.0", "", {}, "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w=="], + + "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], + + "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], + "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], "zustand": ["zustand@5.0.7", "", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["@types/react", "immer", "react", "use-sync-external-store"] }, "sha512-Ot6uqHDW/O2VdYsKLLU8GQu8sCOM1LcoE8RwvLv9uuRT9s6SOHCKs0ZEOhxg+I1Ld+A1Q5lwx+UlKXXUoCZITg=="], diff --git a/v3/package.json b/v3/package.json index cf00697..62bb08c 100644 --- a/v3/package.json +++ b/v3/package.json @@ -16,9 +16,13 @@ "@tauri-apps/api": "^2", "@tauri-apps/plugin-dialog": "^2", "@tauri-apps/plugin-opener": "^2", + "i18next": "^25.3.6", + "i18next-browser-languagedetector": "^8.2.0", + "i18next-http-backend": "^3.0.2", "lucide-react": "^0.539.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-i18next": "^15.6.1", "tailwindcss": "^4.1.12", "zustand": "^5.0.7" }, diff --git a/v3/public/locales/en/translation.json b/v3/public/locales/en/translation.json new file mode 100644 index 0000000..09346f1 --- /dev/null +++ b/v3/public/locales/en/translation.json @@ -0,0 +1,30 @@ +{ + "welcome": "Welcome to the BetterRTX Installer", + "installations_title": "Minecraft Installations", + "status_select_installation_warning": "Please select at least one installation", + "status_installing_preset": "Installing preset...", + "log_installing_preset": "Installing preset {{uuid}} to {{count}} installation(s)", + "log_installed_to": "Installed to: {{installPath}}", + "status_install_success": "Preset installed successfully", + "log_install_complete": "Installation completed successfully", + "status_install_error": "Error installing preset: {{error}}", + "log_settings_clicked": "Settings clicked - Feature coming soon", + "log_help_clicked": "Help clicked - Feature coming soon", + "log_about_clicked": "About clicked - Feature coming soon", + "tab_installations": "Installations", + "tab_presets": "Presets", + "tab_actions": "Actions", + "toolbar_options_label": "Toolbar options", + "installations_found_count": "{{count}} found", + "installations_none_found": "No Minecraft installations found", + "presets_title": "Available Presets", + "presets_loaded_count": "{{count}} loaded", + "presets_none_available": "No presets available", + "actions_title": "Actions", + "action_install_rtpack_title": "Install .rtpack File", + "action_install_rtpack_desc": "Install a preset from a local .rtpack file", + "action_install_materials_title": "Install Material Files", + "action_install_materials_desc": "Install individual material files", + "action_backup_title": "Backup Selected", + "action_backup_desc": "Create backups of selected installations" +} diff --git a/v3/src/components/App.tsx b/v3/src/components/App.tsx index 7bfc0d1..a3c473e 100644 --- a/v3/src/components/App.tsx +++ b/v3/src/components/App.tsx @@ -1,29 +1,28 @@ import React, { useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; import { invoke } from '@tauri-apps/api/core'; import { Settings } from 'lucide-react'; import { ToolbarSection } from './ToolbarSection'; import { PresetCard } from './PresetCard'; import { InstallationCard } from './InstallationCard'; -import { StatusBar } from './StatusBar'; +import { StatusBarContainer } from './StatusBar'; import { ConsolePanel } from './ConsolePanel'; import { useAppStore } from '../store/appStore'; +import { useStatusStore } from '../store/statusStore'; export const App: React.FC = () => { + const { t } = useTranslation(); + const { addMessage } = useStatusStore(); const { installations, presets, selectedInstallations, selectedPreset, - status, - isLoading, - isError, consoleOutput, activeTab, toolbarOpen, setSelectedInstallations, setSelectedPreset, - setStatus, - setIsError, setActiveTab, setToolbarOpen, addConsoleOutput, @@ -55,46 +54,40 @@ export const App: React.FC = () => { const handlePresetInstall = async (uuid: string) => { if (selectedInstallations.size === 0) { - setStatus('Please select at least one installation'); - setIsError(true); + addMessage({ message: t('status_select_installation_warning'), type: 'error' }); return; } try { - const store = useAppStore.getState(); - store.setStatus('Installing preset...'); - store.setIsLoading(true); - store.setIsError(false); - store.addConsoleOutput(`Installing preset ${uuid} to ${selectedInstallations.size} installation(s)`); + addMessage({ message: t('status_installing_preset'), type: 'loading' }); + addConsoleOutput(t('log_installing_preset', { uuid, count: selectedInstallations.size })); for (const installPath of selectedInstallations) { await invoke('install_preset', { uuid, installPath }); - store.addConsoleOutput(`Installed to: ${installPath}`); + addConsoleOutput(t('log_installed_to', { installPath })); } - store.setStatus('Preset installed successfully'); - store.addConsoleOutput('Installation completed successfully'); + addMessage({ message: t('status_install_success'), type: 'success' }); + addConsoleOutput(t('log_install_complete')); // Refresh installations to show updated preset info await refreshInstallations(); } catch (error) { - const errorMsg = `Error installing preset: ${error}`; - const store = useAppStore.getState(); - store.setStatus(errorMsg); - store.setIsError(true); - store.addConsoleOutput(errorMsg); + const errorMsg = t('status_install_error', { error }); + addMessage({ message: errorMsg, type: 'error' }); + addConsoleOutput(errorMsg); } }; const handleSettings = () => { - addConsoleOutput('Settings clicked - Feature coming soon'); + addConsoleOutput(t('log_settings_clicked')); }; const handleHelp = () => { - addConsoleOutput('Help clicked - Feature coming soon'); + addConsoleOutput(t('log_help_clicked')); }; const handleAbout = () => { - addConsoleOutput('About clicked - Feature coming soon'); + addConsoleOutput(t('log_about_clicked')); }; return ( @@ -107,19 +100,19 @@ export const App: React.FC = () => { className={`nav-btn ${activeTab === 'installations' ? 'active' : ''}`} onClick={() => setActiveTab('installations')} > - Installations + {t('tab_installations')}
@@ -141,7 +134,7 @@ export const App: React.FC = () => { className={`toolbar-popover ${toolbarOpen ? 'block' : 'hidden'}`} role="dialog" aria-modal="false" - aria-label="Toolbar options" + aria-label={t('toolbar_options_label')} > { - {/* Status bar */} -
- -
+ {/* Main content */}
@@ -172,11 +158,11 @@ export const App: React.FC = () => {
-

Minecraft Installations

- {installations.length} found +

{t('installations_title')}

+ {t('installations_found_count', { count: installations.length })}
-
+
{installations.length > 0 ? ( installations.map((installation) => ( { )) ) : (
-

No Minecraft installations found

+

{t('installations_none_found')}

)}
@@ -199,8 +185,8 @@ export const App: React.FC = () => {
-

Available Presets

- {presets.length} loaded +

{t('presets_title')}

+ {t('presets_loaded_count', { count: presets.length })}
@@ -216,7 +202,7 @@ export const App: React.FC = () => { )) ) : (
-

No presets available

+

{t('presets_none_available')}

)}
@@ -226,20 +212,20 @@ export const App: React.FC = () => { {activeTab === 'actions' && (
-

Actions

+

{t('actions_title')}

diff --git a/v3/src/components/ConsolePanel.tsx b/v3/src/components/ConsolePanel.tsx index c8a4567..3e944ca 100644 --- a/v3/src/components/ConsolePanel.tsx +++ b/v3/src/components/ConsolePanel.tsx @@ -1,5 +1,6 @@ import React, { useState, useRef, useEffect } from 'react'; import { ChevronDown, ChevronUp } from 'lucide-react'; +import { cx } from 'classix'; interface ConsolePanelProps { output?: string[]; @@ -55,7 +56,7 @@ export const ConsolePanel: React.FC = ({
= ({ {output.length > 0 ? output.join('\n') : 'No output yet...'} +
+ ); +}; + +export const StatusBarContainer: React.FC = () => { + const { messages, removeMessage } = useStatusStore(); + + return ( +
+ {messages.map((msg) => ( + + ))}
); }; diff --git a/v3/src/i18n.ts b/v3/src/i18n.ts new file mode 100644 index 0000000..f7666ad --- /dev/null +++ b/v3/src/i18n.ts @@ -0,0 +1,25 @@ +import i18n from 'i18next'; +import { initReactI18next } from 'react-i18next'; +import LanguageDetector from 'i18next-browser-languagedetector'; +import HttpApi from 'i18next-http-backend'; + +i18n + .use(initReactI18next) // passes i18n down to react-i18next + .use(LanguageDetector) + .use(HttpApi) + .init({ + supportedLngs: ['en', 'de'], // Add languages you want to support + fallbackLng: 'en', + detection: { + order: ['path', 'cookie', 'htmlTag', 'localStorage', 'subdomain'], + caches: ['cookie'], + }, + backend: { + loadPath: '/locales/{{lng}}/translation.json', + }, + react: { + useSuspense: false, + }, + }); + +export default i18n; diff --git a/v3/src/main.tsx b/v3/src/main.tsx index 5cc72e4..20b9cc0 100644 --- a/v3/src/main.tsx +++ b/v3/src/main.tsx @@ -3,6 +3,7 @@ import ReactDOM from 'react-dom/client'; import { App } from './components/App'; import '@fontsource-variable/martian-mono'; import './styles.css'; +import './i18n'; // Mount React app const root = ReactDOM.createRoot(document.getElementById('root')!); diff --git a/v3/src/store/appStore.ts b/v3/src/store/appStore.ts index f68515a..2b5b57c 100644 --- a/v3/src/store/appStore.ts +++ b/v3/src/store/appStore.ts @@ -26,9 +26,6 @@ interface AppState { presets: PackInfo[]; selectedInstallations: Set; selectedPreset: string | null; - status: string; - isLoading: boolean; - isError: boolean; consoleOutput: string[]; activeTab: 'installations' | 'presets' | 'actions'; toolbarOpen: boolean; @@ -38,9 +35,6 @@ interface AppState { setPresets: (presets: PackInfo[]) => void; setSelectedInstallations: (selected: Set) => void; setSelectedPreset: (preset: string | null) => void; - setStatus: (status: string) => void; - setIsLoading: (loading: boolean) => void; - setIsError: (error: boolean) => void; setActiveTab: (tab: 'installations' | 'presets' | 'actions') => void; setToolbarOpen: (open: boolean) => void; addConsoleOutput: (message: string) => void; @@ -58,9 +52,6 @@ export const useAppStore = create((set, get) => ({ presets: [], selectedInstallations: new Set(), selectedPreset: null, - status: 'Ready', - isLoading: false, - isError: false, consoleOutput: [], activeTab: 'installations', toolbarOpen: false, @@ -70,9 +61,6 @@ export const useAppStore = create((set, get) => ({ setPresets: (presets) => set({ presets }), setSelectedInstallations: (selectedInstallations) => set({ selectedInstallations }), setSelectedPreset: (selectedPreset) => set({ selectedPreset }), - setStatus: (status) => set({ status }), - setIsLoading: (isLoading) => set({ isLoading }), - setIsError: (isError) => set({ isError }), setActiveTab: (activeTab) => set({ activeTab }), setToolbarOpen: (toolbarOpen) => set({ toolbarOpen }), @@ -87,63 +75,45 @@ export const useAppStore = create((set, get) => ({ // Async actions refreshInstallations: async () => { - const { setStatus, setIsLoading, setIsError, addConsoleOutput, setInstallations } = get(); + const { addConsoleOutput, setInstallations } = get(); try { - setStatus('Loading Minecraft installations...'); - setIsLoading(true); - setIsError(false); addConsoleOutput('Scanning for Minecraft installations...'); const data = await invoke('list_installations'); setInstallations(data); - setStatus(`Found ${data.length} Minecraft installation(s)`); addConsoleOutput(`Found ${data.length} installations`); } catch (error) { const errorMsg = `Error loading installations: ${error}`; - setStatus(errorMsg); - setIsError(true); addConsoleOutput(errorMsg); - } finally { - setIsLoading(false); } }, refreshPresets: async (forceRefresh = false) => { - const { setStatus, setIsLoading, setIsError, addConsoleOutput, setPresets } = get(); + const { addConsoleOutput, setPresets } = get(); try { - setStatus('Loading RTX presets...'); - setIsLoading(true); - setIsError(false); addConsoleOutput('Fetching RTX presets...'); const data = await invoke('list_presets', { forceRefresh }); setPresets(data); - setStatus(`Loaded ${data.length} RTX preset(s)`); addConsoleOutput(`Loaded ${data.length} presets`); } catch (error) { const errorMsg = `Error loading presets: ${error}`; - setStatus(errorMsg); - setIsError(true); addConsoleOutput(errorMsg); - } finally { - setIsLoading(false); } }, clearCache: async () => { - const { addConsoleOutput, setStatus } = get(); + const { addConsoleOutput } = get(); try { addConsoleOutput('Clearing cache...'); await invoke('clear_cache'); addConsoleOutput('Cache cleared successfully'); - setStatus('Cache cleared'); } catch (error) { const errorMsg = `Error clearing cache: ${error}`; addConsoleOutput(errorMsg); - setStatus(errorMsg); } }, })); diff --git a/v3/src/store/statusStore.ts b/v3/src/store/statusStore.ts new file mode 100644 index 0000000..93042dc --- /dev/null +++ b/v3/src/store/statusStore.ts @@ -0,0 +1,25 @@ +import { create } from 'zustand'; + +export type StatusType = 'info' | 'error' | 'loading' | 'success'; + +export interface StatusMessage { + id: string; + message: string; + type: StatusType; +} + +interface StatusState { + messages: StatusMessage[]; + addMessage: (message: Omit) => void; + removeMessage: (id: string) => void; +} + +export const useStatusStore = create((set) => ({ + messages: [], + addMessage: (message) => { + const id = new Date().toISOString() + Math.random(); + set((state) => ({ messages: [...state.messages, { ...message, id }] })); + }, + removeMessage: (id) => + set((state) => ({ messages: state.messages.filter((msg) => msg.id !== id) })), +})); diff --git a/v3/src/styles.css b/v3/src/styles.css index e832c2c..2d346d8 100644 --- a/v3/src/styles.css +++ b/v3/src/styles.css @@ -214,11 +214,11 @@ .installation-title h3 { @apply text-sm font-semibold; } .preset-icon { @apply size-6 rounded-sm object-cover; } .preview-badge { @apply badge bg-brand-accent-600 text-white; border-color: color-mix(in oklab, var(--color-brand-accent-600) 70%, black 30%); } - .installation-path { @apply px-4 pt-2 text-xs text-muted break-all; } + .installation-path { @apply px-4 pt-2 text-xs text-app-muted break-all font-mono select-all; } .installed-preset-info, .no-preset-info { @apply px-4 text-xs; } - .no-preset-info { @apply text-muted; } + .no-preset-info { @apply text-app-muted; } .installation-actions { @apply panel__body flex items-center gap-2; } - .checkbox-label { @apply text-xs text-muted; } + .checkbox-label { @apply text-xs text-app-muted; } /* Presets */ .presets-grid { @apply grid gap-3 sm:grid-cols-2 lg:grid-cols-3; } @@ -264,13 +264,32 @@ .setting-btn { @apply button; } .setting-btn.danger { @apply button--danger; } + .status-alert { + @apply fixed right-2 bottom-14 z-40 flex items-center gap-3 px-4 py-3 rounded-lg border shadow-lg cursor-pointer select-none; + } + /* Console Panel Component */ .console-container { - @apply font-mono; + @apply flex flex-col overflow-hidden relative; } .console-output { @apply font-mono; font-feature-settings: "liga" 0, "calt" 0; } + + .console-clear-btn { + @apply font-sans; + } + + .console-panel--expanded { @apply max-h-80; } + .console-panel--collapsed { @apply max-h-0; } + + body:has(.console-panel--expanded) { + @apply overflow-hidden h-screen; + } + + body:has(.console-panel--expanded) .status-alert { + @apply bottom-80; + } } \ No newline at end of file diff --git a/v3/src/theme.css b/v3/src/theme.css index b21a6c1..9994efc 100644 --- a/v3/src/theme.css +++ b/v3/src/theme.css @@ -1,7 +1,8 @@ @import "tailwindcss"; @import "@fontsource-variable/inter"; +@import "@fontsource-variable/martian-mono"; @theme { - --font-mono: 'Martian Mono Variable', 'Martian Mono', var(--font-monocraft), monospace; + --font-mono: 'Martian Mono Variable', 'Martian Mono', system-monospace, monospace; --font-sans: 'Inter Variable', Inter, Helvetica, Arial, system-ui, sans-serif; --height-app: calc(100vh - (--spacing(16))); From 37e80f4a7dfec3f554024bc7a55907ba00d82da1 Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Sat, 16 Aug 2025 09:04:38 -0500 Subject: [PATCH 09/38] fix: Restore correct BE calls --- v3/package.json | 5 +- v3/src/assets/brtx.svg | 1 - v3/src/components/App.tsx | 216 +++++++++++-------------- v3/src/components/AppHeader.tsx | 66 ++++++++ v3/src/components/ConsolePanel.tsx | 25 +-- v3/src/components/InstallationCard.tsx | 41 ++--- v3/src/components/Logo.tsx | 24 +++ v3/src/components/PresetCard.tsx | 16 +- v3/src/components/PresetIcon.tsx | 22 +-- v3/src/components/StatusBar.tsx | 38 +++-- v3/src/components/ToolbarSection.tsx | 67 +++++--- v3/src/store/appStore.ts | 39 +++++ v3/src/styles.css | 22 ++- v3/src/vite-env.d.ts | 9 ++ 14 files changed, 372 insertions(+), 219 deletions(-) delete mode 100644 v3/src/assets/brtx.svg create mode 100644 v3/src/components/AppHeader.tsx create mode 100644 v3/src/components/Logo.tsx create mode 100644 v3/src/vite-env.d.ts diff --git a/v3/package.json b/v3/package.json index 62bb08c..1ee57ff 100644 --- a/v3/package.json +++ b/v3/package.json @@ -12,7 +12,6 @@ "dependencies": { "@fontsource-variable/inter": "^5.2.6", "@fontsource-variable/martian-mono": "^5.2.6", - "@tailwindcss/vite": "^4.1.12", "@tauri-apps/api": "^2", "@tauri-apps/plugin-dialog": "^2", "@tauri-apps/plugin-opener": "^2", @@ -30,7 +29,9 @@ "@tauri-apps/cli": "^2", "@types/react": "^18.2.66", "@types/react-dom": "^18.2.22", - "@vitejs/plugin-react": "^4.2.1", + "@tailwindcss/vite": "^4.1.12", + "@vitejs/plugin-react": "^4.3.1", + "vite-plugin-svgr": "^4.2.0", "vite": "^6.0.3", "typescript": "~5.6.2" } diff --git a/v3/src/assets/brtx.svg b/v3/src/assets/brtx.svg deleted file mode 100644 index 14b2bc1..0000000 --- a/v3/src/assets/brtx.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/v3/src/components/App.tsx b/v3/src/components/App.tsx index a3c473e..18e4c99 100644 --- a/v3/src/components/App.tsx +++ b/v3/src/components/App.tsx @@ -1,17 +1,16 @@ -import React, { useEffect } from 'react'; -import { useTranslation } from 'react-i18next'; -import { invoke } from '@tauri-apps/api/core'; -import { Settings } from 'lucide-react'; -import { ToolbarSection } from './ToolbarSection'; -import { PresetCard } from './PresetCard'; -import { InstallationCard } from './InstallationCard'; -import { StatusBarContainer } from './StatusBar'; -import { ConsolePanel } from './ConsolePanel'; -import { useAppStore } from '../store/appStore'; -import { useStatusStore } from '../store/statusStore'; +import React, { useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import { invoke } from "@tauri-apps/api/core"; +import { PresetCard } from "./PresetCard"; +import { InstallationCard } from "./InstallationCard"; +import { StatusBarContainer } from "./StatusBar"; +import { ConsolePanel } from "./ConsolePanel"; +import { useAppStore } from "../store/appStore"; +import { useStatusStore } from "../store/statusStore"; +import AppHeader from "./AppHeader"; export const App: React.FC = () => { - const { t } = useTranslation(); + const { t } = useTranslation(); const { addMessage } = useStatusStore(); const { installations, @@ -20,16 +19,15 @@ export const App: React.FC = () => { selectedPreset, consoleOutput, activeTab, - toolbarOpen, setSelectedInstallations, setSelectedPreset, - setActiveTab, - setToolbarOpen, addConsoleOutput, clearConsole, refreshInstallations, refreshPresets, - clearCache + installRTX, + installMaterials, + backupSupportFiles, } = useAppStore(); useEffect(() => { @@ -37,7 +35,6 @@ export const App: React.FC = () => { refreshPresets(); }, [refreshInstallations, refreshPresets]); - const handleInstallationSelection = (path: string, selected: boolean) => { const newSet = new Set(selectedInstallations); if (selected) { @@ -54,99 +51,39 @@ export const App: React.FC = () => { const handlePresetInstall = async (uuid: string) => { if (selectedInstallations.size === 0) { - addMessage({ message: t('status_select_installation_warning'), type: 'error' }); + addMessage({ + message: t("status_select_installation_warning"), + type: "error", + }); return; } try { - addMessage({ message: t('status_installing_preset'), type: 'loading' }); - addConsoleOutput(t('log_installing_preset', { uuid, count: selectedInstallations.size })); - + addMessage({ message: t("status_installing_preset"), type: "loading" }); + addConsoleOutput( + t("log_installing_preset", { uuid, count: selectedInstallations.size }) + ); + for (const installPath of selectedInstallations) { - await invoke('install_preset', { uuid, installPath }); - addConsoleOutput(t('log_installed_to', { installPath })); + await invoke("download_and_install_pack", { uuid, selectedNames: [installPath] }); + addConsoleOutput(t("log_installed_to", { installPath })); } - - addMessage({ message: t('status_install_success'), type: 'success' }); - addConsoleOutput(t('log_install_complete')); + + addMessage({ message: t("status_install_success"), type: "success" }); + addConsoleOutput(t("log_install_complete")); // Refresh installations to show updated preset info await refreshInstallations(); } catch (error) { - const errorMsg = t('status_install_error', { error }); - addMessage({ message: errorMsg, type: 'error' }); + const errorMsg = t("status_install_error", { error }); + addMessage({ message: errorMsg, type: "error" }); addConsoleOutput(errorMsg); } }; - const handleSettings = () => { - addConsoleOutput(t('log_settings_clicked')); - }; - - const handleHelp = () => { - addConsoleOutput(t('log_help_clicked')); - }; - - const handleAbout = () => { - addConsoleOutput(t('log_about_clicked')); - }; - return (
{/* Top toolbar with popover API */} -
-
- -
-
- {/* Menu button to show toolbar */} - - - {/* Toolbar popover */} - -
-
+ @@ -154,12 +91,18 @@ export const App: React.FC = () => {
{/* Tab Content */}
- {activeTab === 'installations' && ( + {activeTab === "installations" && (
-

{t('installations_title')}

- {t('installations_found_count', { count: installations.length })} +

+ {t("installations_title")} +

+ + {t("installations_found_count", { + count: installations.length, + })} +
@@ -168,25 +111,31 @@ export const App: React.FC = () => { )) ) : (
-

{t('installations_none_found')}

+

{t("installations_none_found")}

)}
)} - {activeTab === 'presets' && ( + {activeTab === "presets" && (
-

{t('presets_title')}

- {t('presets_loaded_count', { count: presets.length })} +

+ {t("presets_title")} +

+ + {t("presets_loaded_count", { count: presets.length })} +
@@ -202,44 +151,73 @@ export const App: React.FC = () => { )) ) : (
-

{t('presets_none_available')}

+

{t("presets_none_available")}

)}
)} - {activeTab === 'actions' && ( + {activeTab === "actions" && (
-

{t('actions_title')}

+

{t("actions_title")}

- - -
)}
-
{/* Fixed Console Panel at bottom */}
- +
); diff --git a/v3/src/components/AppHeader.tsx b/v3/src/components/AppHeader.tsx new file mode 100644 index 0000000..924adc1 --- /dev/null +++ b/v3/src/components/AppHeader.tsx @@ -0,0 +1,66 @@ +import { useAppStore } from "../store/appStore"; +import { cx } from "classix"; +import { useTranslation } from "react-i18next"; +import { Settings } from "lucide-react"; +import { ToolbarSection } from "./ToolbarSection"; +import Logo from "./Logo"; + +export default function AppHeader() { + const { + activeTab, + setActiveTab, + toolbarOpen, + setToolbarOpen, + } = useAppStore(); + const { t } = useTranslation(); + return ( +
+
+ +
+ +
+ {/* Menu button to show toolbar */} + + + {/* Toolbar popover */} + +
+
+ ); +} diff --git a/v3/src/components/ConsolePanel.tsx b/v3/src/components/ConsolePanel.tsx index 3e944ca..8ac6726 100644 --- a/v3/src/components/ConsolePanel.tsx +++ b/v3/src/components/ConsolePanel.tsx @@ -1,6 +1,6 @@ -import React, { useState, useRef, useEffect } from 'react'; -import { ChevronDown, ChevronUp } from 'lucide-react'; -import { cx } from 'classix'; +import React, { useState, useRef, useEffect } from "react"; +import { ChevronDown, ChevronUp } from "lucide-react"; +import { cx } from "classix"; interface ConsolePanelProps { output?: string[]; @@ -38,7 +38,7 @@ export const ConsolePanel: React.FC = ({ return (
-
@@ -53,21 +53,22 @@ export const ConsolePanel: React.FC = ({ )}
- -
-
- {output.length > 0 ? output.join('\n') : 'No output yet...'} - + {output.length > 0 ? output.join("\n") : "No output yet..."} +
+ + +
+
+ ) +} \ No newline at end of file diff --git a/v3/src/components/App.tsx b/v3/src/components/App.tsx index 18e4c99..23f81d7 100644 --- a/v3/src/components/App.tsx +++ b/v3/src/components/App.tsx @@ -1,33 +1,33 @@ -import React, { useEffect } from "react"; +import React, { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { invoke } from "@tauri-apps/api/core"; -import { PresetCard } from "./PresetCard"; +import { listen } from "@tauri-apps/api/event"; + import { InstallationCard } from "./InstallationCard"; import { StatusBarContainer } from "./StatusBar"; import { ConsolePanel } from "./ConsolePanel"; +import { RtpackDialog } from "./RtpackDialog"; import { useAppStore } from "../store/appStore"; import { useStatusStore } from "../store/statusStore"; import AppHeader from "./AppHeader"; +import ActionsTab from "./ActionsTab"; +import PresetsTab from "./PresetsTab"; export const App: React.FC = () => { const { t } = useTranslation(); const { addMessage } = useStatusStore(); + const [rtpackDialogOpen, setRtpackDialogOpen] = useState(false); + const [rtpackPath, setRtpackPath] = useState(""); const { installations, - presets, selectedInstallations, - selectedPreset, consoleOutput, activeTab, setSelectedInstallations, - setSelectedPreset, addConsoleOutput, clearConsole, refreshInstallations, refreshPresets, - installRTX, - installMaterials, - backupSupportFiles, } = useAppStore(); useEffect(() => { @@ -35,6 +35,36 @@ export const App: React.FC = () => { refreshPresets(); }, [refreshInstallations, refreshPresets]); + // Listen for rtpack file open events + useEffect(() => { + const unlisten = listen("rtpack-file-opened", (event) => { + setRtpackPath(event.payload); + setRtpackDialogOpen(true); + }); + + return () => { + unlisten.then((fn) => fn()); + }; + }, []); + + // Handle file drops + useEffect(() => { + const unlisten = listen("tauri://file-drop", (event) => { + const paths = event.payload; + for (const path of paths) { + if (path.toLowerCase().endsWith(".rtpack")) { + setRtpackPath(path); + setRtpackDialogOpen(true); + break; // Only handle the first .rtpack file + } + } + }); + + return () => { + unlisten.then((fn) => fn()); + }; + }, []); + const handleInstallationSelection = (path: string, selected: boolean) => { const newSet = new Set(selectedInstallations); if (selected) { @@ -45,40 +75,6 @@ export const App: React.FC = () => { setSelectedInstallations(newSet); }; - const handlePresetSelection = (uuid: string, selected: boolean) => { - setSelectedPreset(selected ? uuid : null); - }; - - const handlePresetInstall = async (uuid: string) => { - if (selectedInstallations.size === 0) { - addMessage({ - message: t("status_select_installation_warning"), - type: "error", - }); - return; - } - - try { - addMessage({ message: t("status_installing_preset"), type: "loading" }); - addConsoleOutput( - t("log_installing_preset", { uuid, count: selectedInstallations.size }) - ); - - for (const installPath of selectedInstallations) { - await invoke("download_and_install_pack", { uuid, selectedNames: [installPath] }); - addConsoleOutput(t("log_installed_to", { installPath })); - } - - addMessage({ message: t("status_install_success"), type: "success" }); - addConsoleOutput(t("log_install_complete")); - // Refresh installations to show updated preset info - await refreshInstallations(); - } catch (error) { - const errorMsg = t("status_install_error", { error }); - addMessage({ message: errorMsg, type: "error" }); - addConsoleOutput(errorMsg); - } - }; return (
@@ -105,7 +101,7 @@ export const App: React.FC = () => {
-
+
{installations.length > 0 ? ( installations.map((installation) => ( { )} {activeTab === "presets" && ( -
-
-
-

- {t("presets_title")} -

- - {t("presets_loaded_count", { count: presets.length })} - -
-
-
- {presets.length > 0 ? ( - presets.map((preset) => ( - - )) - ) : ( -
-

{t("presets_none_available")}

-
- )} -
-
+ )} {activeTab === "actions" && ( -
-
-

{t("actions_title")}

-
-
- - - -
-
+ )}
@@ -219,6 +136,13 @@ export const App: React.FC = () => {
+ + {/* RTpack Dialog */} + setRtpackDialogOpen(false)} + /> ); }; diff --git a/v3/src/components/InstallationCard.tsx b/v3/src/components/InstallationCard.tsx index e70d0fb..5a5502e 100644 --- a/v3/src/components/InstallationCard.tsx +++ b/v3/src/components/InstallationCard.tsx @@ -1,6 +1,7 @@ import React from "react"; import { cx } from "classix"; import PresetIcon from "./PresetIcon"; +import Switch from "./ui/Switch"; export interface Installation { FriendlyName: string; @@ -24,12 +25,11 @@ export const InstallationCard: React.FC = ({ selected = false, onSelectionChange, }) => { - const handleCheckboxChange = (e: React.ChangeEvent) => { - const isSelected = e.target.checked; + const handleSwitchChange = (isSelected: boolean) => { onSelectionChange?.(installation.InstallLocation, isSelected); }; - const checkboxId = `install-${installation.InstallLocation.replace( + const switchId = `install-${installation.InstallLocation.replace( /[^a-zA-Z0-9]/g, "" )}`; @@ -39,7 +39,7 @@ export const InstallationCard: React.FC = ({ ) : null; return ( -
-
-

- Selected installations ({selectedInstallations.size}): -

- {selectedInstallations.size === 0 ? ( -

- No installations selected. Please go to the Installations tab and select target installations. -

- ) : ( -
- {selectedInstallations.size} installation{selectedInstallations.size !== 1 ? 's' : ''} selected -
- )} -
-
@@ -125,6 +116,14 @@ export default function CreatorTab() {
+ setIsModalOpen(false)} + installations={installations} + presetName={`settings ${settingsHash.slice(0, 8)}...`} + onInstall={handleInstall} + isInstalling={isProcessing} + /> ); } diff --git a/v3/src/components/installations/InstallationCard.tsx b/v3/src/components/installations/InstallationCard.tsx new file mode 100644 index 0000000..bc4359a --- /dev/null +++ b/v3/src/components/installations/InstallationCard.tsx @@ -0,0 +1,96 @@ +import React from "react"; +import { cx } from "classix"; +import { useTranslation } from "react-i18next"; +import PresetIcon from "../PresetIcon"; +import BlockPath from "../ui/BlockPath"; + +export interface Installation { + FriendlyName: string; + InstallLocation: string; + Preview: boolean; + installed_preset?: { + uuid: string; + name: string; + installed_at: string; + }; +} + +interface InstallationCardProps { + installation: Installation; + selected?: boolean; + onSelectionChange?: (path: string, selected: boolean) => void; +} + +export const InstallationCard: React.FC = ({ + installation, + selected = false, + onSelectionChange, +}) => { + const { t } = useTranslation(); + + const handleCardClick = () => { + const newSelected = !selected; + onSelectionChange?.(installation.InstallLocation, newSelected); + }; + + const presetIcon = installation.installed_preset ? ( + + ) : null; + + return ( +
+
+ {presetIcon || ( +
+ + {installation.Preview ? "Preview" : "Minecraft"} + +
+ )} +

+ {installation.FriendlyName} + {installation.Preview && ( + Preview + )} +

+
+ +
+
+ {installation.installed_preset ? ( +
+

+ {t('current_preset', { name: installation.installed_preset.name })} +

+

+ Installed: {new Date(installation.installed_preset.installed_at).toLocaleDateString()} +

+
+ ) : ( +

+ {t('no_preset_installed')} +

+ )} + +
+
Installation Path
+
+ +
+
+
+
+ +
+ ); +}; diff --git a/v3/src/components/installations/InstallationInstanceModal.tsx b/v3/src/components/installations/InstallationInstanceModal.tsx new file mode 100644 index 0000000..03e5a29 --- /dev/null +++ b/v3/src/components/installations/InstallationInstanceModal.tsx @@ -0,0 +1,153 @@ +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { cx } from "classix"; +import Modal from "../ui/Modal"; +import Button from "../ui/Button"; +import { Installation } from "../../store/appStore"; + +interface InstallationInstanceModalProps { + isOpen: boolean; + onClose: () => void; + installations: Installation[]; + presetName: string; + onInstall: (selectedInstallations: string[]) => void; + isInstalling?: boolean; +} + +const InstallationInstanceModal: React.FC = ({ + isOpen, + onClose, + installations, + presetName, + onInstall, + isInstalling = false +}) => { + const { t } = useTranslation(); + const [selectedInstallations, setSelectedInstallations] = useState>(new Set()); + + const handleInstallationToggle = (installPath: string): void => { + const newSelected = new Set(selectedInstallations); + if (newSelected.has(installPath)) { + newSelected.delete(installPath); + } else { + newSelected.add(installPath); + } + setSelectedInstallations(newSelected); + }; + + const handleSelectAll = (): void => { + if (selectedInstallations.size === installations.length) { + setSelectedInstallations(new Set()); + } else { + setSelectedInstallations(new Set(installations.map(inst => inst.InstallLocation))); + } + }; + + const handleInstall = (): void => { + if (selectedInstallations.size > 0) { + onInstall(Array.from(selectedInstallations)); + onClose(); + } + }; + + const handleClose = (): void => { + setSelectedInstallations(new Set()); + onClose(); + }; + + return ( + +
+

+ {t("select_installations_description")} +

+ +
+ + + {t("selected_count", { + selected: selectedInstallations.size, + total: installations.length + })} + +
+ +
+ {installations.map((installation) => ( +
+ +
+ ))} +
+ +
+ + +
+
+
+ ); +}; + +export default InstallationInstanceModal; diff --git a/v3/src/components/installations/InstallationNav.tsx b/v3/src/components/installations/InstallationNav.tsx new file mode 100644 index 0000000..c305903 --- /dev/null +++ b/v3/src/components/installations/InstallationNav.tsx @@ -0,0 +1,44 @@ + +import { useTranslation } from "react-i18next"; +import PresetIcon from "../PresetIcon"; +import { useAppStore } from "../../store/appStore"; + + +export default function InstallationNav() { + const { t } = useTranslation(); + const { installations } = useAppStore(); + // Show the currently installed preset icons in the nav + const installedPresets = installations.map((installation) => { + if (!installation.installed_preset) return null; + + return { + uuid: installation.installed_preset.uuid, + name: installation.installed_preset.name, + installed_at: installation.installed_preset.installed_at, + installation + } + }).filter((preset) => preset !== null); + + return ( +
+ {installedPresets.map((preset) => ( +
{ + if (preset.installation.Preview) { + window.open(`minecraft-preview://`); + return; + } + + window.open(`minecraft://`); + }}> + +
+

+ {preset.installation.FriendlyName} +

+ {preset.name} +
+
+ ))} +
+ ); +} \ No newline at end of file diff --git a/v3/src/components/installations/InstallationsTab.tsx b/v3/src/components/installations/InstallationsTab.tsx new file mode 100644 index 0000000..3e25810 --- /dev/null +++ b/v3/src/components/installations/InstallationsTab.tsx @@ -0,0 +1,172 @@ +import { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { useAppStore } from "../../store/appStore"; +import { InstallationCard, Installation } from "./InstallationCard"; +import Button from "../ui/Button"; +import { invoke } from "@tauri-apps/api/core"; +import { open } from "@tauri-apps/plugin-dialog"; + +export default function InstallationsTab() { + const { t } = useTranslation(); + const { installations, selectedInstallations, setSelectedInstallations, addInstallation } = useAppStore(); + const [showAddForm, setShowAddForm] = useState(false); + const [newInstallPath, setNewInstallPath] = useState(""); + const [newInstallName, setNewInstallName] = useState(""); + const [isAdding, setIsAdding] = useState(false); + + const handleInstallationSelection = (path: string, selected: boolean): void => { + const newSet = new Set(selectedInstallations); + if (selected) { + newSet.add(path); + } else { + newSet.delete(path); + } + setSelectedInstallations(newSet); + }; + + + const handleAddInstallation = async (): Promise => { + if (!newInstallPath.trim()) return; + + setIsAdding(true); + try { + // Validate the path exists and contains a valid Minecraft installation + const isValid = await invoke('validate_minecraft_path', { path: newInstallPath }); + + if (isValid) { + const newInstallation: Installation = { + FriendlyName: newInstallName.trim() || 'Custom Installation', + InstallLocation: newInstallPath, + Preview: false, + }; + + addInstallation?.(newInstallation); + setNewInstallPath(''); + setNewInstallName(''); + setShowAddForm(false); + } else { + alert(t('invalid_minecraft_path')); + } + } catch (error) { + console.error('Error adding installation:', error); + alert(t('error_adding_installation')); + } finally { + setIsAdding(false); + } + }; + + const handleBrowseFolder = async (): Promise => { + try { + const selected = await open({ + directory: true, + multiple: false, + title: 'Select Minecraft Installation Folder' + }); + if (selected) { + setNewInstallPath(selected as string); + } + } catch (error) { + console.error('Error opening folder dialog:', error); + } + }; + + return ( +
+
+
+

{t('installations')}

+ + {installations.length} {t('found')} + +
+
+ +
+
+ +
+ {showAddForm && ( +
+

{t('add_custom_installation')}

+
+
+ + setNewInstallName(e.target.value)} + placeholder={t('installation_name_placeholder')} + /> +
+
+ +
+ setNewInstallPath(e.target.value)} + placeholder={t('installation_path_placeholder')} + /> + +
+
+
+
+ + +
+
+ )} + + {installations.length > 0 ? ( + installations.map((installation) => ( + + )) + ) : ( + !showAddForm && ( +
+

{t("installations_none_found")}

+

+ {t("installations_none_found_hint")} +

+
+ ) + )} +
+
+ ); +} diff --git a/v3/src/components/installations/InstallationsToolbar.tsx b/v3/src/components/installations/InstallationsToolbar.tsx new file mode 100644 index 0000000..be187a1 --- /dev/null +++ b/v3/src/components/installations/InstallationsToolbar.tsx @@ -0,0 +1,28 @@ + +import { useTranslation } from "react-i18next"; +import { useAppStore } from "../../store/appStore"; +import { InstallationCard } from "./InstallationCard"; + +export default function InstallationsToolbar() { + const { t } = useTranslation(); + const { installations } = useAppStore(); + + return ( +
+
+ {installations.length > 0 ? ( + installations.map((installation) => ( + + )) + ) : ( +
+

{t("installations_none_found")}

+
+ )} +
+
+ ); +} diff --git a/v3/src/components/PresetCard.tsx b/v3/src/components/presets/PresetCard.tsx similarity index 79% rename from v3/src/components/PresetCard.tsx rename to v3/src/components/presets/PresetCard.tsx index b7553a2..9573623 100644 --- a/v3/src/components/PresetCard.tsx +++ b/v3/src/components/presets/PresetCard.tsx @@ -1,7 +1,8 @@ import React from "react"; import { useTranslation } from "react-i18next"; import { cx } from "classix"; -import Button from "./ui/Button"; +import Button from "../ui/Button"; +import BlockPath from "../ui/BlockPath"; export interface PackInfo { name: string; @@ -70,21 +71,15 @@ export const PresetCard: React.FC = ({
Stub
- +
Tonemapping
- +
Bloom
- +
diff --git a/v3/src/components/ui/BlockPath.tsx b/v3/src/components/ui/BlockPath.tsx new file mode 100644 index 0000000..3519799 --- /dev/null +++ b/v3/src/components/ui/BlockPath.tsx @@ -0,0 +1,49 @@ +import React from "react"; + +interface BlockPathProps { + /** The path or URL to display */ + path?: string; + /** Optional href for making the path clickable */ + href?: string; + /** Whether to open links in a new tab (default: true) */ + openInNewTab?: boolean; + /** Additional CSS classes */ + className?: string; +} + +/** + * A component that displays a path or URL using the same styling as preset stub links. + * Features overflow handling with ellipsis when not hovered and horizontal scroll on hover. + */ +export const BlockPath: React.FC = ({ + path, + href, + openInNewTab = true, + className = "", +}) => { + + const content = ( + + {path ?? href} + + ); + + return ( +
+ {href ? ( + + {path ?? href} + + ) : ( + content + )} +
+ ); +}; + +export default BlockPath; diff --git a/v3/src/components/ui/Modal.tsx b/v3/src/components/ui/Modal.tsx new file mode 100644 index 0000000..bc49a04 --- /dev/null +++ b/v3/src/components/ui/Modal.tsx @@ -0,0 +1,49 @@ +import React from "react"; +import { cx } from "classix"; + +interface ModalProps { + isOpen: boolean; + onClose: () => void; + title: string; + children: React.ReactNode; + className?: string; +} + +const Modal: React.FC = ({ + isOpen, + onClose, + title, + children, + className +}) => { + if (!isOpen) return null; + + const handleBackdropClick = (e: React.MouseEvent) => { + if (e.target === e.currentTarget) { + onClose(); + } + }; + + return ( +
+
+
+

{title}

+ +
+
+ {children} +
+
+
+ ); +}; + +export default Modal; diff --git a/v3/src/components/ui/SecondaryToolbar.tsx b/v3/src/components/ui/SecondaryToolbar.tsx new file mode 100644 index 0000000..a1d265b --- /dev/null +++ b/v3/src/components/ui/SecondaryToolbar.tsx @@ -0,0 +1,36 @@ +import React from "react"; + +interface SecondaryToolbarProps { + title: string; + subtitle?: string; + actions?: React.ReactNode; + children?: React.ReactNode; +} + +const SecondaryToolbar: React.FC = ({ + title, + subtitle, + actions, + children +}) => { + return ( +
+
+
+

{title}

+ {subtitle && ( + {subtitle} + )} +
+ {actions && ( +
+ {actions} +
+ )} +
+ {children} +
+ ); +}; + +export default SecondaryToolbar; diff --git a/v3/src/components/ui/SideNav.tsx b/v3/src/components/ui/SideNav.tsx new file mode 100644 index 0000000..4cdd526 --- /dev/null +++ b/v3/src/components/ui/SideNav.tsx @@ -0,0 +1,86 @@ +import React from "react"; +import { useTranslation } from "react-i18next"; +import { useAppStore } from "../../store/appStore"; +import { cx } from "classix"; +import { + Home, + Package, + Wrench, + Palette +} from "lucide-react"; + +interface SideNavProps { + className?: string; + children?: React.ReactNode; +} + +export const SideNav: React.FC = ({ className, children }) => { + const { activeTab, setActiveTab } = useAppStore(); + const { t } = useTranslation(); + + const navItems = [ + { + id: "presets" as const, + label: t("tab_presets"), + icon: Package, + description: "Browse and install RTX presets" + }, + { + id: "creator" as const, + label: "Creator", + icon: Palette, + description: "Create custom presets" + }, + { + id: "actions" as const, + label: t("tab_actions"), + icon: Wrench, + description: "Quick actions and tools" + }, + { + id: "installations" as const, + label: t("tab_installations"), + icon: Home, + description: "Manage your Minecraft installations" + }, + ]; + + return ( + + ); +}; \ No newline at end of file diff --git a/v3/src/components/ui/Switch.tsx b/v3/src/components/ui/Switch.tsx index 915aebd..1b61293 100644 --- a/v3/src/components/ui/Switch.tsx +++ b/v3/src/components/ui/Switch.tsx @@ -1,3 +1,5 @@ +import { Circle, CircleMinus } from "lucide-react"; + interface SwitchProps { checked: boolean; onCheckedChange: (checked: boolean) => void; @@ -46,10 +48,10 @@ export default function Switch({ }} >
- ON +
- OFF +
diff --git a/v3/src/store/appStore.ts b/v3/src/store/appStore.ts index 79bffa1..9efab90 100644 --- a/v3/src/store/appStore.ts +++ b/v3/src/store/appStore.ts @@ -39,13 +39,15 @@ interface AppState { setToolbarOpen: (open: boolean) => void; addConsoleOutput: (message: string) => void; clearConsole: () => void; + addInstallation: (installation: Installation) => void; + removeInstallation: (path: string) => void; // Async actions refreshInstallations: () => Promise; refreshPresets: (forceRefresh?: boolean) => Promise; clearCache: () => Promise; installRTX: (installPath: string) => Promise; - installMaterials: (installPath: string) => Promise; + updateOptions: (installPath: string) => Promise; backupSupportFiles: (installPath: string) => Promise; } @@ -76,6 +78,19 @@ export const useAppStore = create((set, get) => ({ clearConsole: () => set({ consoleOutput: [] }), + addInstallation: (installation) => { + set((state) => ({ + installations: [...state.installations, installation] + })); + }, + + removeInstallation: (path) => { + set((state) => ({ + installations: state.installations.filter(inst => inst.InstallLocation !== path), + selectedInstallations: new Set([...state.selectedInstallations].filter(p => p !== path)) + })); + }, + // Async actions refreshInstallations: async () => { const { addConsoleOutput, setInstallations } = get(); @@ -132,7 +147,7 @@ export const useAppStore = create((set, get) => ({ } }, - installMaterials: async (installPath) => { + updateOptions: async (installPath) => { const { addConsoleOutput } = get(); try { addConsoleOutput(`Updating options for ${installPath}...`); diff --git a/v3/src/store/presetsStore.ts b/v3/src/store/presetsStore.ts index d298b63..5ea7a2d 100644 --- a/v3/src/store/presetsStore.ts +++ b/v3/src/store/presetsStore.ts @@ -6,14 +6,21 @@ import { useStatusStore } from './statusStore'; interface PresetsStore { selectedPreset: string | null; installingPresets: Set; + installModalOpen: boolean; + installModalPresetUuid: string | null; setSelectedPreset: (uuid: string | null) => void; handlePresetSelection: (uuid: string, selected: boolean) => void; handlePresetInstall: (uuid: string, t: (key: string, options?: any) => string) => Promise; + openInstallModal: (uuid: string) => void; + closeInstallModal: () => void; + handleInstallToSelected: (uuid: string, selectedInstallations: string[], t: (key: string, options?: any) => string) => Promise; } export const usePresetsStore = create((set) => ({ selectedPreset: null, installingPresets: new Set(), + installModalOpen: false, + installModalPresetUuid: null, setSelectedPreset: (uuid: string | null) => { set({ selectedPreset: uuid }); @@ -68,4 +75,50 @@ export const usePresetsStore = create((set) => ({ }); } }, + + openInstallModal: (uuid: string) => { + set({ installModalOpen: true, installModalPresetUuid: uuid }); + }, + + closeInstallModal: () => { + set({ installModalOpen: false, installModalPresetUuid: null }); + }, + + handleInstallToSelected: async (uuid: string, selectedInstallations: string[], t: (key: string, options?: any) => string) => { + const { addConsoleOutput, refreshInstallations } = useAppStore.getState(); + const { addMessage } = useStatusStore.getState(); + + // Add preset to installing set + set((state) => ({ + installingPresets: new Set(state.installingPresets).add(uuid) + })); + + try { + addMessage({ message: t("status_installing_preset"), type: "loading" }); + addConsoleOutput( + t("log_installing_preset", { uuid, count: selectedInstallations.length }) + ); + + for (const installPath of selectedInstallations) { + await invoke("download_and_install_pack", { uuid, selectedNames: [installPath] }); + addConsoleOutput(t("log_installed_to", { installPath })); + } + + addMessage({ message: t("status_install_success"), type: "success" }); + addConsoleOutput(t("log_install_complete")); + // Refresh installations to show updated preset info + await refreshInstallations(); + } catch (error) { + const errorMsg = t("status_install_error", { error }); + addMessage({ message: errorMsg, type: "error" }); + addConsoleOutput(errorMsg); + } finally { + // Remove preset from installing set + set((state) => { + const newSet = new Set(state.installingPresets); + newSet.delete(uuid); + return { installingPresets: newSet }; + }); + } + }, })); diff --git a/v3/src/styles.css b/v3/src/styles.css index 3c09047..abe0a63 100644 --- a/v3/src/styles.css +++ b/v3/src/styles.css @@ -137,7 +137,7 @@ } body { - @apply antialiased font-sans bg-app-bg text-app-fg scrollbar; + @apply antialiased font-sans bg-app-bg text-app-fg overflow-hidden; } } @@ -208,14 +208,38 @@ /* Badges - utilities moved to top level */ .badge--on { @apply text-black bg-minecraft-green-300 border-minecraft-green-400; } -} -@layer components { + .main-content { + @apply p-4 pb-32 overflow-y-auto scrollbar max-h-[calc(100vh-6rem)] w-full; + } + + body:has(.console-panel--expanded) .main-content { + @apply max-h-[calc(100vh-22rem)]; + } + /* Top toolbar */ .top-toolbar { @apply sticky top-0 z-50 flex h-12 items-center justify-between border-b px-3 md:px-4 border-app-border; background-color: color-mix(in oklab, var(--color-app-bg) 85%, black 15%); } + + /* Secondary toolbar */ + .secondary-toolbar { + @apply sticky top-12 z-40 border-b px-4 py-3 border-app-border bg-app-panel; + } + + .secondary-toolbar__content { + @apply flex items-center justify-between; + } + + .installations-toolbar { + @apply sticky top-12 z-40 border-b px-4 py-3 border-app-border bg-app-panel; + } + + .installations-toolbar .installation-card { + @apply border-0; + } + .app-title { @apply text-sm md:text-base font-semibold; } .nav-tabs { @apply flex border-2 border-minecraft-slate-800 bg-minecraft-slate-900 rounded-sm; @@ -274,19 +298,41 @@ /* Installations grid/cards */ .installations-grid { @apply grid gap-3 md:grid-cols-2 lg:grid-cols-3; } - .installation-card { @apply panel cursor-pointer; } - .installation-card.selected { @apply border-brand-accent; outline: 2px solid color-mix(in oklab, var(--color-brand-accent) 35%, transparent); } - .installation-header { @apply flex items-center justify-between border-b px-4 py-3 border-app-border; } + .installation-card { + @apply panel flex flex-col cursor-pointer contain-layout transition-all duration-200 rounded-lg border p-4 hover:shadow-lg; + } + .installation-card.selected { + @apply border-brand-accent bg-brand-accent/5; + } + .installation-header { + @apply text-sm font-semibold mb-2 flex items-center justify-between; + } + .installation-placeholder { + @apply w-full h-32 bg-app-border/20 rounded flex items-center justify-center mb-2; + } + .installation-details { + @apply flex flex-col gap-3 transition-all duration-200 overflow-hidden; + } + .installation-details.max-h-0 { + max-height: 0; + padding: 0; + margin: 0; + } + .installation-details.max-h-full { + max-height: 200px; + padding: 12px 0; + } .installation-title { @apply flex items-center gap-2; } .installation-title h3 { @apply text-sm font-semibold; } .installation-checkbox { @apply cursor-pointer accent-brand-accent bg-minecraft-slate-500 border-minecraft-slate-800 appearance-none rounded-xs; } - .preset-icon { @apply size-6 sm:size-12 rounded-sm object-cover; } - .preview-badge { @apply badge bg-brand-accent-600 text-white; border-color: color-mix(in oklab, var(--color-brand-accent-600) 70%, black 30%); } + .preset-icon { @apply w-full h-auto rounded object-cover mb-2; } + .preview-badge { @apply badge bg-brand-accent-600 text-white text-xs; border-color: color-mix(in oklab, var(--color-brand-accent-600) 70%, black 30%); } .installation-path { @apply px-4 pt-2 text-xs text-app-muted break-all font-mono select-all; } - .installed-preset-info, .no-preset-info { @apply px-4 text-xs; } + .installed-preset-info { @apply space-y-1; } .no-preset-info { @apply text-app-muted; } .installation-actions { @apply panel__body flex items-center gap-2; } .checkbox-label { @apply text-xs text-app-muted; } + .installation-action-btn { @apply m-0; } /* Presets */ .presets-grid { @apply flex flex-col max-w-full gap-4; } @@ -318,7 +364,8 @@ @apply flex flex-col gap-3; } - .install-preset-btn { @apply m-4 button button--primary; } + .install-preset-btn { @apply m-4 btn; } + .installation-action-btn { @apply m-0; } /* Empty state */ .empty-state { @apply panel p-6 text-center text-sm text-app-muted; } @@ -378,17 +425,13 @@ .console-panel--expanded { @apply max-h-80; } .console-panel--collapsed { @apply max-h-0 rounded-b-xl; } - body:has(.console-panel--expanded) { - @apply overflow-hidden h-screen; - } - body:has(.console-panel--expanded) .status-alert { @apply bottom-80; } /* Switch Component */ .switch { - @apply grid grid-flow-row grid-cols-3; + @apply grid grid-flow-row grid-cols-3 place-items-center; } .switch:hover .switch__track .switch__button { @@ -408,7 +451,7 @@ } .switch__label { - @apply cursor-pointer select-none text-lg font-medium text-minecraft-slate-100 col-span-2; + @apply cursor-pointer select-none text-sm font-medium text-minecraft-slate-100 col-span-2 row-span-2 place-items-center; } .switch__description { @@ -507,4 +550,165 @@ .loading { @apply text-center text-app-muted; } + + /* Modal Components */ + .modal-backdrop { + @apply fixed inset-0 z-50 flex items-center justify-center bg-black/50; + } + + .modal { + @apply panel max-w-2xl w-full mx-4 max-h-[90vh] overflow-hidden flex flex-col; + } + + .modal__header { + @apply panel__header flex items-center justify-between; + } + + .modal__title { + @apply panel__title; + } + + .modal__close-btn { + @apply w-8 h-8 flex items-center justify-center rounded text-app-muted hover:text-app-fg hover:bg-app-border transition-colors text-xl leading-none cursor-pointer; + } + + .modal__content { + @apply panel__body flex-1 overflow-y-auto; + } + + /* Installation Instance Modal */ + .installation-modal { + @apply max-w-3xl; + } + + .installation-modal__content { + @apply space-y-4; + } + + .installation-modal__description { + @apply text-sm text-app-muted; + } + + .installation-modal__controls { + @apply flex items-center justify-between border-b pb-3 border-app-border; + } + + .installation-modal__count { + @apply text-sm text-app-muted; + } + + .installation-modal__list { + @apply space-y-2 max-h-80 overflow-y-auto; + } + + .installation-item { + @apply panel cursor-pointer transition-all duration-200 hover:border-brand-accent/50; + } + + .installation-item--selected { + @apply border-brand-accent bg-brand-accent/5; + } + + .installation-item__label { + @apply flex items-start gap-3 p-3 cursor-pointer; + } + + .installation-item__checkbox { + @apply mt-1 cursor-pointer accent-brand-accent; + } + + .installation-item__info { + @apply flex-1 space-y-1; + } + + .installation-item__name { + @apply font-semibold text-sm; + } + + .installation-item__path { + @apply text-xs text-app-muted font-mono break-all; + } + + .installation-item__badge { + @apply badge bg-brand-accent-600 text-white text-xs; + } + + .installation-item__preset { + @apply text-xs text-app-muted; + } + + .installation-modal__actions { + @apply flex justify-end gap-2 pt-4 border-t border-app-border; + } + + /* Sidebar Navigation */ + .sidebar-nav { + @apply flex flex-col h-full bg-app-panel border-r border-app-border; + width: 16rem; + } + + .sidebar-nav__header { + @apply px-4 py-3 border-b border-app-border; + } + + .sidebar-nav__title { + @apply text-xs font-semibold uppercase tracking-wider text-app-muted; + } + + .sidebar-nav__content { + @apply flex flex-col gap-1 p-2; + } + + .sidebar-nav__item { + @apply flex items-center gap-3 w-full text-left rounded-md px-3 py-3 text-sm border transition-colors text-app-fg border-transparent bg-transparent hover:bg-app-panel/50; + } + + .sidebar-nav__item:hover { + @apply border-app-border bg-app-panel/90; + } + + .sidebar-nav__item--active { + @apply border-brand-accent bg-brand-accent/20 text-brand-accent; + } + + .sidebar-nav__item-icon { + @apply flex-shrink-0 text-app-muted; + } + + .sidebar-nav__item--active .sidebar-nav__item-icon { + @apply text-brand-accent; + } + + .sidebar-nav__item-content { + @apply flex flex-col gap-0.5 min-w-0 flex-1; + } + + .sidebar-nav__item-label { + @apply font-medium text-sm; + } + + .sidebar-nav__item-description { + @apply text-xs text-app-muted leading-tight; + } + + .sidebar-nav__item--active .sidebar-nav__item-description { + @apply text-brand-accent/70; + } + + /* App Layout with Sidebar */ + .app-with-sidebar { + @apply flex min-h-screen bg-app-bg text-app-fg; + } + + .app-sidebar { + @apply flex-shrink-0; + } + + .app-main { + @apply flex-1 flex flex-col min-w-0; + } + + .app-content { + @apply flex-1 overflow-hidden; + } } \ No newline at end of file diff --git a/v3/vite.config.ts b/v3/vite.config.ts index 6ee3450..6bbc401 100644 --- a/v3/vite.config.ts +++ b/v3/vite.config.ts @@ -15,7 +15,7 @@ export default defineConfig(async () => ({ server: { port: 1420, strictPort: true, - host: host || false, + host: host || "localhost", hmr: host ? { protocol: "ws", From 5449567c0838f7386db97dd41e43999d63997c7d Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Sun, 17 Aug 2025 14:25:14 -0500 Subject: [PATCH 17/38] chore: Apply formatting --- v3/src/components/ActionsTab.tsx | 165 +++++------ v3/src/components/App.tsx | 21 +- v3/src/components/AppHeader.tsx | 7 +- v3/src/components/DeepLinkDialog.tsx | 55 ++-- v3/src/components/Logo.tsx | 38 +-- v3/src/components/PresetIcon.tsx | 16 +- v3/src/components/PresetsTab.tsx | 279 ++++++++++-------- v3/src/components/RtpackDialog.tsx | 40 ++- v3/src/components/StatusBar.tsx | 4 +- v3/src/components/creator/CreatorTab.tsx | 11 +- .../installations/InstallationCard.tsx | 31 +- .../InstallationInstanceModal.tsx | 46 +-- .../installations/InstallationNav.tsx | 50 ++-- .../installations/InstallationsTab.tsx | 114 +++---- .../installations/InstallationsToolbar.tsx | 1 - v3/src/components/presets/PresetCard.tsx | 49 +-- v3/src/components/ui/BlockPath.tsx | 5 +- v3/src/components/ui/Modal.tsx | 8 +- v3/src/components/ui/SecondaryToolbar.tsx | 12 +- v3/src/components/ui/SideNav.tsx | 143 +++++---- v3/src/components/ui/Switch.tsx | 120 ++++---- v3/src/main.tsx | 14 +- 22 files changed, 658 insertions(+), 571 deletions(-) diff --git a/v3/src/components/ActionsTab.tsx b/v3/src/components/ActionsTab.tsx index 531eeb5..c3e4b77 100644 --- a/v3/src/components/ActionsTab.tsx +++ b/v3/src/components/ActionsTab.tsx @@ -4,90 +4,89 @@ import { useTranslation } from "react-i18next"; import { invoke } from "@tauri-apps/api/core"; export default function ActionsTab() { - const { t } = useTranslation(); - const { addMessage } = useStatusStore(); - const { selectedInstallations, installRTX, updateOptions, backupSupportFiles } = useAppStore(); + const { t } = useTranslation(); + const { addMessage } = useStatusStore(); + const { + selectedInstallations, + installRTX, + updateOptions, + backupSupportFiles, + } = useAppStore(); - const handleActionClick = (actionFn: (installPath: string) => Promise) => { - if (selectedInstallations.size === 0) { - addMessage({ - message: t("status_select_installation_warning"), - type: "error", - }); - return; - } + const handleActionClick = ( + actionFn: (installPath: string) => Promise + ) => { + if (selectedInstallations.size === 0) { + addMessage({ + message: t("status_select_installation_warning"), + type: "error", + }); + return; + } - for (const installPath of selectedInstallations) { - actionFn(installPath); - } - }; + for (const installPath of selectedInstallations) { + actionFn(installPath); + } + }; - const handleRegisterProtocol = async () => { - try { - await invoke("register_brtx_protocol"); - addMessage({ - message: "Successfully registered brtx:// protocol", - type: "success", - }); - } catch (error) { - addMessage({ - message: `Failed to register protocol: ${error}`, - type: "error", - }); - } - }; + const handleRegisterProtocol = async () => { + try { + await invoke("register_brtx_protocol"); + addMessage({ + message: "Successfully registered brtx:// protocol", + type: "success", + }); + } catch (error) { + addMessage({ + message: `Failed to register protocol: ${error}`, + type: "error", + }); + } + }; - return ( -
-
-

{t("actions_title")}

-
-
- - - - -
-
- ) -} \ No newline at end of file + return ( +
+
+

{t("actions_title")}

+
+
+ + + + +
+
+ ); +} diff --git a/v3/src/components/App.tsx b/v3/src/components/App.tsx index b59102c..3d54578 100644 --- a/v3/src/components/App.tsx +++ b/v3/src/components/App.tsx @@ -1,5 +1,4 @@ import React, { useEffect, useState } from "react"; -import { useTranslation } from "react-i18next"; import { listen } from "@tauri-apps/api/event"; import { StatusBarContainer } from "./StatusBar"; @@ -11,13 +10,11 @@ import AppHeader from "./AppHeader"; import ActionsTab from "./ActionsTab"; import PresetsTab from "./PresetsTab"; import CreatorTab from "./creator/CreatorTab"; -import InstallationsToolbar from "./installations/InstallationsToolbar"; import { SideNav } from "./ui/SideNav"; import InstallationNav from "./installations/InstallationNav"; import InstallationsTab from "./installations/InstallationsTab"; export const App: React.FC = () => { - const { t } = useTranslation(); const [rtpackDialogOpen, setRtpackDialogOpen] = useState(false); const [rtpackPath, setRtpackPath] = useState(""); const [deepLinkDialogOpen, setDeepLinkDialogOpen] = useState(false); @@ -77,8 +74,6 @@ export const App: React.FC = () => { }; }, []); - - return (
{/* Top Header */} @@ -100,21 +95,13 @@ export const App: React.FC = () => {
{/* Tab Content */}
- {activeTab === "installations" && ( - - )} + {activeTab === "installations" && } - {activeTab === "presets" && ( - - )} + {activeTab === "presets" && } - {activeTab === "actions" && ( - - )} + {activeTab === "actions" && } - {activeTab === "creator" && ( - - )} + {activeTab === "creator" && }
diff --git a/v3/src/components/AppHeader.tsx b/v3/src/components/AppHeader.tsx index ea0f05b..1c4b3d1 100644 --- a/v3/src/components/AppHeader.tsx +++ b/v3/src/components/AppHeader.tsx @@ -5,17 +5,14 @@ import { ToolbarSection } from "./ToolbarSection"; import Logo from "./Logo"; export default function AppHeader() { - const { - toolbarOpen, - setToolbarOpen, - } = useAppStore(); + const { toolbarOpen, setToolbarOpen } = useAppStore(); const { t } = useTranslation(); return (
- +
{/* Menu button to show toolbar */}
-

Type: {protocolData.protocol_type}

-

ID: {protocolData.id}

+

+ Type: {protocolData.protocol_type} +

+

+ ID: {protocolData.id} +

@@ -118,12 +138,15 @@ export const DeepLinkDialog: React.FC = ({

{selectedInstallations.size === 0 ? (

- No installations selected. Please go to the Installations tab and select target installations. + No installations selected. Please go to the Installations + tab and select target installations.

) : (
    {Array.from(selectedInstallations).map((path) => { - const installation = installations.find(i => i.InstallLocation === path); + const installation = installations.find( + (i) => i.InstallLocation === path + ); return (
  • {installation?.FriendlyName || path} @@ -142,17 +165,15 @@ export const DeepLinkDialog: React.FC = ({
- diff --git a/v3/src/components/Logo.tsx b/v3/src/components/Logo.tsx index f3e8116..9ce83eb 100644 --- a/v3/src/components/Logo.tsx +++ b/v3/src/components/Logo.tsx @@ -1,24 +1,24 @@ import { cx } from "classix"; const Logo = (props: React.SVGProps) => ( - - - - - + + + + + ); export default Logo; diff --git a/v3/src/components/PresetIcon.tsx b/v3/src/components/PresetIcon.tsx index 2276c08..953eefb 100644 --- a/v3/src/components/PresetIcon.tsx +++ b/v3/src/components/PresetIcon.tsx @@ -1,9 +1,21 @@ import { cx } from "classix"; -export default function PresetIcon({ uuid, size, extra }: { uuid: string; size?: string; extra?: string }) { +export default function PresetIcon({ + uuid, + size, + extra, +}: { + uuid: string; + size?: string; + extra?: string; +}) { return ( {`${uuid} { diff --git a/v3/src/components/PresetsTab.tsx b/v3/src/components/PresetsTab.tsx index ccd8b0c..77499e8 100644 --- a/v3/src/components/PresetsTab.tsx +++ b/v3/src/components/PresetsTab.tsx @@ -6,144 +6,161 @@ import InstallationInstanceModal from "./installations/InstallationInstanceModal import { useState, useMemo } from "react"; export default function PresetsTab() { - const { t } = useTranslation(); - const { presets, installations } = useAppStore(); - const [searchQuery, setSearchQuery] = useState(""); - const [selectedFilter, setSelectedFilter] = useState("all"); - const { - selectedPreset, - installingPresets, - installModalOpen, - installModalPresetUuid, - handlePresetSelection, - openInstallModal, - closeInstallModal, - handleInstallToSelected - } = usePresetsStore(); + const { t } = useTranslation(); + const { presets, installations } = useAppStore(); + const [searchQuery, setSearchQuery] = useState(""); + const [selectedFilter, setSelectedFilter] = useState("all"); + const { + selectedPreset, + installingPresets, + installModalOpen, + installModalPresetUuid, + handlePresetSelection, + openInstallModal, + closeInstallModal, + handleInstallToSelected, + } = usePresetsStore(); - const onPresetInstall = (uuid: string) => openInstallModal(uuid); + const onPresetInstall = (uuid: string) => openInstallModal(uuid); - const handleModalInstall = (selectedInstallations: string[]) => { - if (installModalPresetUuid) { - handleInstallToSelected(installModalPresetUuid, selectedInstallations, t); - } - }; + const handleModalInstall = (selectedInstallations: string[]) => { + if (installModalPresetUuid) { + handleInstallToSelected(installModalPresetUuid, selectedInstallations, t); + } + }; - const getPresetName = (uuid: string): string => { - const preset = presets.find(p => p.uuid === uuid); - return preset?.name || "Unknown Preset"; - }; + const getPresetName = (uuid: string): string => { + const preset = presets.find((p) => p.uuid === uuid); + return preset?.name || "Unknown Preset"; + }; - const filteredPresets = useMemo(() => { - let filtered = presets; + const filteredPresets = useMemo(() => { + let filtered = presets; - // Apply search filter - if (searchQuery.trim()) { - const query = searchQuery.toLowerCase(); - filtered = filtered.filter(preset => - preset.name.toLowerCase().includes(query) || - preset.stub.toLowerCase().includes(query) || - preset.tonemapping.toLowerCase().includes(query) || - preset.bloom.toLowerCase().includes(query) - ); - } + // Apply search filter + if (searchQuery.trim()) { + const query = searchQuery.toLowerCase(); + filtered = filtered.filter( + (preset) => + preset.name.toLowerCase().includes(query) || + preset.stub.toLowerCase().includes(query) || + preset.tonemapping.toLowerCase().includes(query) || + preset.bloom.toLowerCase().includes(query) + ); + } - // Apply category filter - if (selectedFilter !== "all") { - filtered = filtered.filter(preset => { - switch (selectedFilter) { - case "rtx": - return preset.name.toLowerCase().includes("rtx") || preset.stub.toLowerCase().includes("rtx"); - case "vanilla": - return preset.name.toLowerCase().includes("vanilla") || preset.stub.toLowerCase().includes("vanilla"); - case "enhanced": - return preset.name.toLowerCase().includes("enhanced") || preset.name.toLowerCase().includes("hd"); - default: - return true; - } - }); + // Apply category filter + if (selectedFilter !== "all") { + filtered = filtered.filter((preset) => { + switch (selectedFilter) { + case "rtx": + return ( + preset.name.toLowerCase().includes("rtx") || + preset.stub.toLowerCase().includes("rtx") + ); + case "vanilla": + return ( + preset.name.toLowerCase().includes("vanilla") || + preset.stub.toLowerCase().includes("vanilla") + ); + case "enhanced": + return ( + preset.name.toLowerCase().includes("enhanced") || + preset.name.toLowerCase().includes("hd") + ); + default: + return true; } + }); + } - return filtered; - }, [presets, searchQuery, selectedFilter]); + return filtered; + }, [presets, searchQuery, selectedFilter]); - return ( -
-
-
-

- {t("presets_title")} -

- - {t("presets_loaded_count", { count: filteredPresets.length })} / {presets.length} - -
-
-
-
- setSearchQuery(e.target.value)} - className="w-full px-3 py-2 bg-app-panel border border-app-border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-brand-accent focus:border-transparent" - /> -
-
- -
-
-
- {filteredPresets.length > 0 ? ( - filteredPresets.map((preset) => ( - - )) - ) : ( -
-

- {searchQuery || selectedFilter !== "all" - ? t("presets_none_match_filter", "No presets match your search criteria") - : t("presets_none_available") - } -

- {(searchQuery || selectedFilter !== "all") && ( - - )} -
- )} -
- +
+
+

{t("presets_title")}

+ + {t("presets_loaded_count", { count: filteredPresets.length })} /{" "} + {presets.length} + +
+
+
+
+ setSearchQuery(e.target.value)} + className="w-full px-3 py-2 bg-app-panel border border-app-border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-brand-accent focus:border-transparent" + /> +
+
+ +
+
+
+ {filteredPresets.length > 0 ? ( + filteredPresets.map((preset) => ( + -
- ) -} \ No newline at end of file + )) + ) : ( +
+

+ {searchQuery || selectedFilter !== "all" + ? t( + "presets_none_match_filter", + "No presets match your search criteria" + ) + : t("presets_none_available")} +

+ {(searchQuery || selectedFilter !== "all") && ( + + )} +
+ )} +
+ + + ); +} diff --git a/v3/src/components/RtpackDialog.tsx b/v3/src/components/RtpackDialog.tsx index 17cebb7..e7aea6f 100644 --- a/v3/src/components/RtpackDialog.tsx +++ b/v3/src/components/RtpackDialog.tsx @@ -18,7 +18,9 @@ export const RtpackDialog: React.FC = ({ const { t } = useTranslation(); const { installations, refreshInstallations } = useAppStore(); const { addMessage } = useStatusStore(); - const [selectedInstallations, setSelectedInstallations] = useState>(new Set()); + const [selectedInstallations, setSelectedInstallations] = useState< + Set + >(new Set()); const [isInstalling, setIsInstalling] = useState(false); useEffect(() => { @@ -49,7 +51,7 @@ export const RtpackDialog: React.FC = ({ setIsInstalling(true); try { addMessage({ message: t("status_installing_rtpack"), type: "loading" }); - + await invoke("install_from_rtpack", { rtpackPath, selectedNames: Array.from(selectedInstallations), @@ -70,7 +72,9 @@ export const RtpackDialog: React.FC = ({ if (selectedInstallations.size === installations.length) { setSelectedInstallations(new Set()); } else { - setSelectedInstallations(new Set(installations.map(i => i.InstallLocation))); + setSelectedInstallations( + new Set(installations.map((i) => i.InstallLocation)) + ); } }; @@ -90,8 +94,18 @@ export const RtpackDialog: React.FC = ({ className="text-gray-400 hover:text-gray-600 dark:hover:text-gray-200" disabled={isInstalling} > - - + +
@@ -115,13 +129,17 @@ export const RtpackDialog: React.FC = ({ className="text-sm text-blue-600 hover:text-blue-800 dark:text-blue-400 dark:hover:text-blue-200" disabled={isInstalling} > - {selectedInstallations.size === installations.length ? t("deselect_all") : t("select_all")} + {selectedInstallations.size === installations.length + ? t("deselect_all") + : t("select_all")}
{installations.length === 0 ? (
-

{t("no_minecraft_installations")}

+

+ {t("no_minecraft_installations")} +

) : (
@@ -132,8 +150,12 @@ export const RtpackDialog: React.FC = ({ > handleInstallationToggle(installation.InstallLocation)} + checked={selectedInstallations.has( + installation.InstallLocation + )} + onChange={() => + handleInstallationToggle(installation.InstallLocation) + } disabled={isInstalling} className="w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600" /> diff --git a/v3/src/components/StatusBar.tsx b/v3/src/components/StatusBar.tsx index 745aa96..6fb0331 100644 --- a/v3/src/components/StatusBar.tsx +++ b/v3/src/components/StatusBar.tsx @@ -69,8 +69,8 @@ export const StatusBarContainer: React.FC = () => { }; const handleMouseLeave = (id: string): void => { - const message = messages.find(msg => msg.id === id); - if (message && message.type !== 'loading') { + const message = messages.find((msg) => msg.id === id); + if (message && message.type !== "loading") { setTimeout(() => { removeMessage(id); }, 5000); diff --git a/v3/src/components/creator/CreatorTab.tsx b/v3/src/components/creator/CreatorTab.tsx index ef70275..21650f1 100644 --- a/v3/src/components/creator/CreatorTab.tsx +++ b/v3/src/components/creator/CreatorTab.tsx @@ -28,12 +28,15 @@ export default function CreatorTab() { settingsHash: settingsHash.trim(), selectedNames, }); - + addMessage({ - message: `Successfully installed creator settings ${settingsHash.slice(0, 8)}...`, + message: `Successfully installed creator settings ${settingsHash.slice( + 0, + 8 + )}...`, type: "success", }); - + setSettingsHash(""); } catch (error) { addMessage({ @@ -47,7 +50,7 @@ export default function CreatorTab() { const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); - + if (!settingsHash.trim()) { addMessage({ message: "Please enter a settings hash", diff --git a/v3/src/components/installations/InstallationCard.tsx b/v3/src/components/installations/InstallationCard.tsx index bc4359a..6584bb4 100644 --- a/v3/src/components/installations/InstallationCard.tsx +++ b/v3/src/components/installations/InstallationCard.tsx @@ -41,7 +41,7 @@ export const InstallationCard: React.FC = ({
= ({
)} -

+

{installation.FriendlyName} {installation.Preview && ( Preview )}

- -
+ +
{installation.installed_preset ? (

- {t('current_preset', { name: installation.installed_preset.name })} + {t("current_preset", { + name: installation.installed_preset.name, + })}

- Installed: {new Date(installation.installed_preset.installed_at).toLocaleDateString()} + Installed:{" "} + {new Date( + installation.installed_preset.installed_at + ).toLocaleDateString()}

) : (

- {t('no_preset_installed')} + {t("no_preset_installed")}

)} - +
Installation Path
@@ -90,7 +104,6 @@ export const InstallationCard: React.FC = ({
-
); }; diff --git a/v3/src/components/installations/InstallationInstanceModal.tsx b/v3/src/components/installations/InstallationInstanceModal.tsx index 03e5a29..7874bab 100644 --- a/v3/src/components/installations/InstallationInstanceModal.tsx +++ b/v3/src/components/installations/InstallationInstanceModal.tsx @@ -20,10 +20,12 @@ const InstallationInstanceModal: React.FC = ({ installations, presetName, onInstall, - isInstalling = false + isInstalling = false, }) => { const { t } = useTranslation(); - const [selectedInstallations, setSelectedInstallations] = useState>(new Set()); + const [selectedInstallations, setSelectedInstallations] = useState< + Set + >(new Set()); const handleInstallationToggle = (installPath: string): void => { const newSelected = new Set(selectedInstallations); @@ -39,7 +41,9 @@ const InstallationInstanceModal: React.FC = ({ if (selectedInstallations.size === installations.length) { setSelectedInstallations(new Set()); } else { - setSelectedInstallations(new Set(installations.map(inst => inst.InstallLocation))); + setSelectedInstallations( + new Set(installations.map((inst) => inst.InstallLocation)) + ); } }; @@ -66,22 +70,21 @@ const InstallationInstanceModal: React.FC = ({

{t("select_installations_description")}

- +
- {t("selected_count", { - selected: selectedInstallations.size, - total: installations.length + {t("selected_count", { + selected: selectedInstallations.size, + total: installations.length, })}
@@ -92,15 +95,20 @@ const InstallationInstanceModal: React.FC = ({ key={installation.InstallLocation} className={cx( "installation-item", - selectedInstallations.has(installation.InstallLocation) && "installation-item--selected" + selectedInstallations.has(installation.InstallLocation) && + "installation-item--selected" )} >
@@ -76,19 +75,14 @@ export const InstallationCard: React.FC = ({

)} -
- + - - Select for installation -
- +
); }; diff --git a/v3/src/components/Logo.tsx b/v3/src/components/Logo.tsx index ee8814a..f3e8116 100644 --- a/v3/src/components/Logo.tsx +++ b/v3/src/components/Logo.tsx @@ -3,7 +3,7 @@ const Logo = (props: React.SVGProps) => ( void; onInstall?: (uuid: string) => void; } @@ -18,9 +23,11 @@ interface PresetCardProps { export const PresetCard: React.FC = ({ preset, selected = false, + isInstalling = false, onSelectionChange, onInstall, }) => { + const { t } = useTranslation(); const handleCardClick = (e: React.MouseEvent) => { if ((e.target as HTMLElement).closest(".install-preset-btn")) return; @@ -35,34 +42,65 @@ export const PresetCard: React.FC = ({ return (
); }; diff --git a/v3/src/components/PresetsTab.tsx b/v3/src/components/PresetsTab.tsx new file mode 100644 index 0000000..9a7a732 --- /dev/null +++ b/v3/src/components/PresetsTab.tsx @@ -0,0 +1,50 @@ +import { PresetCard } from "./PresetCard"; +import { useTranslation } from "react-i18next"; +import { useAppStore } from "../store/appStore"; +import { usePresetsStore } from "../store/presetsStore"; + +export default function PresetsTab() { + const { t } = useTranslation(); + const { presets } = useAppStore(); + const { + selectedPreset, + installingPresets, + handlePresetSelection, + handlePresetInstall + } = usePresetsStore(); + + const onPresetInstall = (uuid: string) => handlePresetInstall(uuid, t); + + return ( +
+
+
+

+ {t("presets_title")} +

+ + {t("presets_loaded_count", { count: presets.length })} + +
+
+
+ {presets.length > 0 ? ( + presets.map((preset) => ( + + )) + ) : ( +
+

{t("presets_none_available")}

+
+ )} +
+
+ ) +} \ No newline at end of file diff --git a/v3/src/components/RtpackDialog.tsx b/v3/src/components/RtpackDialog.tsx new file mode 100644 index 0000000..17cebb7 --- /dev/null +++ b/v3/src/components/RtpackDialog.tsx @@ -0,0 +1,175 @@ +import React, { useState, useEffect } from "react"; +import { useTranslation } from "react-i18next"; +import { invoke } from "@tauri-apps/api/core"; +import { useAppStore } from "../store/appStore"; +import { useStatusStore } from "../store/statusStore"; + +interface RtpackDialogProps { + isOpen: boolean; + rtpackPath: string; + onClose: () => void; +} + +export const RtpackDialog: React.FC = ({ + isOpen, + rtpackPath, + onClose, +}) => { + const { t } = useTranslation(); + const { installations, refreshInstallations } = useAppStore(); + const { addMessage } = useStatusStore(); + const [selectedInstallations, setSelectedInstallations] = useState>(new Set()); + const [isInstalling, setIsInstalling] = useState(false); + + useEffect(() => { + if (isOpen && installations.length === 0) { + refreshInstallations(); + } + }, [isOpen, installations.length, refreshInstallations]); + + const handleInstallationToggle = (installLocation: string) => { + const newSet = new Set(selectedInstallations); + if (newSet.has(installLocation)) { + newSet.delete(installLocation); + } else { + newSet.add(installLocation); + } + setSelectedInstallations(newSet); + }; + + const handleInstall = async () => { + if (selectedInstallations.size === 0) { + addMessage({ + message: t("status_select_installation_warning"), + type: "error", + }); + return; + } + + setIsInstalling(true); + try { + addMessage({ message: t("status_installing_rtpack"), type: "loading" }); + + await invoke("install_from_rtpack", { + rtpackPath, + selectedNames: Array.from(selectedInstallations), + }); + + addMessage({ message: t("status_install_success"), type: "success" }); + await refreshInstallations(); + onClose(); + } catch (error) { + const errorMsg = t("status_install_error", { error }); + addMessage({ message: errorMsg, type: "error" }); + } finally { + setIsInstalling(false); + } + }; + + const handleSelectAll = () => { + if (selectedInstallations.size === installations.length) { + setSelectedInstallations(new Set()); + } else { + setSelectedInstallations(new Set(installations.map(i => i.InstallLocation))); + } + }; + + if (!isOpen) return null; + + const fileName = rtpackPath.split(/[\\\/]/).pop() || rtpackPath; + + return ( +
+
+
+

+ {t("rtpack_dialog_title")} +

+ +
+ +
+

+ {t("rtpack_dialog_description")} +

+

+ {fileName} +

+
+ +
+
+

+ {t("select_minecraft_instances")} +

+ +
+ + {installations.length === 0 ? ( +
+

{t("no_minecraft_installations")}

+
+ ) : ( +
+ {installations.map((installation) => ( + + ))} +
+ )} +
+ +
+ + +
+
+
+ ); +}; diff --git a/v3/src/components/StatusBar.tsx b/v3/src/components/StatusBar.tsx index 856da2e..745aa96 100644 --- a/v3/src/components/StatusBar.tsx +++ b/v3/src/components/StatusBar.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useEffect, useState } from "react"; import { X, Info, AlertTriangle, CheckCircle } from "lucide-react"; import { cx } from "classix"; import { useStatusStore, StatusMessage } from "../store/statusStore"; @@ -21,19 +21,39 @@ const StatusIcon: React.FC<{ type: StatusMessage["type"] }> = ({ type }) => { const StatusToast: React.FC<{ message: StatusMessage; onDismiss: (id: string) => void; -}> = ({ message, onDismiss }) => { + onMouseEnter: (id: string) => void; + onMouseLeave: (id: string) => void; +}> = ({ message, onDismiss, onMouseEnter, onMouseLeave }) => { + const [isVisible, setIsVisible] = useState(false); + + useEffect(() => { + const timer = setTimeout(() => setIsVisible(true), 10); + return () => clearTimeout(timer); + }, []); + + const handleDismiss = (): void => { + setIsVisible(false); + setTimeout(() => onDismiss(message.id), 200); + }; + return (
onMouseEnter(message.id)} + onMouseLeave={() => onMouseLeave(message.id)} > {message.message} @@ -42,13 +62,34 @@ const StatusToast: React.FC<{ }; export const StatusBarContainer: React.FC = () => { - const { messages, removeMessage } = useStatusStore(); + const { messages, removeMessage, clearTimer } = useStatusStore(); + + const handleMouseEnter = (id: string): void => { + clearTimer(id); + }; + + const handleMouseLeave = (id: string): void => { + const message = messages.find(msg => msg.id === id); + if (message && message.type !== 'loading') { + setTimeout(() => { + removeMessage(id); + }, 5000); + } + }; return ( -
- {messages.map((msg) => ( - - ))} +
+ {messages + .sort((a, b) => b.timestamp - a.timestamp) + .map((msg) => ( + + ))}
); }; diff --git a/v3/src/components/ui/Button.tsx b/v3/src/components/ui/Button.tsx new file mode 100644 index 0000000..4886277 --- /dev/null +++ b/v3/src/components/ui/Button.tsx @@ -0,0 +1,37 @@ +import cx from "classix"; + +export default function Button({ + children, + theme = null, + size = null, + disabled = false, + block = false, + ...rest +}: { + children: React.ReactNode; + theme?: "primary" | "secondary" | null; + size?: "sm" | "md" | "lg" | null; + disabled?: boolean; + block?: boolean; + [key: string]: any; +}) { + return ( + + ); +} diff --git a/v3/src/components/ui/Switch.tsx b/v3/src/components/ui/Switch.tsx new file mode 100644 index 0000000..915aebd --- /dev/null +++ b/v3/src/components/ui/Switch.tsx @@ -0,0 +1,71 @@ +interface SwitchProps { + checked: boolean; + onCheckedChange: (checked: boolean) => void; + label?: string; + description?: string; + id?: string; +} + +export default function Switch({ + checked, + onCheckedChange, + label, + description, + id, +}: SwitchProps) { + const handleClick = () => { + onCheckedChange(!checked); + }; + + return ( +
+ {label && ( + + )} + + {description && ( +
+ {description} +
+ )} + +
{ + if (e.key === ' ' || e.key === 'Enter') { + e.preventDefault(); + handleClick(); + } + }} + > +
+ ON +
+
+ OFF +
+ +
+
+
+
+ + {/* Hidden input for form compatibility */} + {}} // Controlled by the div click handler + style={{ display: 'none' }} + tabIndex={-1} + /> +
+ ); +} \ No newline at end of file diff --git a/v3/src/store/presetsStore.ts b/v3/src/store/presetsStore.ts new file mode 100644 index 0000000..d298b63 --- /dev/null +++ b/v3/src/store/presetsStore.ts @@ -0,0 +1,71 @@ +import { create } from 'zustand'; +import { invoke } from "@tauri-apps/api/core"; +import { useAppStore } from './appStore'; +import { useStatusStore } from './statusStore'; + +interface PresetsStore { + selectedPreset: string | null; + installingPresets: Set; + setSelectedPreset: (uuid: string | null) => void; + handlePresetSelection: (uuid: string, selected: boolean) => void; + handlePresetInstall: (uuid: string, t: (key: string, options?: any) => string) => Promise; +} + +export const usePresetsStore = create((set) => ({ + selectedPreset: null, + installingPresets: new Set(), + + setSelectedPreset: (uuid: string | null) => { + set({ selectedPreset: uuid }); + }, + + handlePresetSelection: (uuid: string, selected: boolean) => { + set({ selectedPreset: selected ? uuid : null }); + }, + + handlePresetInstall: async (uuid: string, t: (key: string, options?: any) => string) => { + const { selectedInstallations, addConsoleOutput, refreshInstallations } = useAppStore.getState(); + const { addMessage } = useStatusStore.getState(); + + if (selectedInstallations.size === 0) { + addMessage({ + message: t("status_select_installation_warning"), + type: "error", + }); + return; + } + + // Add preset to installing set + set((state) => ({ + installingPresets: new Set(state.installingPresets).add(uuid) + })); + + try { + addMessage({ message: t("status_installing_preset"), type: "loading" }); + addConsoleOutput( + t("log_installing_preset", { uuid, count: selectedInstallations.size }) + ); + + for (const installPath of selectedInstallations) { + await invoke("download_and_install_pack", { uuid, selectedNames: [installPath] }); + addConsoleOutput(t("log_installed_to", { installPath })); + } + + addMessage({ message: t("status_install_success"), type: "success" }); + addConsoleOutput(t("log_install_complete")); + // Refresh installations to show updated preset info + await refreshInstallations(); + } catch (error) { + const errorMsg = t("status_install_error", { error }); + addMessage({ message: errorMsg, type: "error" }); + addConsoleOutput(errorMsg); + } finally { + // Remove preset from installing set + set((state) => { + const newSet = new Set(state.installingPresets); + newSet.delete(uuid); + return { installingPresets: newSet }; + }); + } + }, +})); diff --git a/v3/src/store/statusStore.ts b/v3/src/store/statusStore.ts index 93042dc..05cbb64 100644 --- a/v3/src/store/statusStore.ts +++ b/v3/src/store/statusStore.ts @@ -6,20 +6,70 @@ export interface StatusMessage { id: string; message: string; type: StatusType; + timestamp: number; } interface StatusState { messages: StatusMessage[]; - addMessage: (message: Omit) => void; + timers: Map; + addMessage: (message: Omit) => void; removeMessage: (id: string) => void; + clearTimer: (id: string) => void; } -export const useStatusStore = create((set) => ({ +const AUTO_DISMISS_DELAY = 5000; // 5 seconds + +export const useStatusStore = create((set, get) => ({ messages: [], + timers: new Map(), addMessage: (message) => { const id = new Date().toISOString() + Math.random(); - set((state) => ({ messages: [...state.messages, { ...message, id }] })); + const timestamp = Date.now(); + const newMessage: StatusMessage = { ...message, id, timestamp }; + + set((state) => ({ + messages: [...state.messages, newMessage] + })); + + // Set up auto-dismiss timer (except for loading messages) + if (message.type !== 'loading') { + const timer = setTimeout(() => { + get().removeMessage(id); + }, AUTO_DISMISS_DELAY); + + set((state) => { + const newTimers = new Map(state.timers); + newTimers.set(id, timer); + return { timers: newTimers }; + }); + } + }, + removeMessage: (id) => { + const { timers } = get(); + const timer = timers.get(id); + if (timer) { + clearTimeout(timer); + } + + set((state) => { + const newTimers = new Map(state.timers); + newTimers.delete(id); + return { + messages: state.messages.filter((msg) => msg.id !== id), + timers: newTimers + }; + }); }, - removeMessage: (id) => - set((state) => ({ messages: state.messages.filter((msg) => msg.id !== id) })), + clearTimer: (id) => { + const { timers } = get(); + const timer = timers.get(id); + if (timer) { + clearTimeout(timer); + set((state) => { + const newTimers = new Map(state.timers); + newTimers.delete(id); + return { timers: newTimers }; + }); + } + } })); diff --git a/v3/src/styles.css b/v3/src/styles.css index 942840f..1dc0a2a 100644 --- a/v3/src/styles.css +++ b/v3/src/styles.css @@ -1,5 +1,86 @@ @import "tailwindcss"; -@import "./theme.css"; +@import "./styles/theme.css"; +@import "./styles/ui.css"; + +@keyframes rainbow-cycle { + 0% { + fill: oklch(0.901 0.058 230.902); + border-color: oklch(0.951 0.026 236.824); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.5), + 0 2px 4px -2px rgba(0, 0, 0, 0.5); + } + 10% { + fill: oklch(0.882 0.059 254.128); + border-color: oklch(0.932 0.032 255.585); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.75), + 0 2px 4px -2px rgba(0, 0, 0, 0.5); + } + 20% { + fill: oklch(0.894 0.057 293.283); + border-color: oklch(0.943 0.029 294.588); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.85), + 0 2px 4px -2px rgba(0, 0, 0, 0.5); + } + 30% { + fill: oklch(0.892 0.058 10.001); + border-color: oklch(0.941 0.03 12.58); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.75), + 0 2px 4px -2px rgba(0, 0, 0, 0.5); + } + 40% { + fill: oklch(0.885 0.062 18.334); + border-color: oklch(0.936 0.032 17.717); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.65), + 0 2px 4px -2px rgba(0, 0, 0, 0.5); + } + 50% { + fill: oklch(0.901 0.076 70.697); + border-color: oklch(0.954 0.038 75.164); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.75), + 0 2px 4px -2px rgba(0, 0, 0, 0.5); + } + 60% { + fill: oklch(0.924 0.12 95.746); + border-color: oklch(0.962 0.059 95.617); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.5), + 0 2px 4px -2px rgba(0, 0, 0, 0.5); + } + 70% { + fill: oklch(0.945 0.129 101.54); + border-color: oklch(0.973 0.071 103.193); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.65), + 0 2px 4px -2px rgba(0, 0, 0, 0.5); + } + 80% { + fill: oklch(0.938 0.127 124.321); + border-color: oklch(0.967 0.067 122.328); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.85), + 0 2px 4px -2px rgba(0, 0, 0, 0.85); + } + 90% { + fill: oklch(0.905 0.093 164.15); + border-color: oklch(0.95 0.052 163.051); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.75), + 0 2px 4px -2px rgba(0, 0, 0, 0.75); + } + 100% { + fill: oklch(0.917 0.08 205.041); + border-color: oklch(0.956 0.045 203.388); + box-shadow: + 0 4px 6px -1px rgba(0, 0, 0, 0.5), + 0 2px 4px -2px rgba(0, 0, 0, 0.5); + } +} /* Custom utilities - must be at top level, not nested in @layer */ @utility panel { @apply rounded-lg border shadow-sm bg-app-panel border-app-border; } @@ -8,33 +89,11 @@ @utility panel__body { @apply p-4; } @utility button { - @apply inline-flex items-center justify-center gap-2 rounded-md border-2 px-4 py-2 text-sm font-medium transition-all select-none disabled:pointer-events-none disabled:opacity-50 cursor-pointer; - @apply text-app-fg border-app-border bg-app-panel/95; - box-shadow: 0 3px 0 0 color-mix(in oklab, var(--color-app-border) 80%, black 20%); - transform: translateY(0); - &:hover { - @apply bg-app-panel/90; - transform: translateY(1px); - box-shadow: 0 2px 0 0 color-mix(in oklab, var(--color-app-border) 80%, black 20%); - } - &:active { - transform: translateY(3px); - box-shadow: 0 0 0 0 color-mix(in oklab, var(--color-app-border) 80%, black 20%); - } + @apply btn; } @utility button--primary { - @apply text-white bg-brand-accent-600 border-brand-accent; - box-shadow: 0 3px 0 0 color-mix(in oklab, var(--color-brand-accent-600) 80%, black 20%); - &:hover { - @apply bg-brand-accent; - transform: translateY(1px); - box-shadow: 0 2px 0 0 color-mix(in oklab, var(--color-brand-accent-600) 80%, black 20%); - } - &:active { - transform: translateY(3px); - box-shadow: 0 0 0 0 color-mix(in oklab, var(--color-brand-accent-600) 80%, black 20%); - } + @apply btn; } @utility button--ghost { @@ -78,7 +137,7 @@ } body { - @apply antialiased font-sans bg-app-bg text-app-fg; + @apply antialiased font-sans bg-app-bg text-app-fg scrollbar; } } @@ -129,7 +188,6 @@ .nav__link--active { @apply border-brand-accent bg-brand-accent/20; - outline: 2px solid color-mix(in oklab, var(--color-brand-accent) 35%, transparent); } /* Panels / cards - utilities moved to top level */ @@ -222,7 +280,7 @@ .installation-title { @apply flex items-center gap-2; } .installation-title h3 { @apply text-sm font-semibold; } .installation-checkbox { @apply cursor-pointer accent-brand-accent bg-minecraft-slate-500 border-minecraft-slate-800 appearance-none rounded-xs; } - .preset-icon { @apply size-6 rounded-sm object-cover; } + .preset-icon { @apply size-6 sm:size-12 rounded-sm object-cover; } .preview-badge { @apply badge bg-brand-accent-600 text-white; border-color: color-mix(in oklab, var(--color-brand-accent-600) 70%, black 30%); } .installation-path { @apply px-4 pt-2 text-xs text-app-muted break-all font-mono select-all; } .installed-preset-info, .no-preset-info { @apply px-4 text-xs; } @@ -231,10 +289,35 @@ .checkbox-label { @apply text-xs text-app-muted; } /* Presets */ - .presets-grid { @apply grid gap-3 sm:grid-cols-2 lg:grid-cols-3; } - .preset-card { @apply panel hover-lift cursor-pointer; } - .preset-card.selected { @apply border-brand-accent; outline: 2px solid color-mix(in oklab, var(--color-brand-accent) 35%, transparent); } + .presets-grid { @apply flex flex-col max-w-full gap-4; } + .presets-list { + @apply grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4; + } + .preset-card { + @apply panel flex flex-col cursor-pointer contain-layout transition-all duration-200 rounded-lg border p-4 hover:shadow-lg; + } + + .preset-card.selected { @apply border-brand-accent; } .preset-header { @apply flex items-center gap-3 border-b px-4 py-3 border-app-border; } + .preset-link { @apply hover:underline cursor-pointer; } + .preset-stub-container { + @apply w-full overflow-hidden relative max-w-full h-10; + scrollbar-gutter: stable; + } + .preset-stub-container:hover { + @apply overflow-x-auto; + } + .preset-stub-link { + @apply hover:underline cursor-pointer font-mono text-xs whitespace-nowrap block transition-all duration-200; + } + .preset-stub-container:not(:hover) .preset-stub-link { + @apply overflow-hidden max-w-full text-ellipsis; + } + + .preset-details { + @apply flex flex-col gap-3; + } + .install-preset-btn { @apply m-4 button button--primary; } /* Empty state */ @@ -293,7 +376,7 @@ } .console-panel--expanded { @apply max-h-80; } - .console-panel--collapsed { @apply max-h-0; } + .console-panel--collapsed { @apply max-h-0 rounded-b-xl; } body:has(.console-panel--expanded) { @apply overflow-hidden h-screen; @@ -302,4 +385,77 @@ body:has(.console-panel--expanded) .status-alert { @apply bottom-80; } + + /* Switch Component */ + .switch { + @apply grid grid-flow-row grid-cols-3; + } + + .switch:hover .switch__track .switch__button { + @apply rounded-md bg-minecraft-slate-300/50; + } + + .switch:hover .switch__track[data-checked] .switch__button { + @apply bg-minecraft-slate-200; + } + + .switch:hover .switch__handle { + @apply border-x-minecraft-slate-700 border-b-minecraft-slate-800; + } + + .switch:hover .switch__track[data-checked] { + @apply border-minecraft-green-100 bg-minecraft-green-200; + } + + .switch__label { + @apply cursor-pointer select-none text-lg font-medium text-minecraft-slate-100 col-span-2; + } + + .switch__description { + @apply cursor-default select-none text-sm text-minecraft-slate-300 col-span-2; + } + + .switch__handle { + @apply -mt-2 flex size-12 -translate-x-1 items-stretch rounded-md border border-b-4 border-minecraft-slate-400 border-b-minecraft-slate-600 bg-minecraft-slate-200 shadow-md outline-1 outline-minecraft-slate-900/50 transition duration-300 ease-out group-data-checked:translate-x-12 cursor-pointer; + } + + .switch:hover .switch__handle { + @apply border-x-minecraft-slate-700 border-b-minecraft-slate-800 cursor-pointer; + } + + .switch__button { + @apply h-full w-full rounded-sm border-2 border-minecraft-slate-50/75 pt-4 transition duration-200 ease-out cursor-pointer; + } + + .switch:hover .switch__track .switch__button { + @apply rounded-md bg-minecraft-slate-300/50; + } + + .switch:hover .switch__track[data-checked] .switch__button { + @apply bg-minecraft-slate-200; + } + + .switch__track { + @apply relative row-span-2 mt-2 inline-flex h-10 w-24 items-center place-self-center justify-self-end rounded-sm border-2 border-minecraft-slate-900/60 bg-minecraft-slate-300 shadow-xs outline-1 outline-black/50 transition data-checked:border-minecraft-green-200 data-checked:bg-minecraft-green-300 cursor-pointer; + } + + .switch:hover .switch__track .switch__button { + @apply rounded-md bg-minecraft-slate-300/50; + } + + .switch:hover .switch__track[data-checked] .switch__button { + @apply bg-minecraft-slate-200; + } + + .switch:hover .switch__track[data-checked] { + @apply border-minecraft-green-100 bg-minecraft-green-200; + } + + .switch__track-background { + @apply absolute flex h-full w-1/2 select-none items-center justify-center text-white/75 opacity-0 transition-opacity group-data-checked:opacity-100; + } + + .switch__track-background + .switch__track-background { + @apply right-0 rounded-r border-2 border-l-0 border-minecraft-slate-200/30 text-minecraft-slate-900/50 opacity-100 group-data-checked:opacity-0; + } } \ No newline at end of file diff --git a/v3/src/theme.css b/v3/src/styles/theme.css similarity index 100% rename from v3/src/theme.css rename to v3/src/styles/theme.css diff --git a/v3/src/styles/ui.css b/v3/src/styles/ui.css new file mode 100644 index 0000000..561690e --- /dev/null +++ b/v3/src/styles/ui.css @@ -0,0 +1,93 @@ +@import 'tailwindcss'; +@import "./theme.css"; + +@utility scrollbar { + scrollbar-color: #5a5b5c #1e1e1f; + scrollbar-width: thin; +} + +@utility btn { + @apply mt-2 flex items-stretch justify-stretch overflow-hidden rounded-sm rounded-b-md border-b-4 border-minecraft-slate-900 border-b-minecraft-slate-800 bg-minecraft-slate-700 text-lg font-semibold uppercase tracking-wide text-minecraft-slate-100 cursor-pointer outline-2 outline-minecraft-slate-900 transition-colors duration-200 ease-out; + + .btn__wrapper { + @apply flex w-full flex-col items-center justify-center whitespace-nowrap rounded-sm border-2 border-minecraft-slate-600 p-4 text-sm font-medium transition-colors duration-200 ease-out; + } + + &:hover { + @apply bg-minecraft-slate-600; + } + + &:hover .btn__wrapper { + @apply border-minecraft-slate-400; + } + + &:active, + &:active .btn__wrapper { + @apply border-b-2; + } + + &:active, + &[disabled] { + @apply mt-2 translate-y-0.5; + } + + &[disabled] { + @apply mt-1 cursor-not-allowed border-b; + } + + &[disabled] &__wrapper { + @apply border-minecraft-slate-400 bg-minecraft-slate-600 text-minecraft-slate-100; + } + + &.btn--primary { + @apply border-minecraft-green-300 bg-minecraft-green-500 text-white/90; + + .btn__wrapper { + @apply border-minecraft-green-200 bg-minecraft-green-400 text-white/90; + } + + &:hover { + @apply bg-minecraft-green-300; + } + + &:hover .btn__wrapper { + @apply border-minecraft-green-100 bg-minecraft-green-300; + } + + &[disabled] { + @apply border-minecraft-green-900 bg-minecraft-slate-400; + } + + &[disabled] .btn__wrapper { + @apply border-minecraft-green-500/50 bg-minecraft-green-800/50 text-white/25; + } + } + + &.btn--secondary { + @apply border-minecraft-slate-400 bg-minecraft-slate-200/90; + + .btn__wrapper { + @apply border-minecraft-slate-50/75 text-minecraft-slate-900; + } + + &:hover { + @apply bg-minecraft-slate-300; + } + + &:hover .btn__wrapper { + @apply border-minecraft-slate-100 bg-minecraft-slate-200; + } + + &[disabled] { + @apply border-minecraft-slate-900 bg-minecraft-slate-400; + } + + &[disabled] .btn__wrapper { + @apply border-minecraft-slate-50/50 bg-minecraft-slate-200/50 text-minecraft-slate-900/50; + } + } + + &.btn--small .btn__wrapper { + @apply p-2 text-xs; + } +} \ No newline at end of file From 005e9e6f3ec2ea33c4f557e3824bab300ced94e2 Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Sat, 16 Aug 2025 12:58:55 -0500 Subject: [PATCH 11/38] feat: Add deep linking --- v3/src-tauri/Cargo.lock | 1 + v3/src-tauri/Cargo.toml | 1 + v3/src-tauri/src/lib.rs | 160 +++++++++++++++++++++++++- v3/src-tauri/tauri.conf.json | 4 +- v3/src/components/ActionsTab.tsx | 27 +++++ v3/src/components/App.tsx | 31 ++++- v3/src/components/AppHeader.tsx | 6 + v3/src/components/CreatorTab.tsx | 130 +++++++++++++++++++++ v3/src/components/DeepLinkDialog.tsx | 163 +++++++++++++++++++++++++++ v3/src/store/appStore.ts | 4 +- v3/src/styles.css | 49 ++++++++ 11 files changed, 564 insertions(+), 12 deletions(-) create mode 100644 v3/src/components/CreatorTab.tsx create mode 100644 v3/src/components/DeepLinkDialog.tsx diff --git a/v3/src-tauri/Cargo.lock b/v3/src-tauri/Cargo.lock index 82f5393..0f6fe32 100644 --- a/v3/src-tauri/Cargo.lock +++ b/v3/src-tauri/Cargo.lock @@ -4702,6 +4702,7 @@ dependencies = [ "tauri-build", "tauri-plugin-dialog", "tauri-plugin-opener", + "url", "walkdir", "winreg 0.52.0", "zip", diff --git a/v3/src-tauri/Cargo.toml b/v3/src-tauri/Cargo.toml index 9cf87cd..9bf353f 100644 --- a/v3/src-tauri/Cargo.toml +++ b/v3/src-tauri/Cargo.toml @@ -28,3 +28,4 @@ winreg = "0.52" chrono = { version = "0.4", features = ["serde"] } walkdir = "2.5" zip = { version = "0.6", default-features = false, features = ["deflate"] } +url = "2.5" diff --git a/v3/src-tauri/src/lib.rs b/v3/src-tauri/src/lib.rs index 075bd77..a3235ac 100644 --- a/v3/src-tauri/src/lib.rs +++ b/v3/src-tauri/src/lib.rs @@ -11,6 +11,7 @@ use winreg::enums::*; use winreg::RegKey; use std::collections::HashMap; use tauri::Emitter; +use url::Url; const BRTX_DIR_NAME: &str = "graphics.bedrock"; @@ -943,6 +944,35 @@ fn update_options_for_selected(selected_names: Vec) -> Result<(), String Ok(()) } +#[tauri::command] +fn register_brtx_protocol() -> Result<(), String> { + let hkcu = RegKey::predef(HKEY_CURRENT_USER); + let classes = hkcu.open_subkey_with_flags("Software\\Classes", KEY_ALL_ACCESS).map_err(|e| e.to_string())?; + + // Register brtx:// protocol + let brtx_key = classes.create_subkey("brtx").map_err(|e| e.to_string())?.0; + brtx_key.set_value("", &"URL:BetterRTX Protocol").map_err(|e| e.to_string())?; + brtx_key.set_value("URL Protocol", &"").map_err(|e| e.to_string())?; + + // Set icon + let icon_path = brtx_dir().join("brtx.ico"); + if !icon_path.exists() { + if let Ok(mut resp) = get("https://bedrock.graphics/favicon.ico") { + let mut f = File::create(&icon_path).map_err(|e| e.to_string())?; + let _ = resp.copy_to(&mut f); + } + } + let _ = brtx_key.set_value("DefaultIcon", &format!("{},0", icon_path.display())); + + // Shell open command -> this app exe + let exe = std::env::current_exe().map_err(|e| e.to_string())?; + let shell_open = brtx_key.create_subkey("shell\\open\\command").map_err(|e| e.to_string())?.0; + let cmd = format!("\"{}\" \"%1\"", exe.display()); + shell_open.set_value("", &cmd).map_err(|e| e.to_string())?; + + Ok(()) +} + #[tauri::command] fn register_rtpack_extension() -> Result<(), String> { let hkcu = RegKey::predef(HKEY_CURRENT_USER); @@ -1017,6 +1047,122 @@ fn handle_file_drop(_paths: Vec) -> Result<(), String> { Ok(()) } +#[derive(Serialize, Deserialize, Debug, Clone)] +struct ProtocolData { + protocol_type: String, // "preset" or "creator" + id: String, +} + +#[tauri::command] +fn handle_deep_link(url: String) -> Result { + let parsed_url = Url::parse(&url).map_err(|e| format!("Invalid URL: {}", e))?; + + if parsed_url.scheme() != "brtx" { + return Err("Invalid protocol scheme".to_string()); + } + + let path = parsed_url.path(); + let parts: Vec<&str> = path.trim_start_matches('/').split('/').collect(); + + if parts.len() != 2 { + return Err("Invalid URL format. Expected brtx://preset/[uuid] or brtx://creator/[hash]".to_string()); + } + + let protocol_type = parts[0].to_string(); + let id = parts[1].to_string(); + + if protocol_type != "preset" && protocol_type != "creator" { + return Err("Invalid protocol type. Expected 'preset' or 'creator'".to_string()); + } + + Ok(ProtocolData { protocol_type, id }) +} + +#[tauri::command] +fn download_preset_by_uuid(uuid: String, selected_names: Vec) -> Result<(), String> { + // Get preset info from API + let url = format!("https://bedrock.graphics/api/preset/{}", uuid); + let client = Client::new(); + let response = client.get(&url).send().map_err(|e| e.to_string())?; + let preset: PackInfo = response.json().map_err(|e| e.to_string())?; + + // Use existing download and install logic + download_and_install_pack(preset.uuid, selected_names) +} + +#[tauri::command] +fn download_creator_settings(settings_hash: String, selected_names: Vec) -> Result<(), String> { + let base_url = format!("https://bedrock.graphics/build/{}", settings_hash); + let dir = brtx_dir().join("creator").join(&settings_hash); + ensure_dir(&dir).map_err(|e| e.to_string())?; + + let client = Client::new(); + + // Download the three material.bin files directly + let files = [ + ("stubs/RTXStub.material.bin", "RTXStub.material.bin"), + ("RTXPostFX.Tonemapping.material.bin", "RTXPostFX.Tonemapping.material.bin"), + ("RTXPostFX.Bloom.material.bin", "RTXPostFX.Bloom.material.bin"), + ]; + + let dl = |url_path: &str, filename: &str| -> Result<(), String> { + let full_url = format!("{}/{}", base_url, url_path); + let file_path = dir.join(filename); + + // Check cache first + if let Some(cached_data) = get_cached_download(&full_url) { + fs::write(&file_path, cached_data).map_err(|e| e.to_string())?; + return Ok(()); + } + + // Download fresh data + let mut resp = client.get(&full_url).send().map_err(|e| e.to_string())?; + let mut data = Vec::new(); + resp.copy_to(&mut data).map_err(|e| e.to_string())?; + + // Cache the download + let _ = cache_download(&full_url, &data); + + // Save to file + fs::write(&file_path, data).map_err(|e| e.to_string())?; + Ok(()) + }; + + for (url_path, filename) in &files { + dl(url_path, filename)?; + } + + // Install the downloaded materials + let materials = vec![ + dir.join("RTXStub.material.bin"), + dir.join("RTXPostFX.Tonemapping.material.bin"), + dir.join("RTXPostFX.Bloom.material.bin"), + ]; + + let all = list_installations()?; + let map: std::collections::HashMap<_, _> = all + .into_iter() + .map(|i| (i.install_location.clone(), i)) + .collect(); + + for install_location in selected_names { + if let Some(ins) = map.get(&install_location) { + let creator_pack = PackInfo { + name: format!("Creator Settings ({})", &settings_hash[..8]), + uuid: format!("creator-{}", settings_hash), + stub: String::new(), + tonemapping: String::new(), + bloom: String::new(), + }; + copy_shader_files(&ins.install_location, &materials, &creator_pack)?; + } else { + println!("⚠ Skipping unknown selection (no matching installation): {}", install_location); + } + } + + Ok(()) +} + #[tauri::command] fn uninstall_package(restore_initial: bool) -> Result<(), String> { if restore_initial { @@ -1060,12 +1206,14 @@ pub fn run() { .plugin(tauri_plugin_opener::init()) .plugin(tauri_plugin_dialog::init()) .setup(|app| { - // Handle command line arguments for file associations + // Handle command line arguments for file associations and deep links let args: Vec = std::env::args().collect(); if args.len() > 1 { - let file_path = &args[1]; - if file_path.to_lowercase().ends_with(".rtpack") && std::path::Path::new(file_path).exists() { - let _ = app.emit("rtpack-file-opened", file_path); + let arg = &args[1]; + if arg.to_lowercase().ends_with(".rtpack") && std::path::Path::new(arg).exists() { + let _ = app.emit("rtpack-file-opened", arg); + } else if arg.starts_with("brtx://") { + let _ = app.emit("deep-link-received", arg); } } @@ -1082,12 +1230,16 @@ pub fn run() { install_dlss_for_selected, update_options_for_selected, register_rtpack_extension, + register_brtx_protocol, check_iobit_unlocker, set_iobit_path, handle_file_drop, uninstall_package, clear_cache, get_cache_info, + handle_deep_link, + download_preset_by_uuid, + download_creator_settings, ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); diff --git a/v3/src-tauri/tauri.conf.json b/v3/src-tauri/tauri.conf.json index c28423a..486ecac 100644 --- a/v3/src-tauri/tauri.conf.json +++ b/v3/src-tauri/tauri.conf.json @@ -1,6 +1,6 @@ { "$schema": "https://schema.tauri.app/config/2", - "productName": "v3", + "productName": "BetterRTX", "version": "0.1.0", "identifier": "graphics.bedrock.brtx", "build": { @@ -13,7 +13,7 @@ "withGlobalTauri": true, "windows": [ { - "title": "v3", + "title": "BetterRTX Installer", "width": 800, "height": 600 } diff --git a/v3/src/components/ActionsTab.tsx b/v3/src/components/ActionsTab.tsx index d33631c..d252367 100644 --- a/v3/src/components/ActionsTab.tsx +++ b/v3/src/components/ActionsTab.tsx @@ -1,6 +1,7 @@ import { useAppStore } from "../store/appStore"; import { useStatusStore } from "../store/statusStore"; import { useTranslation } from "react-i18next"; +import { invoke } from "@tauri-apps/api/core"; export default function ActionsTab() { const { t } = useTranslation(); @@ -21,6 +22,21 @@ export default function ActionsTab() { } }; + const handleRegisterProtocol = async () => { + try { + await invoke("register_brtx_protocol"); + addMessage({ + message: "Successfully registered brtx:// protocol", + type: "success", + }); + } catch (error) { + addMessage({ + message: `Failed to register protocol: ${error}`, + type: "error", + }); + } + }; + return (
@@ -60,6 +76,17 @@ export default function ActionsTab() { {t("action_backup_desc")}

+
) diff --git a/v3/src/components/App.tsx b/v3/src/components/App.tsx index 23f81d7..78302eb 100644 --- a/v3/src/components/App.tsx +++ b/v3/src/components/App.tsx @@ -1,30 +1,30 @@ import React, { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; -import { invoke } from "@tauri-apps/api/core"; import { listen } from "@tauri-apps/api/event"; import { InstallationCard } from "./InstallationCard"; import { StatusBarContainer } from "./StatusBar"; import { ConsolePanel } from "./ConsolePanel"; import { RtpackDialog } from "./RtpackDialog"; +import { DeepLinkDialog } from "./DeepLinkDialog"; import { useAppStore } from "../store/appStore"; -import { useStatusStore } from "../store/statusStore"; import AppHeader from "./AppHeader"; import ActionsTab from "./ActionsTab"; import PresetsTab from "./PresetsTab"; +import CreatorTab from "./CreatorTab"; export const App: React.FC = () => { const { t } = useTranslation(); - const { addMessage } = useStatusStore(); const [rtpackDialogOpen, setRtpackDialogOpen] = useState(false); const [rtpackPath, setRtpackPath] = useState(""); + const [deepLinkDialogOpen, setDeepLinkDialogOpen] = useState(false); + const [deepLinkUrl, setDeepLinkUrl] = useState(""); const { installations, selectedInstallations, consoleOutput, activeTab, setSelectedInstallations, - addConsoleOutput, clearConsole, refreshInstallations, refreshPresets, @@ -47,6 +47,18 @@ export const App: React.FC = () => { }; }, []); + // Listen for deep link protocol events + useEffect(() => { + const unlisten = listen("deep-link-received", (event) => { + setDeepLinkUrl(event.payload); + setDeepLinkDialogOpen(true); + }); + + return () => { + unlisten.then((fn) => fn()); + }; + }, []); + // Handle file drops useEffect(() => { const unlisten = listen("tauri://file-drop", (event) => { @@ -129,6 +141,10 @@ export const App: React.FC = () => { {activeTab === "actions" && ( )} + + {activeTab === "creator" && ( + + )}
@@ -143,6 +159,13 @@ export const App: React.FC = () => { rtpackPath={rtpackPath} onClose={() => setRtpackDialogOpen(false)} /> + + {/* Deep Link Dialog */} + setDeepLinkDialogOpen(false)} + />
); }; diff --git a/v3/src/components/AppHeader.tsx b/v3/src/components/AppHeader.tsx index 924adc1..6c8e332 100644 --- a/v3/src/components/AppHeader.tsx +++ b/v3/src/components/AppHeader.tsx @@ -37,6 +37,12 @@ export default function AppHeader() { > {t("tab_actions")} +
{/* Menu button to show toolbar */} diff --git a/v3/src/components/CreatorTab.tsx b/v3/src/components/CreatorTab.tsx new file mode 100644 index 0000000..8c25841 --- /dev/null +++ b/v3/src/components/CreatorTab.tsx @@ -0,0 +1,130 @@ +import React, { useState } from "react"; +import { invoke } from "@tauri-apps/api/core"; +import Button from "./ui/Button"; +import { useAppStore } from "../store/appStore"; +import { useStatusStore } from "../store/statusStore"; + +export default function CreatorTab() { + const { selectedInstallations } = useAppStore(); + const { addMessage } = useStatusStore(); + const [settingsHash, setSettingsHash] = useState(""); + const [isProcessing, setIsProcessing] = useState(false); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + + if (!settingsHash.trim()) { + addMessage({ + message: "Please enter a settings hash", + type: "error", + }); + return; + } + + if (selectedInstallations.size === 0) { + addMessage({ + message: "Please select at least one installation", + type: "error", + }); + return; + } + + setIsProcessing(true); + try { + const selectedNames = Array.from(selectedInstallations); + await invoke("download_creator_settings", { + settingsHash: settingsHash.trim(), + selectedNames, + }); + + addMessage({ + message: `Successfully installed creator settings ${settingsHash.slice(0, 8)}...`, + type: "success", + }); + + setSettingsHash(""); + } catch (error) { + addMessage({ + message: `Installation failed: ${error}`, + type: "error", + }); + } finally { + setIsProcessing(false); + } + }; + + const handleHashChange = (e: React.ChangeEvent) => { + setSettingsHash(e.target.value); + }; + + const isValidHash = settingsHash.trim().length >= 8; + + return ( +
+
+
+

Creator Settings

+ + Install custom creator settings using a settings hash + +
+
+ +
+
+
+

Install Creator Settings

+
+
+
+
+ +
+ +
+

+ The settings hash from bedrock.graphics creator tools +

+
+ +
+

+ Selected installations ({selectedInstallations.size}): +

+ {selectedInstallations.size === 0 ? ( +

+ No installations selected. Please go to the Installations tab and select target installations. +

+ ) : ( +
+ {selectedInstallations.size} installation{selectedInstallations.size !== 1 ? 's' : ''} selected +
+ )} +
+ +
+ +
+
+
+
+
+
+ ); +} diff --git a/v3/src/components/DeepLinkDialog.tsx b/v3/src/components/DeepLinkDialog.tsx new file mode 100644 index 0000000..a88de3b --- /dev/null +++ b/v3/src/components/DeepLinkDialog.tsx @@ -0,0 +1,163 @@ +import React, { useState, useEffect } from "react"; +import { invoke } from "@tauri-apps/api/core"; +import Button from "./ui/Button"; +import { useAppStore } from "../store/appStore"; +import { useStatusStore } from "../store/statusStore"; + +interface DeepLinkDialogProps { + isOpen: boolean; + deepLinkUrl: string; + onClose: () => void; +} + +interface ProtocolData { + protocol_type: string; + id: string; +} + +export const DeepLinkDialog: React.FC = ({ + isOpen, + deepLinkUrl, + onClose, +}) => { + const { selectedInstallations, installations } = useAppStore(); + const { addMessage } = useStatusStore(); + const [protocolData, setProtocolData] = useState(null); + const [isProcessing, setIsProcessing] = useState(false); + const [error, setError] = useState(null); + + useEffect(() => { + if (isOpen && deepLinkUrl) { + parseDeepLink(); + } + }, [isOpen, deepLinkUrl]); + + const parseDeepLink = async () => { + try { + setError(null); + const data = await invoke("handle_deep_link", { url: deepLinkUrl }); + setProtocolData(data); + } catch (err) { + setError(err as string); + } + }; + + const handleInstall = async () => { + if (!protocolData || selectedInstallations.size === 0) { + addMessage({ message: "Please select at least one installation", type: "error" }); + return; + } + + setIsProcessing(true); + try { + const selectedNames = Array.from(selectedInstallations); + + if (protocolData.protocol_type === "preset") { + await invoke("download_preset_by_uuid", { + uuid: protocolData.id, + selectedNames, + }); + addMessage({ message: `Successfully installed preset ${protocolData.id}`, type: "success" }); + } else if (protocolData.protocol_type === "creator") { + await invoke("download_creator_settings", { + settingsHash: protocolData.id, + selectedNames, + }); + addMessage({ message: `Successfully installed creator settings ${protocolData.id.slice(0, 8)}...`, type: "success" }); + } + + onClose(); + } catch (err) { + addMessage({ message: `Installation failed: ${err}`, type: "error" }); + } finally { + setIsProcessing(false); + } + }; + + if (!isOpen) return null; + + return ( +
+
+
+

+ {protocolData?.protocol_type === "preset" ? "Install Preset" : "Install Creator Settings"} +

+ +
+ +
+ {error ? ( +
+

Error parsing deep link:

+ {error} +
+ ) : protocolData ? ( +
+
+

Protocol URL:

+ + {deepLinkUrl} + +
+ +
+

Type: {protocolData.protocol_type}

+

ID: {protocolData.id}

+
+ +
+

+ Selected installations ({selectedInstallations.size}): +

+ {selectedInstallations.size === 0 ? ( +

+ No installations selected. Please go to the Installations tab and select target installations. +

+ ) : ( +
    + {Array.from(selectedInstallations).map((path) => { + const installation = installations.find(i => i.InstallLocation === path); + return ( +
  • + {installation?.FriendlyName || path} +
  • + ); + })} +
+ )} +
+
+ ) : ( +
+

Parsing deep link...

+
+ )} +
+ +
+ + +
+
+
+ ); +}; diff --git a/v3/src/store/appStore.ts b/v3/src/store/appStore.ts index c301d7e..79bffa1 100644 --- a/v3/src/store/appStore.ts +++ b/v3/src/store/appStore.ts @@ -27,7 +27,7 @@ interface AppState { selectedInstallations: Set; selectedPreset: string | null; consoleOutput: string[]; - activeTab: 'installations' | 'presets' | 'actions'; + activeTab: 'installations' | 'presets' | 'actions' | 'creator'; toolbarOpen: boolean; // Actions @@ -35,7 +35,7 @@ interface AppState { setPresets: (presets: PackInfo[]) => void; setSelectedInstallations: (selected: Set) => void; setSelectedPreset: (preset: string | null) => void; - setActiveTab: (tab: 'installations' | 'presets' | 'actions') => void; + setActiveTab: (tab: 'installations' | 'presets' | 'actions' | 'creator') => void; setToolbarOpen: (open: boolean) => void; addConsoleOutput: (message: string) => void; clearConsole: () => void; diff --git a/v3/src/styles.css b/v3/src/styles.css index 1dc0a2a..3c09047 100644 --- a/v3/src/styles.css +++ b/v3/src/styles.css @@ -458,4 +458,53 @@ .switch__track-background + .switch__track-background { @apply right-0 rounded-r border-2 border-l-0 border-minecraft-slate-200/30 text-minecraft-slate-900/50 opacity-100 group-data-checked:opacity-0; } + + /* Dialog Components */ + .dialog-overlay { + @apply fixed inset-0 z-50 flex items-center justify-center bg-black/50; + } + + .dialog { + @apply panel max-w-md w-full mx-4 max-h-[90vh] overflow-hidden flex flex-col; + } + + .dialog__header { + @apply panel__header flex items-center justify-between; + } + + .dialog__title { + @apply panel__title; + } + + .dialog__close { + @apply w-6 h-6 flex items-center justify-center rounded text-app-muted hover:text-app-fg hover:bg-app-border transition-colors; + } + + .dialog__content { + @apply panel__body flex-1 overflow-y-auto; + } + + .dialog__actions { + @apply flex justify-end gap-2 p-4 border-t border-app-border; + } + + .error-message { + @apply p-3 rounded border border-danger-600 bg-danger-600/10 text-danger-600; + } + + .protocol-info { + @apply space-y-2; + } + + .protocol-details { + @apply space-y-1 text-sm; + } + + .installation-selection { + @apply space-y-2; + } + + .loading { + @apply text-center text-app-muted; + } } \ No newline at end of file From c9b7eba65037a64a87915951de000b15dd199da3 Mon Sep 17 00:00:00 2001 From: Jason Date: Sat, 16 Aug 2025 13:02:21 -0500 Subject: [PATCH 12/38] Update tauri.yml --- .github/workflows/tauri.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tauri.yml b/.github/workflows/tauri.yml index 3929261..9067abc 100644 --- a/.github/workflows/tauri.yml +++ b/.github/workflows/tauri.yml @@ -2,10 +2,10 @@ name: Build Tauri App on: push: - branches: [ main, master ] + branches: [ main, 'v3/**' ] paths: [ 'v3/**' ] pull_request: - branches: [ main, master ] + branches: [ main ] paths: [ 'v3/**' ] workflow_dispatch: @@ -60,4 +60,4 @@ jobs: name: tauri-app-windows path: | ./v3/src-tauri/target/release/bundle/ - if-no-files-found: warn \ No newline at end of file + if-no-files-found: warn From 0414007e0f967bb16cd58f75a3c931594d2b6fb4 Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Sat, 16 Aug 2025 13:09:59 -0500 Subject: [PATCH 13/38] chore: Version bump --- v3/src-tauri/tauri.conf.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/src-tauri/tauri.conf.json b/v3/src-tauri/tauri.conf.json index 486ecac..bc809fc 100644 --- a/v3/src-tauri/tauri.conf.json +++ b/v3/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "BetterRTX", - "version": "0.1.0", + "version": "3.0.0-beta", "identifier": "graphics.bedrock.brtx", "build": { "beforeDevCommand": "bun run dev", From dae88c0ba89aa1d1d93a5cd801512e6d80554e19 Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Sat, 16 Aug 2025 13:13:40 -0500 Subject: [PATCH 14/38] fix(ci): Added missing dependencies --- v3/package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/v3/package.json b/v3/package.json index 1ee57ff..fb70273 100644 --- a/v3/package.json +++ b/v3/package.json @@ -15,6 +15,7 @@ "@tauri-apps/api": "^2", "@tauri-apps/plugin-dialog": "^2", "@tauri-apps/plugin-opener": "^2", + "classix": "^2.2.0", "i18next": "^25.3.6", "i18next-browser-languagedetector": "^8.2.0", "i18next-http-backend": "^3.0.2", @@ -27,6 +28,7 @@ }, "devDependencies": { "@tauri-apps/cli": "^2", + "@types/node": "^22.0.0", "@types/react": "^18.2.66", "@types/react-dom": "^18.2.22", "@tailwindcss/vite": "^4.1.12", From ab95750854f6d0184f6107a92d6fe23cbb8c8f2f Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Sat, 16 Aug 2025 13:20:19 -0500 Subject: [PATCH 15/38] fix(ci): Remove beta flag for build step only --- v3/package.json | 4 ++-- v3/src-tauri/tauri.conf.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/v3/package.json b/v3/package.json index fb70273..23b774e 100644 --- a/v3/package.json +++ b/v3/package.json @@ -1,7 +1,7 @@ { - "name": "v3", + "name": "brtx", "private": true, - "version": "0.1.0", + "version": "3.0.0", "type": "module", "scripts": { "dev": "vite", diff --git a/v3/src-tauri/tauri.conf.json b/v3/src-tauri/tauri.conf.json index bc809fc..c5f413d 100644 --- a/v3/src-tauri/tauri.conf.json +++ b/v3/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "BetterRTX", - "version": "3.0.0-beta", + "version": "3.0.0", "identifier": "graphics.bedrock.brtx", "build": { "beforeDevCommand": "bun run dev", From 47d6977889dae545e8400f50186b2760feb1ce58 Mon Sep 17 00:00:00 2001 From: Jason Gardner Date: Sun, 17 Aug 2025 14:21:10 -0500 Subject: [PATCH 16/38] upd: New layout / Custom Minecraft instance directories --- {v3/.vscode => .vscode}/extensions.json | 0 v3/bun.lock | 87 ++++++- v3/package.json | 4 +- v3/public/locales/en/translation.json | 5 +- v3/src-tauri/Cargo.lock | 36 +-- v3/src-tauri/Cargo.toml | 10 +- v3/src-tauri/capabilities/default.json | 9 +- v3/src-tauri/src/lib.rs | 94 ++++++- v3/src-tauri/src/main.rs | 2 +- v3/src-tauri/tauri.conf.json | 5 +- v3/src/components/ActionsTab.tsx | 8 +- v3/src/components/App.tsx | 137 ++++------ v3/src/components/AppHeader.tsx | 30 +-- v3/src/components/InstallationCard.tsx | 88 ------- v3/src/components/PresetIcon.tsx | 6 +- v3/src/components/PresetsTab.tsx | 117 ++++++++- .../components/{ => creator}/CreatorTab.tsx | 67 +++-- .../installations/InstallationCard.tsx | 96 +++++++ .../InstallationInstanceModal.tsx | 153 ++++++++++++ .../installations/InstallationNav.tsx | 44 ++++ .../installations/InstallationsTab.tsx | 172 +++++++++++++ .../installations/InstallationsToolbar.tsx | 28 +++ .../components/{ => presets}/PresetCard.tsx | 15 +- v3/src/components/ui/BlockPath.tsx | 49 ++++ v3/src/components/ui/Modal.tsx | 49 ++++ v3/src/components/ui/SecondaryToolbar.tsx | 36 +++ v3/src/components/ui/SideNav.tsx | 86 +++++++ v3/src/components/ui/Switch.tsx | 6 +- v3/src/store/appStore.ts | 19 +- v3/src/store/presetsStore.ts | 53 ++++ v3/src/styles.css | 236 ++++++++++++++++-- v3/vite.config.ts | 2 +- 32 files changed, 1430 insertions(+), 319 deletions(-) rename {v3/.vscode => .vscode}/extensions.json (100%) delete mode 100644 v3/src/components/InstallationCard.tsx rename v3/src/components/{ => creator}/CreatorTab.tsx (70%) create mode 100644 v3/src/components/installations/InstallationCard.tsx create mode 100644 v3/src/components/installations/InstallationInstanceModal.tsx create mode 100644 v3/src/components/installations/InstallationNav.tsx create mode 100644 v3/src/components/installations/InstallationsTab.tsx create mode 100644 v3/src/components/installations/InstallationsToolbar.tsx rename v3/src/components/{ => presets}/PresetCard.tsx (79%) create mode 100644 v3/src/components/ui/BlockPath.tsx create mode 100644 v3/src/components/ui/Modal.tsx create mode 100644 v3/src/components/ui/SecondaryToolbar.tsx create mode 100644 v3/src/components/ui/SideNav.tsx diff --git a/v3/.vscode/extensions.json b/.vscode/extensions.json similarity index 100% rename from v3/.vscode/extensions.json rename to .vscode/extensions.json diff --git a/v3/bun.lock b/v3/bun.lock index 62b4359..ac3db81 100644 --- a/v3/bun.lock +++ b/v3/bun.lock @@ -6,10 +6,10 @@ "dependencies": { "@fontsource-variable/inter": "^5.2.6", "@fontsource-variable/martian-mono": "^5.2.6", - "@tailwindcss/vite": "^4.1.12", "@tauri-apps/api": "^2", "@tauri-apps/plugin-dialog": "^2", - "@tauri-apps/plugin-opener": "^2", + "@tauri-apps/plugin-opener": "~2", + "classix": "^2.2.0", "i18next": "^25.3.6", "i18next-browser-languagedetector": "^8.2.0", "i18next-http-backend": "^3.0.2", @@ -21,12 +21,15 @@ "zustand": "^5.0.7", }, "devDependencies": { + "@tailwindcss/vite": "^4.1.12", "@tauri-apps/cli": "^2", + "@types/node": "^22.0.0", "@types/react": "^18.2.66", "@types/react-dom": "^18.2.22", - "@vitejs/plugin-react": "^4.2.1", + "@vitejs/plugin-react": "^4.3.1", "typescript": "~5.6.2", "vite": "^6.0.3", + "vite-plugin-svgr": "^4.2.0", }, }, }, @@ -143,6 +146,8 @@ "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.27", "", {}, "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA=="], + "@rollup/pluginutils": ["@rollup/pluginutils@5.2.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw=="], + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.46.2", "", { "os": "android", "cpu": "arm" }, "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA=="], "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.46.2", "", { "os": "android", "cpu": "arm64" }, "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ=="], @@ -183,6 +188,30 @@ "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.46.2", "", { "os": "win32", "cpu": "x64" }, "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg=="], + "@svgr/babel-plugin-add-jsx-attribute": ["@svgr/babel-plugin-add-jsx-attribute@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g=="], + + "@svgr/babel-plugin-remove-jsx-attribute": ["@svgr/babel-plugin-remove-jsx-attribute@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA=="], + + "@svgr/babel-plugin-remove-jsx-empty-expression": ["@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA=="], + + "@svgr/babel-plugin-replace-jsx-attribute-value": ["@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ=="], + + "@svgr/babel-plugin-svg-dynamic-title": ["@svgr/babel-plugin-svg-dynamic-title@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og=="], + + "@svgr/babel-plugin-svg-em-dimensions": ["@svgr/babel-plugin-svg-em-dimensions@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g=="], + + "@svgr/babel-plugin-transform-react-native-svg": ["@svgr/babel-plugin-transform-react-native-svg@8.1.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q=="], + + "@svgr/babel-plugin-transform-svg-component": ["@svgr/babel-plugin-transform-svg-component@8.0.0", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw=="], + + "@svgr/babel-preset": ["@svgr/babel-preset@8.1.0", "", { "dependencies": { "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", "@svgr/babel-plugin-transform-svg-component": "8.0.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug=="], + + "@svgr/core": ["@svgr/core@8.1.0", "", { "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", "camelcase": "^6.2.0", "cosmiconfig": "^8.1.3", "snake-case": "^3.0.4" } }, "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA=="], + + "@svgr/hast-util-to-babel-ast": ["@svgr/hast-util-to-babel-ast@8.0.0", "", { "dependencies": { "@babel/types": "^7.21.3", "entities": "^4.4.0" } }, "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q=="], + + "@svgr/plugin-jsx": ["@svgr/plugin-jsx@8.1.0", "", { "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", "@svgr/hast-util-to-babel-ast": "8.0.0", "svg-parser": "^2.0.4" }, "peerDependencies": { "@svgr/core": "*" } }, "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA=="], + "@tailwindcss/node": ["@tailwindcss/node@4.1.12", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.5.1", "lightningcss": "1.30.1", "magic-string": "^0.30.17", "source-map-js": "^1.2.1", "tailwindcss": "4.1.12" } }, "sha512-3hm9brwvQkZFe++SBt+oLjo4OLDtkvlE8q2WalaD/7QWaeM7KEJbAiY/LJZUaCs7Xa8aUu4xy3uoyX4q54UVdQ=="], "@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.12", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.4.3" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.12", "@tailwindcss/oxide-darwin-arm64": "4.1.12", "@tailwindcss/oxide-darwin-x64": "4.1.12", "@tailwindcss/oxide-freebsd-x64": "4.1.12", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.12", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.12", "@tailwindcss/oxide-linux-arm64-musl": "4.1.12", "@tailwindcss/oxide-linux-x64-gnu": "4.1.12", "@tailwindcss/oxide-linux-x64-musl": "4.1.12", "@tailwindcss/oxide-wasm32-wasi": "4.1.12", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.12", "@tailwindcss/oxide-win32-x64-msvc": "4.1.12" } }, "sha512-gM5EoKHW/ukmlEtphNwaGx45fGoEmP10v51t9unv55voWh6WrOL19hfuIdo2FjxIaZzw776/BUQg7Pck++cIVw=="], @@ -253,6 +282,8 @@ "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + "@types/node": ["@types/node@22.17.2", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-gL6z5N9Jm9mhY+U2KXZpteb+09zyffliRkZyZOHODGATyC5B1Jt/7TzuuiLkFsSUMLbS1OLmlj/E+/3KF4Q/4w=="], + "@types/prop-types": ["@types/prop-types@15.7.15", "", {}, "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw=="], "@types/react": ["@types/react@18.3.23", "", { "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" } }, "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w=="], @@ -261,14 +292,24 @@ "@vitejs/plugin-react": ["@vitejs/plugin-react@4.7.0", "", { "dependencies": { "@babel/core": "^7.28.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-beta.27", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA=="], + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + "browserslist": ["browserslist@4.25.2", "", { "dependencies": { "caniuse-lite": "^1.0.30001733", "electron-to-chromium": "^1.5.199", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA=="], + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], + + "camelcase": ["camelcase@6.3.0", "", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="], + "caniuse-lite": ["caniuse-lite@1.0.30001735", "", {}, "sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w=="], "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], + "classix": ["classix@2.2.2", "", {}, "sha512-sHfNzza/LoiecpfDAjnVyan2SG4Q9fhcO0TrbnjK7nh5rvA9E9k/kFk4WGHdI24upUyzSBSxq+uy4oUPR9Mgig=="], + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + "cosmiconfig": ["cosmiconfig@8.3.6", "", { "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0", "path-type": "^4.0.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA=="], + "cross-fetch": ["cross-fetch@4.0.0", "", { "dependencies": { "node-fetch": "^2.6.12" } }, "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g=="], "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], @@ -277,14 +318,22 @@ "detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="], + "dot-case": ["dot-case@3.0.4", "", { "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w=="], + "electron-to-chromium": ["electron-to-chromium@1.5.203", "", {}, "sha512-uz4i0vLhfm6dLZWbz/iH88KNDV+ivj5+2SA+utpgjKaj9Q0iDLuwk6Idhe9BTxciHudyx6IvTvijhkPvFGUQ0g=="], "enhanced-resolve": ["enhanced-resolve@5.18.3", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww=="], + "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + + "error-ex": ["error-ex@1.3.2", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="], + "esbuild": ["esbuild@0.25.9", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.9", "@esbuild/android-arm": "0.25.9", "@esbuild/android-arm64": "0.25.9", "@esbuild/android-x64": "0.25.9", "@esbuild/darwin-arm64": "0.25.9", "@esbuild/darwin-x64": "0.25.9", "@esbuild/freebsd-arm64": "0.25.9", "@esbuild/freebsd-x64": "0.25.9", "@esbuild/linux-arm": "0.25.9", "@esbuild/linux-arm64": "0.25.9", "@esbuild/linux-ia32": "0.25.9", "@esbuild/linux-loong64": "0.25.9", "@esbuild/linux-mips64el": "0.25.9", "@esbuild/linux-ppc64": "0.25.9", "@esbuild/linux-riscv64": "0.25.9", "@esbuild/linux-s390x": "0.25.9", "@esbuild/linux-x64": "0.25.9", "@esbuild/netbsd-arm64": "0.25.9", "@esbuild/netbsd-x64": "0.25.9", "@esbuild/openbsd-arm64": "0.25.9", "@esbuild/openbsd-x64": "0.25.9", "@esbuild/openharmony-arm64": "0.25.9", "@esbuild/sunos-x64": "0.25.9", "@esbuild/win32-arm64": "0.25.9", "@esbuild/win32-ia32": "0.25.9", "@esbuild/win32-x64": "0.25.9" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g=="], "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + "estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], @@ -301,12 +350,20 @@ "i18next-http-backend": ["i18next-http-backend@3.0.2", "", { "dependencies": { "cross-fetch": "4.0.0" } }, "sha512-PdlvPnvIp4E1sYi46Ik4tBYh/v/NbYfFFgTjkwFl0is8A18s7/bx9aXqsrOax9WUbeNS6mD2oix7Z0yGGf6m5g=="], + "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], + + "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], + "jiti": ["jiti@2.5.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w=="], "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], "lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="], @@ -331,8 +388,12 @@ "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="], + "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], + "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], + "lower-case": ["lower-case@2.0.2", "", { "dependencies": { "tslib": "^2.0.3" } }, "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg=="], + "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], "lucide-react": ["lucide-react@0.539.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-VVISr+VF2krO91FeuCrm1rSOLACQUYVy7NQkzrOty52Y8TlTPcXcMdQFj9bYzBgXbWCiywlwSZ3Z8u6a+6bMlg=="], @@ -349,10 +410,18 @@ "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + "no-case": ["no-case@3.0.4", "", { "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg=="], + "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], "node-releases": ["node-releases@2.0.19", "", {}, "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="], + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], + + "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], + + "path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], @@ -367,14 +436,20 @@ "react-refresh": ["react-refresh@0.17.0", "", {}, "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ=="], + "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], + "rollup": ["rollup@4.46.2", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.46.2", "@rollup/rollup-android-arm64": "4.46.2", "@rollup/rollup-darwin-arm64": "4.46.2", "@rollup/rollup-darwin-x64": "4.46.2", "@rollup/rollup-freebsd-arm64": "4.46.2", "@rollup/rollup-freebsd-x64": "4.46.2", "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", "@rollup/rollup-linux-arm-musleabihf": "4.46.2", "@rollup/rollup-linux-arm64-gnu": "4.46.2", "@rollup/rollup-linux-arm64-musl": "4.46.2", "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", "@rollup/rollup-linux-ppc64-gnu": "4.46.2", "@rollup/rollup-linux-riscv64-gnu": "4.46.2", "@rollup/rollup-linux-riscv64-musl": "4.46.2", "@rollup/rollup-linux-s390x-gnu": "4.46.2", "@rollup/rollup-linux-x64-gnu": "4.46.2", "@rollup/rollup-linux-x64-musl": "4.46.2", "@rollup/rollup-win32-arm64-msvc": "4.46.2", "@rollup/rollup-win32-ia32-msvc": "4.46.2", "@rollup/rollup-win32-x64-msvc": "4.46.2", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg=="], "scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "snake-case": ["snake-case@3.0.4", "", { "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg=="], + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + "svg-parser": ["svg-parser@2.0.4", "", {}, "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ=="], + "tailwindcss": ["tailwindcss@4.1.12", "", {}, "sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA=="], "tapable": ["tapable@2.2.2", "", {}, "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg=="], @@ -385,12 +460,18 @@ "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + "update-browserslist-db": ["update-browserslist-db@1.1.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw=="], "vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], + "vite-plugin-svgr": ["vite-plugin-svgr@4.3.0", "", { "dependencies": { "@rollup/pluginutils": "^5.1.3", "@svgr/core": "^8.1.0", "@svgr/plugin-jsx": "^8.1.0" }, "peerDependencies": { "vite": ">=2.6.0" } }, "sha512-Jy9qLB2/PyWklpYy0xk0UU3TlU0t2UMpJXZvf+hWII1lAmRHrOUKi11Uw8N3rxoNk7atZNYO3pR3vI1f7oi+6w=="], + "void-elements": ["void-elements@3.1.0", "", {}, "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w=="], "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], diff --git a/v3/package.json b/v3/package.json index 23b774e..360d6ae 100644 --- a/v3/package.json +++ b/v3/package.json @@ -1,5 +1,5 @@ { - "name": "brtx", + "name": "brtx-installer", "private": true, "version": "3.0.0", "type": "module", @@ -14,7 +14,7 @@ "@fontsource-variable/martian-mono": "^5.2.6", "@tauri-apps/api": "^2", "@tauri-apps/plugin-dialog": "^2", - "@tauri-apps/plugin-opener": "^2", + "@tauri-apps/plugin-opener": "~2", "classix": "^2.2.0", "i18next": "^25.3.6", "i18next-browser-languagedetector": "^8.2.0", diff --git a/v3/public/locales/en/translation.json b/v3/public/locales/en/translation.json index 35deabd..5b8adb8 100644 --- a/v3/public/locales/en/translation.json +++ b/v3/public/locales/en/translation.json @@ -14,6 +14,7 @@ "tab_installations": "Installations", "tab_presets": "Presets", "tab_actions": "Actions", + "navigation": "Navigation", "toolbar_options_label": "Toolbar options", "installations_found_count": "{{count}} found", "installations_none_found": "No Minecraft installations found", @@ -39,5 +40,7 @@ "cancel": "Cancel", "install": "Install", "installing": "Installing...", - "status_installing_rtpack": "Installing RTpack file..." + "status_installing_rtpack": "Installing RTpack file...", + "current_preset": "Current preset: {{name}}", + "no_preset_installed": "No preset installed" } diff --git a/v3/src-tauri/Cargo.lock b/v3/src-tauri/Cargo.lock index 0f6fe32..71274e4 100644 --- a/v3/src-tauri/Cargo.lock +++ b/v3/src-tauri/Cargo.lock @@ -352,6 +352,24 @@ dependencies = [ "alloc-stdlib", ] +[[package]] +name = "brtx-installer" +version = "3.0.0" +dependencies = [ + "chrono", + "reqwest", + "serde", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-dialog", + "tauri-plugin-opener", + "url", + "walkdir", + "winreg 0.52.0", + "zip", +] + [[package]] name = "bumpalo" version = "3.19.0" @@ -4690,24 +4708,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "v3" -version = "0.1.0" -dependencies = [ - "chrono", - "reqwest", - "serde", - "serde_json", - "tauri", - "tauri-build", - "tauri-plugin-dialog", - "tauri-plugin-opener", - "url", - "walkdir", - "winreg 0.52.0", - "zip", -] - [[package]] name = "vcpkg" version = "0.2.15" diff --git a/v3/src-tauri/Cargo.toml b/v3/src-tauri/Cargo.toml index 9bf353f..549089b 100644 --- a/v3/src-tauri/Cargo.toml +++ b/v3/src-tauri/Cargo.toml @@ -1,8 +1,8 @@ [package] -name = "v3" -version = "0.1.0" -description = "A Tauri App" -authors = ["you"] +name = "brtx-installer" +version = "3.0.0" +description = "BetterRTX Installer" +authors = ["Jason J. Gardner"] edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -11,7 +11,7 @@ edition = "2021" # The `_lib` suffix may seem redundant but it is necessary # to make the lib name unique and wouldn't conflict with the bin name. # This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519 -name = "v3_lib" +name = "brtx_installer_lib" crate-type = ["staticlib", "cdylib", "rlib"] [build-dependencies] diff --git a/v3/src-tauri/capabilities/default.json b/v3/src-tauri/capabilities/default.json index 778bfb5..36484ab 100644 --- a/v3/src-tauri/capabilities/default.json +++ b/v3/src-tauri/capabilities/default.json @@ -2,10 +2,13 @@ "$schema": "../gen/schemas/desktop-schema.json", "identifier": "default", "description": "Capability for the main window", - "windows": ["main"], + "windows": [ + "main" + ], "permissions": [ "core:default", - "opener:default", + "core:event:allow-listen", + "core:event:allow-emit", "dialog:default" ] -} +} \ No newline at end of file diff --git a/v3/src-tauri/src/lib.rs b/v3/src-tauri/src/lib.rs index a3235ac..de63535 100644 --- a/v3/src-tauri/src/lib.rs +++ b/v3/src-tauri/src/lib.rs @@ -11,6 +11,7 @@ use winreg::enums::*; use winreg::RegKey; use std::collections::HashMap; use tauri::Emitter; +use tauri_plugin_dialog::DialogExt; use url::Url; const BRTX_DIR_NAME: &str = "graphics.bedrock"; @@ -480,6 +481,33 @@ fn write_json_file(p: &Path, val: &T) -> Result<(), String> { fs::write(p, s).map_err(|e| e.to_string()) } +fn find_launcher_installs( + installations: &mut Vec, + launcher_name: &str, + base_path_env: &str, + sub_path: &str, +) { + let Ok(app_data) = std::env::var(base_path_env) else { return }; + let launcher_path = std::path::Path::new(&app_data).join(sub_path); + let Ok(entries) = std::fs::read_dir(launcher_path) else { return }; + + let new_installations = entries + .filter_map(Result::ok) + .filter(|entry| entry.file_type().map_or(false, |ft| ft.is_dir())) + .filter_map(|entry| { + let path = entry.path(); + let version_name = path.file_name()?.to_str()?; + Some(Installation { + friendly_name: format!("{} - {}", launcher_name, version_name), + install_location: path.to_str()?.to_string(), + preview: false, + installed_preset: None, + }) + }); + + installations.extend(new_installations); +} + #[tauri::command] fn list_installations() -> Result, String> { let ps = r#" @@ -498,14 +526,26 @@ fn list_installations() -> Result, String> { let mut installations: Vec = { let parsed: Result, _> = serde_json::from_str(out_trim); - if let Ok(v) = parsed { - v + if let Ok(v) = parsed { + v } else { - // sometimes a single object is returned - let single: Installation = serde_json::from_str(out_trim).map_err(|e| e.to_string())?; - vec![single] + let parsed_single: Result = serde_json::from_str(out_trim); + if let Ok(i) = parsed_single { vec![i] } else { vec![] } } }; + + find_launcher_installs( + &mut installations, + "BedrockLauncher", + "APPDATA", + "BedrockLauncher/data/versions", + ); + find_launcher_installs( + &mut installations, + "MCLauncher", + "LOCALAPPDATA", + "MCLauncher/installs", + ); // Add installed preset information to each installation for installation in &mut installations { @@ -1163,6 +1203,48 @@ fn download_creator_settings(settings_hash: String, selected_names: Vec) Ok(()) } +#[tauri::command] +fn validate_minecraft_path(path: String) -> Result { + let minecraft_path = Path::new(&path); + + // Check if path exists + if !minecraft_path.exists() { + return Ok(false); + } + + // Check for common Minecraft files/directories + let required_paths = [ + "data", + "AppxManifest.xml", // For UWP apps + "Minecraft.exe", // For some installations + ]; + + // At least one of these should exist for a valid Minecraft installation + let has_minecraft_indicators = required_paths.iter().any(|&p| { + minecraft_path.join(p).exists() + }); + + // Also check for materials directory structure + let materials_dir = minecraft_path.join("data").join("renderer").join("materials"); + let has_materials_structure = materials_dir.exists() || minecraft_path.join("data").exists(); + + Ok(has_minecraft_indicators || has_materials_structure) +} + +#[tauri::command] +fn open_folder_dialog(app: tauri::AppHandle) -> Result, String> { + let result = app + .dialog() + .file() + .set_title("Select Minecraft Installation Folder") + .blocking_pick_folder(); + + match result { + Some(path) => Ok(Some(path.to_string())), + None => Ok(None), + } +} + #[tauri::command] fn uninstall_package(restore_initial: bool) -> Result<(), String> { if restore_initial { @@ -1240,6 +1322,8 @@ pub fn run() { handle_deep_link, download_preset_by_uuid, download_creator_settings, + validate_minecraft_path, + open_folder_dialog, ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); diff --git a/v3/src-tauri/src/main.rs b/v3/src-tauri/src/main.rs index 792b4c8..f0d227b 100644 --- a/v3/src-tauri/src/main.rs +++ b/v3/src-tauri/src/main.rs @@ -2,5 +2,5 @@ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] fn main() { - v3_lib::run(); + brtx_installer_lib::run(); } diff --git a/v3/src-tauri/tauri.conf.json b/v3/src-tauri/tauri.conf.json index c5f413d..15422b1 100644 --- a/v3/src-tauri/tauri.conf.json +++ b/v3/src-tauri/tauri.conf.json @@ -1,6 +1,6 @@ { "$schema": "https://schema.tauri.app/config/2", - "productName": "BetterRTX", + "productName": "BetterRTX Installer", "version": "3.0.0", "identifier": "graphics.bedrock.brtx", "build": { @@ -15,7 +15,8 @@ { "title": "BetterRTX Installer", "width": 800, - "height": 600 + "height": 600, + "dragDropEnabled": true } ], "security": { diff --git a/v3/src/components/ActionsTab.tsx b/v3/src/components/ActionsTab.tsx index d252367..531eeb5 100644 --- a/v3/src/components/ActionsTab.tsx +++ b/v3/src/components/ActionsTab.tsx @@ -6,7 +6,7 @@ import { invoke } from "@tauri-apps/api/core"; export default function ActionsTab() { const { t } = useTranslation(); const { addMessage } = useStatusStore(); - const { selectedInstallations, installRTX, installMaterials, backupSupportFiles } = useAppStore(); + const { selectedInstallations, installRTX, updateOptions, backupSupportFiles } = useAppStore(); const handleActionClick = (actionFn: (installPath: string) => Promise) => { if (selectedInstallations.size === 0) { @@ -56,13 +56,13 @@ export default function ActionsTab() { - - - - +
{/* Menu button to show toolbar */}
+
+
+ setSearchQuery(e.target.value)} + className="w-full px-3 py-2 bg-app-panel border border-app-border rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-brand-accent focus:border-transparent" + /> +
+
+ +
+
- {presets.length > 0 ? ( - presets.map((preset) => ( + {filteredPresets.length > 0 ? ( + filteredPresets.map((preset) => ( -

{t("presets_none_available")}

+

+ {searchQuery || selectedFilter !== "all" + ? t("presets_none_match_filter", "No presets match your search criteria") + : t("presets_none_available") + } +

+ {(searchQuery || selectedFilter !== "all") && ( + + )}
)}
+ ) } \ No newline at end of file diff --git a/v3/src/components/CreatorTab.tsx b/v3/src/components/creator/CreatorTab.tsx similarity index 70% rename from v3/src/components/CreatorTab.tsx rename to v3/src/components/creator/CreatorTab.tsx index 8c25841..ef70275 100644 --- a/v3/src/components/CreatorTab.tsx +++ b/v3/src/components/creator/CreatorTab.tsx @@ -1,27 +1,19 @@ import React, { useState } from "react"; import { invoke } from "@tauri-apps/api/core"; -import Button from "./ui/Button"; -import { useAppStore } from "../store/appStore"; -import { useStatusStore } from "../store/statusStore"; +import Button from "../ui/Button"; +import { useAppStore } from "../../store/appStore"; +import { useStatusStore } from "../../store/statusStore"; +import InstallationInstanceModal from "../installations/InstallationInstanceModal"; export default function CreatorTab() { - const { selectedInstallations } = useAppStore(); + const { installations } = useAppStore(); const { addMessage } = useStatusStore(); const [settingsHash, setSettingsHash] = useState(""); const [isProcessing, setIsProcessing] = useState(false); + const [isModalOpen, setIsModalOpen] = useState(false); - const handleSubmit = async (e: React.FormEvent) => { - e.preventDefault(); - - if (!settingsHash.trim()) { - addMessage({ - message: "Please enter a settings hash", - type: "error", - }); - return; - } - - if (selectedInstallations.size === 0) { + const handleInstall = async (selectedNames: string[]) => { + if (selectedNames.length === 0) { addMessage({ message: "Please select at least one installation", type: "error", @@ -30,8 +22,8 @@ export default function CreatorTab() { } setIsProcessing(true); + setIsModalOpen(false); try { - const selectedNames = Array.from(selectedInstallations); await invoke("download_creator_settings", { settingsHash: settingsHash.trim(), selectedNames, @@ -53,6 +45,20 @@ export default function CreatorTab() { } }; + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + + if (!settingsHash.trim()) { + addMessage({ + message: "Please enter a settings hash", + type: "error", + }); + return; + } + + setIsModalOpen(true); + }; + const handleHashChange = (e: React.ChangeEvent) => { setSettingsHash(e.target.value); }; @@ -86,7 +92,7 @@ export default function CreatorTab() { id="settings-hash" type="text" className="field__input font-mono" - placeholder="Enter settings hash (e.g., 1fc884a5b6ef2a19b2817b39397512987c7fe0890524631d2448927233fcebb5)" + placeholder="Enter settings hash" value={settingsHash} onChange={handleHashChange} disabled={isProcessing} @@ -97,26 +103,11 @@ export default function CreatorTab() {

k*=35!|-04&lN3vP1l8$0mXrr&DG;rr&-E? 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 JmJ#>{695}Q=KBBu literal 98451 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∓t$dRJGIadE?vc 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 Kx8Vjl{{H|h@<;Lj diff --git a/v3/src-tauri/icons/icon.ico b/v3/src-tauri/icons/icon.ico index b3636e4b22ba65db9061cd60a77b02c92022dfd6..612b3dd14aca0f8bc32e326093d02ed3ea2bf0fe 100644 GIT binary patch literal 32991 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 AKmY&$ diff --git a/v3/src-tauri/icons/icon.png b/v3/src-tauri/icons/icon.png index e1cd2619e0b5ec089cbba5ec7b03ddf2b1dfceb6..abb94bdae7679aac5e46e19bdeef859c97f05257 100644 GIT binary patch literal 38277 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%0D4F#4>)!Tv-iTKxm@Nq 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 B1aklY literal 14183 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