“Leaderboard unavailable” now says why — and it happens less often.
The service itself was fine (HTTP 200, a valid list). A single failed call still looked like a broken service, because the message didn’t distinguish between causes: the server saying no, the network being down, a blocker in between — all of it just said “unavailable.”
- A single blip is now retried automatically (once, after 700 ms). You never even see it. Measured: if one of two calls fails, the list still shows up.
- If the retry also fails, the reason is shown, along with a TRY AGAIN button and the line “Your runs still count — the list will catch up.”
- Leaderboard requests no longer go through the service worker. They were never usable offline anyway, and a cached leaderboard would be worse than none — the detour was also its own source of errors.