Skip to content

osu!echo 1.0.4

Choose a tag to compare

@ptrchain ptrchain released this 20 Sep 14:39
· 57 commits to main since this release
e31f379

osu-echo v1.0.4

Highlights & Improvements

  • In-Game Profile PP Recalculation (!recalculate / !recalc):

    • Added the !recalculate (alias !recalc) BanchoBot chat command, executable in public channels (e.g. #osu) or direct messages.
    • Recalculates PP and accuracy across all recorded scores using the latest rosu-pp calculation engine.
    • Automatically updates player profile total PP and weighted overall accuracy, syncs global rank via osu!daily if configured, and immediately broadcasts updated stats packets to the client with a detailed summary report.
  • Multi-Difficulty Beatmapset Disambiguation & PP Fix (#B0001):

    • Fixed a collision bug in local song folder scans where mapsets with multiple difficulties could match the wrong .osu difficulty file based on title similarity, resulting in incorrect difficulty attributes and distorted PP values.
    • Implemented strict difficulty bracket matching ([Version]), MD5 hash verification, and beatmap ID validation.
    • Adjusted blank beatmap defaults to strictly unranked (approved: 0), preventing unknown or custom maps from inheriting qualified/ranked status by default.
    • Cleaned up stale /np state caching so browsing unindexed maps no longer carries forward metadata from previous maps.
    • Special thanks to kaan for reporting!
  • Fail-Safe Score Submission & Unindexed Map Statusing (#B0003):

    • Implemented a multi-tier fallback pipeline for incoming score submissions: if a submitted map hash isn't yet indexed in the database, it resolves the map via API -> local Songs folder scan -> active player state -> /np state, preventing lost score submissions.
    • Resolved an issue where running !setstatus or !ranked on unindexed local beatmaps failed silently; BanchoBot now parses the local .osu file, stores it in SQLite, and updates its ranked status seamlessly.
  • Profile Switching Identity Safety & F9 Region Resolution:

    • Fixed a profile switching bug where logging into a different account could inherit a stale pending_login_name cached from previous leaderboard requests. Authoritative login payload bytes now always take precedence.
    • Properly handled OsuLogout packets to cleanly purge user sessions and active player state upon logout.
    • Fixed the F9 user panel displaying an unknown/white flag: user country codes are now persisted in SQLite, loaded immediately during the login handshake, and updated via presence broadcasts upon resolution.