Repository navigation
feat(frontend): the device test names the browser and its version - #2053
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
5 tasks done
rpgmem
marked this pull request as ready for review
October 24, 2026 11:46
rpgmem
enabled auto-merge (squash)
October 24, 2026 11:46
This was referenced Oct 24, 2026
rpgmem
added a commit
that referenced
this pull request
Oct 24, 2026
LiteSpeed Cache minifies and combines scripts for guests through matthiasmullie/minify. That minifier reads a regex literal ending in an escaped slash, followed by `]` or a line break, as closing early and drops the rest of the line. `['LINE', /Line\//]` (#2053) came out as `['LINE',/Line\];`, the combined file stopped parsing, and the device test stayed at "Checking…" for every visitor who is not logged in. The three such literals become `\/\d` and `\/{2}`. Every readable and minified script in assets/js and libs/js was run through the same minifier and still parses. MinifierSafeRegexTest refuses the shape, with a canary and an independent recount of the scanned files. Closes #2056 Claude-Session: https://claude.ai/code/session_018srx5hc431EYmG4MHUr2KA Co-authored-by: Claude <noreply@anthropic.com>
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 #2052.
Problem
The "Test my device" mode (#2047) said "Ordinary browser (computer)" for every browser that was not an app's own. Support could not tell an out-of-date browser, or a Chromium derivative, from a current Chrome without reading the raw user agent.
Change
assets/js/ffc-device-check.jsgetsbrowserName(), which reads two sources in order.navigator.userAgentData.brandsand, throughgetHighEntropyValues(['fullVersionList']), the full versions. Brands win in this order: Brave, Edge, Opera, Samsung Internet, Chrome; a list with onlyChromiumis Chromium.CriOS,FxiOS,EdgiOS, all WebKit), a Chromium build that declares no brands, and a page without HTTPS.Examples of what it shows:
Chrome (v. 129.0.6668.81)Chromium (v. …)Brave / Chromium (v. …)Edge / Chromium (v. …)Opera 103 / Chromium (v. 117.0.5938.60)Samsung Internet 26 / Chromium (v. …)Firefox (v. 131)Safari (v. 17.6)Chrome / WebKit (v. 129.0.6668.69)129.0.0.0reads129.<name> — <device>through a new translatablebrowserNamedstring. An unknown browser keeps "Ordinary browser (…)".FFC.Platform, whose rule is capabilities and contexts, never brands: no decision reads the name.Tests
device-check-browser.test.js(18 tests):fullVersionListis refused or empty;device-check.test.jsstill passes (9 tests).Risk
Chromiumshow as Chromium.Checklist
develop; no version bumpCHANGELOG.md: one bullet under[Unreleased]→ Added, citing Device test: name the browser and its version instead of "Ordinary browser" #2052.potand.po, catalogues recompiledWaits as a draft until #2051 merges (one PR armed at a time).
Generated by Claude Code