- Rename to "Client rewrite" in UI
- As we gear up for release, I don't want people to call it Preact
too much, because that's the name of the UI library we use whose
reputation shouldn't be affected by this too much.
- Give DM windows flex height
- Fix reconnect flow
Trivial
- Fix mistake in join/leave batching
Scrollable width is now set on `<html>` (and is inherited by `<body>`).
It's my hope that this fixes some scroll snap bugs on mobile.
We're also now looking at pointer events to decide whether to autofocus
text boxes.
Fixes#2419
- Tab complete can now complete offline users
- This actually improves performance, too, because the userlist is
now cached instead of needing to be re-sorted every update.
Battles
- Add `aria-disabled` to "disabled" buttons
- Make disabled buttons look more disabled
Teambuilder
- Textbox mode: Fix inner focus location when adding first pokemon
- Fix species display in certain cases
- Consistently use Dex.resourcePrefix for icons for testclient support
- Fix Rooms state when pressing Enter after searching
- Fix (workaround, but still) opening popups on testclient
- Fix team menu in challenge/search
- Change "Preact Alpha" to "Preact Beta"
- Support side servers
Teambuilder
- Fix Upload button and teambuilding links leaking through focus editor
- Use `inputmode="numeric"` for better number keyboard in phones
- You can't type `+` or `-` on EVs on phones, but oh well, the Nature
dropdown is good enough. I think it's worth it for easier EV inputs.
Trivial
- Align main menu battle search labels to the left
- Fix flicker when searching Rooms
- Hide "Open battles in right panel" option when it doesn't do anything
- Get rid of PSTeambuilder.*packTeam/export* in favor of Teams
Battles
- Fix render issues on mobile layout
- Fix join/leave batching
- Support disabled buttons
Teambuilder
- Redesign upload UI to be clearer
- Support scrolling tab bar for Boxes in focus editor
- Don't overwrite local team with remote team
- Improve Defensive Coverage ability support
- Support importing from pokepaste (fixes#2422)
- support Boxes
- add visible indicator for uploaded teams
- also add share URL
- Validate button
- new shiny icon
- readonly mode
- fix crash when deleting last time
- redesign Details panel
- show Hidden Power type in Details box when relevant
- Undo Delete button in inner focus
- support Add Folder and Add Format Folder buttons
- add hover effects
- last time, hover effects had to be removed because of HTML5 drag
bugs. hopefully this time goes better.
- redesign the clutter at the end of the team
- Team drag and drop
- use buttons rather than divs
- testing on Firefox and Chrome did not reveal any bugs so hopefully
that's just fixed now.
Teambuilder
- Show "EVs" when a set has no EVs, so it's clear what the Stats button
is for
- Fix dragging slider clearing Nature
- Fix teams not being clickable on iOS
- Minor layout tweaks
- Use four moves on compat mode exports, too
Minor
- Add a "PSIcon" component
- Update README
- Fix Team Preview in doubles/etc
- Fix move choice preview
- Fix `/avatar`
- Fix display of formats with custom rules in the format dropdown
- Support "Register" button from winning a battle
- Support "More" button from `/rank`
- Fix target choosing in multi battles
- Fix switching in more slots than unfainted pokemon (in doubles+)
- Add `/senddirect` command to bypass client command parser
- Fix notifications for mini-rooms (they should highlight the mainmenu
tab)
- Set tooltip long-tap delay to 1 second, to make it harder to
accidentally long-tap
Trivial
- move FormatResource stuff out of teamdropdown
- refactor battle-choices a little
- make team tabs less tall in teambuilder wizard individual set view
- support `/choose default` or `/choose auto`
Major
- Team editor is now its own file, so that it can be used outside of PS.
- New wizard editor (more like old teambuilder)
- Text editor now supports undo
- Don't let species be cleared
- Finish pokemon/ability/item/move lists
- Currently selected options are highlighted
- Keyboard navigation
- Mobile support!
- Text editor now uses big icons on desktop
- With only a few remaining issues, we have reached parity with the old
teambuilder.
Minor
- Fix links to abilities and moves
- New <ul class="tabbar"> CSS. Unfortunately not backportable, so it'll
have to wait until Preact client is released before it can be used.
- Two-tone stats bar chart
- EV editor stub mobile support
Minor
- Light mode scrollbar in line with dark mode
- OS default scrollbars all look ugly for some reason, unless you use
macOS's hidden scrollbars, which are nice except they're hidden.
- Add Aurastic to credits
- Fix subtle notifications
- Fix "Copy" button and HTML popups
- These are both for the replay upload popup.
- Fix escaping in teambuilder tables
- They're escaped in Preact but raw HTML in old client, so using
Unicode make them work correctly in both.
- Fix a weird issue where history.replaceState was being called too
often
- I don't know exactly why this is only recently became a problem,
but it's easy enough to fix...
Trivial
- More ARIA roles (for blind users)
- The accessibility tree looks great now.
- Fix an unnecessary closure in AvatarsPanel
- Fix non-ASCII in battle.ts
- Fix class="readmore" to work like class="details" (re: don't do
expand/collapse hover effect if hovering over a link)
- Fix resizing from one-panel to two-panel mode
- This was really just one bug in `focusRoom` left over from an old
architecture where mini-rooms could be panels in vertical tab mode.
- But I took the opportunity to refactor a bunch of panel code to be
clearer.
- Slightly redesign open team sheets
- The yellow and black "construction" message no longer needs nested
divs
- Add format chooser
- Show team name in title
- Support selecting species/item/ability/move from menu
- Clicking species/item/ability/move selects the text for easy replace
- Add Stats menu
- Add placeholder Details menu
- Add types and item icon
- "Add Pokemon" button
It's still a very long way to go, but it's starting to look properly
like the vision I have in my mind.
Minor
- Refactor
- Fix cachebuster for teambuilder CSS
- Improve teambuilder resources HTML
Minor
- Fix `/help` for server commands
- Fix multiline DMs
- Redesign collapsed userlists
- Refactor topbar to use display:table and inline-blocks, instead of
floats and manual margin calculations
- I nearly used flexbox, but fake tables work just as well so I
figure why not. The old client actually manually calculates margin
to do the thing where the right tabbar expands to the right and
then to the left and it's nice to not to need that anymore.
- Document `.gray` in STYLING
- Convert all buttons that make sense as links to <a class="button">
- That would be all the main menu links, plus the
usercount/battlecount in Rooms.
- Fix dismissing popups in iOS Safari
- Add an icon for being disconnected
Trivial
- Fix stars in the old client format dropdown
- Use "Cmd" instead of "Ctrl" on Macs in the chat formatting panel
- Fix some code style in panel-popups
- Update supported browser list in README
- Add Preact keys where they make sense
- For the most part I think requiring keys is too strict. I still
think they're unnecessary or actively detrimental for any list
that isn't long/complex and also rearranged ever.
- ESLint: Set no-shadow to warn
1:
We now have some new CSS for details elements. Simply use
`<details class="details">` to make them look nicer.
It also has a lot of neat features (since it was designed for
expandable dexsearch). It's fully documented in STYLING.
https://play.pokemonshowdown.com/style/STYLING.html
2:
Links are now styled, with hover effects. It's just a slightly nicer
blue (and a slightly nicer purple for visited links). I haven't done
this before because it interferes with other CSS too much, but the
new(ish) `:where` selector makes it easy to cheat specificity problems.
3:
Subtle buttons are no longer different from subtle links. I've
introduced ilink buttons which behave like the old subtle buttons,
and new subtle buttons simply work exactly like subtle links.
4:
Infoboxes in dark mode are now slightly easier to see.
Minor
- Don't allow reconnects (force refresh) after a day of uptime
- Don't toggle <details> when selecting text
- Preserve bottom-scroll position when expanding <details>
- Prevent certain kinds of overscroll on mobile
- Scrolling on mobile should now be "less wobbly". Also, swiping
down to refresh no longer happens inside rooms like a chat room
or the main menu (although you can still do it intentionally by
swiping down in the left menu).
- Fix selection in the old newish dexsearch responses
Trivial
- Add Date.now polyfill
- Linter: `no-constant-condition` is now a warning
- Support `PS.confirm` and `PS.prompt`
- Make close buttons in the left sidebar bigger
- Add a `Net.formData` function to get form data
Minor
- Load UI before BattleLog (and thus Caja)
- Remove BattleLog dependencies from panels and panel-mainmenu
- We now have Preact as our only dependency for the first load
- Load times should be really fast now.
- I remember thinking about what the load screen would look like
but how many people would even see it?
- Don't navigate chat history when cursor isn't on the first/last
character
- Make the main menu sticky
- This involved refactoring most of main menu's HTML. It's very
different now.
- Support notification coloring in mini windows
- Fix a variety of button propagation bugs
- Most noticeably, canceling a challenge would immediately send a new
challenge
- Fix a volume slider regression on regular client (Fixes#2383)
- Fix a Firefox issue where sending messages didn't reset the cursor
position
- Add a `/closeand` command, mostly for buttons (Fixes#2386)
Trivial
- Refactor ChatTextEntry for readability
- `setValue` should be impossible to use incorrectly now
- Make mini-window minimize/maximize/close buttons slightly bigger
- Remove resize handle from teambuilder text editor
Minor
- Fix "[Gen 6]" appearing in wrong places for the last time
- Fix a bunch of bugs in back/forward history
- Support short links (`news` can't be supported because it conflicts
with the mini-window)
- Support `no-panel-intercept`
- Fix Z-move alignment
- Speed up loading by not using SockJS in newer browsers
- Fix backgrounds
- Uploads required pressing Done, but it's supposed to be a close
button
- Random backgrounds weren't working
- Support ctrl+clicking and shift+clicking links
- Adjust main menu padding
- Mini windows are now 20px wider
- Fix mini-window minimize buttons in Safari
- Add a maximize button to mini windows
- Stop special-casing News mini-window CSS
- Support mini-windows in vertical tab mode
- PMs still default to being full tab, but News is now a mini-window
on screens of any size, because the full tab is actually pretty
unergonomic
- Fix highlight notification room in chat rooms
- This is also refactored to be better code now
- Fix tab overflow
- Give 180px space for userbar instead of 165px
- Fix calculation of when to overflow
- Improve tab list design
- Add checkbox to switch to vertical tabs
- Fix race condition leading to connection failure
Trivial
- Options is now a semimodal
- Fix crash in load tracker
- Remove unused `update = forceUpdate` code in Popups
- Use the redesigned dark mode popups from the design refresh #2175
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
Minor
- Fix crashes/bugs in backported elim tournament redesign
- Support opting into Preact client via cookie
- Fix popup positioning when parent element is unmounted (i.e. when you
switch layouts in the Options menu)
Trivial
- Focus Main Menu and not Rooms when loading home page in single panel
mode
- Correctly set user.registered
( Fixes https://github.com/smogon/pokemon-showdown/pull/11031 )
- Fix some text in the Options menu
This is a pretty major redesign that makes our brackets look way more
like other modern tour bracket visualizations out there.
In particular, nodes now have two boxes instead of one, making it
much more straightforward to tell who won. This also makes the trees
much more compact, so they take up much less vertical and horizontal
space.
Font size has been bumped up for much better readability, and colors
are now used more meaningfully.
Tournaments also now show a summary bracket when they end, so there's
no huge full bracket filling up the screen.
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
Minor
- Redesign battle room tabs in vertical tab mode (they're now
two-liners), kind of like in the original 2011 client
- Redesign roomtab tags (they're now smaller and bold)
- Fix scrolling to left when focusing textbox in Chrome Android
- This was a huge mess. If scroll snap weren't such a horrible mess
without CSS, I'd probably just give up and do it in JS. But given
that that's much worse, here we are working around tons of Chrome
and Safari bugs.
- Update replay watching UI to match modern PS
- "Play/Pause" button has constant width
- "Switch viewpoint" instead of "Switch sides"
- "Last turn" -> "Prev turn"
- Disable "First turn" and "Prev turn" when already at first turn
- modern button arrangement
- Battle controls: align to bottom in mobile UI
Trivial
- rename `PS.closePopupsUntil` to `PS.closePopupsAbove`
- fix `<a href=".">` links to Home
- Fix ranks in DM userlist
I've been batching all my non-huge Preact updates approximately once a
day and I intend to keep that up, but I should probably number them so
it's not just "misc updates" every time. Anyway: I went back and
counted. This is batch 7.
Major
- Update Options popup
- Layout options
- Topbar in vertical tabs mode now contains a username/options button
- If you click on a button for a popup (like Options or a trainercard)
while the popup is already open, it will be closed.
- Also if you click on a popup already open somewhere else, it will
open correctly.
- Fix clicking on readmores, spoilers, and buttons inside links
- Make the vertical tabbar scrollable
- Reliably title <<rooms>> "Chat Rooms"
- Add a button to get to the vertical tabbar on mobile
Minor
- `users` in the URL now directs to Preact client
- refactor popup closing to never use while loops
- Fix capitalization for usercards for users with no user objects
- Migrate all `name="cmd"` buttons to `data-cmd`
- Migrate all `name="joinRoom"` buttons to `data-href`
- Fix left border thickness on home screen in vertical tabs mode
- Use `/play` for replaying battles
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
- Refactor focusing text boxes on background panels
- Esc to close popups and hide rooms panel
- Fix joining hidden rooms by link
- Support renaming rooms
- Support searching the format dropdown
- Fix focus clicking in battle rooms
- Always use right panel URL if left panel is Main Menu
- Always use left panel URL if right panel is Rooms
- Add ARIA label for rooms tab
- Battles: Hide "Back" button when it's redundant with "Cancel"
- Support placeholders in new text boxes
- Hide Username box in DMs
- Show "Connecting..." in userbox until fully connected
- Refactor Ladder
- Fix bug where the last ladder category wasn't shown
- Rooms: Show Official/Chat/Hidden sections
- Blur backgrounds in dark mode high-readability sections
- custom room info is now in `room.args`
- rooms not compatible with URLs can be marked with `noURL`
- PMs renamed to DMs, and are now `dm-[userid]` instead of
`pm-[userid1]-[userid2]`
- custom popups now supported
- find-user popup now supported
- popups no longer come with padding, making them behave more like
other panels
- Don't clear PM contents when rearranging
- Don't show "Chat self" on others' usercards while not logged in
- Direct usercard URLs to Preact client
- Fix mini window collapse/expand
- Fix dark mode mini window and focused mini window styles
- Set titles for more readable history
- Stub PS.alert / PS.prompt
- Document RoomOptions
- Infer parentRoomid from parentElem
- Fix room focus issues
- Fix browser back/forward history
- Keep default format up to date
- New subroom link style
- New-style format list button
- Fix router (accidentally deploying Preact client to
play.pokemonshowdown.com)
- Support omitting redundant `data-name` on username elements
- move big and small buttons to battle-log.css (so they can be used in
custom HTML)
- sync Preact header styling with regular header (from the design
refresh #2175)
- rearrange client.css and client2.css to move main menu and format
dropdown styling out of the header section
- lighten light .button.cur to match header bar
- add active styling to blocklinks
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 isn't actually too hard to backport to the old client, but I'll
leave that for someone else.
This is here partly as a tech demo of the syntax highligher, which I
plan to use in the teambuilder.
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