@TheQwertiest
First of all, you should find nothing happens in on_paint if the panel is hidden in tab. Also, there is window.IsVisible. Take this example bit of code
window.SetInterval(function () {
fb.trace("Timer: " + new Date());
window.Repaint();
}, 1000);
function on_paint(gr) {
fb.trace("paint: " + window.IsVisible);
}
When in a visible tab, the output is...
Timer: Sat Jun 11 18:27:51 UTC+0100 2016
paint: true
Timer: Sat Jun 11 18:27:52 UTC+0100 2016
paint: true
Timer: Sat Jun 11 18:27:53 UTC+0100 2016
paint: true
Timer: Sat Jun 11 18:27:54 UTC+0100 2016
paint: true
Now select another tab so the panel is hidden and you only get...
Timer: Sat Jun 11 18:28:06 UTC+0100 2016
Timer: Sat Jun 11 18:28:07 UTC+0100 2016
Timer: Sat Jun 11 18:28:08 UTC+0100 2016
Timer: Sat Jun 11 18:28:09 UTC+0100 2016
Timer: Sat Jun 11 18:28:10 UTC+0100 2016
Timer: Sat Jun 11 18:28:11 UTC+0100 2016
Timer: Sat Jun 11 18:28:12 UTC+0100 2016
Timer: Sat Jun 11 18:28:13 UTC+0100 2016
Timer: Sat Jun 11 18:28:14 UTC+0100 2016
Timer: Sat Jun 11 18:28:15 UTC+0100 2016
Timer: Sat Jun 11 18:28:16 UTC+0100 2016
Timer: Sat Jun 11 18:28:17 UTC+0100 2016
Timer: Sat Jun 11 18:28:18 UTC+0100 2016
You can also experiment by putting fb.trace(window.IsVisible); inside the timer to see it change to false when hidden.
As for my repo, it's just my personal files that happen to be online so I'm unlikely to accept requests unless it's a bug fix for something I'm not aware of.
@jazzthieve, yes it's intentional. Having an empty file present prevents the script from looking up again too soon. It checks the age of the file is over 24 hours before making another request to their servers.