Changelog

ChessMonitor Changelog

This pages contains most changes and updates to ChessMonitor since June 2024.

If you are interested in a more summarized version, check out the Update blog posts instead.

2024-10-01

  • "Bookmarked Players" tab added to players overview page
  • Bug fixed that would not mark bookmarked players as bookmarked on mobile devices
  • Published new blog post

2024-09-30

  • Bookmarks
    • Ability to "star" any profile added.
    • Integrated into the top navigation bar
    • Added FAQ article
    • New top and mobile navigation (as it was needed because of the coming bookmarks which do need some space in there...)
  • Multiple minor CSS changes to improve layout
  • Switched encoding of custom persona profile names to work with anything

2024-09-27

  • Store searched value in localstorage and use as default when accessing search in player page
  • Elo range is now used in the search instead of a precise value to indicate the error rate
  • A note is added below the search that the final number of games (+ elo) may vary
  • Added dev-debug page to use for debugging user-site problems
  • Time Control improvement, example for correspondence: Instead of 0+3 days we no write 3 days/move
  • Many fixes and improvements
    • Using a comma (,) as name broke the frontend, fixed.
    • Fix spaces in search
    • User flow improvement: Don't show back button one the download was started
    • Many minor text changes (like "Click to add.") added to search
    • Fix case when user queues the same person from two tabs

2024-09-25

  • Parallel Chess.com / Lichess search introduced
    • We are using Chess.com and Lichess public APIs to search in parallel in ChessMonitor database as well as in both pages
  • Ability added to add other players (internal project name "personas")
    • Fix: Caching disabled for persona profiles
    • Pricing page updated with new feature
  • Error page improvements (in case user does not have rights to open a page)
  • Multiple wording improvements (like Account -> Source)
  • Fix: Duplicates in search appearing for popular players
  • Safari browser fix for rating graph
  • Add Redis cache clearing when server is restart

2024-09-24

  • Fix: Lichess was exporting invalid PGNs (½-½ instead of 1/2-1/2)
    • We notified them, but also fixed the problem on our end
    • Library chesslib detection of draws was changed to include ½-½

2024-09-12

  • Our Chess.com 404 detection seems to not work anymore as Chess.com has slightly changed their API
    • For now, we tread invalid 404 as final, not retrying again if the profile does actually exist
    • There are currently ~2-4 cases per day

2024-09-04

  • Suggestions
    • Change default selection from "All" to "All except done"
    • Make search also check description (not just title)
  • Rating page:
    • Elo estimate added to Rating page (when Elo Estimate is selected)

2024-09-02

  • Averages in Ratings page now also use Elo Estimates
  • Bug fix: Rating page does not show name of the user database
  • Minor text changes in Ratings page

2024-09-01

2024-08-29

  • Bug fix in suggestions: "All except done" not showing planned

2024-08-28

  • Bug fix showing suggestions in random order when votes are the same
  • Updated some info texts on the website and removed announcement banner

2024-08-15

  • Support more Date formats in PGN upload
  • Fix PGN upload not supporting lines beginning with [ (as part of a move comment)

2024-08-13

  • Ability to select multiple filters at once (like Blitz/Rapid or multiple accounts) added
  • Fixed: PGN Upload page was visible for non-logged in user (but the the upload crashed in the last step)
  • Added link to database creation from Games page
  • Minor wording changes in PGN Upload to make it more clear that users should stay in the browser tab

2024-08-12

  • Fixed: Famous opponents not working on databases

2024-08-11

  • PGN Upload
    • When uploading a game with [TimeControl "?"], it will use the default timecontrol value for that (so far that was not the case).
    • It will now be able to detect most broken PGNs (with line breaks missing or too many line breaks, etc.)
  • Fixed bug leading to some Correspondence games being detected as Classical

2024-08-10

  • Changes in the background on how user limitations (like the number of databases) are checked
  • From now on, in the Openings page, the chessboard tooltip will only appear if you hover over the first column, to make it less distracting.
  • Made [Variant "Chess"] work in the PGN parser

2024-08-09

2024-08-08

  • Fix PGN Upload edge case when users are deleting a database but PGNs are still queued
  • Added "PGN Database" button to the Account page

2024-08-07

  • PGN Upload: Added ability to select time control for games without time control value
  • Changed/Improved duplicate detection for user databases
  • Added "Max. Moves" option to Openings page

2024-08-06

  • Add ability to add databases for free users
  • Fix bug resulting into console errors when displaying the rating estimate chart

2024-08-05

  • PGN databases
    • Fixed "Update" in profile page not linking to "Add Games" page
    • Fixed PGN parser not being able to parse NAGs between multiple comments
  • Upgraded dependency date-fns as new version can work with UTCDate which I need to replace some outdated graph code...
  • Fix Rating graph to show better tick labels/yearly labels for lots of data
  • Set lowest start year in the filter Date to 1950 (from 2010)
  • Exclude databases from World Map of opponents

2024-08-03

  • PGN databases released in Beta
    • So far only available for testing (instructions in Discord)

2024-07-29

  • Blog post published: Server Upgrade, Game Export and Rated vs. Casual Filter
  • Fix console.log output in frontend (leftover from earlier...)
  • Fix edge case when user navigate page while a piece on the chessboard is dragged (can happen on mobile mainly)
    • The (dragged) piece stayed visible even after navigation
  • Footer changed to include a link to (this) changelog

2024-07-27

  • 10min downtime to change database storage format
    • This should've better been done as part of the migration...
  • Fix search not having thousands separator for number of games
  • Rename Rated filter to "Rated + Unrated"

2024-07-26

  • Post-migration: Replaced old update scripts
    • Wrote script to fix post-migration database problem (resulting in change of database storage format)
  • Make number of games in Account page clickable (links to Games, filtered for that specific account)

2024-07-25

  • Server migrated from (old/cheap) server to bigger server
    • More performance, more storage space!
    • More info in the blog post.

2024-07-24

  • Fixed Lichess API changing again without any changelog or documentation...
    • This time they removed firstname/lastname with a single name (commit)
  • Fix charts in the Rating page overlapping on small screens
  • Fix button "Update now" in Account page looked clickable in "disabled" state
  • Test run for server migration

2024-07-23

  • Prepared scripts for server migration

2024-07-22

  • Finished dockerizing of services
  • Added ability to workers downloading games to gracefully shutdown in Docker

2024-07-13

  • Added more flexibility in the parsing processors to allow to redownload a specific set of games
    • Fix the 71,994 games in the database with invalid tournament data attached (see entry from yesterday)

2024-07-12

  • Improve the tournament detection for Chess.com (their API is not properly working for tournaments with lots of participants, we now use a different way to get the info)
  • Fix bug in the Lichess Swiss tournament detection (it had a bug that would query the wrong name for swiss tournaments)
    • There are currently 71,994 games in the database with wrong tournment information thanks to that bug

2024-07-11

  • Bulk export games as PGN
  • Added this changelog page
  • Added status "Not planned" to suggestions (as well as option to give an "official answer" to replies)

2024-07-09

  • Improved chess parser library to support null moves
    • Even though they are not supported officially in PGNs, they are sometimes exported in variations and not being able to parse will make it impossible to upload PGNs containing null moves
    • However, we only support them in variations (as these are currently anyway not shown in the UI, this will come at a later stage).
    • This feature is not usable in the UI yet, it only means we are able to parse games containing null moves.

2024-07-08

  • Improved the internal chess/PGN parser as well as the opening books parser.
    • Also changed how the internal monorepo structure (between parser/opening book) works as the monorepo did not really like the circular dependencies.
    • This also includes some changes to the opening book detection allowing more flexibility on how openings are detected.

2024-07-03

  • Added support for NAGs (Numeric Annotation Glyphs) in the chess parser
    • As many uploaded PGNs will contain this information, we need to be able to parse this information properly.

2024-07-01

  • Bug fixed in payment processing UI (loading animation does not end when loading ends)
    • Probably introduced after the recent Paddle update

2024-06-26

  • In-depth database evaluation regarding storage formats (regarding the upcoming server migration)
    • Basically CPU vs storage evaluation. We could compress much more, but at the cost of more CPU usage.
    • Wrote some evaluation scripts to test it properly.
    • Evaluated switch to Percona (from original MySQL).

2024-06-25

  • Removed background task that upgrades game version for recent players as the Lichess download takes very long for many players (it's limited to 30 games/second)
  • Instead the upgrade is now triggered in the background when users click "Update" and will be performed in the next 24h (low priority queue entry).

2024-06-25

  • Fix bug in Safari: Rating estimate +X did not work in Safari, for some reason the used SVG element foreignObject is not supported.

2024-06-23

2024-06-22

  • Updated opening book detection
    • Reworked how opening detection works (zobrist vs moves).
    • ChessMonitor now uses the actual lines of an opening instead of transpositions as many lines will basically never be detected as they often end up in some other transposition later on.
    • Example:
      • 1. c4 Nf6 2. Nc3 g6 3. d4 was previously detected as King's Indian Defense
      • However, the King's Indian Defense is played like this: 1. d4 Nf6 2. c4 g6 3. Nc3
      • In this case, we do differ from many other detections (like Lichess/Chess.com) but I believe it makes more sense to focus on the "players intention" when playing an opening. In the example above, white played the English opening which then later transitioned into King's Indian. However, I believe if I asked the player what opening was played he would likely answer "English".
    • This change also means that the number when going from Openings page to explorer 100% match the numbers shown in the explorer

2024-06-21

  • Minor changes in the About page (wording + image)

2024-06-20

  • Updated openings for better detection (based on chess-openings)
  • Disabled automated scheduled upgrade of games for now (as it was taking too long for Lichess games)
    • Instead I improved the detection when to upgrade. Now, it also upgrades players that login via Oauth (this was previously not the case)
  • Fixed but that would in some cases add the "upgrade" job twice (as deduplication detection was not working for these tasks)
  • Add info for subscribers in Feature Suggestionst that they have more voting power

2024-06-20

  • Changed how the game parser nodes work
    • I'm now relying on shutting down worker nodes "gracefully".
    • The problem is that on shutdown, the database inserts might lead to incomplete database entries (super rare edge case, did not happen so far, but important if this works more automated in the future)
    • I tried again to switch to database transactions, however this is not working well.
      • Problem is when entering >1k games per second, the database row lock that leads to a queue of games that need to be inserted. Unfortunately, too costly to use transaction there.
    • Note: This is just some internal implementation detail that should make database records "cleaner".

2024-06-19

  • SEO optimization: Wrote a script to "rename" popular players URLs, e.g. Magnus Carlsen -> https://www.chessmonitor.com/u/magnus-carlsen
    • Note from the future: It took multiple weeks for Google to finally catch up, even after using the Console to tell Google to crawl again...

2024-06-18

  • Games now use an internal version (in the database) to make it easier to roll out new features
    • Problem so far: Sometimes I needed to "upgrade" games. For example when the detection of openings was changed or the Rated/Casual detection was added it was needed to "go over all games" again and re-analyze them.
    • In the past, this was relatively complicated. I now changed how this works to make it easier in the future.
    • Basically each game and each player in our database has a version number attached. When a player click "Update games", it is checked whether his games are already in the newest version. If that is not the case a background tasks is triggered that will upgrade the games in the next 24h (as some low priority queue job).
    • Most users should therefore not even notice that this is happening.
    • This is also integrated into the scheduler so that popular players like Magnus, Hikaru, etc. are automatically upgraded.

2024-06-17

  • Improved Pricing page: Some features now have tooltips and when you click on the name of a plan it scrolls down to the comparison
  • Remove "Ultrabullet" (it's now just Bullet).
    • This just messed up the UI in the past and it's a "Lichess-only" time control that is not used anywhere else. Ultrabullet is now simply Bullet.
  • Minor UI fixes regarding the date selection in the filter.

2024-06-16

  • Changed how time controls are detected and displayed. It now can handle compelex controls like 40/7200:20/3600:900+30.
    • The old detection led to problems like 0.18333333333333332+0 (11 second game) as it would always simply divide by 60. Now this would be displayed as 11s+0 or simply 11s.
    • I also changed how server and client interact here. The "raw" time control is just given to the browser where it's properly parsed/displayed.

2024-06-14

  • Bug fix: Page crashes in case when user has "Preview moves" (instead of arrows) active and then hovers over the last move in the explorer move preview.

2024-06-13

  • Fixed country detection not working on Lichess. Apparently Lichess updated their API and change property country to flag in November 2023. Since then, countries were not detected properly.
    • Wrote a script to reload all user profiles that have been added since November 2023.
    • It might take up to 48h until the data is updated

2024-06-12

  • Changed game Termination detection (so far abandoned games on Chess.com were detected as termination type "Other"). It now correctly detects Abandoned on Chess.com. But keep in mind that this has different meanings on Chess.com vs. Lichess.
    • Lichess "Abandoned" means: Game was not started.
    • Chess.com "Abandoned" means: User left game without resigning.

2024-06-11

  • Added detection of tournaments/events (like "Bullet Arena") to game parser.
    • This is currently not available in the user interface as I'm still experimenting with the exact implementation. It will probably come live together with some changes to the filters.

2024-06-10

  • Added detection of Rated/Casual to games to game parser.
    • Similar to tournaments, this will be added in the future when I do a bigger update to filters.

2024-06-09

  • Improved Feature Suggestions UI on mobile devices

2024-06-06

  • Hide "launch announcement", but make it toggleable for future uses
  • Make the activity page more green (so that 50% win rate is not as red as it is currently, as this is basically the expected winrate).

2024-06-04

2024-06-04

  • Internal changes how the mail sending API is used (and how errors are caught)

2024-06-01

  • Replaced example.com with chessmonitor.com in the mail template (sorry if you received one of those mails...)
  • Bug fix: "Min. Games" filter in Openings page was ignored in some cases
  • Cloudflare page rule migration (see Cloudflare info).