Returns the full VideoCardFields fragment for one video id, so the
session-detail meta header can share one source of truth (and the
normalized Apollo cache) with the feed card instead of stitching
together GetVideoDetails + GetVideoSocialDetailsById.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The labeling UI was falling back to "user N" for any assigned cluster
whose user wasn't the video owner — e.g. an admin re-labels a video
they don't own. With the resolver now resolving usernames for every
confirmed cluster, the FE can render real names regardless of who's
viewing.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Picks up the BE additions in railbird PR dean/video-match-score:
new `score` field on PlayerClusterGQL and PlayerSummaryGQL, and
a new `score` input field on ClusterAssignmentInput.
Generated by `just gql`.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Backs the multi-player vs UI: feed cards and the detail page both
read `video.playerSummaries`, a per-cluster rollup with username,
profile image, representative full-frame URL, makes/total/percentage.
- PlayerSummaryFields fragment in shooter.gql
- VideoCardFields (feed) and GetVideoDetails (detail) include
playerSummaries via the new fragment
- VideoCardFields tag selection extended to include tagClasses,
needed for the FE's player_count detection
Generated by `just gql` from the BE additions in railbird PR
dean/video-player-summaries.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Operation file for the per-video player-labeling UI that consumes the
schema types added in #240.
- VideoPlayerClusters($videoId): read clusters + crops
- FinalizePlayerAssignments($input): apply user assignments and
shot moves in one transaction
Generated by `just gql`.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.