Repository navigation
osu!echo 1.0.4
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-ppcalculation 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.
- Added the
-
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
.osudifficulty 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
/npstate caching so browsing unindexed maps no longer carries forward metadata from previous maps. - Special thanks to kaan for reporting!
- Fixed a collision bug in local song folder scans where mapsets with multiple difficulties could match the wrong
-
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 ->
/npstate, preventing lost score submissions. - Resolved an issue where running
!setstatusor!rankedon unindexed local beatmaps failed silently; BanchoBot now parses the local.osufile, stores it in SQLite, and updates its ranked status seamlessly.
- 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 ->
-
Profile Switching Identity Safety & F9 Region Resolution:
- Fixed a profile switching bug where logging into a different account could inherit a stale
pending_login_namecached from previous leaderboard requests. Authoritative login payload bytes now always take precedence. - Properly handled
OsuLogoutpackets 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.
- Fixed a profile switching bug where logging into a different account could inherit a stale