Repository navigation
feat(frontend): the device test diagnoses more and says how to fix what fails - #2055
Merged
Merged
Conversation
"Ordinary browser" becomes the browser's name and version: Chrome,
Chromium, Brave, Edge, Opera and Samsung Internet from the brands a
Chromium browser declares (with the full version from fullVersionList
when it answers), and Firefox, Safari and every iOS browser from the user
agent. A derivative shows its engine ("Brave / Chromium (v. ...)"), and
Opera and Samsung Internet their own number too. An app's own browser
names the app. An unknown browser keeps the generic wording. It stays out
of FFC.Platform: no decision reads the name.
The PDF row now says what it checked: "Supported: this browser can
build and save the PDF."
Closes #2052
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018srx5hc431EYmG4MHUr2KA
…at fails
New rows on the "Test my device" mode of the verification page:
- local storage (a probe key written and removed at once);
- what the ALTCHA captcha needs (Web Crypto, Web Workers);
- the device ID the device limit reads: the same signals the forms send,
through a read-only collector that never creates the persistent id,
read twice, shown as a short code, the count of signals read and
whether they hold (naming the ones that change);
- the device clock against the server's, from the Date header of a HEAD
request for the page itself (no endpoint);
- time zone, UTC offset and language;
- window, screen and zoom;
- connection (online, type, data saver) where the browser says it;
- theme applied, site setting and system preference.
A failing row carries an information button ("How to fix it") that
reveals the fix, platform-aware for a blocked location. A check still
running counts down from 20 seconds and says when no answer came.
Closes #2054
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018srx5hc431EYmG4MHUr2KA
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018srx5hc431EYmG4MHUr2KA
…k-id-theme # Conflicts: # CHANGELOG.md # assets/js/ffc-device-check.js # assets/js/ffc-device-check.min.js # includes/frontend/class-ffc-device-check.php # includes/settings/views/documentation/feature-certificates.php # languages/ffcertificate-pt_BR.l10n.php # languages/ffcertificate-pt_BR.mo # languages/ffcertificate-pt_BR.po # languages/ffcertificate.pot
rpgmem
marked this pull request as ready for review
October 24, 2026 11:56
rpgmem
enabled auto-merge (squash)
October 24, 2026 11:56
This was referenced Oct 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #2054. Stacked on #2053 (the browser name): its commit shows here until that one merges.
Problem
The "Test my device" mode (#2047) checked what a form needs, but not what support is asked about most:
A failing row did not say what to do, and a hanging check left its row without an answer.
Change
New rows, all in
assets/js/ffc-device-check.js; each row is drawn byFrontend\DeviceCheckwith its icon:Dateheader of aHEADrequest for the page itself (no endpoint; a skew over 60 s warns)America/Sao_Paulo · UTC-3 · pt-BRDark (site: follows the system; system: dark)Device ID
ffc-device-signals.jsexposesFFCDeviceSignals.collect(): the same signals the forms send, in a read-only mode that never creates the persistentffc_device_id.DeviceCheck::enqueue_assets()now runs after the collector and declares it as a dependency when it is on the page.How to fix it
warnorfailgets an icon-only family button (ffc-icon-info,aria-expanded,aria-controls) that reveals the fix under the result.Countdown
Docs and catalogues
Tests
device-check-id-theme.test.js(22 tests):ffc_device_id.DeviceCheckTest: 14 rows; every string the script reads (help keys included) is instrings(); the collector dependency.FrontendTest:wp_script_isstubbed.Risk
HEADrequest to the page itself for the clock.ffc-device-signals.jsgains an exported read-only collector; the forms' path is unchanged.Checklist
develop; no version bumpCHANGELOG.md: one bullet under[Unreleased]→ Added, citing Device test: device ID, theme and more diagnostics, with how to fix what fails #2054.potand.po, catalogues recompiledGenerated by Claude Code