The events code is completely commented out in that branch because the difficulty .dat
files are now on version 3 (community docs here), which completely changes how events work.
I believe I came to the conclusion that a lot of it is no longer backwards compatible with the old events protocol, to the point where I wasn't sure if I could even translate back to the old format at all.
Internally, the game automatically converts the old 2.x format to the new format, meaning even sending events for older maps that are still in the old 2.x format is non-trivial.
I genuinely think that at this point it might be easier to just rewrite the whole mod from scratch built on top of Zenject and MonoMod with a redesigned protocol, than it would be to make the old protocol work with all these changes. That said, this would of course make all the overlays stop working (at least without putting even more effort into building a translation layer for backwards compatibility) and it still wouldn't be an evening project.
I figured out a solution which works for me after brief two hours of confusion.
#19159 tries to be safe in how it depends on libgtk by loading it dynamically and trying to find the dialog related functions dynamically. It does this by requesting a file called libgtk-3.so
:
https://github.com/tristan957/electron/blob/25b540187140463a4d0f9908bccc8606d2693bb4/shell/browser/ui/file_dialog_gtk.cc#L75
Debian, meanwhile, packages libgtk as libgtk-3.so.0
:
$ dpkg -L libgtk-3-0:amd64
...
/usr/lib/x86_64-linux-gnu/libgtk-3.so.0
...
As a workaround, I linked the library (which seems to be common practice with sonames, but is for some reason applied very inconsistently by repository maintainers):
sudo ln /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 /usr/lib/x86_64-linux-gnu/libgtk-3.so
Restarting the electron application and triggering a file picker again confirmed that this was the issue.
(As an aside, the KDE file picker appeared behind the electron application which hints at an extra issue here. Setting a window override for window class xdg-desktop-portal-kde
to force no focus stealing prevention fixed this, which makes me think this might caused by the parent window not being set?)
I already made an attempt at updating for this version (see the update/1.20.0 branch) and in the process found some rather unfortunate changes
The short version is that this update has changed the scoring system significantly enough that it'd require significant changes to this mod to keep the data it sends make sense. As an example, using the current version of the branch above the score ends up showing the score with a single cut delay: if there's no notes to cut for half a minute, overlays will continue showing the now out-of-date score for half a minute, because the score for the last cut was never sent out.
More specifically, scoring now happens in bulk at the end of the frame for each note cut during that frame. There's no events sent inside of the loop which iterates over cuts to score during that frame either, which further complicates figuring out the score for each of the cuts.
This mod has been long due for a rewrite but I have no motivation to do so, especially with how life's going right now.
For the time being you can try denpadokei's fork (they don't seem to know English, so there might be some setup differences, documentation in Japanese, or missing documentation): https://github.com/denpadokei/HttpSiraStatus/releases/tag/7.0.0
Copied from the comments on my Reddit post:
I was running a program to save all data sent by Reddit throughout the event. My program received the message telling it to switch to the white only palette at 22:47:31 UTC.
Files used (last full frames received before config change received at 1649112450989 and 1649112451013):
https://hot-potato.reddit.com/media/canvas-images/1649112450736-0-f-p8WJC8gp.png
https://hot-potato.reddit.com/media/canvas-images/1649112450717-1-f-ZBu5lxtz.png
https://hot-potato.reddit.com/media/canvas-images/1649112450738-2-f-Oq1IAWrM.png
https://hot-potato.reddit.com/media/canvas-images/1649112450939-3-f-asYsAbV9.png
Here's a link to the raw data surrounding the configuration update for the nerds among us. I'll publish all my raw data after I package it up.
https://cdn.discordapp.com/attachments/429823324210593793/960698306261028904/ws-white-palette.json
Add onOpen to WebSocketTap options
Rework AmqpTap to simplify assertions
Limit AmqpTap channel to one concurrent message
Remove accidental console.log
Allow ignoring AmqpTap messages in transform
Export TapOptions in index
Add support for passing WebSocket options
Remove unnecessary author and source name in WebSocketTap
Increase backoff time of WebSocketTap resolveURL
Fix super called too late in WebSocketTap