I was looking at the same thing. Unfortunately, 2.9.4 uses the API V2, which does
use the poll.py class,
is
able
recognize the program states of blank, theme, display and slides. The comment on poll.py states "This class is DEPRECATED, if you need the state of the program, use the registry to access variables." I have not yet figured out where the program state is in the registry.
The original stage.js script included on this thread has everything set up to use the V1 api, so even some of the other classes are changed a bit. I had liked how the OP didn't display anything for images and presentations, which does help a lot for not needed to change scenes in our case. I would manually change scenes when an image was up, since I didn't want OBS to display the file name. I was able to take what the OP did with his CSS and in JS added the. I use the notes
I am working to see if I can find the display state and have it just adjust that in the CSS as well, rather than bother with the OBS scenes. For our purposes, I am fine just displaying text or not.
I also set up the notes to just put my bible references in there to be displayed in the lower corner of OBS.
This is the set of scripts I am using for now. I will be making a few more tweaks to the JS, but hopefully this will get you some basic functionality on OBS for now. The nice thing about this version is that it doesn't require any OBS plugins. everything is just managed through the custom stage as to what is displayed.