readme: more details about browser support

main
Inga 🏳‍🌈 1 week ago
parent 49768c12a2
commit 9b34a6cddc
  1. 53
      README.md

@ -286,21 +286,62 @@ None.
## Supported browser engines
* Gecko (Firefox): works in v132, both with JS enabled (offline mode) and with JS disabled (plain old client-server mode).
Should work in offline mode starting with Firefox 63 (2018); should work in plain old client-server mode in all versions,
The main required features are:
* Custom elements: https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry/define
(this demo will fall back to client-server mode if `window.customElements.define` is not available).
* Custom build-in elements: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/is
(again, this demo will fall back to client-server mode if this is not supported).
* ES modules: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type.
* Also CSS grid for nice presentation: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template
(presentation is less nice on small screens, should be easy to make layout responsive, but I already spent too much time on this project).
* And `:not` CSS selector for critical UI features,
(hiding and showing different messages and buttons depending on the game state):
https://developer.mozilla.org/en-US/docs/Web/CSS/:not.
Therefore, for desktop browsers:
* Gecko (Firefox): checked and works in v132, both with JS enabled (offline mode) and with JS disabled (plain old client-server mode).
Should work in offline mode starting with Firefox 63 (2018); should fall back plain old client-server mode in all versions,
although the design in Firefox 51 (2017) and older will probably not look very good due to the lack of the recent CSS features.
* Blink (e.g. Chromium and Chromium-based browsers): superficially checked in Chromium 130, basic functionality seems to work.
Should work in offline mode starting with Chrome 67 (2018); should work in plain old client-server mode in all versions,
Should work in offline mode starting with Chrome 67 (2018); should fall back to plain old client-server mode in all versions,
although the design in Chrome 56 (2017) and older will probably not look very good due to the lack of the recent CSS features.
* WebKit (e.g. qutebrowser and notably Safari): not checked; should **not** work in offline mode,
* WebKit (e.g. qutebrowser, Konqueror, Epiphany and notably Safari): not checked; should **not** work in offline mode,
because WebKit does not fully implement decade-old standard which Gecko and Blink supported since 2018:
https://github.com/WebKit/standards-positions/issues/97.
Everything should still work in online mode, falling back on client-server communication,
except that the design in Safari before 10.1 (2017) will not look very good (but will still be functional),
and will probably become disfunctional in Safari before 3.1 (2008).
* Servo: checked, does **not** work in nightly as of 2024-11-20 and as of 2024-11-25,
and it's developer tools host seemingly crashes on this page
* Servo: checked, does **not** work in nightly as of 2024-11-20 and as of 2024-11-25 (even progressive form doesn't work),
and its developer tools host seemingly crashes on this page
(at least on the borrowed Windows machine; Servo is not packaged for Alpine, and its regular Linux builds don't run on Alpine).
I decided to _not_ disable dynamic features in Servo because:
1. Servo is not production-ready, its users know that it is not suitable to be used as a daily driver;
2. This is likely a bug in servo, it will be fixed in the future, so
3. Gating offline JS mode for non-servo browsers only will mean that in the future, when servo is fixed,
this demo will only work in client-server mode, just because servo once had a bug. Not ideal.
(Also not even attempting to use dynamic features in servo will make it more difficult to debug the problem in it.)
* EdgeHTML (classic MS Edge before they migrated to Chromium): not checked, should fall back to client-server mode in all versions,
but the page will not look very pretty in Edge before 16 (2017).
* Trident (Internet Explorer): not checked, should fall back to client-server mode,
UI should be functional (not pretty) in IE8+ (2008) and dysfunctional in IE7 and lower
(fixable by refactoring the approach to displaying/hiding elements to avoid the usage of `:not` selector,
but this is outside the scope of the task).
So presumably, according to caniuse.com,
* Offline JS mode should work in 88% desktop browsers and 80% total browsers
(with Safari being the notable exception contributing 9% on desktop and 18% overall);
* The demo should at least fall back to functional client-server model with the same UI
in at least 98% desktop and at least 96% overall (and likely in at least 98% overall)
(with IE lacking support for grids contributing ~1% on desktop and ~0.5% overall,
and UC Browser and QQ Browser with unknown status of support for grids contributing further 2% overall);
* This demo should at least fall back to functional client-server model with at least functional (but not neccessary pretty) UI
in 99.9% desktop and at least 97% overall browsers (and likely at least 99% overall)
(with older versions of IE lacking support for `:not` selectors contributing 0.1% on desktop,
and UC Browser and QQ Browser with unknown status contributing 2% overall;
it is highly likely that they do actually support `:not` selectors).
## Known issues and quirks

Loading…
Cancel
Save