Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Patch 2.0.0 not working in the Dec 2022 steam client #9

Closed
monsef987 opened this issue Jan 1, 2024 · 13 comments
Closed

Patch 2.0.0 not working in the Dec 2022 steam client #9

monsef987 opened this issue Jan 1, 2024 · 13 comments
Labels
Patch Files Issue regards the patch files
Milestone

Comments

@monsef987
Copy link

i installed patch v2.0 on that version and it doesn't work

Capture
Capture2

@TiberiumFusion TiberiumFusion changed the title Dec 2022 version doesn't work Patch 2.0.0 not working in the Dec 2022 steam client Jan 1, 2024
@TiberiumFusion
Copy link
Owner

Thanks for the report.

I will try to replicate the problem in my test environment when I have time.

It's weird that FriendsUI is just a solid black rectangle. Usually there will be some white text as well from the inner frame that says an error occurred (example: #6).

It appears that the friends & chat networking however is working just fine in the background, since you are online (blue text on your username next to your $$$ and messages). People can probably send you messages and you might even get popup notifications. Maybe the chat windows would be black too though.

Have you tried launching a game and seeing if the Friends List works in the ingame overlay? It might work. I've seen that happen before, where the library's Friends List is broken but it works just fine in the overlay.

Lastly, as a workaround, you can switch to version 1.2.0 of the patch and use that instead. It is known to work with the Dec 2022 steam client.

@TiberiumFusion TiberiumFusion added the Patch Files Issue regards the patch files label Jan 1, 2024
@monsef987
Copy link
Author

Refe

yes it does work in games and even show my status to other, im currently using 1.2.0 version and waiting for a fix soon thanks for reply

@TiberiumFusion
Copy link
Owner

@monsef987

yes it does work in games

This is very vague. Please provide a screenshot.

The friends list does not work in the overlay in my testing. I've reproduced the issue on my end and the friends list is a black rectangle both in the library and in the ingame overlay,

The issue is not fully diagnosed yet, but from what I can tell so far, it is originating from the inner frame. The symptoms are bizarre too: the dom is completely broken and chromezilla's f12 tools fail to manipulate it.

@TiberiumFusion
Copy link
Owner

TiberiumFusion commented Jan 1, 2024

I've identified the problem.

Notes

FriendsUI is working fine. The outer frame is working fine. The inner frame is (mostly) working fine. The problem is that between 8200419 and 8601984, Valve removed some logic from the inner frame that is responsible for telling it to display itself in the environment provided by the Dec 2022 client.

Valve uses uses zuckerberg's ass backwards "react" library for their entire website. This library fails to do anything the proper way and never creates dom elements, which makes debugging miserable. The UI only exists as ephemeral js objects that must be explicitly drawn by js to some surface in order to appear. If that doesn't happen, you get a black screen. Valve has configured react to 1) only explicitly render when some arbitrary/unused flag is set, and 2) swallow any and all helpful error messages that would indicate something has gone wrong.

Aspect no.1 is controlled by a signal which originates from an unknown origin within the Steam client and/or steam-chat dot com. At least, circa the May 2023 client, that is how it works. Somewhere, a popup-created event is raised and makes its way to the inner frame, which (in 8601984) is the only thing that makes Valve's js make react start rendering its garbage.

The popup-created event does not exist in the Dec 2022 Steam client and accordingly is never raised. Evidently, it was added sometime between the Dec 2022 client and May 2023 client.

8200419 accounts for this with a shim in the inner frame. Ctrl+F for "popup-created" == e.data && this.OnCreateInternal() and refer to the Show() method immediately below it. OnCreateInternal() will be called in 8200419 if the pointless flag from aspect no.1 was never flipped. The May 2023 raises popup-created so this backup path is not needed. The December 2022 client does not, so this backup path is engaged and is the only thing that makes the inner frame render itself.

By the time of 8601984, the backup path was removed from Show(). And the Dec 2022 client never raises popup-created. So OnCreateInternal() is never called, the pointless flag is never flipped, and the inner frame never bothers to render itself, even though it is 100% ready and able to render itself.

Fix

This can and will be shimmed in a future release of the patch.

I will try to release it soon since there is likely to be increased activity here due to the passage of Jan 1st.

@TiberiumFusion TiberiumFusion added the In Progress Issue research & resolution is currently underway label Jan 1, 2024
@monsef987
Copy link
Author

I've identified the problem.

Notes

FriendsUI is working fine. The outer frame is working fine. The inner frame is (mostly) working fine. The problem is that between 8200419 and 8601984, Valve removed some logic from the inner frame that is responsible for telling it to display itself in the environment provided by the Dec 2022 client.

Valve uses uses zuckerberg's ass backwards "react" library for their entire website. This library fails to do anything the proper way and never creates dom elements, which makes debugging miserable. The UI only exists as ephemeral js objects that must be explicitly drawn by js to some surface in order to appear. If that doesn't happen, you get a black screen. Valve has configured react to 1) only explicitly render when some arbitrary/unused flag is set, and 2) swallow any and all helpful error messages that would indicate something has gone wrong.

Aspect no.1 is controlled by a signal which originates from an unknown origin within the Steam client and/or steam-chat dot com. At least, circa the May 2023 client, that is how it works. Somewhere, a popup-created event is raised and makes its way to the inner frame, which (in 8601984) is the only thing that makes Valve's js make react start rendering its garbage.

The popup-created event does not exist in the Dec 2022 Steam client and accordingly is never raised. Evidently, it was added sometime between the Dec 2022 client and May 2023 client.

8200419 accounts for this with a shim in the inner frame. Ctrl+F for "popup-created" == e.data && this.OnCreateInternal() and refer to the Show() method immediately below it. OnCreateInternal() will be called in 8200419 if the pointless flag from aspect no.1 was never flipped. The May 2023 raises popup-created so this backup path is not needed. The December 2022 client does not, so this backup path is engaged and is the only thing that makes the inner frame render itself.

By the time of 8601984, the backup path was removed from Show(). And the Dec 2022 client never raises popup-created. So OnCreateInternal() is never called, the pointless flag is never flipped, and the inner frame never bothers to render itself, even though it is 100% ready and able to render itself.

Fix

This can and will be shimmed in a future release of the patch.

I will try to release it soon since there is likely to be increased activity here due to the passage of Jan 1st.

so its just matter of little coding in js files?
aight then il wait for fix, good luck and thank you for this project

@TiberiumFusion
Copy link
Owner

Patch version 2.0.1 has been released, which resolves this issue.

@TiberiumFusion
Copy link
Owner

The resolution noted above is imperfect. Refer to #10 for more information.

tl;dr Between 8200419 and 8601984, Valve changed the context in which Show() is called, in such a way that calling SteamInitsPopups in the backup path noted above is not critical and is actually counterproductive.

Resolving #10 requires reverting the current fix here for this issue and devising a new one. As noted over on #10, creating that new fix is actually very simple and straightforward: remove the use of SteamInitsPopups from the 8200419 ternary we introduced, and leave the rest of it unchanged. Again, refer to #10 for more information.

As far as I can tell so far, this new fix does not regress from the original in any known way, with respect to resolving the black rectangle rendering bug.

This change will be in the next hotfix.

@TiberiumFusion
Copy link
Owner

Patch version 2.0.2 has been released, which makes the changes noted above.

@okamitime

This comment was marked as off-topic.

@TiberiumFusion

This comment was marked as off-topic.

@okamitime

This comment was marked as off-topic.

@TiberiumFusion

This comment was marked as off-topic.

@okamitime

This comment was marked as off-topic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Patch Files Issue regards the patch files
Projects
None yet
Development

No branches or pull requests

3 participants