Fix Steam installed-game path resolution for placeholder manifests#41
Fix Steam installed-game path resolution for placeholder manifests#41weter11 wants to merge 5 commits into
Conversation
This change improves how the launcher resolves game installation directories from Steam manifests. It no longer blindly trusts the `installdir` field, which can sometimes contain placeholder values like "App <appid>". Key changes: - Added `is_suspicious_installdir` to identify placeholder directory names. - Generalized `probe_install_dir_by_appid` in `src/utils.rs` to find installation directories using `steam_appid.txt` or partial name matches. - Updated library scanning in `src/library.rs` to validate manifest paths and fall back to probing if they are suspicious or missing. - Enhanced `InstalledAppInfo` and `LocalGame` models with diagnostic fields to track how the installation directory was resolved. - Refactored `src/steam_client.rs` to use the unified probing logic. - Added regression tests in `tests/repro_issue.rs`. - Replaced `println!` with `tracing::info!` and optimized string handling. 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. |
- Fix installed-game path resolution for placeholder manifests (e.g. Portal: Prelude RTX) - Include demos and free games in library refresh by enabling additional request flags - Add detailed diagnostics for refresh operations and path resolution - Refactor install directory probing to a shared utility - Add regression tests for suspicious directory detection and probing Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Modified `refresh_library` to always merge local discovery results even if Steam network call fails. - Improved `build_game_library` to intelligently merge local and remote data. - Added detailed diagnostics for library reconciliation (local-only vs remote-only counts). - Ensured installed demo titles are correctly discovered from local manifests. - Added fallback to library cache when Steam network is unreachable. - Added tracing logs for discovery of local-only Steam apps. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Implemented orphaned directory recovery: the launcher now scans `steamapps/common` for untracked installations and identifies them via `steam_appid.txt` if the `.acf` manifest is missing. - Enhanced library reconciliation to intelligently merge local discovery and network owned-games data. - Added tracing logs to report diagnostics for library refresh (ACF vs recovered vs remote counts). - Track `manifest_missing` status in game models for better visibility into local library health. - Improved `refresh_library` in UI to fall back to cache and local scan even if Steam network calls fail. - Added regression tests for orphaned directory discovery. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
- Implemented orphaned directory discovery: surfaces games in `steamapps/common` that lack an `.acf` manifest. - Added `repair_manifest` functionality to `SteamClient` to regenerate minimal valid ACF files from known metadata. - Added a "Repair Steam Manifest" action in the game repair UI. - Enhanced `write_appmanifest` with standard fields like `Universe` and added automatic backups before overwriting. - Track `manifest_missing` status to highlight games that need repair. - Updated all test suites to support the new `manifest_missing` field. - Added unit tests for manifest generation and orphaned directory recovery. Co-authored-by: weter11 <14630689+weter11@users.noreply.github.com>
The launcher was failing to find the executable for some games (e.g., Portal: Prelude RTX) because the Steam manifest's
installdirfield contained a placeholder likeApp 2410180instead of the actual directory name.I've implemented a more robust resolution strategy:
installdiris a placeholder.commonfolder for a directory containingsteam_appid.txtwith the correct ID or a directory name containing the ID.This fix ensures games with broken manifests can still be launched correctly.
PR created automatically by Jules for task 3770141383720990255 started by @weter11