The card rendered for everyone. It now follows GLOBAL_LEADERBOARDS, like the
Rankings page, so nothing shows or loads until the feature is released.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When every loaded notification is filtered out by a feature flag, the
sidebar still shows the server's unread count, but both bulk actions were
disabled. Mark all as read now stays enabled while any loaded API
notification is unread, so that count can be cleared.
The /features request in publishLeaderboardNotifications now takes the
resync abort signal, so a canceled refresh does not hold up the next batch.
The sidebar entry and the /leaderboards route already respected the flag,
but the game page Ranking section, leaderboard notifications and their
settings did not. The game page section is now only mounted with the flag
on, the main process skips publishing leaderboard push and in-app
notifications when /features does not list it, the Notifications page
filters out leaderboard notification types, and the leaderboard group in
notification settings is hidden.
They use the same picture frame, the rank change sits next to the title, and
the colored arrow is gone from the icon.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The highlighted review shows up to five lines, with a button to read the rest,
and keeps any line breaks the API sends.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The cells grow to fill the card, and a narrow card shows fewer weeks instead of
scrolling. Also removes the streak flame from the card.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
They stayed in the URL and were applied again on the next navigation, undoing
the period or scope the viewer had just chosen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The app's scroll now moves the whole Rankings page. Categories and By game
become tabs, so neither list pushes the other down the sidebar.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Retrying any failed STANDARD upload kept 720p, so a user who subscribed
after a network failure still retried at 720p. The retry policy now marks
uploads it drops to STANDARD with uploadQualityFallback, and only those keep
720p on a manual retry.
Names with tags or symbols broke the sentence, so they are now escaped before
the tags are parsed. Metrics without their own unranked text get a generic one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
After a re-sort the posted comment remounted as new, scrolled into view and
highlighted again. Changing the sort now clears it, like desktop does in
its reload.
A Cloud upload that hit the oversize fallback is stored as STANDARD. A
manual retry reset it to CLOUD from the subscription and repeated the
oversize round trip with a new client id. Retrying a failed upload now
keeps a stored STANDARD quality.
Whether the keyboard docks left was only decided when the anchor changed.
It now also updates on window resize and when the composer changes size
while the keyboard is open.
Moving the community sort and the comment sort to SegmentedControl dropped
the old aria label. SegmentedControl takes an ariaLabel for when there is
no visible label, and both sort controls pass one.
A draft unchecked while SCREENSHOT_COMMENTS was on kept its stored false
after the flag was turned off and still sent it on upload. Both upload
forms now send commentsEnabled as true unless the flag is on and the box
is unchecked, so the presign body only carries the field when the option
is actually visible.
The board gets a header with a description, an insight about the next
position, a podium with brushed metal plates and a table with column
headers. On a game, the icon and the title open the game page and the
metrics become tabs. The selected review moves below the podium as a
provisional design.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The presign schema rejects unknown fields, so always sending the flag would
fail every upload until the API accepts it. Leaving it out when comments
stay on keeps the request body unchanged for the default case.
This reverts commit 7b18542ad. A comment that moderation hides should still
confirm with Comment posted or Comment updated, so the author is not told
about the hidden state through a toast.
If a retried upload failed again before the renderer saw it queued, the
state never looked different and the button stayed busy. The wait now
clears itself after five seconds.
Posting or editing a comment that moderation hides showed Comment posted
or Comment updated. Both desktop and big picture now show a warning that
the comment was hidden by moderation instead.
The upload review forms on desktop and in big picture now only show the
Allow comments option when SCREENSHOT_COMMENTS is enabled, the same way
the owner controls do. Big picture navigation skips the missing field.