Skip to content

Repair diagnostics 4183110 - #1260

Open
Quinta0 wants to merge 5 commits into
Vysp3r:mainfrom
Quinta0:repair-diagnostics-4183110
Open

Quinta0 wants to merge 5 commits into
Vysp3r:mainfrom
Quinta0:repair-diagnostics-4183110

Conversation

@Quinta0

@Quinta0 Quinta0 commented Aug 27, 2026

Copy link
Copy Markdown

Thank you for contributing to ProtonPlus! Please complete the relevant sections below.

Category

  • Bugfix
  • Feature
  • Code style update
  • Refactoring
  • Build related changes
  • Documentation
  • Translation
  • Other (Please specify!)

Overview

Steam can mark a compatibility tool or runtime (Proton, Steam Linux Runtime) as fully installed (StateFlags bit 4) while its buildid stays 0, meaning the download pipeline reported success without ever writing usable files to disk. Games depending on it then hang or fail silently, and every standard recovery step (verify integrity, delete manifest, steamcmd validate) is a no-op because Steam still believes the install is complete.

SteamCompatibilityToolDiscovery already treated these as unusable but silently dropped them, leaving no signal in the UI about why a tool disappeared. This PR:

  • Detects the phantom-install state generically across every known Steam-library appid (all Proton versions and Steam Linux Runtime variants), not hardcoded to one.
  • Surfaces a dismissible banner plus a step-by-step guide dialog explaining the corruption and the manual recovery steps to run in Steam's own console.
  • Is diagnostic-only by design: ProtonPlus does not download depots or write Steam's appmanifest itself, staying inside the project's existing boundary of never entering the installation workflow for externally-managed Steam library tools.

Issue Number

Related issue: #1232

New Variables or Dependencies

None. No new build scripts, environment variables, configuration options, or dependencies.

How to Test

  1. make tests (or meson test -C build-tests --verbose) covers the new /steam/broken-steam-library-tool-is-detected case in tests/steam_test.vala, which fabricates a Steam library with one phantom-installed appmanifest (StateFlags 4, buildid 0) and one normal install, and asserts only the phantom one is flagged and that re-scanning doesn't accumulate duplicates.
  2. To see it live: create/edit a Steam appmanifest_.acf for a compatibility tool (e.g. Steam Linux Runtime) so it has "StateFlags" "4" and "buildid" "0", then launch ProtonPlus the repair banner /steam/broken-steam-library-tool-is-detected case in tests/steam_test.vala, which fabricates a Steam library with one phantom-installed appmanifest (StateFlags 4, buildid 0) and one normal install, and asserts only the phantom one is flagged and that re-scanning doesn't accumulate duplicates.
  3. To see it live: create/edit a Steam appmanifest_.acf for a compatibility tool (e.g. Steam Linux Runtime) so it has "StateFlags" "4" and "buildid" "0", then launch ProtonPlus the repair banner should appear; clicking "How to Fix" opens the guide dialog with the recovery steps.

Screenshots (if applicable)

If you've introduced any significant UI changes, please include a screenshot or a GIF.

Checklist

  • My code follows the project's style guide.
  • I have tested my changes and verified that they work as expected.
  • I have updated the documentation accordingly (if applicable).
  • I have updated the translations by running ./scripts/build.sh translations (if applicable).
  • I have checked for existing pull requests that cover these changes.

Notes

Implemented with Claude Code, addressing #1232. Diagnostic-only as described above happy to adjust scope if maintainers want a different approach.

Quinta0 and others added 5 commits August 26, 2026 23:08
Steam can mark a compatibility tool or runtime (Proton, Steam Linux
Runtime) as fully installed (StateFlags bit 4) while its buildid stays
0, which means the download pipeline reported success without ever
writing usable files to disk. Games depending on it then hang or fail
silently, and every standard recovery step (verify integrity, delete
manifest, steamcmd validate) is a no-op because Steam still believes
the install is complete.

SteamCompatibilityToolDiscovery already treats these as unusable, but
silently drops them, leaving no signal in the UI about why a tool
disappeared. Detection is generalized across every known Steam-library
appid (all Proton versions and Steam Linux Runtime variants), not
hardcoded to one, and a banner + guide dialog now explain the
corruption and the manual recovery steps live in Steam's own console.

This is diagnostic-only by design: ProtonPlus does not download depots
or write Steam's appmanifest itself, since that would cross the
project's existing boundary of never entering the installation
workflow for externally-managed Steam library tools.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018UAYMTgUiHfHVpp9wEGco5
Word wrapping broke unbroken path/command tokens across many lines
character-by-character. Give the dialog more room and let the
monospace block scroll horizontally instead, since prose lines already
carry their own manual line breaks.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018UAYMTgUiHfHVpp9wEGco5
Still too cramped for the command block even after the earlier width
bump.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018UAYMTgUiHfHVpp9wEGco5
Adw.AlertDialog is a compact message-box widget that ignores
content_width/content_height by design, which is why the dialog stayed
small no matter how large those were set. Rebuilt it as a plain
Adw.Dialog with a header bar and toolbar view, matching the pattern
this codebase already uses for ReleaseChangelogDialog whenever a
dialog needs real room for its content.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018UAYMTgUiHfHVpp9wEGco5
@Vysp3r

Vysp3r commented Aug 27, 2026

Copy link
Copy Markdown
Owner

I am away for work till end of September/Early October.
I will take a look once I am back.
Thank you for your contribution!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants