Repository navigation
fix(debates): say which side each debater is on in the video UI (GEO-3022) - #2560
Merged
jwalkingjew merged 3 commits intoSep 24, 2026
Merged
Conversation
…3022) The feed player names both debaters over their video but no longer says what either of them is arguing for. Dropping into the middle of a debate, there is nothing in the picture that tells you who is on which side — you have to infer it from what is being said. The chip that carried it came off the tile in #2439, alongside the "Winner?" pill. Removing the pill was the point of that change — winner voting moved to the scorecard and the claims panel — and the position chip went with it because the two shared the flex row that was being torn out. Put it back beside the name, not inside the profile button: the button is capped at 55% of the tile so the name cannot run its full width, and a chip inside that cap would eat the name's share at exactly the widths where the name is already truncating. It is also not a link, which the old placement implied it was. The processed/shared video is composited outside this repo, so nothing here can burn the position into it.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…layer
Review follow-up on the restore.
The recipe for "a debater's side, over their video" was written out twice
— `DebateTileChip` plus `tileChipSurface` plus the truncation classes —
once in the room tile and once in the feed player. It is the same fact
about the same person in the same corner of the same picture, so it is
one component now, and the fill stays with the contrast note that
justifies it rather than being re-picked at each call site.
`shrink-0` rather than letting the chip give up space: the labels are
short and bounded ("Agree"/"Disagree", "Verify"/"Dispute" on a factual
claim), and half of "Disagree" is worse than a shortened name beside it.
`max-w-full` still caps it where the column is narrower than the word,
which is the case the room tile's grid is written around.
Contributor
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The focused implementation matches the described behavior and includes appropriate regression coverage.
Review effort: Balanced
Findings: None
What changed in this PR
Restores each debater’s position label in the debate feed video UI while sharing chip styling with room tiles.
Changes:
- Adds a reusable
DebatePositionChip. - Displays position chips beside profile buttons.
- Adds rendering and empty-label tests.
| File | Description |
|---|---|
debate-video-tile.tsx |
Adds and adopts the shared position chip. |
browse/debate-feed-player.tsx |
Restores position labels in feed tiles. |
browse/debate-feed-player.test.tsx |
Tests placement and empty labels. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
jwalkingjew
marked this pull request as ready for review
September 24, 2026 17:17
jwalkingjew
deleted the
preston/geo-3022-restore-participant-position
branch
September 24, 2026 17:34
This branch was successfully deployed
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.
GEO-3022
Problem
The debate feed player names both debaters over their video but no longer says what either of them is arguing. Dropping into the middle of a debate, nothing in the picture tells you who is on which side.
What removed it
#2439 (
197f88a7d, GEO-2909), which moved claims onto the video. That change deliberately took the "Winner?" pill off the tile — winner voting now lives in the scorecard and the claims panel — and the position chip went with it because the two shared the flex row being torn out. The chip's removal reads as collateral, not as the intent: the commit's own comment records the pill and the chip leaving together and then gives the band back to the name alone.Change
debate-feed-player.tsx— the position chip is back in the bottom band, beside the name, on both tiles, for the whole debate.It sits beside the profile button rather than inside it (where #2021 had it):
The band is now a
pointer-events-nonerow with the button opting back in, since the row spans the band rather than hugging the name — everything it covers and does not use still belongs to the pause/play surface underneath.debate-video-tile.tsx— newDebatePositionChip, and the room tile now renders through it too.The recipe for "a debater's side, over their video" was
DebateTileChip+tileChipSurface+ the truncation classes, written out at each call site. Restoring it to the feed player would have been the second copy, so it is one component instead — which also keeps thebg-white/85fill with the contrast note that justifies it (tileChipSurfaceexists precisely so a call site does not pick its own background over arbitrary video), and puts the labels' provenance in one docblock.shrink-0rather than letting the chip give up space: the labels are short and bounded —responsePositionLabelyields "Agree"/"Disagree", or "Verify"/"Dispute" on a factual claim — and half of "Disagree" is worse than a shortened name beside it.max-w-fullstill caps it where the column is narrower than the word, which is the case the room tile's grid is written around, so that tile's behaviour is unchanged.Deliberately not in scope
The claim ticker's attribution line also names a speaker over the video, but what it carries beside the name is the claim's aggregate ("65% agree"), not that speaker's own side. A second chip there would say something different from what it looks like it says.
Processed / shared video
Only the in-app player is changed. The processed and shared videos are composited server-side and reach the app as a finished artifact via
useDebateMediaArtifactUrl(geo-chat), so nothing in this repo can burn the position into them. The share card is unaffected —debate-og-image.tsxalready prints each speaker's stance in its pill, from this sameposition_label.Tests
Two new cases in
debate-feed-player.test.tsx: both debaters' positions render beside their names and outside the profile link, and a participant whoseposition_labelis empty draws no bare pill. Scoped withwithin(container)— this suite has no automatic cleanup, matchingdebate-claims-panel.test.tsxnext door.vitest run core/debates— 1921 passed. Three files fail only in the full-directory parallel run (network-stub interference); each passes in isolation, andmasterfails the same way with a different set.vitest run core/debates/browse partials/explore/debate-explore-feed-card.test.tsx 'app/space/[id]/(space)/debates/[debateId]'— 410 passedtsc --noEmitclean,eslintclean on the changed files