Minor
- Unhide right panel when choosing "Two panels" layout option
- Refactor focusing
- Correctly focus next room when closing currently active room
- Correctly focus room when joining new room
- Use strict mode on all compiled files
- Fix router when started on `/` (it previously required starting on a
non-empty room ID, which wasn't noticeable back when the URL needed
to be `/preactalpha`)
- Update teambuilder sidebar CSS, to make it easier to add regular text
- This is mainly for the "Tournaments" button in the main menu,
which shares the CSS
- Fix new tournament elim tree text in Safari
- Update new tournament elim tree highlighted links to reliably
link every still-playing game
- Remove latest gen from format name displays everywhere
- Previously, they would only be removed from the format dropdown,
but now they're also gone from the Ladder tab, battle tabs, and
`/rank`
- Support async d3 loading
- This allows chatrooms to be loaded way before all our dependencies
are fully downloaded
- Remove "[Gen 9]" from format names everywhere (previously it was only
removed from the format dropdown)
- Also add "[Gen 6]" to unlabeled formats in `/rank` (Gen 6 was the
last time we didn't have format generation as part of format names)
Trivial
- Stricter JSX linting
- (unfortunately, most of the JSX style enforcement I actually want
isn't possible in @stylistic)
- Make room.subscribeTo's second parameter optional
- Rearrange and comment loading order
- Rename hiddenInit -> focusNextUpdate (clarity)
- Rename PSMain -> PSView (clarity)
- Fix button spacing in Change Password
- Add `touch-action: manipulation` to <a> tags
- Refactor `nodeSize` in elim tour trees
Missing features:
- Popping out brackets
- Showing the bracket after the tournament ends
- Disable validate button for random teams
New and improved:
- Hover effect on tournament bar (also backported to 2013 client)
- Slightly better animations for expanding/collapsing tours
- Better scrolling around a bracket
- "Grab" cursor
- Selecting text is no longer completely banned (although it's still
hard to do on desktop because of the whole drag scrolling thing)
- Completely native scrolling on mobile
- Scroll bars appear as normal, and regular methods of scrolling like
arrow keys and scroll wheel also work as normal
Moderate:
- Fix double messages when being DMed (and otherwise joining a room
server-side)
- Refactor PSModel to support passing a value with updates, so
PSStreamModel is explicitly about tracking an update backlog.
- Work on supporting AFD mode (it doesn't seem to work yet)
- Fix music still playing after closing a battle
- Show username (with capitalization and spaces) in DM titles
- Don't let people try to search for battles without choosing a username
Minor:
- Remove random BOM that made it into some files?
- Correct date Preact client started (I mistook the date testclient was
created)
- Refactor updateLayout
It's finally here and it's beautiful! I've had this design in my mind
for around ten years, ever since I first started working on a Preact
client.
The idea is that on small screens, you'd just scroll left to get to
the menu, instead of needing to press the menu button. This turned out
to work surprisingly well and I'm pretty happy with it.
This also exposed a number of bugs. It turns out most of our popups are
not written with horizontal scrolling in mind, so I had to fix
popup rooms as well as BattleTooltips.
There's still plenty of improvements possible, but I'm already really happy
with what I've done so far.
- Rename RoomType to PSRoomPanelSubclass (so it doesn't conflict with
the other RoomType)
- Support message notation in popups
- Support searching for battles
- Fix Terastallizing in battles
- Fix cancelling challenges
- Support the games list
- Topbar now shows format name rather than ID
- Fix rejoining battles in progress
- Chats and battles: Focus on any click
- Retain chat/battle history when moving rooms in/out of mini-windows
- Real news (instead of just testclient placeholder)
- Add "Tournaments" and "Friends" main menu links
- Use new icon in upper left
- Use dark main menu groups
- Fix pref loading
- Support `/nick`
- Rename `room.handleMessage` to `room.handleSend` for clarity
- Rename `room.queue` to `room.backlog` for clarity
- Fix DM userlist after renames
- Darken chat logs in dark mode
Unfortunately it seems like the console is the new hot place to say
hi to devs, rather than the source, but we're actually using the
console. So it's gotta be here.
ASCII art circle was outlined with
https://www.asciiart.eu/ascii-draw-studio
and the exclamation mark was done by tracing the old one. The rest,
including the anti-aliasing was entirely by hand, though.
There's no easy way to enter a command in PS if you're not logged in.
This adds one.
This also standardizes the room ID for the console as `pm-`.
I'm still mulling whether `pm-[userid1]-[userid2]` should be the roomid,
or `pm-[pmtarget]`. Arguably it's nice for PMs to have the same roomid
for both sides of the conversation, but also arguably it's nice for
PMs not to change roomid when you change your own name (it'd still
change if your PM target changed name).
This finally removes the tslint dependency and switches to eslint.
There are a lot of other changes here, too, to bring the codebase up to
server standards. TSLint never had much in the way of indentation
enforcement.
Not very happy about eslint splitting itself up over 6 dependencies,
or its documentation over three websites, nor how poorly documented the
new flat config is, but I mean, eslint's gonna eslint. Customizing
would be even harder if we tried to use Biome or something. They mostly
seem to go full Prettier.
Also here are some changes to our style rules. In particular:
- Curly brackets (for objects etc) now have spaces inside them. Sorry
for the huge change. ESLint doesn't support our old style, and most
projects use Prettier style, so we might as well match them in this way.
See https://github.com/eslint-stylistic/eslint-stylistic/issues/415
- String + number concatenation is no longer allowed (except in ES3
code). We otherwise now consistently use template strings for this.
Files meant to be served have been moved into
`play.pokemonshowdown.com/` and `pokemonshowdown.com/`.
We now have three directories for the three subdomains handled by this
repo:
- `pokemonshowdown.com/`
- `play.pokemonshowdown.com/`
- `replay.pokemonshowdown.com/`
Naming them after the subdomains will make it much easier to tell where
the files for each go.
The diff is probably useless; it'll be easier if you just look at the
new tree:
https://github.com/smogon/pokemon-showdown-client/tree/reorganize