The viewer currently tacks lang, channel, version, and grid onto the login screen url, which gives the web app context to serve relevant notices and otherwise customize the experience. Some notification types also require OS, which we currently get by parsing userAgent (and it's messy, with many assumptions). We could get rid of that lookup entirely, make it more explicit and easier to test if we just tacked OS onto the query string with all the other data.
Where 'os' would be win|mac|lnx depending on platform.
I'm currently building this into the web application. If 'os' isn't specified in the query string, it will fall back to the userAgent lookup to handle legacy viewers.