Conversation
- Added `use_steam_runtime` toggle to `UserAppConfig` and Properties UI. - Implemented `ensure_steam_installer` to manage global installer cache. - Implemented `install_ghost_steam` with prefix sanitization and Proton execution. - Updated launch logic to support running official Steam client in background for DRM games. - Added path normalization and comprehensive logging for debugging. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
…stency - Moved background Steam launch logic to `src/launch.rs`. - Added missing environment variables (`STEAM_COMPAT_DATA_PATH`, `STEAM_COMPAT_CLIENT_INSTALL_PATH`, `SteamAppId`) to background Steam process. - Updated `WINEDLLOVERRIDES` to include `Steam.exe=n` and other necessary stubs. - Refactored `spawn_game_process` and `spawn_raw_game_process` to resolve Proton path once and use it consistently for both processes. - Added 5-second wait for Steam initialization using `tokio::time::sleep`. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Added host SSL certificate environment variables (`SSL_CERT_FILE`, `SSL_CERT_DIR`) to Ghost Steam installer command to fix TLS errors. - Refined launch logic to remove `SteamAppId` and `SteamGameId` when `use_steam_runtime` is false, preventing Proton from triggering the native Steam bridge. - Ensured `lsteamclient.dll` is deleted during prefix sanitization before installation. - Updated `spawn_raw_game_process` to support isolation toggling. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Updated `install_ghost_steam` to include necessary Proton environment variables (`STEAM_COMPAT_DATA_PATH`, `STEAM_COMPAT_CLIENT_INSTALL_PATH`). - Implemented `harvest_credentials` and `inject_credentials` in `src/utils.rs` using `tokio::fs` for non-blocking I/O. - Integrated credential synchronization into the launch flow: injection before launch, harvesting after game exit. - Added `get_compat_data_path` helper to `SteamClient`. - Ensured all relevant functions are `async` and use `.await` for correctness and performance. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Implemented `find_wine_binary` to dynamically locate the wine executable in Proton directories. - Implemented `install_ghost_steam_in_prefix` to perform a clean installation of the official Windows Steam Client into game prefixes, bypassing Proton's Steam emulation. - Updated launch logic to use the new installation method and set proper runtime `WINEDLLOVERRIDES`. - Added prefix sanitization to remove conflicting Proton stubs before installation. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Removed `find_wine_binary` as using the `proton` script directly is more stable and ensures host TLS/network libraries are loaded. - Updated `install_ghost_steam_in_prefix` to use `proton run ...` directly with all necessary environment variables (`STEAM_COMPAT_DATA_PATH`, `STEAM_COMPAT_CLIENT_INSTALL_PATH`, `SSL_CERT_FILE`, `SSL_CERT_DIR`, and `WINEDLLOVERRIDES`). - Ensured `SteamAppId` and `SteamGameId` are removed during installation to avoid triggering an existing Steam client. - Fixed unused import warning in `src/launch.rs`. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Added `use_steam_runtime` toggle to `UserAppConfig` and UI. - Implemented global `SteamSetup.exe` installer management in `src/utils.rs`. - Implemented prefix sanitization and Ghost Steam installation in `src/launch.rs`. - Added "Fake Steam Trap" to isolate Proton from host Steam client. - Orchestrated Ghost Steam lifecycle in `src/steam_client.rs` with background execution and credential sync. - Added absolute path normalization and consistent `WINEPREFIX`/`WINEDLLOVERRIDES` handling. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Removed silent flag (/S) from Steam installer to allow interactive setup and initial login. - Added user instructions during installation. - Updated launch flow to harvest credentials immediately after the first-run installation. - Ensured subsequent runs remain silent and automated using background execution and credential injection. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Bypassed Proton Python script for installation to avoid "Steam is already running" error. - Implemented `find_wine_binary` to locate bundled Wine in Proton. - Manually injected `LD_LIBRARY_PATH` for Proton's 32-bit GnuTLS libraries to fix network connectivity in the installer. - Configured `WINEDLLOVERRIDES` to suppress Mono/Gecko popups. - Ensured Proton-specific environment variables are removed for the installer command. - Maintained standard Proton launch for game execution. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Restored silent installer (/S) and updated success criteria to check for steam.exe existence (ignoring non-zero exit codes). - Added `-cef-disable-gpu-compositing` to all Steam launches to prevent UI crashes under Wine. - Implemented `launch_ghost_steam_interactive` for first-run login. - Refined orchestration to call interactive login after installation before harvesting credentials. - Ensured consistent WINEDLLOVERRIDES across all launch paths. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Added `-tcp` flag to all Steam launches to bypass Proton UDP login issues. - Updated `WINEDLLOVERRIDES` to include `steamclient64=n` for better 64-bit compatibility. - Ensured `SSL_CERT_FILE` and `SSL_CERT_DIR` are present in the interactive launch. - Strictly exported all critical environment variables to ensure they survive Steam's self-restarts. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Added explicit `permissions` to GitHub Actions workflow to resolve 403 Forbidden error during artifact upload finalization. - Completed the "Ghost Steam" (Windows Runtime) architecture: - Interactive first-run login with `-tcp` and `-cef-disable-gpu-compositing`. - Silent background launches for subsequent runs. - Robust prefix sanitization and credential synchronization. - Manual `LD_LIBRARY_PATH` injection for installer network connectivity. - Consistent and persistent `WINEDLLOVERRIDES` (including `steamclient64`). Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Explicitly pass through display-related environment variables (DISPLAY, WAYLAND_DISPLAY, XAUTHORITY, XDG_RUNTIME_DIR) to ensure windows are visible. - Removed silent `/S` flag from the installer to allow interactive setup. - Removed DLL overrides that were blocking UI frames during the installation phase. - Added top-level permissions to the GitHub Actions workflow to fix artifact upload failures. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Injected virtual 'Steam Runtime (Windows)' app (AppID 0) into library. - Implemented global Master Steam prefix at `./config/SteamFlow/master_steam_prefix`. - Added interactive installation/launch logic for the Master Steam instance in `src/launch.rs`. - Implemented `deploy_master_steam` in `src/utils.rs` for recursive cloning of Steam installation. - Updated game launch flow in `src/steam_client.rs` to deploy master runtime and run silently in game prefixes. - Improved UI handling for the virtual runtime app and fixed perceived launch recursion. - Ensured consistent DLL overrides (including steamclient64) and display variable pass-through. - Removed redundant per-game credential harvesting/injecting logic. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
…ecture. This commit restarts the Ghost Steam implementation from scratch as requested: 1. Phase 1: Added `use_steam_runtime` toggle to `UserAppConfig` and the UI Properties modal with tooltip. 2. Phase 2: Implemented global `SteamSetup.exe` installer management in `src/utils.rs`. 3. Phase 3: Implemented `install_ghost_steam` in `src/launch.rs` with prefix sanitization and silent installation. 4. Phase 4: Integrated Ghost Steam into `spawn_game_process` with background launch and 5s wait time. Technical improvements added: - Switched to `tokio::process::Command` for non-blocking process management. - Added `-tcp`, `-cef-disable-gpu-compositing`, and SSL certificate environment variables for stable Steam connectivity under Wine. - Forced native DLL overrides (`steam.exe=n;lsteamclient=n;...`) to prevent Proton stubs from interfering. - Cleaned up legacy Master Prefix and AppID 0 logic to ensure a clean architecture. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
This PR implements the "Ghost Steam" architecture to allow SteamFlow to run the official Windows Steam client inside Proton prefixes. This is necessary for supporting DRM-protected games.
Key changes:
src/models.rs: Addeduse_steam_runtimefield toUserAppConfig.src/ui.rs: Added a checkbox in Game Properties to toggle the Steam Runtime.src/utils.rs: New module withensure_steam_installerto download the official installer.src/launch.rs: New module withinstall_ghost_steamandget_installed_steam_path.src/steam_client.rs: Updatedspawn_game_processto handle Ghost Steam installation and lifecycle.src/config.rs: Addedabsolute_pathhelper for robust path normalization in Wine/Proton.PR created automatically by Jules for task 9441838584222799290 started by @weter11