Usernames with spaces can now be completed.
Special characters in front of the username will now be preserved.
This requires usernames to start with an alphanumeric character,
which fortunately we already enforce.
PS's UI is now updated to make it clearer whether or not you're
connected to a server, and which features are and aren't
available while disconnected.
The Reconnect? popup's "close" button has been renamed "Work offline",
to make it clearer that it's for people who want to continue using
the teambuilder or whatever while disconnected.
The button is a slight misnomer since some features, like the
Ladder, don't work without an internet connection.
Data (teams and prefs) are now always stored in localStorage in the
`https://play.pokemonshowdown.com` origin. Data storage at a low
level has been mostly rewritten for this, and moved to storage.js.
Tools.prefs has been renamed Storage.prefs, although the API
Tools.prefs(prefName) is still available, and recommended for
battle.js (because storage.js isn't available in replays). All
other pref functionality, such as setting prefs and saving prefs,
should only be used in Storage.prefs.
If the browser blocks third-party cookies in a detectable way,
data is instead stored in the local origin.
As a final safety measure, prefs/teams are mirrored in the local origin
in case third-party cookies are blocked in an undetectable way.
This refactor also replaces the 'init:loadprefs' and 'init:loadteams'
events with a new load tracking system that's basically a simplified
implementation of Promises, documented in the comments for
Tools.makeLoadTracker().
2.7ish years ago, when I redesigned PS, PS's mascot was Meloetta,
and in the old design, there was a Meloetta-P icon on "Look for a
battle" and a Meloetta-A in the backgroud of the chat room.
The new design was built around custom backgrounds, and there
wasn't really room to fit Meloetta back in.
Well, now, I've finally fit Meloetta back in next to the user count
and battle count, and it actually looks pretty good there. Now more
people can be aware that PS has a mascot!
Because of sliders being dumb, the teambuilder frequently has to
clear global handlers, which cleared the global click handler that
handled room link opening, as well as external links on the
desktop client.
Anyway, click handlers are now a lot more standardized and all that.