* Works in older browsers / browsers with JS disabled (which, together with the previous point,
covers 99.9%+ overall userbase, including text-based browsers and presumably IE6 and probably IE5)
as a plain old multi-page application (requiring internet connection).
Basically it has almost perfect backwards compatibility
(compatible with all browsers that fully support HTML4).
* Doesn't use browser detection / sniffing, instead gracefully degrading depending on the feature set available.
* Hopefully more accessible than a typical single-page application.
* Supports multiple games on the same page, playable at the same time, concurrently and independently.
@ -337,13 +339,14 @@ Therefore, for desktop browsers:
Should work in `mode 1` 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 in `mode 1`.
Should work in `mode 1` starting with Chrome 67 (2018); should fall back to `mode 2` in Chrome plain old client-server mode in all versions,
Should work in `mode 1` starting with Chrome 67 (2018); should fall back to `mode 2` in Chrome plain old client-server mode in all versions;
should fall back to `mode 3` with JS disabled,
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, Konqueror, Epiphany and notably Safari): superficialy checked in [BadWolf](https://hacktivis.me/projects/badwolf) 1.3 / webkit2gtk-4.1 2.46.3,
basic functionality seems to work both with JS enabled (in `mode 2`) and with JS disabled (in `mode 3`).
Should work with JS enabled in `mode 2` in all browsers supporting custom elements (e.g. in Safari 10.1 (2017) and newer);
should fall back to `mode 3` in older browsers, 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).
should fall back to `mode 3` in older browsers or with JS disabled,
except that the design in Safari before 10.1 (2017) will not look very good (but will still be functional).
* **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).
@ -357,28 +360,28 @@ Therefore, for desktop browsers:
but the page will not look very pretty in Edge before 16 (2017).
* **Trident** (Internet Explorer): not checked, should fall back to `mode 3`,
UI should be functional but not pretty.
* **links**: checked on 2.30, mostly functional:
* **elinks**: checked on 0.18.0, fully functional (in `mode 3`):
* elinks just like links did not not support disabled buttons in 0.17.1.1 or earlier,
but this is fixed in https://github.com/rkd77/elinks/issues/341 (merged in 0.18.0).
* elinks did not support `hidden` attribute and by default does not support `display: none` in 0.17.1.1 or earlier,
so it will display the content of all (unused) templates.
Support for `hidden` attribute is already implemented in https://github.com/rkd77/elinks/issues/341 (merged in 0.18.0),
and will automatically work in 0.18.0; in older versions, the user should add
`set document.css.ignore_display_none = 0` to their elinks config.
* **links**: checked on 2.30, mostly functional (in `mode 3):
* Links doesn't support disabled buttons
so all board fields are always clickable (even if they're already filled),
this does not cause any functional issues (clicking on the occupied field,
or clicking on an empty field when the game is over, does not change anything),
but still that's a poor UX.
* **elinks**: checked on 0.17.1.1, mostly functional:
* elinks just like links does not support disabled buttons in 0.17.1.1,
but this is fixed in https://github.com/rkd77/elinks/issues/341.
* elinks does not support `hidden` attribute and by default does not support `display: none` in 0.17.1.1,
so it will display the content of all (unused) templates.
Support for `hidden` attribute is already implemented in https://github.com/rkd77/elinks/issues/341,
and will automatically work in newer versions; in older versions, the user should add
`set document.css.ignore_display_none = 0` to their elinks config.
* **lynx**: checked on 2.9.2, somewhat functional (mostly broken but can be used by those who wish):
* **lynx**: checked on 2.9.2, somewhat functional in `mode 3` (mostly broken but can be used by those who wish):
* lynx just like links and elinks does not support disabled buttons;
* It does not support neither `hidden` attribute nor styles, so all (unused) templates are displayed;
* It displays the `value` of submit buttons along with their text, which means that, for example,
in every cell of the board along with its state (X/O/_) it also displays full serialized state of the next board.
* **w3m**: checked on 0.5.3.20230718 (the newest version that my distro has to offer),
broken due to https://git.sr.ht/~rkta/w3m/commit/5d9c728592de1c053e064e8db4452b0bface58e0,
might work in newer versions.
might work in newer versions (but newer versions are not pacaged in Alpine).
So presumably, according to caniuse.com,
@ -387,8 +390,9 @@ So presumably, according to caniuse.com,
* Fallback to `mode 2` (which is just as functional but with a bit more convoluted JS code)
should bring the total to at least 96% overall (98% on desktop; for some less popular mobile browsers support status is unknown);
* The demo should at least fall back to functional `mode 3` (client-server) with the functional UI
in all more or less mainstream browsers (including presumably Internet Explorer 6 and NetFront 3, unchecked),
and in some non-mainstream ones, including text browsers such as links and elinks (checked) but notably not lynx.
in all more or less mainstream browsers of the last 25 years (including presumably Internet Explorer 6 and NetFront 3, not tested),
and in some non-mainstream ones, including text browsers such as links and elinks (checked) but notably not lynx;
* All this is achieved almost without code duplication.