Skip to content

Stop the practice round asking for a profile, and let the prompt be hidden - #393

Merged
PatrikBak merged 1 commit into
mainfrom
patrik/practice-round-gate
Aug 26, 2026
Merged

Stop the practice round asking for a profile, and let the prompt be hidden#393
PatrikBak merged 1 commit into
mainfrom
patrik/practice-round-gate

Conversation

@PatrikBak

Copy link
Copy Markdown
Owner

The profile fields (username, graduation answer, email) exist so a published result can name a student. The practice group is defined by never closing, so it can never be graded and publishes nothing, which left it asking for fields it has no use for.

Both ends now read the group they are about:

  • entryBlockerFor(reader, group) waives the profile step for a group with no closing instant, and only that step: an entry still needs an account to belong to.
  • The backend's EnsureReadyToEnterAsync runs only when the group has a closing instant. Without this the frontend would open the entry dialog and the confirm would then be refused.
  • headerBlocker(reader, groups) decides what the page header says, so a board holding only the practice round asks for an account and never for a profile.

The prompt itself had no way out, so a student who has decided not to compete saw it on every visit. It now carries a dismiss, stamped on the account (User.ProfilePromptDismissedAt, one nullable column) so it outlives the browser and reaches their other devices. Hiding it settles what the page says and never what it allows: pressing enter on a graded round still explains what the entry wants, and isProfileComplete does not read the flag. The signed-out banner carries no dismiss, since there is no account to keep the answer against.

The area page told everyone finishing a run that new messages no longer count towards their result, a promise the practice round can never keep. It gets its own pair of sentences that say the run is over and promise nothing.

Copy in all three locales: the two practice sentences, the dismiss label and its failure copy, and a reworded profileNeeded naming the graded rounds.

🤖 Generated with Claude Code

…idden

The profile fields exist so a published result can name a student. The practice
group is defined by never closing, so it is never graded and publishes nothing,
which leaves it asking for fields it has no use for. Both ends waived it: the
header and the press read the group they are about, and the backend guard now
runs only for a group that has a closing instant.

The prompt itself had no way out. A student who has decided not to compete saw
it on every visit. It now carries a dismiss, stamped on the account so it
outlives the browser. Hiding it settles what the page says and never what it
allows: pressing enter on a graded round still explains what the entry wants.

The area page told everyone finishing a run that new messages no longer count
towards their result, which the practice run has none of. It gets its own pair
of sentences that promise nothing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
math-comps Ready Ready Preview Aug 26, 2026 12:46am

@PatrikBak
PatrikBak enabled auto-merge August 26, 2026 00:45
@PatrikBak
PatrikBak merged commit e912de4 into main Aug 26, 2026
5 checks passed
@PatrikBak
PatrikBak deleted the patrik/practice-round-gate branch August 26, 2026 00:58
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