Skip to content

Add the Hall of Shame and drop the leaderboard opt-out - #121

Open
ejsmith wants to merge 1 commit into
mainfrom
hall-of-shame
Open

ejsmith wants to merge 1 commit into
mainfrom
hall-of-shame

Conversation

@ejsmith

@ejsmith ejsmith commented Oct 23, 2026

Copy link
Copy Markdown
Owner

Summary

The community page gets a Hall of Shame next to the Hall of Suckers. It ranks the funny bad stuff, and rage quits are at the center of it.

Board Value
🧂 Saltiest Rage quits, out of all completed games
🧂 Salt of the Week Rage quits since Monday 00:00 UTC
🥊 Most Punchable Landed Sucker Punches taken
💨 Whiff Champion Sucker Punches missed, out of punches thrown
📉 Biggest Loser Worst single-game losing margin
  • A Hall of Suckers / Hall of Shame switch sits above each hall's board tabs. The shame hall is red, and each board shows a one-line explanation of its rule. All five shame tabs fit on one row at iPhone width.
  • Rage quits count on shame boards, including their partial scores. Quitting must never help the quitter, so a rage quit counts on Biggest Loser at the margin when the player quit. Flipping the table can't hide a blowout. A quit while ahead has no losing margin. This exception is now in the game design spec and docs/community-leaderboards.md.
  • Shame ranks show on player profiles, in their own red Hall of Shame group on the Ranks tab. Each one opens its board.
  • Everyone is on every board. The "Show me on leaderboards" toggle is gone, and no query reads profiles.show_on_leaderboards. The column stays, set to true for everyone, and get_player_card always returns true for it, so installed apps that read or toggle it keep working. It can be dropped once those versions age out.
  • Leaderboard rows now take their accessible name from their content, with a hint, as ranking rows already do. The leaderboard page had no axe check before; the new browser test turned up the label-in-name violation.

Rollout

The migration only replaces ranked_leaderboard, get_player_rankings and get_player_card, and keeps their return types. No Edge Function deploy is needed, and older apps keep working against it.

Testing

  • npm run typecheck, npm run typecheck:edge
  • npm run test (217 passed), npm run test:edge (44 passed)
  • npm run test:integration:supabase (48 passed). This includes new shame-board assertions in the rage quit test, a new test that a rage quit while behind counts on Biggest Loser, and a test that a player who sets the retired flag still shows on boards.
  • New browser test Hall of Shame ranks rage quitters and shows shame on their profile, plus the existing Hall of Suckers test, both on Chromium with axe checks. I didn't run the full browser suite locally.
  • Checked the boards and profile visually at 393×852 against a seeded local database.

Later

Ideas left out for now: Choked (rage quit while leading), Hair Trigger (earliest rage quit), Crybaby % (quit rate), Cold Streak (longest losing streak), and matching defeat badges.

🤖 Generated with Claude Code

The community page gains a Hall of Shame beside the Hall of Suckers, with
five boards: Saltiest, Salt of the Week, Most Punchable, Whiff Champion, and
Biggest Loser. Shame boards count rage-quit games, so quitting never hides a
player from them, and a rage quit counts on Biggest Loser at the margin when
the player quit. Player profiles list shame ranks in their own red group on
the Ranks tab.

Sucker is a community, so everyone is on every board. The "Show me on
leaderboards" toggle is gone and no query reads show_on_leaderboards; the
column stays, always true, so installed apps that read or set it keep
working.

Leaderboard rows now take their accessible name from their content, which
axe-core 4.14 requires.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-23T04:18:33.459057Z b50da03 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant