Skip to content

Mephisto 3.1.215 — the notice is the button

Choose a tag to compare

@IchNukeDichWeg IchNukeDichWeg released this 06 Aug 19:02

The update notice is now the update button. Plus a fix for a switch that could not be switched off, and the Humanize mix finally tells you what it adds up to.

Which download?

Archive Size Use it when
mephisto-3.1.215.zip 585 MB First install — everything, engines included
mephisto-3.1.215-update.zip 5.9 MB You already have Mephisto — extract over your existing folder

⚠️ Extract the update over your existing install, never into an empty folder — without the engines it cannot run. Extract in place: Chrome derives an unpacked extension's id from its folder path, so a new folder means a new id and re-running the native-host installer.

Already on 3.1.214 with automatic updates set up? You don't need either archive — open Settings → General → Updates and press Install Update. This is the first release that can be installed that way.

One click, from the panel

The notice already told you an update existed and then sent you to this page to do it by hand. When self-updating is set up — switched on, permission held, folder chosen — it now reads:

Update available — v3.1.216 (you have v3.1.215) — click to install

and clicking it does the whole thing: downloads the 5.9 MB archive, checks it, writes it into the extension's own folder and reloads. If any of those three pieces is missing the notice stays exactly what it was, a link to the release page, because there'd be nothing to click that would work.

The panel can't run the install itself — it lives in the page's isolated world, where there is no showDirectoryPicker and where indexedDB belongs to the site, not the extension. So the click asks the service worker, which opens the settings page and lets it run there, with the progress on screen.

Automatic Updates could not be turned off

A real bug in 3.1.214, and a design error rather than a slip. The Chrome permission was the setting — read back on every render — which is tidy right up until chrome.permissions.remove() answers false. It does that whenever Chrome decides to keep a grant, and granting a path-scoped pattern like github.com/…/releases/download/* can widen it to the whole origin, which the narrow pattern then cannot remove. The state read back as on and the checkbox sprang straight back.

Your choice is now its own stored flag, and it wins. Off means off whatever Chrome keeps: every button greys out, the panel stops offering one click, and the installer refuses on that flag before it looks at the permission at all. Switching off still hands the permission back where Chrome allows it.

Humanize — what the mix actually plays at

The table said what each band scores and never what the whole mix does, so the only way to know what you'd built was to read seven rows and estimate. The Total row's Accuracy cell now holds every band's accuracy weighted by the share it's actually played:

Mix Reads
Shipped defaults (50/40/4/0/0/5/1) 89% acc · 4% drop
Top move only 100% acc · 0% drop
A third of moves blundered 68% acc · 14% drop

Weighted by the actual sum rather than by 100, because the panel picks proportionally: a mix totalling 50 plays the same ratios as the same mix totalling 100, so the summary describes what will happen rather than what a corrected mix would do. That also keeps it truthful while the total is mid-edit and red. Lichess's accuracy formula moved to one shared place on the way past — it had been a local inside the threshold editor, and two copies would have drifted.

Known limits

The archive reading and the in-place write are pinned by tests against the real published artifacts: this release's own 5.9 MB zip is unpacked by the updater and diffed file-by-file against unzip, then installed over a stand-in install with the manifest key preserved and lib/engine untouched. The switch, the hand-off and the summary were all driven in a real Chrome with the extension loaded.

The full one-click path — notice → worker → settings page → install → reload — has each link verified separately, but end to end it needs a release newer than an installed build that has the button, which by definition this one is not. That's what 3.1.216 will be. If it misbehaves, the status line names the stage, and nothing is written unless every check passed.