- Fix parsing of bolded text in battles
- Fix teambuilder result issue
- Fix Register button
- Fix Pursuit activation message grouping
- Fix base species name in Teambuilder
- Fix build error
- Show a "Language room" section for the current language, above
all other chatrooms.
- Cachebust translations
- Properly fall back to English when translations don't exist
- Fix an oldclient translation regression
- Fix Options popup width bouncing around because of the overlay's
scrollbar
- Support better article contraction for European languages
- Fix topbar overflowing on mobile layout
- Bump cookie expiration
Client-side counterpart to https://github.com/smogon/pokemon-showdown/pull/12259
Basically everything important is translatable now.
This involved a ton of refactors for translatability.
This also changes the client so it defaults to the browser's default language,
instead of defaulting to English.
Actual translations coming in a separate PR (for ease of reviewing).
- Support new Team Preview choice protocol
- Fix contentEditable cursor reset on blur+refocus
- (Unfocusing and focusing would reset the textbox cursor position)
- Fix horizontal movement having precedence over selection and sliders
in mobile
- (You couldn't modify selections or drag sliders because it would
slide open the menu instead)
- Fix build error
- (Replays no longer has a custom build path)
- Don't apply "Zoom out forms" setting to import/export tab
- Fix unknown sprite orientation
- Apparently some people care more about the facing direction than
the backwards question mark. I remember fixing it in the past but
apparently someone reverted it without telling me, because of
complaints?
- Fix team dropdown
- Fix widths
- Don't show boxes, only real teams
- Fix Revival Blessing UI
- Add tests for the Revival Blessing and earlier choice parsing changes
- Improve battle UI
- Change "Back" button and `/undo` to go "back one step" instead of
cancelling everything
- Improve Team Preview UI
- now says how many pokemon you need to pick
- chosen team is shown on one line
- chosen team isn't disabled (clearer that it's clickable)
- Fix "Side by side, overlay controls" width
- Consistently use `errorReply` for command errors
This is the first step in replacing them (#2723). Since this step
doesn't involve any breaking changes, I'm just pushing it directly.
At some point, you will want to run:
php build-tools/config-to-json.php
to migrate your own files over. It only needs to be run once, at any
time, though.
- Fix `/user` command
- Fix notification count including currently focused room
- Normalize error messages (Firefox doesn't include them in error.stack)
- Destroy rooms after leaving them (fixes a Showdex compat issue)
- Fix notifications when unloading
- Fix battle width when set to mobile layouts
- Battles should keep the notification up even after focus, as long as
you still need to make a choice in your battle.
- Battles should not notify unless there's actually something for you
to do.
- Support |sentchoice|
- Make team tiles as wide as old teambuilder
- Add compact/comfortable chooser
- Add zoomed out option on mobile
- Adjust teambuilder width for slightly more space
- Fix trailing spaces getting trimmed while inputting team name
- Make drag-rearranging easier to see
- Fix scrolling long lists of teams on older browsers
- Fix copy/delete button alignment on mobile
- Improve type icon readability
- I can't believe `-webkit-text-stroke` has been Baseline since 2019
and no one's bothered to standardize it
- Fix pasting in Firefox
- Fix text box height in older browsers
- Fix favicon notifying
- Fix custom avatars in replays
- Fix unknown avatars being horizontally flipped
- Move "Offer Tie" button to "This battle" section of Battle Options,
and add a "Forfeit" button
- Fix select menu readability in Chrome Windows
- Fix color of "Add status" text box in light mode
- Fix clicking on filters in teambuilder search
- Fix Imprison preventing cancel in FFA
- Fix bandwidth usage when clicking yourself
- Fix uhtml notifying outside of DMs
Team names are now below pokemon icons. Yeah, I know, it's going to be
an annoying adjustment.
In my defense:
- "text below icon" is how basically everything works
- this works a lot better in dark mode, because the text prefers a dark
background and the pokemon prefer a light background
Anyway. I've also been fiddling with dark mode icons.
This all started when I tried to give battle-log.css access to the
`.select` class. Which meant that my Preact client changes had to get
propagated to oldclient. Which meant suddenly _everyone_ had lots of
opinions about how teams look in dark mode.
So, yeah. This is my current design. More people have said they like
it than dislike it. So we're doing this, I guess.
- Fix team selector
- Add connection state to panel debug menu
- Make battle logs semitransparent (like chat logs)
- Update how connection errors are displayed
- Update chat log scroll position on resize
- Fix zooming in on Safari causing flickering
- Fix popup positioning (again)
- Fix tournament team alignment
- Add `/news` as an alias for `/j news`
- (Parity with oldclient)
- Fix avatar persistence
- Make pokemon in dark mode team selectors more readable
- Fix inputlog warning in Replays
- Lazy windowing in teambuilder (should improve perf for people with
tons of teams)
- Bump cookie expiration
- Center tournament banners
- Redesign selects - all selects now look like the format/team selects
- This should help them look different from buttons. I'm mulling a
further redesign that makes them look more like textboxes
- Format/team selects also have been redesigned in dark mode to look
more actually dark
- Fix reconnecting after initial connection failed
- There are several fixes here from logic errors, the big one being:
- Redesign how we store connection state. room.canConnect and
room.connectWhenLogged in, as well as a lot of what was in
room.connected, are now combined into a new room.connectMode.
- Remove the unnecessary Room model in the Resources room
- Teambuilder: Don't redo search when blurring/refocusing
- Stop opening context menu or selecting text when long-tapping a
pokemon on mobile to open a tooltip
- Support scrolling when dragging any part of the battle on mobile
- Fix UI jumping around when opening an on-screen keyboard
- This prevented chatting in battles in mobile
- Caused by using `window.inner*` everywhere
- Fix incorrect focused room when opening DMs from user popups
- Could lead to Esc closing the wrong thing
- Unify the debug commands into `/debug`
- Also add a panel state debugger
- Fix dark mode avatar chooser
- Add new `textbox-singleline` and `textbox-subtle` classes
- `textbox-subtle` looks like regular text until moused over or
focused, at which point it looks like a textbox
- `textbox-singleline` makes a textarea that expands horizontally
as well as vertically
- Redesign status editing experience
- Fix support for dead keys in text editor
- Fix crash when opening replays inside PS
- Fix support for <formatselect> as used in <<view-teams-searchpublic>>
- Fix Firefox height
- Fix moves being incorrectly disabled in doubles
- Fix accepting challenges with custom rules
- Correctly calculate chat box width
- Fix a bunch of bugs around battle reconnecting
- This involved a refactor of how `room.connected` is treated
- Fix layout width calculation
- This fixes popups being in the wrong place
- Change thresholds for which layouts are used
- We no longer use always-visible vertical tabs at any width, width
is just too precious. It's still used for very low heights, though.
- Change Options to say what the automatic layout would be
- Fix horizontal tab layout to show the overflow in the right place
- Now tabs stretch all the way to the left side of your username
- Make horizontal tab layout stretch over the username in the userbar
- Maximum space for all your tabs!
- Don't wrap the nav preview in text boxes
We now have like six possible battle layouts depending on the exact
height and width of your screen. You can also manually choose them.
The original low-height screen UI ("overlay controls") have been
completely redesigned, and the controls are now centralized in the
bottom right, much like the modern games. It should be much nicer
to play in horizontal phone mode now.
A variety of other resolutions are also supported now, including some
very weird ones.
CSS scroll snap is no longer used at all. I'm keeping the code around
for now, but the scroll snap is now being implemented 100% in
JavaScript, which basically every mobile browser likes at least a
little better.
We are no longer fighting tons of browser bugs every time we focus a
text box, and I actually haven't found even a minor usability issue
with lots of testing on Android and iOS.
contentEditable is no longer used on mobile. Even in 2026
contentEditable is too buggy on mobile for me to keep around.
- Remove code for wizard editor
- Refactor more code into dex-search and searchresults
- Fix a focus bug in testclient
- Rename client.css -> oldclient.css
- Fix insecure.psim.us #2652
- Fix Firefox sending mouseover events for taps on other things
- Fix immunity tooltips for Gen 1
- Fix forms sent from the server
- Fix modal popup positioning
- Teambuilder: Fix result list windowing at boundary conditions
- Teambuilder: Improve keyboard accessibility for windowing
- In theory this should improve screenreader support
- Teambuilder: Support folders on mobile
- Teambuilder: Fix needing two clicks to select item/ability/move
- Teambuilder: Importing set before selecting species
- Teambuilder: Fix set list -> set editor animation
- Teambuilder: Refactor more stuff into dex-search and searchresults
- Support joining replays from server message
- Fix battle width on mobile being wrong when switching rooms
- Fix forfeit dialog when leaving expired room
- Improve phrasing in battles
- Support dismissing locked tooltips with Esc or clicking outside them
- Move Battle Options and Timer buttons, so that the Timer button
doesn't cover up anything important on mobile
This makes it so when you click the copy/move button, the team you
copied/moved will stay in the same place, so it's easier to orient
yourself for where you want to move things to.
- Fix oldclient textbox size
- Highlight changed lines in "Compare" popup
- Update README to prioritize Preact client
- Fix importing uploaded teams
- Fix room width calculation
- Resizing incorrectly calculated width sometimes
- Now hardcodes specific breakpoints for re-rendering everything
- Fix scrolling on older WebKit
- Fix radio button keyboard accessibility
- Left/Right now change radio buttons
- Fix support for bad server code around bad room IDs
- At this point, `view-[not a room ID]` needs to be treated as a
valid room ID for anything to work correctly :(
- Support `|cantleave|` and `|allowleave|` in custom roomgames
- Work around Showdex using the deprecated `semimodal-popup`
room-location type
- Teambuilder: Improve form readonly mode
- Teambuilder: Fix styling on Firefox
- Teambuilder: EV slider on mobile
- Teambuilder: Add +/- nature buttons on mobile