Skip to content

feat(ranked): explain clan/friend pairing on the ranked mode screen (port of #4861 to main) - #4862

Merged
Celant merged 1 commit into
mainfrom
port/ranked-pairing-note-main
Aug 4, 2026
Merged

feat(ranked): explain clan/friend pairing on the ranked mode screen (port of #4861 to main)#4862
Celant merged 1 commit into
mainfrom
port/ranked-pairing-note-main

Conversation

@Celant

@Celant Celant commented Aug 4, 2026

Copy link
Copy Markdown
Member

Port of #4861, which merged into v33, so the change isn't lost on the next release cut.

Straight git cherry-pick -x of 72b1861ec — no conflicts, and the resulting RankedModal.ts and en.json are byte-identical to the v33 versions.

What

Adds a note under the cards on the ranked mode select screen:

In team modes, clanmates and friends in the queue are placed on the same team where possible. Friends are paired first, then clanmates. If your ratings are too far apart you'll be matched separately to keep games fair.

Worded for team modes generally rather than 2v2 specifically, so it still reads correctly as more team gamemodes are added. It deliberately doesn't quote the ELO threshold — that value lives in the matchmaking API, a separate repo the client can't import from, so any client-side literal would silently go stale when the matchmaker is retuned.

New mode_selector.ranked_pairing_note key in en.json only; Crowdin owns the other locales.

Testing

  • tsc --noEmit clean, prettier clean, against main's tree rather than just assuming the v33 result carries over.
  • Client suite: 225 files, 2594 tests, all passing.

Note

The matchmaking change this describes is openfrontio/infra#495, which is still open. Until it merges and deploys, this note describes pairing behaviour the API doesn't implement yet.

🤖 Generated with Claude Code

…4861)

## What

Adds a note under the cards on the ranked mode select screen:

> In team modes, clanmates and friends in the queue are placed on the
same team where possible. Friends are paired first, then clanmates. If
your ratings are too far apart you'll be matched separately to keep
games fair.

## Why

Players had no way to know that queuing with a clanmate or friend is
*meant* to put them on the same team, or why it sometimes doesn't. The
matchmaking side of this is openfrontio/infra#495, which makes
clan/friend pairs a first-class grouping key ahead of ELO selection —
this explains the resulting behaviour, including the rating gap past
which a pair is deliberately split.

Worded for **team modes generally** rather than 2v2 specifically, so it
still reads correctly as more team gamemodes are added.

## Notes

- New `mode_selector.ranked_pairing_note` key in `en.json` only —
Crowdin owns the other locales.
- The note deliberately does not quote the ELO threshold. That value
lives in the matchmaking API, a separate repo the client cannot import
from, so any client-side literal would silently go stale when the
matchmaker is retuned — and the repo has a standing convention against
hardcoding API-owned values (`TribesPanel.ts:363`). Describing the rule
qualitatively keeps the threshold in one place.
- `translateText` uses `IntlMessageFormat`, where apostrophes are escape
characters and the string contains "you'll" — verified the message
renders and interpolates correctly rather than assuming.

## Testing

- `tsc --noEmit` clean, eslint clean, prettier clean.
- Client suite: 225 files, 2594 tests, all passing.

Targets `v33` rather than `main`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 72b1861)
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4a9a574f-7218-4cc6-a3bb-d1bce679c7e2

📥 Commits

Reviewing files that changed from the base of the PR and between 0668045 and 168f005.

📒 Files selected for processing (2)
  • resources/lang/en.json
  • src/client/components/RankedModal.ts

Walkthrough

The ranked modal now shows a translated note below the ranked mode cards. The note explains friend and clanmate pairing priority and rating-based separation.

Changes

Ranked pairing guidance

Layer / File(s) Summary
Add ranked pairing note
resources/lang/en.json, src/client/components/RankedModal.ts
Adds the mode_selector.ranked_pairing_note translation and renders it as a centered, muted paragraph below the ranked cards.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

Suggested labels: UI/UX

Suggested reviewers: evanpelle, ryanbarlow97

Poem

Ranked cards stand in a row,
Friends pair first, then clans flow.
Ratings keep the matches fair,
A clearer note now guides them there.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the ranked mode pairing explanation and the port to main.
Description check ✅ Passed The description directly explains the ranked pairing note, localization change, testing, and API dependency.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Celant Celant added this to the v33 milestone Aug 4, 2026
@Celant
Celant merged commit ad02955 into main Aug 4, 2026
15 of 16 checks passed
@Celant
Celant deleted the port/ranked-pairing-note-main branch August 4, 2026 14:30
@github-project-automation github-project-automation Bot moved this from Triage to Complete in OpenFront Release Management Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Complete

Development

Successfully merging this pull request may close these issues.

1 participant