* feat(leaderboards): add rank medal styling for top positions Gold, silver and bronze medals with a subtle glow for ranks 1 to 3, a lighter accent for ranks 4 to 10, theme-overridable colors and reduced-motion support. LBX-1267. * feat(leaderboards): add animated frame around top three rows Spinning gold, silver and bronze ring for ranks 1 to 3, static under reduced motion, and export the rank tier helpers. LBX-1267. * fix(leaderboards): derive the top three ring tint from the theme color The soft ring tint and highlight now follow --rank-*-color overrides instead of fixed SCSS values. LBX-1267. * fix(leaderboards): center the medal rank and follow row text color Draws the medal number inside the SVG at the disc center and lets plain rank numbers inherit the row text color so they stay readable on light themes. LBX-1267. * refactor(leaderboards): name medal tuning values and mark props read-only Addresses review: shine stagger, rank accent cutoff and animation durations are named constants, and RankMedal props are Readonly. LBX-1267. * perf(leaderboards): animate medal shine and top three ring with transforms only The shine moves with translateX instead of left, and the ring rotates a static conic gradient inside a masked container instead of animating a custom property. Also strengthens the top 10 accent, drops an unused label param and rewrites the SDD in English. LBX-1267. * perf(leaderboards): size the top three ring spinner to the row diagonal The spinner is the row width plus a fixed overscan instead of 150%, which still covers the corners while halving the GPU layer on wide rows. LBX-1267. * feat(leaderboards): show the per-game ranking on the game page Adds the Ranking sidebar section with week and all-time boards, the viewer row and next-position hint, profile banners, empty, error and signed-out states, and the full ranking modal. Friends scope and extra metrics stay behind GAME_LEADERBOARDS_EXTENDED until LBX-1264. LBX-1266. * fix(leaderboards): keep ranking rows readable on light themes Progress track, fill and gap dots follow the row text color, and banner rows always keep light text and a stronger track over the image. LBX-1266. * fix(leaderboards): format values with the metric of the loaded board Switching metrics no longer renders the previous board's values with the new unit while the next board loads. LBX-1266. * feat(leaderboards): use filter dropdowns and pin the viewer row Scope and period become dropdown filters aligned with the list, metrics use the sliding switch, and the viewer row stays pinned at the bottom of the card even inside the top five. LBX-1266. * fix(leaderboards): match the signed-out prompt to the ranking states design Dashed 4px box with 12px text and a compact light Sign in button, as in the Ranking states reference. LBX-1266. * feat(leaderboards): link the full ranking to the leaderboards page View full ranking now opens /leaderboards?tab=games&shop=&objectId= instead of a modal. Also keeps loaded boards tied to their game and query, avoids a duplicate viewer row on empty friends boards, and never shows a 0 min gap. LBX-1266. * feat(leaderboards): render the top three ring element in ranking rows Uses RankFrameRing from LBX-1267 so the ring animates with transforms only. LBX-1266. * docs(leaderboards): rewrite the game page leaderboard SDD in English Matches the repository language and brings the document up to date with the dropdown filters, pinned viewer row, page link and review fixes. LBX-1266. * feat(leaderboards): add the global leaderboards page Add the Leaderboards page with the Ranking, By game and Your stats tabs, weekly and all-time boards, global and friends scopes, the weekly reset countdown, badges and the viewer's pinned row, reusing the per-game ranking row and medal. Data goes through one cached renderer client and metrics the API does not serve yet are hidden. * feat(leaderboards): open the linked game from the game page ranking * fix(leaderboards): scope the cache per account and address review findings Key cached responses by account and drop writes from requests started before a cache clear. Use the loaded board for the game heading, open a linked game even when the games list fails, advance the fallback week on reset, give game cards a minimum width, keep the Top N count in sync with Show more, and name the heatmap thresholds. Sort request params with localeCompare and compare the pending request explicitly. * refactor(leaderboards): address code analysis findings on the leaderboards page * fix(leaderboards): address review on the game page leaderboard Restores the game_details show_more string removed by mistake, keys cached and loaded boards by the signed-in account, stops the filter dropdown animation under reduced motion and names the skeleton row count. LBX-1266. * feat(leaderboards): gate the leaderboards page behind GLOBAL_LEADERBOARDS * fix(leaderboards): address SonarCloud findings on the game page leaderboard Sorts cache key params with localeCompare, checks the in-flight promise explicitly, uses an optional chain, marks component props Readonly and gives skeleton rows stable keys. LBX-1266. * feat(leaderboards): load the metric list from the backend Read the active metrics from GET /leaderboards/metrics for the ranking cards, the per-game chips, Your week and the badges, instead of a fixed list. Names come from the translations by metric id with the backend label as fallback, values are formatted by value type, icons fall back to a generic one, and streak and review extras follow the board data. * refactor(leaderboards): drop the metric id alias and key placeholders by id * fix(leaderboards): keep the page filters side by side * feat(leaderboards): add medal labels in Russian and Spanish Ships the leaderboard namespace in ru and es alongside en and pt-BR. LBX-1267. * feat(leaderboards): add game page leaderboard strings in Russian and Spanish Ships the leaderboard namespace keys used by the card in ru and es alongside en and pt-BR, with Russian plural forms for days. LBX-1266. * fix(leaderboards): address review on the leaderboards page Show the games empty state when a linked game has no ranked games, keep errored metrics visible with retry, keep firing the week end while the countdown is past the reset, round heatmap durations from the total, share the duration formatting with the game page, read the game page board through the shared cache with stale eviction and a size cap, keep the retry callback stable and add ru and es strings. * feat(leaderboards): gate the full ranking link behind GLOBAL_LEADERBOARDS The View full ranking button only shows when the global leaderboards page is enabled, so this change never links to a missing route. LBX-1266. * feat(leaderboards): show the per-game ranking on the game page Adds the Ranking sidebar section with week and all-time boards, the viewer row and next-position hint, profile banners, empty, error and signed-out states, and the full ranking modal. Friends scope and extra metrics stay behind GAME_LEADERBOARDS_EXTENDED until LBX-1264. LBX-1266. * fix(leaderboards): keep ranking rows readable on light themes Progress track, fill and gap dots follow the row text color, and banner rows always keep light text and a stronger track over the image. LBX-1266. * fix(leaderboards): format values with the metric of the loaded board Switching metrics no longer renders the previous board's values with the new unit while the next board loads. LBX-1266. * feat(leaderboards): use filter dropdowns and pin the viewer row Scope and period become dropdown filters aligned with the list, metrics use the sliding switch, and the viewer row stays pinned at the bottom of the card even inside the top five. LBX-1266. * fix(leaderboards): match the signed-out prompt to the ranking states design Dashed 4px box with 12px text and a compact light Sign in button, as in the Ranking states reference. LBX-1266. * feat(leaderboards): link the full ranking to the leaderboards page View full ranking now opens /leaderboards?tab=games&shop=&objectId= instead of a modal. Also keeps loaded boards tied to their game and query, avoids a duplicate viewer row on empty friends boards, and never shows a 0 min gap. LBX-1266. * feat(leaderboards): render the top three ring element in ranking rows Uses RankFrameRing from LBX-1267 so the ring animates with transforms only. LBX-1266. * docs(leaderboards): rewrite the game page leaderboard SDD in English Matches the repository language and brings the document up to date with the dropdown filters, pinned viewer row, page link and review fixes. LBX-1266. * fix(leaderboards): address review on the game page leaderboard Restores the game_details show_more string removed by mistake, keys cached and loaded boards by the signed-in account, stops the filter dropdown animation under reduced motion and names the skeleton row count. LBX-1266. * fix(leaderboards): address SonarCloud findings on the game page leaderboard Sorts cache key params with localeCompare, checks the in-flight promise explicitly, uses an optional chain, marks component props Readonly and gives skeleton rows stable keys. LBX-1266. * feat(leaderboards): add game page leaderboard strings in Russian and Spanish Ships the leaderboard namespace keys used by the card in ru and es alongside en and pt-BR, with Russian plural forms for days. LBX-1266. * feat(leaderboards): gate the full ranking link behind GLOBAL_LEADERBOARDS The View full ranking button only shows when the global leaderboards page is enabled, so this change never links to a missing route. LBX-1266. * fix(leaderboards): address second review round on the leaderboards page * fix(leaderboards): address review findings on the leaderboards page * fix(leaderboards): render one decimal for playtime hours * fix(leaderboards): address review on loading, auth, ranks and cache Loading shows until the first board arrives instead of flashing an error, only extended requests authenticate, the nudge handles tied ranks, the cache evicts expired and overflowing entries, hours keep one decimal under 10 h, the sign-in copy matches the flag, the full ranking link carries the current selection, and the unused periodEnd and the internal SDD are removed. LBX-1266. * fix(leaderboards): keep the game board while the list reloads and hide raw badge progress * fix(leaderboards): retry the board anonymously when the session is stale A signed-in request that fails with UserNotLoggedInError is retried without auth, so a stale session never shows the error state on a public board. LBX-1266. * fix(leaderboards): evict unparseable responses, keep the viewer delta and show failed stats ranks * refactor(leaderboards): extract the previous rank lookup in the board view
33 lines
500 B
Text
33 lines
500 B
Text
.vscode/
|
|
node_modules/
|
|
__pycache__
|
|
dist
|
|
out
|
|
.DS_Store
|
|
*.log*
|
|
*.tsbuildinfo
|
|
.env
|
|
.env.local
|
|
.env.*.local
|
|
.vite
|
|
ludusavi/**
|
|
!ludusavi/config.yaml
|
|
/hydra-native/
|
|
/legendary/
|
|
native/hydra-native/target/
|
|
native/epic-prerequisite-runner/target/
|
|
binaries/epic-prerequisite-runner/
|
|
|
|
# Sentry Config File
|
|
.env.sentry-build-plugin
|
|
|
|
*storybook.log
|
|
Future-updates.md
|
|
TO-DO.md
|
|
.planning/
|
|
.claude/
|
|
.cache/
|
|
native/torrent-bridge/build/
|
|
native/torrent-bridge/vcpkg_installed/
|
|
*.local.ts
|
|
src/renderer/public/*.local/
|