From 2082beb38747b27762df4ba470d11c525962698b Mon Sep 17 00:00:00 2001 From: HorizonCode Date: Mon, 7 Jul 2025 17:36:47 +0200 Subject: [PATCH 1/4] fix: print launch error as json for easier debugging --- src/pages/Launch.svelte | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/pages/Launch.svelte b/src/pages/Launch.svelte index c40668c..be78901 100644 --- a/src/pages/Launch.svelte +++ b/src/pages/Launch.svelte @@ -181,6 +181,7 @@ try { launchInfo = 'Looking for EZPPLauncher File updates...'; const updateResult = await getEZPPLauncherUpdateFiles(osuPath); + if (updateResult) { if (updateResult.filesToDownload.length > 0) { launchInfo = 'Found EZPPLauncher File updates!'; @@ -358,10 +359,11 @@ class="flex flex-col items-center text-sm text-center bg-theme-900 border border-theme-800 rounded-lg mx-3 p-3" > {#if launchError} - {launchError.message} - {#if launchError.stack} -
{launchError.stack}
- {/if} +
{JSON.stringify(
+            launchError,
+            Object.getOwnPropertyNames(launchError),
+            2
+          )}
{:else} Unexpected error {/if} From 1ab19957bad0740369456988840cfb99602bdbcd Mon Sep 17 00:00:00 2001 From: HorizonCode Date: Mon, 7 Jul 2025 18:28:18 +0200 Subject: [PATCH 2/4] chore: check for missing files on start --- src-tauri/src/commands.rs | 31 ++++++++++++++++++++++++++++++- src-tauri/src/lib.rs | 13 +++++++------ src/lib/osuUtil.ts | 2 ++ src/pages/Launch.svelte | 5 ++++- 4 files changed, 43 insertions(+), 8 deletions(-) diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index 92c87d9..1df47a7 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -638,4 +638,33 @@ pub fn exit(app: AppHandle) { #[tauri::command] pub fn get_platform() -> String { std::env::consts::OS.to_string() -} \ No newline at end of file +} + +#[tauri::command] +pub async fn check_for_corruption(folder: String) -> Result { + let osu_path = PathBuf::from(folder); + let osu_ui = osu_path.join("osu!ui.dll"); + let osu_gameplay = osu_path.join("osu!gameplay.dll"); + + let osu_ui_bak = osu_path.join("osu!ui.dll.bak"); + let osu_gameplay_bak = osu_path.join("osu!gameplay.dll.bak"); + + let required_files = [&osu_ui, &osu_gameplay]; + + for file in &required_files { + if !file.exists() { + return Ok(true); + } + } + + let bak_files = [&osu_ui_bak, &osu_gameplay_bak]; + for bak in &bak_files { + if bak.exists() { + if let Err(e) = fs::remove_file(bak).await { + return Err(format!("Failed to delete {}: {}", bak.display(), e)); + } + } + } + + Ok(false) +} diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index d94b280..d79a8ef 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -4,11 +4,11 @@ use tauri::Manager; pub mod commands; pub mod utils; use crate::commands::{ - download_ezpp_launcher_update_files, exit, find_osu_installation, get_beatmapsets_count, - get_ezpp_launcher_update_files, get_hwid, get_launcher_version, get_osu_release_stream, - get_osu_skin, get_osu_version, get_skins_count, is_osu_running, open_url_in_browser, - replace_ui_files, run_osu, run_osu_updater, set_osu_config_values, set_osu_user_config_values, - valid_osu_folder, get_platform + check_for_corruption, download_ezpp_launcher_update_files, exit, find_osu_installation, + get_beatmapsets_count, get_ezpp_launcher_update_files, get_hwid, get_launcher_version, + get_osu_release_stream, get_osu_skin, get_osu_version, get_platform, get_skins_count, + is_osu_running, open_url_in_browser, replace_ui_files, run_osu, run_osu_updater, + set_osu_config_values, set_osu_user_config_values, valid_osu_folder, }; #[cfg_attr(mobile, tauri::mobile_entry_point)] @@ -46,7 +46,8 @@ pub fn run() { open_url_in_browser, get_launcher_version, exit, - get_platform + get_platform, + check_for_corruption ]) .plugin(tauri_plugin_fs::init()) .plugin(tauri_plugin_dialog::init()) diff --git a/src/lib/osuUtil.ts b/src/lib/osuUtil.ts index ddc1afd..c9a85f3 100644 --- a/src/lib/osuUtil.ts +++ b/src/lib/osuUtil.ts @@ -114,3 +114,5 @@ export const isOsuRunning = async () => { export const getLauncherVersion = async () => await invoke('get_launcher_version'); export const exit = async () => await invoke('exit'); export const getPlatform = async () => await invoke('get_platform'); +export const isOsuCorrupted = async (folder: string) => + await invoke('check_for_corruption', { folder }); diff --git a/src/pages/Launch.svelte b/src/pages/Launch.svelte index be78901..eed1627 100644 --- a/src/pages/Launch.svelte +++ b/src/pages/Launch.svelte @@ -84,6 +84,7 @@ getSkin, getSkinsCount, getVersion, + isOsuCorrupted, isOsuRunning, isValidOsuFolder, replaceUIFiles, @@ -221,7 +222,9 @@ } const releaseStream = await getReleaseStream(osuPath); - let forceUpdate = releaseStream && releaseStream.toLowerCase() !== 'stable40'; + const osuCorrupted = await isOsuCorrupted(osuPath); + let forceUpdate = + (releaseStream && releaseStream.toLowerCase() !== 'stable40') || osuCorrupted; const versions = compareBuildNumbers($osuBuild, streamInfo); if (versions > 0 || forceUpdate) { From 2162ba15fe5ba9483a178b33c78ab8a6e9f45917 Mon Sep 17 00:00:00 2001 From: HorizonCode Date: Mon, 7 Jul 2025 18:28:53 +0200 Subject: [PATCH 3/4] chore: bump version --- src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 3ddf673..9084dc6 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1081,7 +1081,7 @@ dependencies = [ [[package]] name = "ezpplauncher" -version = "3.0.0-beta.1" +version = "3.0.0-beta.2" dependencies = [ "hardware-id", "md5", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 7fa69b9..e8800da 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ezpplauncher" -version = "3.0.0-beta.1" +version = "3.0.0-beta.2" description = "EZPPLauncher redefined." authors = ["HorizonCode"] edition = "2024" From 3b3447c42c37a15352e260442256e66809fdd47b Mon Sep 17 00:00:00 2001 From: HorizonCode Date: Mon, 7 Jul 2025 18:34:26 +0200 Subject: [PATCH 4/4] fix: add cursor pointer style to non disabled buttons --- src/app.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app.css b/src/app.css index adc3a3b..a86c839 100644 --- a/src/app.css +++ b/src/app.css @@ -154,4 +154,8 @@ body { @apply bg-background text-foreground; } + button:not([disabled]), + [role="button"]:not([disabled]) { + cursor: pointer; + } }