Repository navigation
feat: a Room can put the browser and platform a participant joined with in their groups - #28
Merged
Merged
Conversation
sunib
added this pull request to stack #29
October 6, 2026 12:26
…th in their groups spec.browserGroups is optional: a demo: prefix. Everyone who joins gets <prefix>browser-<name> and <prefix>platform-<name>, such as demo:browser-safari and demo:platform-ios, kept on the Participant beside the answer to the Room's question and sent to Dex the same way. The names come from fixed lists: safari, chrome, firefox, edge, samsung, opera, other; ios, android, macos, windows, chromeos, linux, other. The User-Agent only selects one, so a forged header gains nothing but another name from the list. The join page says what will be shared before anyone presses Continue. There is no phone brand: Chrome on Android reports every phone as model "K" since the User-Agent was frozen. A Room without browserGroups reads nothing from the User-Agent, and its page and groups are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sunib
force-pushed
the
feat/browser-groups
branch
from
October 6, 2026 12:27
242a8d4 to
6cec7b2
Compare
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.
Stacked on #27. Merge that first; GitHub then retargets this PR to
main.A Room can add two groups to everyone who joins, named after the browser and platform they joined with. Nobody is asked anything.
<prefix>browser-…safari,chrome,firefox,edge,samsung,opera,other<prefix>platform-…ios,android,macos,windows,chromeos,linux,otherHow
User-Agentheader and picks a name from each fixed list. The order of the checks matters: almost every browser claims Safari, every Chromium browser claims Chrome, iOS says it is "like Mac OS X", and Android says Linux.spec.groups, next to the answer from feat: a Room can ask one question at the door, and the answer becomes a group #27, and sent to Dex the same way.demo:. Group names that fail the pattern, such as those from a prefix that escaped the schema, are dropped.Why not a claim or the phone brand
K. Recovering the brand would need Client Hints plus a table of model numbers.platform-iosis the closest there is to "Apple".Why this is a
feat:A Room without
browserGroupsreads nothing from the User-Agent, and its page and groups stay byte-for-byte the same; a test checks this. The new field on the Room is optional.Test plan
task lint,task test,task verify-generate,task integration, which refusessystem:and comma prefixestask e2e-up && task browser: 9/9. Chromium sends an iPhone Safari User-Agent and readsdemo:browser-safarianddemo:platform-iosfrom the real Dex token.task e2etask test-network: not run locally; this change doesn't touch the network policy🤖 Generated with Claude Code