Skip to content

osu!echo 1.0.3

Choose a tag to compare

@ptrchain ptrchain released this 19 Sep 19:12
· 62 commits to main since this release

osu-echo v1.0.3

Highlights & Performance Improvements

  • Instant Login & Non-Blocking Startup:

    • Offloaded external osu! API stat lookups, osu!daily global rank updates, and friend profile syncing into non-blocking background tasks (tokio::spawn).
    • The login handshake now immediately serves cached friend presences and profile stats from SQLite, completely eliminating startup freezes, connection buffering, and client timeouts.
    • Relocated default avatar downloading (a.ppy.sh) off the main startup sequence into a non-blocking background task with a 2-second timeout, preventing startup hangs when offline.
  • Instant Leaderboard Loading & In-Memory Caching:

    • Added an in-memory TTL cache (bancho_score_cache) for fetched Bancho leaderboards with automatic expiry cleanup, making map switching in song select load leaderboards instantly without repeated network roundtrips.
    • Accelerated friend leaderboard requests (/web/osu-osz2-getscores.php) by fetching official Bancho scores concurrently using tokio::task::JoinSet instead of sequentially waiting on each network request.
    • Resolved pre-login leaderboard stalls by capturing username hints from us/u parameters (pending_login_name) and serving beatmap metadata immediately even if song select is opened before the login handshake completes.
  • Dynamic Results Screen Map Ranking & Accurate Combo Records:

    • Implemented calculate_map_ranks to accurately compute rankBefore and rankAfter on post-play score submission charts.
    • Accurately ranks plays against both local database records and online Bancho leaderboards (handling personal best improvements, top 50 positions, and leaving the rank blank when placing outside the top 50 instead of defaulting to #1).
    • Fixed an issue where the score chart always displayed a flashing "NEW" combo badge: submission charts now properly track the highest combo achieved across all submitted scores on the beatmap and profile, preventing false "NEW" flags when a higher combo was already achieved in a different play.
  • osu!direct Status Filtering & Pagination:

    • Corrected search status query mapping against the Catboy mirror for Ranked/Approved (r=0, r=7 → status=1,2), Pending/WIP (r=2 → status=0,-1), Graveyard (r=5 → status=-2), and Loved (r=8 → status=4).
    • Direct search responses now report accurate beatmap status codes so in-game status badges (Ranked, Approved, Qualified, Loved, Pending) display correctly in the Direct browser.
    • Added pagination support via the p query parameter, enabling smooth browsing across multiple pages of search results.
  • Engine Upgrades, Avatar Caching & Disk Optimization:

    • Upgraded performance calculation engine to rosu-pp 4.0.1 (rosu-map 0.2.1, rosu-mods 0.4.1) and updated Tillerino difficulty attribute lookups to use .od().
    • Added local disk caching for downloaded player and friend avatars in .data/avatars/ to eliminate redundant HTTP downloads.
    • Eliminated redundant full-directory disk scans in song resolution and /np lookups, preventing micro-stutters when browsing beatmaps.