Changelog
This page summarises changes, updates, and new features added to Lichess since 2020. Check out our open source repositories for the details of every change we've ever made.
September 2024
Broadcasts updates
- Broadcasts can now be embedded on external websites
- List players, their teams, and their scores in Broadcasts #15905
- Max games/boards increased to 100 per round
- Add ability to automatically start a round when the previous round completes #15835
- Add hyperlink support to Broadcast descriptions
- Add public + private notes to share info about the Broadcast
- Broadcast managers can send more messages db8f01c
- Broadcaster App now receives automatic update notifications
API updates
- Add documentation for block/unblock endpoints #365
- Add
info.fideTc
#375 - Add broadcast form limits #374
- Update broadcastForm and update the view #373
- Update Broadcast form schema #369
- Show Swiss position in API #15919
- Properties tour and rounds are always included in the response #372
- Add
startsAfterPrevious
for broadcast round schema #368 - Add
quote
andallowList
to Tournament schema #367
Mobile app updates
- Add board editor #865
- Add setting to change shape colors #896
- Add setting to enable/disable piece magnification #889
- Game filter improvements
- Improve Opening Explorer loading and style
- Enable draw shapes by default
Other updates
- Add infinite scroll to our Patrons page. Many thanks to our Patrons!
- Prevent watching games when a user is blocked 19c5581
- Lobby game seeks are now always random colors
- Search at top of site can be used to search for anything by ID (players, games, broadcasts, studies, puzzles, etc) ef779d5
- "Learn" section rewritten with chessops #15785
- Blogs and CMS pages now have anchor ids next to markdown headers for linking #15869 #15864
- Continue non-functional improvements for search functionality
- Lots of Typescript upgrades and improvements
Thanks to our community contributors
- Many language translations added/updated (thanks to many CrowdIn contributors)
- Fix /study/topic error when not logged in #15950 (thanks ChaseNelson)
- Improve UX of long underboard translations #15922 (thanks razum2um)
- In Learn, link specifically to videos tagged beginner #15908 (thanks azariak)
- Chessground: Fix: enable CSS file imports from chessground assets in Next.js projects #310 (thanks d-ii-m-a)
- Lila-db-seed: Storm day seeder #54 (thanks tontsa28)
- Lila-db-seed: Puzzle round seeder #52 (thanks tontsa28)
- Mobile: Draw clock edge to edge #913 (thanks FlxB2)
- Mobile: Filter games #877 (thanks Mauritz8)
- Mobile: Opening explorer #836 (thanks Mauritz8)
- Mobile: Display db size in MB in settings #827 (thanks mhnowak)
August 2024
Key changes
- Broadcasts
- Embed a Broadcast on your website (docs)
- Improvements to Broadcast management UI
- We released a desktop app for tournament organizers to broadcast games (Watch a screencast and download the app here: Broadcaster App)
- Fishnet updated with development version of Stockfish with SFNNv9 architecture and Finny Tables
- Opening Explorer
- Improve "Top games" selection
- Remove game links with TOS-marked accounts
- Tablebase: Integrate Antichess DTW tablebase
API updates
- Profiles replace firstName,lastName -> realName #362
- Update structure of Broadcast schema 6794c4d #357
- Update structure of create challenge response #363
- Flair attribute added for teams #15682 and #359
- New endpoint to export games of a bulk pairing
- Optional
withBookmarked
parameter added to get bookmarked status of games - Broadcast round reset endpoint updated #15741 and #360
Mobile App updates
Other updates
- Updates to backend search service (lila-search) for forum indexing
- Updates to puzzle UI icons #15650
- UI Refactoring
- Removed site globals #15617
- Converting UI modules to use
IsolatedDeclarations
from TypeScript 5.5
- Include image when sharing a Broadcast URL on social media #15709
Thanks to our community contributors
- Many language translations added/updated (thanks to many CrowdIn contributors)
- Uppercase second word in "Puzzle themes" menu-item #15801 (thanks bastianpedersen)
- Add mobile OAuth scope to broadcast round endpoint #15800 (thanks bastianpedersen)
- Fix API validation response when joining team #15790 (thanks bastianpedersen)
- Adding href link to Mastodon account #15772 (thanks dangarciahe)
- Delete old links no longer exist on Coach page #15734 (thanks M-DinhHoangViet)
- Feat: add pieceNotation to settings API #15703 (thanks tom-anders)
- Login: load password visibility toggle after unsuccessful attempt #15688 (thanks incogg)
- Feat: toggle for wiki opening info display #15662 (thanks KartikWatts)
- Fix: add missing i18n keys for expand/collapse variations #15644 (thanks Mauritz8)
- Add ability to set time and increment in challenge query link #15640 (thanks bastianpedersen)
- Fix missing translations features page #15603 (thanks M-DinhHoangViet)
- Chessground: Add Link to Updated Svelte Wrapper #309 (thanks agelas)
- Chess-openings: Add some French Defense Classical/Steinitz lines with early ..a6 #189 (thanks jdart1)
- Chess-openings: Fixes for Bogo-Indian + Catalan #188 (thanks jdart1)
- Chess-openings: Add some Ponziani Opening lines #186 (thanks jdart1)
- Chess-openings: Small improvements #185 (thanks Malorra)
- Chess-openings: Remove redundant line #184 (thanks Malorra)
- Chess-openings: Remove unnecessary line #183 (thanks Malorra)
- Chess-openings: Fix for Englund Gambit #182 (thanks fynsta)
- Mobile: Fix: respect "hide rating" pref in puzzle solution screen #887 (thanks tom-anders)
- Mobile: Fix: change puzzle dashboard graph size on tablet, to prevent overflow #885 (thanks Mauritz8)
- Mobile: Feat: add setting to change language #884 (thanks tom-anders)
- Mobile: Fix incorrect move sounds during analysis #873 (thanks Lonec-L)
- Mobile: Broadcast - Use GridView.builder instead of ListView.builder #867 (thanks julien4215)
- Mobile: Feat: support changing input method in settings (tap+drag, tag, drag) #864 (thanks tom-anders)
- Mobile: Link to your own profile from game screen #861 (thanks Mauritz8)
- Mobile: Add ability to toggle annotations in analysis board #859 (thanks Mauritz8)
- Mobile: Game Settings: Add toggle to disable Auto Queen if set to Always #858 (thanks incogg)
- Mobile: Add remaining missing mobile translations #857 (thanks tom-anders)
- Mobile: Respect piece notation setting in game and analysis (#759) #854 (thanks tom-anders)
- Mobile: Docs: add lila-docker instructions to settings_dev_env.md #853 (thanks tom-anders)
- Mobile: Extend translation comments based on crowdin feedback #835 (thanks tom-anders)
- Mobile: Refactor TimeIncrement.display Method and Fix Edge Case #823 #834 (thanks BAW2501)
- Mobile: Feat: hide move list in zen mode #832 (thanks tom-anders)
- Mobile: View recent games by time control/variant #830 (thanks Mauritz8)
- Mobile: Feat: scale arrows in analysis based on winning chances #828 (thanks tom-anders)
- Mobile: Feat: add translations for mobile-only texts #826 (thanks tom-anders)
- Mobile: Fix plural handling for zero quantity #808 (thanks tom-anders)
- Mobile: Use l10n.realName instead of l10n.name in profile #807 (thanks tom-anders)
- Mobile: Use the new broadcast/top endpoint #806 (thanks julien4215)
- Mobile: Challenge from a Position with Fen #804 (thanks HaonRekcef)
- Mobile: Fix text being cut off in stormNewRun and stormEndRun translations #798 (thanks tom-anders)
- Mobile: Feat: support disabling clock emergency sound #792 (thanks tom-anders)
- Mobile: Only show next correct move when viewing puzzle solution #774 (thanks Mauritz8)
- Mobile: Adjust volume #767 (thanks Mauritz8)
- Flutter-chessground: Feat: support input method (click, drag, either) #39 (thanks tom-anders)
- Flutter-chessground: Feat: allow scaling arrows #38 (thanks tom-anders)
- Lila-docker: Better shebang #100 (thanks purefan)
July 2024
Key changes
- New title verification form #15451
- Redesign search back-end #15517 Repo
- Mobile: Added challenges #772
- Improvements to Broadcast: more robust polling, simplified description fields, updated configuration interface, combining and filtering sources.
API updates
- Add mobile scope to more challenge api endpoints #15494
- Add API endpoint for broadcasts by user #15415
- Berserk: Implement /tv/{channel}/feed endpoint #78
Other updates
- Limit forum post length to 10k characters #15575
- Collapse nested study variations #15488
- Preview FEN in editor when creating a study chapter #15430
- Modernize ui/learn #15263
- Mobile: Put the resign button in bottom bar for easy access #789
- allow importing 64 games in a study e7ce657
Thanks to our community contributors
- Many language translations added/updated (thanks to many CrowdIn contributors)
- Coordinate Trainer: option for coordinates on every square #15221 (thanks BSmick6)
- Global setting for coordinates on every square #15621 (thanks henrique-barros)
- Setting to change clock sound #15613 (thanks tom-anders)
- Add password visibility toggle #15605 (thanks joeyksclark)
- Display challenge rules on the challenge page #15581 (thanks bastianpedersen)
- Display "view" button if game challenge has rules #15600 (thanks bastianpedersen)
- Add missing translation on FIDE pages #15599 (thanks M-DinhHoangViet)
- Monarchy piece set added #15557 (thanks slither77)
- Align multi-line text next to icon on profile dropdown #15544 (thanks M-DinhHoangViet)
- Allow voice and keyboard input of 'next' to start new puzzle streak game #15530 (thanks AaronLeslie138)
- Fix hidden rating bug in mini profile #15479 (thanks randompearl-stack)
- Fix bug with writing blogs from phone #15469 (thanks randompearl-stack)
- Improving UI for mini profile #15466 (thanks smadixd)
- Make puzzle storm board scale correctly #15462 (thanks randompearl-stack)
- Remove invalid and redundant styles #15454 (thanks randompearl-stack)
- Cooke pieces added #15444 (thanks fejfar)
- Set DGT board page link color as blue #15429 (thanks randompearl-stack)
- Fix broadcast mobile layout #15422 (thanks lucaxvi)
- Place the user profile actions in a dropdown with labels #15260 (thanks Paul-Etienne)
- Chess-openings: Add D45 line and D46 line #181 (thanks jdart1)
- Chess-openings: Add C54 line #180 (thanks jdart1)
- Chess-openings: Add Caro-Kann Endgame Offer & Endgame Variation #179 (thanks jdart1)
- Chess-openings: Unify spelling Karlsbad -> Carlsbad #178 (thanks xaverh)
- Chess-openings: Remove redundant line in Danish Gambit #175 (thanks Malorra)
- Chessground-examples: Private package, drop gulp, & correct links/typos #31 (thanks LeoDog896)
- Mobile: Disable piece animation in bullet time controls #773 (thanks Mauritz8)
- Mobile: Allow rating range filter from +-0 instead of +-50 #754 (thanks Mauritz8)
- Mobile: Remove Dependency Info Block #746 (thanks ldeso)
- Mobile: Add FEN export #744 (thanks Mauritz8)
- Mobile: Make it possible to install Play Store and debug builds on the same device #731 (thanks timmcca-be)
- Mobile: Jump to profile screen by pressing hello widget #729 (thanks ZTL-UwU)
- Mobile: Broadcast feature - first iteration #726 (thanks julien4215)
- Flutter-chessground: Fix coordinates and board display on devices with RightToLeft Directionality #36 (thanks rafalbednarczuk)
- Pgn-viewer: Add menu configuration options for analysis board, computer practice #33 (thanks johnolek)
June 2024
Key changes
- Lichess Mobile app is now in public beta for Android! Download it from the Google Play Store. The iOS version is coming soon.
- Stockfish web upgraded to version 16.1 and improved performance #15285
- Improved accessibility for lobby UI #15213
- Added keyboard input to the analysis + study page #15019
- Updates and refactoring to our search service to prepare for future features. Now uses Smithy for API definitions.
- lila-fishnet server (Play with the Computer) improvements to prevent dropped games (it dropped zero games this month)
API updates
- New endpoint to get broadcasts created by a user
- User responses now include
flag
instead ofcountry
- User status endpoint now has
withSignal
andwithGameMetas
params
Other updates
- Study imports can now include up to 64 games e7ce657
- Study members tab now shows to all study members 178907f
- Show game count and account age in user hover tooltip e110605
Thanks to our community contributors
- Many language translations added/updated (thanks to many CrowdIn contributors)
- Video library improvements #15356 (thanks randompearl-stack)
- Add text specifying user age in user tooltip #15337 (thanks xopiad)
- Fix analysis button on practice lesson boards changing current tab #15321 (thanks BSmick6)
- Improved responsiveness to join team requests #15300 (thanks BElluu)
- Fix password strength text overlaps the password field on mobile browser #15291 (thanks randompearl-stack)
- Don't create notification for own posts in diagnostic #15287 (thanks BElluu)
- Add answer on mitigating chess addiction in the faq page #15265 (thanks daustria)
- Add "outlook.com.au" to email whitelist #15254 (thanks ProjectHSI)
- Update animation duration of chess clock bar when player receives mor... #15243 (thanks daustria)
- Show the selected timespan on page load in user rating graph #15240 (thanks Mauritz8)
- Add 'copy url' buttons to 'game gif' and 'position gif' hyperlinks #15222 (thanks Paul-Etienne)
- Fix typos #15196 (thanks RainRat)
- Update lamenames #15188 (thanks thedancinglaundry)
- Show appropriate error message when emoji in input #15137 (thanks Mauritz8)
- Migrate to pnpm 9 and node 20 #15116 (thanks PascalHonegger)
- Fix mobile study board editor missing piece selection #15049 (thanks randompearl-stack)
- Scalachess: Simplify removeById #550 (thanks Masynchin)
- Chessground: Add option to display coordinate on every square #301 (thanks unicolored)
- Chess-openings: Add Siberian Trap #172 (thanks Malorra)
- Chess-openings: Add Siberian Variation #171 (thanks Malorra)
- Chess-openings: Add B92 line #170 (thanks jdart1)
- Fishnet: Add config options to enable stats in container #266 (thanks cyqsimon)
- API Docs: Update profile schema to use flag #343 (thanks matthew-collett)
- API Docs: Update api-board-game-gameId-berserk.yaml #339 (thanks chesteragsamosam)
- Mobile: Clear engine suggestion arrows after reaching checkmate or stalemate #724 (thanks timmcca-be)
- Mobile: Fix profile preferences screen when offline #704 (thanks amanxnanda)
- Mobile: Docs: Add instructions for using Lichess dev server in README #679 (thanks iamnabink)
- Mobile: Add .editorconfig file #678 (thanks raphaelladinig)
- Mobile: Fix game phases overlapping #675 (thanks julien4215)
- Mobile: Change index for analysis that doesn't start from chess initial position #673 (thanks julien4215)
- Mobile: Allow the user to drag the line on acpl chart #672 (thanks julien4215)
- Mobile: Fix puzzle storm and streak issue with invalidating provider #661 (thanks julien4215)
- Mobile: Fix flip board functionality #658 (thanks Mauritz8)
- Mobile: Fix time countdown display #657 (thanks Mauritz8)
- Mobile: Fix puzzle streak #656 (thanks julien4215)
- Mobile: Fix game phases #655 (thanks julien4215)
- Mobile: User full game list #572 (thanks ZTL-UwU)
- Lila-docker: Prompt about gitpod just on gitpod #89 (thanks BElluu)
- Lila-docker: Call gitpod_public when setup on Gitpod #88 (thanks BElluu)
May 2024
Key changes
- Broadcasts now have a private tier #15077
- Improved compaction and performance of FEN storage #529 and #555 - Read more in this blog post
- Improvements to our code deploy processes and how frontend assets are served #15054
- Ongoing refactoring work for improved code architecture and faster compilation times
- Ongoing work for upcoming mobile app, including adding Stockfish 16.1, Cupertino theme, and improvements to the puzzle dashboard and stats screen
API updates
- Fix to include
joined
anddescriptionPrivate
status when requesting a Team #15032 - Add option to retrieve puzzle activity after a specific datetime #14988 (thanks bastianpedersen)
Thanks to our community contributors
- Many language translations added/updated (thanks to many CrowdIn contributors)
- Show error message when Java is not installed #15111 (thanks Anonymous941)
- Fix element name #15042 (thanks guqicun)
- Fix Crazyhouse pocket takes a lot of space on analysis board #15038 (thanks randompearl-stack)
- Include private team description in API response if caller is a member #15022 (thanks bastianpedersen)
- Show additional results in user search(not only friends) #15012 (thanks Carbrex)
- Search functionality in team declined requests #15003 (thanks Carbrex)
- Fix custom background: Unable to see input for custom URL #14991 (thanks randompearl-stack)
- Fix typos #15136 (thanks RainRat)
- Scalachess: Additional castling tests & test name cleanup #531 (thanks stscoundrel)
- API Docs: Add optional fields in properties #334 (thanks jalpp)
- API Docs: Add wdraw and bdraw fields #332 (thanks jalpp)
- API Docs: Add flair to User response #330 (thanks jalpp)
- API Docs: Fixes BOT title in bots online endpoint #326 (thanks jalpp)
- API Docs: Add docs for bot takeback offer #324 (thanks jalpp)
- API Docs: Fix a typo in the antichess tablebase api documentation #322 (thanks rn5f107s2)
- Mobile: Add result to gameanalysis #620 (thanks HaonRekcef)
- Mobile: Dependabot: add updates for Github Action workflows #619 (thanks stscoundrel)
- Mobile: Puzzle(-streak) analysis in analysisboard #610 (thanks HaonRekcef)
- Mobile: Add a Elo chart on player profile stats #580 (thanks julien4215)
- Flutter-chessground: Add BoardData.opponentsPiecesUpsideDown property #34 (thanks MichaelTamm)
- Lila-docker: Add .pnpm-store volume to docker-compose.yml to get benefits of pnpm #78 (thanks Carbrex)
- Broadcaster: Fix handling of missing 'code' parameter resulting in panic #9 (thanks Carbrex)
April 2024
Key changes
- Lots of Scala refactoring to reduce boot time and improve code architecture. Also upgraded to Scala 3.4.0
- Lots of SCSS refactoring for better organization and easier theming
- Continuing broadcast improvements
- Improved user interface
- Added list of FIDE players and federations
- Streamers embedded directly on a Broadcast page if they are providing commentary for a Broadcast
- Studies and broadcasts can have up to 300 moves #14812
- Safari 11 support has been removed. Safari 11 users on iOS can upgrade to Safari 12 by upgrading to iOS 12 if possible #14951
- Added emoji support for Blog posts
- Site header and navigation improvements across different devices
- Lots of updates to the upcoming mobile app. UI improvements, socket performance improvements, fixes for zen mode and puzzles, and more
- Verify your Lichess profile on a Mastodon account #14961
API updates
- Added topics to study list API response #14883
- Added docs for broadcast leaderboard schema and example #314
- Added support for Broadcast player name replacements when pushing PGN #14965
Thanks to our community contributors
- Many language translations added/updated (thanks to many CrowdIn contributors)
- Show topBar when s or / is pressed #14978 (thanks nathanielkaiserxyz)
- Set min height for Tournament winners #14922 (thanks NSK07)
- Add Lichess's Instagram to frontpage footer #14919 (thanks M-DinhHoangViet)
- Larger title for broadcasting cards #14899 (thanks DeepKling)
- Fix missing space in user's tournaments #14889 (thanks M-DinhHoangViet)
- Fixes Variant: Standard not working on
/games/search
#14852 (thanks Carbrex) - Fix Video Title Cutoff #14816 (thanks TheVanadium)
- Fix tournament calendar date disappears on small screen #14814 (thanks randompearl-stack)
- Country name Turkey officially changed to Turkiye #14813 (thanks nkamadan)
- Fix video page breakage on small-width screens #14810 (thanks TheVanadium)
- Scalachess: Add Dependabot updates to Github Actions dependencies #525 (thanks stscoundrel)
- Lila-search: Fixes Variant: Standard not working on /games/search #184 (thanks Carbrex)
- Fishnet: Allow users to say no when writing to fishnet.ini #263 (thanks nobriot)
- API Docs: Error message should reference chapter, not swiss tournament #317 (thanks scarpent)
- API Docs: Fix typo #316 (thanks gtim)
- Lila-fishnet: Add unassignOrGiveUp #288 (thanks Masynchin)
- Lila-fishnet: Use default executor constructor where possible #284 (thanks Masynchin)
- Lila-db-seed: Changed clock to perf logic to match with that of lila #49 (thanks Carbrex)
- Mobile: Update min fide elo #609 (thanks HaonRekcef)
- Mobile: Fix Storm Dashboard for Other Users #608 (thanks HaonRekcef)
- Mobile: Fixes the notation if the analysis starts with black to move #605 (thanks HaonRekcef)
- Mobile: Parse pgn without moves #604 (thanks HaonRekcef)
- Mobile: Fix deprecated warnings for some colorSchemes properties #603 (thanks HaonRekcef)
- Mobile: Wrap around tos violation #598 (thanks HaonRekcef)
- Mobile: Fix alternative castling #596 (thanks HaonRekcef)
- Mobile: Remove .remainder(60) from opponentLeftCounter #587 (thanks kweithers)
- Mobile: Country name Turkey officially changed to Turkiye #582 (thanks nkamadan)
- Mobile: Remove Inapplicable Correspondence Statistics #574 (thanks BAW2501)
- Dartchess: Add Dependabot updates to Github Actions dependencies #35 (thanks stscoundrel)
- Dartchess: Additional unit tests for attacks #34 (thanks stscoundrel)
- Lila-docker: Made an attempt to make docker images lighter. #68 (thanks Carbrex)
- Lila-docker: Start all containers including optional ones #66 (thanks Carbrex)
- Lila-docker: Fetch and checkout pr branch on gitpod if LILA_PR variable is provided and get preview easily #60 (thanks Carbrex)
March 2024
Key changes
- Fishnet upgraded to include Stockfish 16.1 for server analysis
- Many improvements to the Broadcast section. Read our blog post for full details
- New custom CMS for Lichess content pages and official blog posts
- YouTube streamers can now indicate they are online if they are not auto-detected
- Improvements to blog algorithm for featuring on homepage
- Images can now be cropped when uploading (coach, streamer, blog, and broadcast images)
- Improvements to email verification for new accounts using custom domain names
- Add alternative websocket route for players experiencing connection issues
- General improvements and refactoring to lila-ws (websockets) and lila-fishnet (playing against Stockfish)
- Lots of continued work on new mobile app, including UI and puzzle improvements, HTTP client refactoring, push notifications, and more.
API updates
- Add
/api/tv/{channel}/feed
endpoint to filter by time control or variant - JSON response for PGN push has been updated with a new tag structure
- Add
DELETE /api/study/{studyId}/{chapterId}
endpoint to delete a study chapter - Add leaderboards to
/api/broadcast
- Add
/api/broadcast/:id
endpoint, add?leaderboard=1
param to include leaderboards
Thanks to our community contributors
- Many language translations added/updated (thanks to many CrowdIn contributors)
- Allow all Lichess TV Channels to be embedded as iFrames #14726 (thanks srstinson)
- Added broadcast subscription list #14652 (thanks Carbrex)
- Prohibit blocked users from posting in the comments thread of the blocker account's blog #14730 (thanks Carbrex)
- Make position evaluation glyphs available via shortcuts #14661 (thanks phihag)
- HTML will now wrap to the next line instead of overlapping #14761 (thanks NSK07)
- Remove Tags From Video Card Info #14756 (thanks TheVanadium)
- Hide overflow even n coach list #14734 (thanks cmgchess)
- Fix crazyhouse analysis overlap #14694 (thanks Carbrex)
- Handling plurals and removing 'and' #14627 (thanks NSK07)
- More arena and swiss tournament translations #14624 (thanks M-DinhHoangViet)
- Chess-openings: Adding the Koola-Koola Variation: #166 (thanks Malorra)
- Chess-openings: Adding Cologne Gambit and Celadon Variation #165 (thanks Malorra)
- Chess-openings: Alien Gambit #164 (thanks drainwordlee)
- Chess-openings: Amar Gambit -> Paris Gambit #163 (thanks Malorra)
- Chess-openings: C96 Ruy Lopez: Closed, Chigorin Defense, Gajewski Gambit #162 (thanks xaverh)
- Chess-openings: Quade -> Quaade #161 (thanks Malorra)
- Chess-openings: Additional line for Scotch Game: Lolli Variation #160 (thanks xaverh)
- Fishnet: Use aliases instead of global use statements for matching
SkillLevel
#259 (thanks integerrr) - Lila-fishnet: Simplify Executor.acquire #267 (thanks Masynchin)
- Lila-fishnet: Simplify ApiErrorLogger.instance #266 (thanks Masynchin)
- Mobile: Remove worst rated defeats in perf stats screens #569 (thanks ZTL-UwU)
- Mobile: Fixed incorrectly positioned annotation when performing an alternative castling move on the analysis screen. #567 (thanks okmsbun)
- Mobile: Add turn Text to SmallBoardPreview #556 #561 (thanks BAW2501)
- Mobile: Added storm and streak high scores on user profile #554 (thanks gyoussef55)
- Mobile: Alternate castling was forced into normal castling #553 (thanks okmsbun)
- Mobile: Updated FVM guide link #552 (thanks zanovis)
- Mobile: Fix Bugs in Profile Screen #547 (thanks HaonRekcef)
- Mobile: Display tos-violation on user accounts #542 (thanks HaonRekcef)
- Mobile: Display information on closed accounts #538 (thanks HaonRekcef)
- Mobile: Localize numbers #531 (thanks HaonRekcef)
- Mobile: Correct capitalization #529 (thanks HaonRekcef)
- Mobile: Improve anon error messages #528 (thanks HaonRekcef)
- Mobile: Add clock tool #524 (thanks KarnerTh)
- Mobile: Replace defaultTargetPlatform with Theme.of(context).platform #523 (thanks BAW2501)
- Mobile: Remove kTabletThreshold constant #519 (thanks BAW2501)
- Mobile: Add game phases to acpl chart #517 (thanks julien4215)
- Lila-docker:
cd
into the dir where lila-docker is located #58 (thanks Carbrex)
February 2024
Key changes
- Blindfold mode was removed as a global preference and is now applied on a per-game basis. You may toggle blindfold mode in games or puzzles via the board menu hamburger or the shift-B shortcut.
- Completed the migration to open source charting library Chart.js from Highcharts.
- Lots of ongoing work for upcoming mobile app release, including server analysis, game seek options, improved home and buttons UI, and more.
- Many improvements to the Broadcast interface and functionality
Broadcast changes
- Improved UI on listing page - updated layout, added images for each broadcast, and added current viewer count
- Added ability to subscribe to a broadcast's round to get notified when it starts
- Easily toggle engine evals when viewing multiple boards
- Improved reliability when receiving games from external sources
- Improved shareable URLs when viewing a broadcast game
API updates
- Game division (middlegame, endgame) now available in game JSON exports.
- Added docs for /api/games/export/imports endpoint
- Added follow to single preference API response
- Broadcast PGN push endpoint can now receive any number of PGNs in a single request
- New endpoint /api/bulk-pairing/{id}
- Replace official field with tier in broadcast apis
Other updates
- Improved diagnostics for resolving client-side issues. Errors can more easily be shared with Lichess developers for debugging.
- Fishnet: Released client versions v2.8.1 and v2.8.2, making better use of hashtable
- Scalachess: Fixed castling bug for Atomic chess variant
Thanks to our community contributors
- Many language translations added/updated (thanks to many CrowdIn contributors)
- Update DisposableEmailDomain.scala to add mozmail domain #14582 (thanks Arkelyscorpion)
- Align the background grid in right-to-left languages. #14571 (thanks jadijadi)
- Added visual indicator to help knowing game advantage #14556 (thanks Carbrex)
- Fix typos #14552 (thanks RainRat)
- Board editor: export position as image #14551 (thanks ross39)
- Margin fix for buttons on puzzle dashboard #14543 (thanks keithwongg)
- Added show eval toggle on broadcast multiboard page #14540 (thanks Carbrex)
- Broadcast: Individual game URL in address bar #14512 (thanks Inferus)
- Allow both 'fen' and 'user' in '#friend' URL (for the lobby) #14511 (thanks zamfofex)
- Feat: friends link in community #14499 (thanks Inferus)
- Input Moves With Keyboard to Include Berserk #14492 (thanks Carbrex)
- Honor show ratings setings in puzzle history #14466 (thanks pokoli)
- More robust UI build script. #14436 (thanks mkrauskopf)
- Fixed feed page time shows local time instead of UTC #14420 (thanks Carbrex)
- Removed spinner from correspondence challenges #14381 (thanks Carbrex)
- Show dates on dedicated feed page #14375 (thanks Carbrex)
- Fix typos (though "brillant" may be an actual bug) #14351 (thanks RainRat)
- Import new flairs from lichess spreadshop #14345 (thanks TheForkPower)
- Do not add UTCDate, UTCTime tags to study chapter PGNDumps #14330 (thanks shimsangjoon)
- Update ES and TR Dictionary #14329 (thanks thedancinglaundry)
- Lila-openingexplorer: Fix license identifier in Cargo.toml #262 (thanks TimJentzsch)
- Chess-openings: Barry Attack proper #158 (thanks xaverh)
- Chess-openings: Additional moves for the "Reversed Grünfeld" #155 (thanks xaverh)
- Chess-openings: Add ultra-symmetrical English opening Variation #154 (thanks TheForkPower)
- API Docs: Mention Lichess TOS in Bots restrictions page #301 (thanks jalpp)
- API Docs: Add /api/timeline documentation #299 (thanks tors42)
- Lila-db-seed: Seed for coach #44 (thanks Carbrex)
- Mobile: Fix social links #505 (thanks ZTL-UwU)
- Mobile: Improve tablet game info popup #501 (thanks ZTL-UwU)
- Mobile: Fix copypaste error analysis screen #492 (thanks HaonRekcef)
- Mobile: Improve visibility of mainline in treeview #489 (thanks HaonRekcef)
- Mobile: Fix analysis summary name height #487 (thanks ZTL-UwU)
- Mobile: Clickable AcplChart #483 (thanks HaonRekcef)
- Mobile: Add color coding to analysis tree view #482 (thanks ZTL-UwU)
- Mobile: Tv enhancement closes #325 #476 (thanks HaonRekcef)
- Mobile: Profile Bio Enhancement #449 (thanks nav-28)
- Mobile: Reset Clock on new run, fixes #445 #447 (thanks HaonRekcef)
- Mobile: Improve game summary layout #446 (thanks ZTL-UwU)
- Mobile: Add issue template #420 (thanks nav-28)
- Mobile: Home search #419 (thanks nav-28)
- Mobile: New feature: Jump to next puzzle immediately #412 (thanks kpsroka)
- Flutter-chessground: Generate PNGs from lila's SVGs using Inkscape 1.1.2 #28 (thanks tiagoamaro)
- Lila-docker: Added coaches flag to the database seeder #50 (thanks Carbrex)
- Lila-docker: Add berserk script to make bots online #48 (thanks tors42)
- Berserk: Adding import_pgn endpoints #71 (thanks dat-boris)
January 2024
Key changes
- New regularly updated Feed highlights content in the community
- Improved Broadcasts - Added evaluations when viewing all of a round's boards + added features to make broadcasts more discoverable
- Added cloud evals to our public database - Over 14 million positions with analysis are available
- Improved "Play with a Friend" interface - show recent opponents and shareable QR code
- Blindfold and voice improvements - Speaking "clock" will read out clocks, blindfold preference moved to board menu, and more.
API updates
- Added /api/timeline endpoint to get a user's activity feed
- Added endpoint to get a user's broadcasts
- Endpoint to remove a user from a team has moved
Other updates
- lila-fishnet (Play with the Computer) upgraded to Scala 3 and refactored with Typelevel
- Board Editor: You can now specify if en passant is available when setting up a position
- Improved stream detection for YouTube streamers
- Teams can now have flair, like Lichess Swiss
- Lots of Scala and Typescript refactoring
Thanks to our community contributors
- Many language translations added/updated (thanks to many CrowdIn contributors)
- Somali language added (thanks mohamed.taffe and M_DinhHoangViet)
- Responsive rating chart #14312 (thanks akoGit)
- Add time control flairs #14288 (thanks TheForkPower)
- Puzzle rating change hide when disabled #14277 (thanks cmgchess)
- Space between username and rating #14269 (thanks cmgchess)
- Move classification flairs #14265 (thanks TheForkPower)
- More translations on the Blog page #14263 (thanks M-DinhHoangViet)
- QR code on challenge page #14260 (thanks ross39)
- Tweak "Set your flair" #14235 (thanks M-DinhHoangViet)
- Improve clarity of coordinate trainer text #14215 (thanks toneDialing)
- Translate Bullet time control #14214 (thanks M-DinhHoangViet)
- Acpl chart: fix christmastree hover bug #14212 (thanks allanjoseph98)
- Show study chapter coords #14207 (thanks cmgchess)
- Correct name "Asturias" in Flags.scala #14206 (thanks Juanpabl)
- Add puzzle racer and puzzle streak flairs #14201 (thanks TheForkPower)
- Remove comma from team leaders #14196 (thanks cmgchess)
- Change formatting on import game explanation #14193 (thanks TheForkPower)
- Use disused importGameCaveat2 key #14192 (thanks TheForkPower)
- Translation xml sheet changes #14190 (thanks TheForkPower)
- Board editor: Remove half unused En Passant options visible under Safari #14184 (thanks TheMadSword)
- Remove redundant checking #14176 (thanks cmgchess)
- Hide clear btn when no filters #14175 (thanks cmgchess)
- Add en passant option in Board Editor #14165 (thanks TheMadSword)
- Add rotational 2024 flair #14159 (thanks TheForkPower)
- Translate showUnreadLichessMessage text #14158 (thanks M-DinhHoangViet)
- Hide online status when challenging #14157 (thanks cmgchess)
- Add Asturian Flag #14152 (thanks Rabergsel)
- Show blocked message not parsing #14151 (thanks cmgchess)
- Leaderboard border styles #14147 (thanks cmgchess)
- Upgrade chartjs for opening, puzzle dashboard #14143 (thanks allanjoseph98)
- Add Spanish flag (Aragon) #14137 (thanks Juanpabl)
- Translate new player landing page #14135 (thanks M-DinhHoangViet)
- Added additional suspicious URL Shorteners to spam #14129 (thanks Rabergsel)
- Fix draw rate translation #14128 (thanks M-DinhHoangViet)
- Chartjs: Polyfill resizeObserver for safari 12 #14124 (thanks allanjoseph98)
- Redrawing newspaper board in SVG #13591 (thanks shytikov)
- Lila-search: Ignore Scala Metals artifacts #174 (thanks Juesto)
- Chess-openings: Add 'Adhiban Gambit' #153 (thanks TheForkPower)
- Chess-openings: Add a D85 line. Lacking this some D85 are misclassified, e.g. as A34 #152 (thanks jdart1)
- Chess-openings: E43 fix #151 (thanks jdart1)
- Chess-openings: Fix move orders with e6 in the London #150 (thanks HaonRekcef)
- Chess-openings: Improve Move Orders for Rapport-Jobava London and Chigorin #149 (thanks HaonRekcef)
- Chess-openings: Relocate A00 Van Geet Opening: Caro-Kann Variation, St. Patrick's Attack to the other Caro-Kann lines #148 (thanks HaonRekcef)
- Chess-openings: More English Opening Move Order Fixes #147 (thanks cristivlas)
- Chess-openings: Fix English Neo-Catalan Move Order #146 (thanks cristivlas)
- Chess-openings: Add a D85 line (can be reached by transposition) #145 (thanks jdart1)
- API Docs: Fix incorrect types in GameJson.analysis #292 (thanks LukFil)
- API Docs: Bot Handling Draws #276 (thanks sujatrobhadra)
- Mobile: Add analysis context menu #405 (thanks nav-28)
- Mobile: In-game chat feature #339 (thanks julien4215)
- Lila-docker: Docs: command to persist database #41 (thanks Juesto)
- Lila-docker: Add VSCode workspace for easier repo navigation #35 (thanks Juesto)
- Berserk: Move kick team member to /api/ #69 (thanks tors42)
December 2023
Key changes
- Upgraded the Analysis board with Stockfish 16 and added a new engine settings menu
- Added optional flair (emojis) to customize your profile
- Migrating to chart.js from Highcharts
Other updates
- November's games are now available from our public database, bringing the archive to now over 5 billion games!
- New app recommendations for Two-Factor Authentication include 2FAS (Android and iOS), Aegis Authenticator (Android), and Authenticator Pro (Android and Wear OS)
Thanks to our community contributors
- Many language translations added/updated (thanks to many CrowdIn contributors)
- Chartjs migration #13897 (thanks allanjoseph98)
- Chartjs migration fixes #13992 (thanks allanjoseph98)
- Chartjs hotfixes #13973 (thanks allanjoseph98)
- Add direct link for each account setting #14012 (thanks SergioGlorias)
- Clean up translation files #14092 (thanks TheForkPower)
- Add dynamicImport as an engine require #14053 (thanks davidrapoport)
- Fixed tournament requirements styling #14019 (thanks DJoepie)
- Correct blog Like button cut-off on Safari #14007 (thanks zacharyabolton)
- Add berserk icons to arena results list. #13984 (thanks jenningsfan)
- Fix missing translation on help page #13971 (thanks M-DinhHoangViet)
- Fix racer zen alignment and content #13953 (thanks aimorris)
- Fix translation for "Draw rate" and "Draw games" #13943 (thanks M-DinhHoangViet)
- Fix games page overflow #13936 (thanks aimorris)
- Fix safari autoplay text #13935 (thanks aimorris)
- Implement exporting variation pgn #13934 (thanks steptro)
- Translate "Discuss this blog post in the forum" #13932 (thanks M-DinhHoangViet)
- Word-break image credit text to fix layout issue #13928 (thanks soufianeh)
- Remove players in wrong variant on simul update #13923 (thanks aimorris)
- Fix missing translation on Simul & FAQ page #13922 (thanks M-DinhHoangViet)
- Preventing moves list items from flickering and or dissapearing in ex... #13916 (thanks shimsangjoon)
- Show puzzle ID in streak after puzzle is completed #13910 (thanks aimorris)
- Show correct ratings in simul #13909 (thanks aimorris)
- Fix being in zen out of a game with in-game option #13905 (thanks TheMadSword)
- Fix borders on tournament and swiss pairing #13894 (thanks aimorris)
- Openings: Add some English Opening lines, to better handle transpositions #143 (thanks jdart1)
- Openings: Fix classification for Giuoco Piano/Two Knights (C53-C56), add some positions #141 (thanks jdart1)
- Openings: Add a common C54 line (currently misclassified as C50) #140 (thanks jdart1)
- Openings: Add a B13 line (can be reached by transposition) #139 (thanks jdart1)
- Openings: Add A01 line (can be reached via transposition from 1. c4) #138 (thanks jdart1)
- Openings: Add common A90 line #137 (thanks jdart1)
- Openings: Add some Semi-Slav lines to better handle transpositions #136 (thanks jdart1)
- Openings: Add A08 line (was mis-classified as A05) #135 (thanks jdart1)
- Update CI action #288 (thanks M-DinhHoangViet)
- Mobile: Feature: friends popup #337 (thanks papo1011)
- Mobile: Puzzle theme #328 (thanks nav-28)
- Fix SmartChess test #31 (thanks Anupya)
- Add lila-docker restart option #25 (thanks amitdash291)
- Berserk: Correction in check-endpoints.py #68 (thanks saitejag)
- Berserk: Implement /swiss/{id}.trf endpoint #63 (thanks Anupya)
- Berserk: Implement /api/cloud-eval endpoint #62 (thanks Anupya)
- Berserk: Implement /master/pgn/{game_id} #57 (thanks Anupya)
- Berserk: Implement api/challenge endpoints #52 (thanks Anupya)
- Berserk: Implement api/tournament endpoints #50 (thanks Anupya)
- Fix flair objects.xmas-hat #23 (thanks TheForkPower)
- Edit some minor grammatical errors in the Lichess flairs docs #20 (thanks TheForkPower)
- Added Christmas Flairs #15 (thanks TheForkPower)
November 2023
Key changes
- Two-Factor Authentication reminders added for more users. Set it up here to help secure your account
- Better permission management for team leaders
- Improvements to voice control in games, puzzles, and coordinate trainer
- Thematic tournaments created by players can now be rated
- Added zen mode to player TV
- Added new translated languages. Now up to 100!
- Easily gift another player Patron wings via a button on their profile
- Can type a FEN in the top search bar to load a position on an Analysis board
- Can now broadcast up to 64 events at once
- API: User info now includes streamer data
- API: color field added to /api/tv/channels endpoint
- Lots of ongoing work on the upcoming mobile app and backend work to support it
- The Berserk Python API library is now officially supported
- Upgraded to Java JDK 21
Other updates
- Easily setup a Lichess development environment with lila-gitpod. Watch a video on how you can help contribute here
- As a reminder, every month we publish our full game database at https://database.lichess.org/ - It has almost 5 billion games!
Thanks to our community contributors
- Sorani/Central Kurdish added (thanks to many CrowdIn contributors)
- Avaric language added (thanks Hasanalhasani)
- Show puzzle ID in streak after puzzle is completed #13910 (thanks aimorris)
- Fix being in zen out of a game with in-game option #13905 (thanks TheMadSword)
- Fix wiki API failure if extract is empty but still present #13893 (thanks aimorris)
- Add clipboard buttons to embed and fen on study share page #13892 (thanks aimorris)
- Delete topic if first and only post is deleted #13884 (thanks aimorris)
- Update sbt 1.9.7 #13822 (thanks M-DinhHoangViet)
- Cancel promotion after game ends #13807 (thanks xcjackpan)
- Added role for span elements to be aria accessable #13764 (thanks rubinaga)
- Unselect player in personal opening search history upon deletion. #13751 (thanks shermansiu)
- Add Esperanto flag #13732 (thanks xxonx)
- Format dialog.ts #13727 (thanks M-DinhHoangViet)
- Add pre-declined team request when kicking a team member #13706 (thanks shimsangjoon)
- Rating history tooltip symbols #13698 (thanks jamesk14022)
- Correct the mouse hit area on promotion #13652 (thanks awestm)
- Quick fix for broken castling lessons 8 and 9 #13615 (thanks shimsangjoon)
- Bugfix for learn:board setup 6 to not get stuck #13610 (thanks shimsangjoon)
- Add flags of Netherlands Antilles and Canary Islands #13605 (thanks astronasko)
- Update sbt 1.9.6 #13604 (thanks M-DinhHoangViet)
- Changed new tag button style in study, to make it clear it's a button #13600 (thanks Carbrex)
- Sbt 1.9.5 #13598 (thanks M-DinhHoangViet)
- Bump actions/checkout from three to four #13595 (thanks M-DinhHoangViet)
- Add five quotes #13575 (thanks M-DinhHoangViet)
- Study pinned comment: make the close button function more obvious. #13530 (thanks shermansiu)
- Fix YouTube iframe for the racing kings variant page #13528 (thanks shermansiu)
- Add the ability to remove usernames in the personal opening search history. #13518 (thanks shermansiu)
- Fix missing translation on FAQ page #13508 (thanks M-DinhHoangViet)
- Fix study pinned comment spelling typo #13489 (thanks kwang03)
- Remove duplicates between game participants and username search history #13479 (thanks shermansiu)
- Correct the text direction when mixing LTR and RTL text. #13476 (thanks shermansiu)
- Fix how puzzle theme text is rendered in RTL languages #13475 (thanks shermansiu)
- Use CSS to fix how dates are displayed in RTL languages #13474 (thanks shermansiu)
- Fix how dates are displayed in RTL languages #13461 (thanks shermansiu)
- Fix: consistent zen mode for puzzle racer #13445 (thanks ttomczak3)
- Update readme.md #13437 (thanks M-DinhHoangViet)
- Fix key bind for analysis board in blind mode #13431 (thanks ch-iv)
- Fix(classes): make it possible to fully remove invited accounts #13428 (thanks Phrynobatrachus)
- Add provisional rating support with namer for player text. #13397 (thanks Oziomajnr)
- Fix: no indication that infinite analysis is on #13386 (thanks ttomczak3)
- Domains in Vietnam #13379 (thanks M-DinhHoangViet)
- Fix move-vi.json #13378 (thanks M-DinhHoangViet)
- Refactor: annotations on board #13377 (thanks ttomczak3)
- Whitelist ikmail.com (infomaniak) #13370 (thanks YannickYayo)
- Update readme.md 4.7 billion games 2023-aug06 #13364 (thanks hfnhf)
- Study - create chapter - automatic orientation - check PGN player tags for user id #13362 (thanks tors42)
- Fix missing shortcuts in analysis & fix flip - fixes #13332 #13333 (thanks TheMadSword)
- Fix insufficient material draws (fixes #13272) #13315 (thanks TheMadSword)
- Fix draw offers missing when reloading (fixes #13183) #13311 (thanks TheMadSword)
- Autozen (closes #12537) #13304 (thanks TheMadSword)
- Update: improved puzzle fail speech feedback #13301 (thanks ttomczak3)
- Feat: improved puzzle fail speech feedback #13296 (thanks ttomczak3)
- Gracefully handle absence of audiocontext #13287 (thanks dignissimus)
- Fix: move-dest dark board background #13267 (thanks ttomczak3)
- Don't show threats when analysis is disabled #13256 (thanks allanjoseph98)
- Show highest/lowest rating percent equivalence - closes #12631 #13234 (thanks TheMadSword)
- Pass along external engine data when changing pgn #13219 (thanks allanjoseph98)
- Update RU and TR dictionary #13217 (thanks thedancinglaundry)
- Fix: puz landscape for mobile #13212 (thanks ttomczak3)
- Better game phase division in analysis highcharts #13211 (thanks allanjoseph98)
- Feat(i18n): introduce key for voice input + de-DE translation #13202 (thanks zewa666)
- Fix tempban negative time (fixes #13122) #13173 (thanks TheMadSword)
- Fix draw button reenabled upon reloading (fixes #13139) #13158 (thanks TheMadSword)
- Update playerassessment.scala for antichess edge case #13124 (thanks thomas-daniels)
- Allow custom domain email domains pointing to anonaddy.me. #13099 (thanks mamciek)
- Move voice bar to bottom on mobile devices #13046 (thanks TheTrio)
- Fix daily puzzle UI jumping when toggling #12960 #13027 (thanks TheMadSword)
- Fix missing translations (#12872) : #13019 (thanks TheMadSword)
- Fixing missing Swiss tournament translations #12961 #13000 (thanks TheMadSword)
- Add user hosted simuls page #12977 (thanks drybalka)
- Couple Lichess study chapter names w/ pgn event tag #12962 (thanks mikeb26)
- Update dictionary.scala #12942 (thanks thedancinglaundry)
- Rename source 'tournament' to 'arena' in advanced game search #12938 (thanks tirbal)
- Fix for rating range not set to max value when switching to a perf with provisional rating (issue #12801) #12916 (thanks adityaj2003)
- Small improvement - set the first letter of every language to uppercase #12912 (thanks Paul-Etienne)
- Fix top bar challenges notifications accessibility issues #12803 (thanks michd)
- Make conditional premoves clickable #12788 (thanks TheTrio)
May 2023
- New Woodland sound set (thanks Diceroller-is-fire ️)
- Improve board layout for tall windows
- Upload images in community blog WYSIWYG editor
- Fix disappearing chess board in puzzles
- Hide subscription button on your own streamer page
- Fix player must have played their last swiss game toggle
- Improve blog thumbnail readability in lobby when background is picture (thanks Tristen Tomczak, Sean T. Dolan ️)
- Move delete imported game option from action menu to side (thanks MichD ️)
- Fix issue with translations including numbers in certain languages (thanks MichD ️)
- Indicate that 3-fold draw is disabled before 30 were played in swiss games (thanks Sean T. Dolan ️)
- Always include clock times on game import to study
- Broadcast multiboard now has live clocks
- Timeline notifications now continue for topics with 50+ posts
- Community blog comments no longer archived after 1 month
- Add profile link to streamer overview (thanks Marc Pérez de Tudela ️)
- Add background picture gallery (formerly Account menu -> Background -> Transparent)
- Fix puzzle dashboard redirects when voting (thanks Tristen Tomczak ️)
- Fix castle rights issue that prevented move in certain positions
- Improve mobile table layout for various lichess pages
- Add voice recognition mode to puzzles and rounds
- Add Copy to clipboard buttons on broadcast share tab (thanks Tarcan Gul ️)
API updates
- Allow pending simul retrieval when authenticated
- Use timed delay for move streams
April 2023
- Fix Copy PGN tab navigation (thanks lsap ️)
- Fix Copy PGN issue on Chrome and Safari
- Add rating restrictions to Simuls (thanks Denys Rybalka ️)
- Fix description rendering issue on Broadcast page
- Show provisional rating indicator on create game modal (thanks Trevor ️)
- Hide puzzle difficulty control for anonymous players
- Do not close modal when dragging outside of it (thanks Tristen Tomczak ️)
- Fix Crazyhouse mate issue
- Add new mpchess piece set (thanks Maxime Chupin ️)
- Create unrated tournaments via the tournament manager
- Only send one correspondence email per day
- Remove alert on completion of replayed puzzles (thanks Enrique Betancourt ️)
- Add new kiwen suwi piece set (thanks Koko ️)
- Remember puzzle difficulty (thanks piyushj ️)
- Fix issues with user-drawn arrows and circles
- Choose external engine with URL
- Fix embedded PGN viewer with transparent background (thanks Tristen Tomczak ️)
- Disallow rating ranges on seeks by provisionally rated users
- Fix correspondence clock in RTL languages
API updates
- Add ratingDiff to /api/stream/event (thanks Trevor ️)
- Add /api/study/{id}/{chapter}.pgn alias to download study chapters with CORS
- Add start position to swiss api endpoint
March 2023
- Fix correspondence email notification
- Allow additional time per player on simul clocks
- Screen no longer glitches on engine toggle (thanks TheMadSword ️)
- Fix Paypal subscription issues
- Redirect truncated study comment to full (thanks Calvin Josenhans ️)
- Fix loss result handling for PGN imports
- Fix Screenshot current position error
- Fix multiple overlay issues involving analysis hamburger (thanks TheMadSword ️)
- Close manual pairings swiss exploit
- Lower minimum player rating from 600 to 400
- Show more time button on smaller screens
- Link daily puzzle puzzle theme/opening
- Fix negative votes in puzzle DB
- Learn menu button now links to Chess basics
API updates
- Expose declined team join requests via api
February 2023
- Fix issue with Learn from your mistakes on checkmate
- Adjust draw move thresholds for variants
- Mention '?' keyboard shortcut in FAQ (thanks TheMadSword ️)
- Block particularly weak passwords on signup and login. If you are affected, you will have to request a password reset or login via email and change your password. If you are using a weak password or the same password as on other services, strongly consider changing it. You can also enable two-factor authentication for additional security.
- The new mobile app is seeing steady progress and has opened up for contributions. If you are interested, check out 'good first issue' or join the #lichess-mobile-app channel on Discord.
API updates
- Endpoint to autocomplete users
- The streamer endpoint now includes the streamer's image
- Correct API responses and send full FEN for /api/stream/game/{id}. (thanks Erdogan Seref ️)
- Fix issue with concurrent API streams
- Include player info in /api/stream/game/{id}
- Expose declined team join requests via api
January 2023
- Improve speed and safety of the chess library used by Lichess, and fix subsequent bugs
- Tutor improvements (still work-in-progress, not released)
- Fix rematches of anonymous players playing against bots
- Improve support for RTL (Right To Left) languages
- Show number of team messages remaining to team leaders
- Link the BETA opening viewer in the top "tools" menu (replaces the "Opening Explorer" link)
- Fix bug when games where not rendered on old Lichess blogs
- Split Overview, Schedule, and Leaderboard on broadcasts into separate tabs
- Add preference to disable the notification bell sound
- Don't expand game links in PGNs posted in the forum
- Approved streamers going live on YouTube will now be detected more quickly and reliably
API updates
- Game export endpoints serve more games per second
- Allow to filter swiss games by player name
- Optionally fetch the accuracy of a game
- JSON Game exports now optionally provide clock times with centisecond precision
- Study exports now optionally include non-standard PGN tags to specify the study orientation and URL
- The arena results endpoint now optionally provides the exact points history
- The team members endpoint now includes the member's join date
December 2022
- Stabilise and fix many bugs introduced by the Scala3 migration
- Update the Fantasy and Spatial piece sets
- Add the Celtic piece set
- Allow syncing dark mode with the device setting
- Insights now include Correspondence games
- Improve developer experience by increasing client build speed. For more information refer to our end of year blog post
- The new notification preferences now allow precise control over which notifications you want to receive and how
- You can now subscribe to streamers on their streamer page (click the microphone on their profile) or the streamer overview to get notifications when they start streaming
- The opening explorer now includes all rated Lichess games (instead of just a sample)
- Insights can now be viewed in mobile browsers
- Team messages no longer impact the inboxcontact list
API updates
- The oauth endpoint now allows specifying a username hint
- Add an endpointto withdraw from or pause a swiss tournament
November 2022
- Upgrade the version of Scala (the programming language that much of Lichess uses). For more information refer to our end of year blog post
- Coordinate trainer: allow to only practice on a subset of the board
- Better translation for Broadcasts
API updates
- Disallow kicking team creator (sync with the GUI)
- Allow username (instead of id) in kick API
October 2022
- Add Disguised piece set (makes all pieces look the same)
- Bulk work on the BETA opening viewer
- Better translation for the API access token page, where you can see which application you have connected to with your Lichess account
- Introduce the notion of game accuracy, visible on analysed games
- Swiss tournaments now allow manually specifying the exact pairings for each round
- Importing a game on the analysis board now imports sidelines
- The analysis graph below games now highlight inaccuracies, mistakes, and blunders with colored dots when hovering over their count
- Add keyboard shortcuts (numbers 1 to 6) for glyph annotation in studies. Press "?" to see all keyboard shortcuts.
- Adjust draw streaks thresholds for variants
- Improve accessibility of puzzles
API updates
- Add puzzle by ID endpoint. If you need to access more than a few hundred puzzles, download the puzzle database instead.
- Swiss tournaments now allow specifying the exact pairings for each round
- Bulk pairings now support custom positions
- Add endpoint to berserk in tournaments
- The board state endpoint now indicates when the opponent disconnected and a win may be claimed
- Add endpointfor the popularity history of a position (used by the BETA opening viewer)
- Remove online status from user endpoints. Use the real-time users status endpoint instead.
September 2022
- Revoke all push notifications on password change and 2 Factor Activation, which we strongly suggest to toggle on your account
- Only allow draw in swiss games starting from 30 moves
- Tweaks to pair small tournaments more often
- Added Home/End keyboard shortcuts to go the the start/end of a game
- The quote button in the forum now only quotes the selected text
- Add allow-list option to arena and swiss tournaments
- The team introduction shown in the teams list is now separate from the team description
API updates
- Switch to the Alpha 2 version of our external chess engine protocol for analysis
- Add options to forbid aborts, rematches, giving time, and claiming wins for API created games
- Allow restricting which users can join an open-ended challenge
- Add endpoint to follow the status of multiple games at once
- Allow pairing API users in tournaments using the join endpoint with the "pairMeAsap" parameter
August 2022
- Preserve orientations for study chapters across page navigations
- Translate the swiss tournament presentation page
- Keyboard input now supports ICCF notation and voting on puzzles using "upv" and "downv". You can activate keyboard input on the Game Behaviour preference page.
- Fix crashes when using the local Stockfish
- Support many more languages when displaying dates and duration
- Send patron donation receipts to the correct email after it was changed
- Respect the piece set and theme when exporting a game as GIF (with a hard G)
API updates
- The user endpoint now supports oauth to get the follow and block relation with the user
July 2022
- Remove leader status when they quit their team
- The coordinate trainer now has an untimed mode and allows hiding coordinates and pieces
- Let Anonymous players choose the puzzle color
- Many improvements to the not-yet-released Tutor feature.
- Improve support for RTL (Right To Left) languages
- Hide non-public team forum posts from user profile activity
- Add transgender flag
- Client-side optimisations
- Expand user blog links to games using our new pgn viewer
- Fix xss in advanced search form (found by codeql)
- Add puzzles by openings and allow selecting the color when playing opening puzzles
- Allow using an external chess engine for analysis (still in alpha, ask us about it in discord)
- Add support for Right-To-Left languages (try out Arabic for instance)
- New Insights metric: Accuracy%, based on Stockfish evaluations. Example: Accuracy by game phase
- New Insights metric and dimension: Time Pressure. Example: Accuracy by time pressure
- New Insights opening family dimension. Example: Tactical awareness by opening family during the opening and middlegame, when playing white
- New Insights opening variation dimension. Example: Performance in Sicilian Defense variations when playing black
- Add a new page to list team members
- Redesign game analysis tabs and make computer analysis more prominent
- Add more share options and image exports in game analysis and studies
- Add premoves to blind mode (non-visual UI)
- Improve analysis and study in blind mode
- Honor rating visibility preference on challenge pages
- Show fewer captchas whenever possible
- Better handle chat/notes input focus
- Add clone chapter button to studies
- Remember which study is in REC state
- Let all study contributors delete each other comments
- Fix automatic orientation in study PGN imports
- Fix frontpage featuring of variant tournaments
- Improve frontpage game creation dialogs
- Fix retry on stalemate in practice exercises
- Add keyboard shortcuts to puzzles (press ? for a help dialog)
- Fix clock start in mini-boards
- Add last puzzle to history in Puzzle Racer
- Move archived classes to a distinct page
- Reduce all animations when requested by the browser
- Suggest other languages from the user's country (using request headers, not IP)
- Schedule monthly 3-check tournaments
- Various API improvements (and more fixes and new endpoints)
- Plenty of tweaks, fixes and performance improvements
- New and improved moderation tools
- Published more games and puzzles
API updates
- Add more simul data to API output
- Add follow:read scope
- Add endpoint to create and join a puzzle race
May 2022
- Upgrade server analysis to stockfish 15
- Make browser javascript even smaller and faster
- New lobby UI code
- Improve scroll wheel to browse moves
- Improve PGN parsing and game import
- Fully support Microsoft Edge 91+
- Better hide ratings in studies
- Remove join requests from closed teams
- Fix class student invite form
- Add class translations
- Fix team forum reactions
- Add team forum permissions
- Add official variant teams
- Improve practice translations
- User blog Atom RSS feeds
- Allow commenting on user blogs
- Bot accounts can no longer use private messaging
- Allow creating broadcasts up to 12 months in advance
- Allow markdown with tables in team descriptions
- Rewrite and improve the coordinate trainer
- Add new mode "name square" to the coordinate trainer
- Add realtime clock in analysis board during realtime replay
- Improve appeal process
- Apply Mark Glickman fix on Glicko2 implementation
- Make user tournaments more visible
- Upgrade main server hardware
- Improve opening explorer
- Link personal opening explorer from profile pages
- Always show swiss tournament creator
- Allow up to 128 user study topics
- Rewrite all charts code
- Add setting to allow challenges from anonymous players
- Add keyboard shortcuts and keyboard input to puzzles
- Donate with the new PayPal API
- Remove recent forum posts from homepage
- Remove completion rate from user profiles
- Improve Android push notifications
- Improve accessibility with "tab" and "tablist" roles
- Tweak and improve the position editor
- Add puzzle history view to puzzle racer
- Notify players that a tournament is about to start
- Increase login rate limits for classrooms, add client-side limiting
- Infinite scroll for forum topic lists
- Add help modal to game pages (press ?)
- Add new chess set "Anarchy chess candy"
- Show rating distribution for any player
- Lots of new translations via Crowdin
- Lots of bugfixes and optimizations
- Moderation tools upgrades
API updates
- Allow canceling API games from API
- Serve up to 300 incoming challenges
- Fix bot/board challenge rematches
- Allow bot accounts to challenge AI from UI
- Read user notes
- Add initial player time to TV broadcast message
- Swiss tournament stats
- Allow exporting user games with literate flag
- New moderation APIs
March 2022
- Scale the tournament system to allow even larger tournaments
- Add correspondence email notifications
- Quicker note writing on player profiles
- Fix simul host status and profile activity timeline
- Improve lag compensation
- Better detect, counter and ban lag tampering
- Improve PGN parsing
- Make insights translatable
- New machine learning anti-cheat assistant
- Show date of opening explorer last update
- Add broadcast calendar and menu
- Stable ordering of ratings in user popups
- New practice lessons
- Better user blog ranking
- Improve communication moderation
- Allow correspondence open challenges
- Remove min games requirement for hourly variant arenas
- Add a "Next chapter" button in studies
- Fix puzzle streak can continue after failure
- Combine buttons for claiming threefold repetitions and offering draws
- Fix copying PGN in blind mode
- Add new API endpoints for team join requests
- Improve front page layout when ratings are hidden
- Improve keyboard move input
- Allow creating personal tournament access codes
- Add homepage language URLs such as lichess.org/es
- Allow deleting all variations in a study chapter
- Disallow canceling API games
- Always show the creator of a tournament
- Fix bypass of markdown image whitelist (Thanks to red0xe for reporting)
- Add official variant teams and link them in variant tournaments
- Allow keyboard move in puzzles
- Improve scrolling moves for touchpads
- Quickly select game players in the opening explorer
- Add Swiss API endpoint
- Lots of new translations
- Lots of small bugfixes and optimizations
December 2021
- Play vs AI now uses the Lichess opening database for more varied and natural openings on the respective level and time control. Watch out for bullet tricks!
- Preview colors and positions of challenges
- Optimize and carefully parallelize tournament handling
- Fix a way that attackers could use to misrepresent their OAuth app origin (Thanks to Sam Curry for reporting)
- Redesign opening explorer preferences and allow selecting date ranges for the masters and Lichess database
- Update masters database of the opening explorer
- Release fishnet 2.5.0, updated to provide Stockfish 14.1 for server-side analysis
- Fix "hide all ratings" setting not respected in some places
- Fix color balancing leading to long white/black streaks in some cases
- Work around (mostly mobile) browsers sometimes not loading board images
- Improve daily puzzle selection
- Select dark theme by default for new users
- Increase move limit for server side analysis
- Increase maximum hash table size for local analysis
- Show unread messages from moderators instead of the lobby, if any
- Lots of new translations
- Lots of small bugfixes and optimizations
- Update Terms of Service, codifying our evolved policies and practises throughout the years
API updates
- Add access token bulk testing endpoint
- Add API for participant to leave a tournament
- Allow editing Swiss tournaments via the API
- Fix /api/bot/online
- Make OAuth authorization prompt compatible with otherwise unsupported browsers
October 2021
- Personal opening explorer (also works on other players)
- Improve Masters and Lichess opening explorers
- New setting to hide all ratings on the entire site
- Increase deep server analysis limit per user to 40 per day and 200 per week
- Show textual knowledge in the analysis board using WikiBooks
- Allow casual (unrated) puzzle play
- Better display tournament lanes
- Allow clearing notifications
- Better order featured blog posts
- Highlight original poster name in forum threads
- Allow downloading all arena and swiss tournament games of a single player
- Fix arena tournament pagination bounds
- Add arrows when hovering possible moves in analysis
- Fix analysis threat mode should not play variations
- Add a close button to analysis "learn from your mistakes" section
- Fix game page board displacement on first move in mobile view
- Fix first game not being counted in a play streak
- Immediately revert last move that didn't reach the server before flagging
- Only play notification sounds once over all tabs
- Allow chess unicode symbols in text fields
- Allow some fancy unicode symbols in study annotations
- Respect click vs drag pieces setting in analysis
- Fix tablebase must be disallowed in correspondence analysis
- Enable markdown table in class news
- Fix insights mini-boards
- New DMCA / I.P. Takedown Notice form
- Lots of new translations
- Updates on moderation tools
- Lots of bugfixes and optimizations
API updates
- Fix challenge accept API endpoint when challenge was canceled
- Serve more current tournaments
- Update the broadcast streaming endpoint on tag change
- Add "verified" flag to user APIs
- Include closed user accounts in /api/users (with minimum info)
- Add "player" filter to arena games download endpoint
- Add sort parameter to user games export
- Add ongoing games to user games export (with some delay to prevent cheat usage)
September 2021
- User blogs
- Use an animated Lichess logo instead of loading spinner
- Upgrade the AI opponent to Fairy-Stockfish 14
- Hide the followers count on user profiles
- Recompute swiss sheets after ToS violation
- Keep board zoom after logging out
- Better avoid similar entries in timelines
- Better clean up user inputs to filter out weird characters
- Host user images (blogs, streamers, coaches) on a new server
- Keep track of declined team requests
- Fix YouTube embeds
- Improve study embeds
- Allow downloading all rounds of a broadcast as PGN
- Improve featuring of swiss tournaments on homepage
- Improve the tablebase explorer
- Prevent a team creator from being kicked by another leader
- Prevent changing the tournament game type after start
- Prevent arena berserk in extreme time controls
- Better validate imported PGNs with ambiguous moves
- Improve homepage lobby on mobile devices
- Fix 3D pieces dragging elevation
- Let closed accounts export their studies
- Even more puzzles generated
- Lots of new translations
- Updates on moderation tools
- Lots of bugfixes and optimizations
API updates
- Download all rounds of a broadcast as PGN
- Download one round of a broadcast as PGN
- Add games to the broadcast round JSON API
- Broadcast streaming endpoint, the best way to get updates about a tournament
- Filter tournaments of a user by state: created, started, finished
- Flag to get ongoing games in the games by users endpoint
- Expose authenticated user language in preference API
- No longer expose online status of users. Use real-time user status instead
August 2021
- Upgrade to Stockfish 14 with smolnet for local analysis
- Show current position stats in the opening explorer
- Make it easier to fully enable/disable computer analysis
- Fix trophy display on profile pages
- Display game result in analysis list of moves
- Show piece promotion in chess captchas
- Add forum quoting feature
- Fix rare double-game issues with mobile app
- Add a "Board" PGN tag to studies
- Display the reason why a game was drawn
- Show material diff in analysis and study pages
- Prevent device sleep on ongoing game pages
- Add marathon top 500 trophy
- Add study deletion confirmation
- Add study staff picks page
- Improve accessibility of studies and gameplay
- Improve accessibility and keyboard control in dialogs
- Generate 24 tournaments a day for the Lichess Swiss team
- Improve game and study embeds in the forum
- Search for players by rank in tournaments
- Improve team administration UI
- Add a team forum visibility setting
- Remove the team location field
- Limit team messages to 7 per week
- Make it easier to unsubscribe from team messages
- Fix chess bot rematch
- Improve visibility and feedback of the rematch button
- Rewrite the videos updater
- Fix multiboard view of broadcasts
- Fix 3D board arrows
- Prevent crazy unicode symbols in some user texts
- Replace finished games with new ones in the games pages
- Make flags design more consistent
- Fix continuation bug in Puzzle Streak
- Lots of new translations
- Lots of updates on moderation tools
- Lots of bugfixes and optimizations
API updates
- New endpoint: list of challenges
- New endpoint: list of online bots
- New endpoint: claim victory when opponent leaves
- New endpoint: join a Swiss tournament
- New endpoint: fetch the game chat
- New endpoints: follow and unfollow players
- Add a keepAliveStream flag to the challenge endpoint
- Allow the board API to play Blitz games in direct challenges or vs AI
- Add wdraw, bdraw, wtakeback and btakeback flags to bot/board game states
- No longer publish the language in the user object
July 2021
- Upgrade to Stockfish 14+
- Improve accessibility of the analysis board and the opening explorer
- Improve keyboard navigation
- Highlight own messages in chats
- Add Zen mode to Puzzle Storm & Puzzle Racer
- Fast piece animation for Puzzle Storm & Puzzle Racer
- Fix little bugs in study interactive lessons
- Improve simul responsiveness
- New OAuth PKCE API (examples)
- Add user performance API endpoint
- Let the bot/board API accept open challenges
- Fix piece set choice in game embeds
- Fix nested tooltips
- Add evaluation range to Chess Insights
- Fix coordinates trainer graph
- Show piece color in challenges widget
- Add manual currency selector to /patron
- Improve correspondence rematches
- Replace slack with zulip
- Improve broadcasts UI
- Remind coaches, streamers and teachers to use 2FA
- Improve moderation tools
- Many fixes and optimizations all around
- Tons of new translations via Crowdin
June 2021
- Improve board display to avoid blurriness and missing images on some setups
- ZEN mode remains after the game completes
- Show puzzle themes in replay mode
- Correspondence seeks for the board API
- Support PKCE for the API authentication, allowing new clients without a server
- Allow team leaders to send up to 6 PMs to all their members every day
- Let class teachers close accounts of managed students
- Add Zulip integration
- Improve coordinate trainer transitions
- Filter coaches by country
- Better display long usernames around mini-boards
- Fix style of user games advanced search
- Fully translate swiss tournaments
- Fix analysis chart bugs
- Hide evaluation bar on checkmate in puzzles
- Allow markdown in team descriptions
- Include missed mates in "Learn from your mistakes"
- Add endgame positions to the board editor
- Manually start private races
- Make the puzzle selector more resilient
- Allow disabling move navigation by scrolling on the board
- Exclude bots from the active players leaderboard
- Many bug fixes, optimizations and source code improvements
- New translations via Crowdin
- Show material difference in responsive mobile view
- Fix puzzle streak infinite tries bug
- Allow browser extensions to interact with the analysis module
- Allow setting orientation in multi-PGN study chapter import
- Fix board orientation in Racing Kings correspondence analysis
- Add flip board for puzzle storm, puzzle streak and puzzle racer
- Fix double tap on Safari
- Enforce 2FA for all moderators
- Improve speech synthesis
- Improve non-visual user interface (blind mode)
- Allow donations in native currencies
- Allow gifting Patron wings to other players
- Automatically close accounts of ragequitters after some warnings
- Fix lobby filters for anonymous players
- Upgrade server-side and client-side Stockfish to halfkav2 NNUE
- Make the coordinate trainer board resizable
- Lots of improvements on moderation tools
- Add UI for downloading a user's games
- Fix chess captcha race condition
- Improve zen mode and add it to puzzles (press z)
- Fixes and improvements on the learn module
- Better select daily puzzles
- Allow players to opt out of forum mentions
- Improve language detection
- Better prevent duplicate forum topics
- Show clock states in analysis move-time charts
- Show game note snippets on user game lists
- Move all icon font characters to unicode private area
- New set of API endpoints for managing broadcasts
- Tons of tweaks and fixes and optimizations all around
- New translations via Crowdin.
May 2021
- Optimized javascripts for faster page load.
- Removed google fonts entirely.
- Team battles can now be password protected.
- Better mitigate zalgo text.
- Improved moderation tools.
- Fixed username automatic links.
- Cherry-picked puzzles accessed by direct link should now be unrated.
- Improved the arena and swiss tournaments requirements display.
- Fixed user rating history API.
- Allowed administrators to re-open closed teams.
- New API to stream real-time moves of any game.
- Add support for prefers-reduced-motion: reduce.
- Added Catalan flag.
- Improved accessibility.
- Improved spectator lists and chat viewers.
- Added berserk icon next to username in real time.
- Fixed a bug with a large number of events promoted on homepage
- Fixed Safari bug with double-tap zooming.
- Let simul hosts timeout players in their own chats.
- Fixed image sizing in team descriptions.
- Added keyboard shortcuts for next/previous chapters (n /p ) in studies
- Allowed scrolling with the mouse scroll wheel on Stockfish live analysis variations.
- Better handle downloads of arena/swiss exports.
- Remove gap in the lobby when no simul is available.
- Fixed broadcast description XSS.
- Added distinct OAuth scope for moderator endpoints.
- Ensured that tournament from position is casual.
- Fixed missing first move sound on some mobile devices.
- Fixed a bug with player points in the swiss API.
- Prevented overlapping hyper/ultra bullet tournaments.
- Allowed showing 0 engine lines in client-side analysis.
- Added mongodb index script to improve dev onboarding.
- Fixed correspondence variant challenges can't be rated.
- Made study glyphs descriptions translatable.
- Fixed sound preloads when silent is selected.
- Only show actually started games in broadcast multiboards.
- Added DSB rating to user profile.
- Fixed BOT API draw response.
- Added optional estimated start time for simuls.
- Fixed accessibility blind mode cookie duration.
- Always show official Lichess tournaments on swiss homepage.
- Better handle deleted accounts.
- Misc style and performance tweaks.
- New translations via Crowdin.
April 2021
- Rewrite the broadcast module, to organize rounds by tournaments
- Improve Puzzle Streak sounds
- Add Puzzle Storm/Racer/Streak events to user profile activity
- Add best Puzzle Storm/Racer/Streak scores to user profile
- Make the current Puzzle Streak persistent
- Fix Puzzle Streak scoring bug
- Fix mobile app unread messages count
- Many, many new moderation tools
- Allow hiding team members and forum from non-members
- Add and improve API endpoints
- Improve the appeal process
- Improve the puzzle rating system
- Allow kids of the same class to send messages to each other
- Stop using mailgun to send emails
- Fix race condition in study description updates
- Fix featuring of titled players simuls
- Fix analysis annotation on castling
- Fix flipping the board editor
- Better hide author of deleted forum posts
- Internal vendors and libraries upgrades
- Misc server-side optimizations
- Misc user interface tweaks and fixes
- Translate notifications
- Add Zen mode to puzzle and coordinate training
- Redesign coordinate training
- Improve typescript typing and strictness
- Improve personal data export
- Automatically close accounts on worse cases of poor in-game behaviour
- Replace reCaptcha with hCaptcha
- Allow reporting a forum post
- Redirect streamer profiles to twitch/youtube directly when streaming
- Raise server-side analysis limits: 35/day and 160/week
- Better scrub user data upon GDPR erasure request
- Add RCF and CFC ratings to user profiles
- Lock swiss variant and clock after tournament start
- Improve swiss homepage
- Fix chat input persistence
- Fix tablebase display of 8 piece game end positions
- Improve language selector
- Allow importing up to 32 PGN study chapters at once
- Automatically set chapter orientation in study PGN imports
- Improve homepage event system
- Improve on-site documentation
- Remove team join requests on account closure
- Fix learn UI bugs
- Better puzzles for provisional players
- Allow sorting own studies alphabetically
- Many new translations
March 29th, 2021
- New feature! Puzzle StreakSolve progressively harder puzzles and build a win streak. There is no clock, so take your time. One wrong move, and it's game over! But you can skip one move per session.
- Fully restore the opening explorer which was lost in a data center fire
- Analyse games of official broadcasts automatically
- List all Swiss tournament pairings by round
- Add download links to Swiss tournament: TRF file, games, and results
- Add download links to Arena tournaments: games and results
- Improve class students random name generator
- Allow former students to become class teachers
- Fix Puzzle Racer highscore in profile activity
- Improve moderation tools
- Link the Patron page from the top menu
- Improve texts on the appeal page
- Fix updating a player profile bio
- Better normalize and handle IP addresses
- Fix self-XSS in Oauth App form
- Detect and negate puzzle cheaters
- Reporting Lichess redirects to the contact page
- Fix links on the tournament schedule
- Tweak Arena tournament UI to save space
- No longer feature off-topic forum posts on homepage
- Allow Swiss tournaments to start with just 3 or even 2 players
- Fix display bug when a Swiss tournament has as many rounds as it has players
- Add failed premove detection to Puzzle Storm and Puzzle Racer
- Fix the Study export API endpoint
- Improve the programmatic API documentation
- Improve selection of the daily puzzle
- New translations via Crowdin
March 22nd, 2021
- The result of finished games is now visible in the game list of a broadcast.
- Users can now delete their own forum posts.
- Streamer links for ongoing streams will now lead directly to the Twitch/YouTube stream instead of the Lichess streamer page. This includes: 1. Front page streamer links, 2. Profile Streamer links, 3. Links on lichess.org/streamer.
- BOT accounts no longer allowed to make broadcasts.
- Broadcast games will now reload upon a game starting or finishing.
- In an ongoing broadcast if new moves arrive, they will automatically become the mainline and any other moves the player entered will become a variation.
- Updating broadcast meta-data will no longer stop the broadcast.
- Tournament IDs now included in games downloaded via the API.
- Tweak to the "wrong move" sound in puzzle racer.
- Tweaks to the Puzzle Storm and Puzzle Racer streak interface
- The maximum puzzle racer score is now 135.
- Tweaks to the Alpha piece set.
- Puzzle racer activity now appears in the user activity feed on profiles.
- Open challenges created via the API can now be rated.
- The patron page now mentions that Lichess is registered with Benevity.
- "Marathon Survivor" trophy removed from profiles.
- Puzzle Storm and Puzzle Racer now tell you which color pieces you will use for the run at the beginning.
- New API endpoint for the daily puzzle.
- Moves that have arrows are now marked as such in the move list of studies/broadcasts.
- Fixed a typo in the FAQ.
- New translations via Crowdin.
March 17th, 2021
- New feature: Puzzle Racer (read more about it)
- Show which games are ongoing in broadcasts
- Fix some broadcast sources
- Improve moderation tools
- Server performance optimizations
- PV line toggler in analysis board
- Improve Lisp sound set
- Fix lobby UI when playing more than 100 games
- Default to rated seeks for new users
- New API endpoint to download all studies of a user
- Translations via Crowdin.
March 13th, 2021
- Deal with a data center fire
- Display and export all draw offers
- Show board previews in local analysis lines
- Fix some opening names
- Add Stockfish NNUE setting in analysis board
- Upgrade Stockfish NNUE
- Improve style of analysis annotations
- Improve moderation tooling
- Fix main navigation menu on setups with touch screen and pointer
- Add "slow" filter to Puzzle Storm history page
- Add FAQ history of lichess creation
- New sound theme "Lisp" by EdinburghCollective
- Tweak Puzzle Storm sounds
- Study fixes
- Private team descriptions
- Documentation for streamers, broadcasts, appeals and reports
- Better cache local Stockfish binary
- Fix Arena user links on touchscreen
- BOT accounts no longer allowed to post coach reviews.
- Translations via Crowdin.
March 4th, 2021
- Fix DGT integration connectivity issue when reloading the page
- Allow importing PGN with non-standard annotations
- Improve and add new moderation tools
- Fix link to castling explanations
- Improve design of the contact page
- Add new appeal page
- Fix enpassant square in from-position rematch
- Fix translation in user activity feed
- Add links to chat etiquette and forum etiquette
- Fix color-scheme on transparent theme
- Disable on-the-board annotations when computer analysis is disabled
- Fix FEN validation when creating a game from position
- Fix victory screen on lichess.org/learn
- Fix in-browser stockfish analysis of Atomic games
- Improve memory management of in-browser stockfish
- Fix disabled rematch button was sometimes still clickable
- Remove legacy onesignal push notifications
- Forum database optimizations (removed f_categ.pos index)
- Upgrade to latest scala 2.13.5
- Automatic twitch API token renewal (better stream detection)
- Fix chat timeout message
- Streamline kicking several members out of a team
- New translations
- Analyse more games automatically for cheat detection
- Optimize homepage seeks
- Translations via Crowdin.
February 28th, 2021
- Added small circular icons that appear over the pieces that reflect a inaccuracy/mistake/blunder on a game analysis page. They can be toggled on and off in the settings.
- The color of moves in the movelist will change to reflect an inaccuracy/mistake/blunder.
- Added a new stand-alone page to team battles that shows team information such as players, score, performance, etc. Accessible at https://lichess.org/tournament/[Tourney ID]/team/[Team name]
- Fixed a link on lichess.org/contact that explained castling.
- Fixed a bug that caused Casual swiss tournaments to not appear in user activity
- Fixed a bug that was breaking some user's custom backgrounds.
- You will have to hover over one of the menu buttons at the top of every Lichess page to open it. This will hopefully prevent accidentally opening it while playing a game, doing a puzzle storm run, etc.
- Team forum post will now be slower to auto-archive.
- Translations via Crowdin.
February 23rd, 2021
- Stockfish 13 implemented for local analysis. Note that some browsers will default to a previous version. More details are available here.
- fishnet v2.2.5 released, which now uses Stockfish 13.
- Zen mode is now possible for puzzles.
- Team leaders will now see a link to a team etiquette page on team pages.
- Established accounts can now only join 50 teams. New accounts will have a maximum of 15 that slowly rises over time. More info here.
- It's now possible to enter Lichess game IDs as the source for a broadcast. Up to a maximum of 64 can be entered.
- Daily puzzles will now be more difficult.
- A privacy preferences menu option for receiving PMs was changed from "never" to "only existing conversations" to better communicate what it does.
- Deleting a private message thread now prevents new posts if the user's preferences are set to "only existing conversations."
- The text that appears to explain puzzle up/down voting will no longer appear once the user's puzzle rating is established.
- Fixed a small bug with the practice icon for "Checkmate Patters IV."
- Fixed a bug with the 3-move delay on live game API exports that was causing new moves to arrive inconsistently.
- Added support for non-standard "won on time" termination tags in chess.com PGNs.
- Fixed a bug with chat timeouts.
- Data from a user's Puzzle Storm dashboard can now be accessed via the API.
- The Patron page was changed to make it clear that if a user donates while logged in their patron status will be public.
- Fixed a bug with the patron page where users were not redirected back after logging in to donate.
- Bot accounts will now get a "Bots can't join tournaments" message if they try to join.
- Fixed a bug with insights movetime filters.
- New translations via Crowdin.
February 9th, 2021
- Added Horsey Piece Set and board.
- Fixed a bug that was briefly giving the wrong result for games that ended with one player running out of time. More info here.
- Failed puzzles will now be filtered to the top of the puzzle storm ending page.
- Fixed a bug that was showing the wrong color for BOT titles on puzzles.
- Fixed a bug with selecting the time control in anonymous games.
- Fixed a bug with game completion percentage.
- Only BOT accounts will now be able to use the BOT-related reasons for declining a challenge.
- The API to start the clocks of games can now only start API created games.
- It's now possible to start all the clocks of a bulk API challenge at once.
- It's now possible to send a custom private message along with the API call that makes a challenge for a user.
- Entering an incorrect password to join a tournament will now show a message saying "incorrect password."
- Fixed a bug that was causing the ratings tags of imported games to not import.
- Added official under-1300 Hourly tournaments.
- Fixed a bug that caused the capture sound to not play for the opponents moves during Puzzle Storm.
- Forum posts in team forums will now be featured for longer.
- Fixed a rare bug that could occur when both players offered a draw during a three-fold-repetition.
- The board resize handle is now hidden after a Puzzle Storm run begins.
- It's now possible to cancel a team join request.
- Fixed a bug with the "playing" filter on broadcasts.
- Fixed a bug that was causing fishnet nodes to crash.
- Tweaked server analysis to make it more efficient.
- BOT accounts now able to play API bulk-challenged games.
- Bulk paired API games no longer count for sandbagging detection.
- Character limit for team descriptions raised to 4000 from 2000.
- New translations via Crowdin.
February 5th, 2021
- Reworked studies entirely to work around a MongoDB bug that had forced us to disable them. The study changes broke multi-board previews but they will be fixed with the next site update. Requested analysis will also be fixed.
- Bulk pairings now possible with the API. More than one challenge can be sent with a single API call.
- Weekly analysis limits raised to 150 from 120.
- New API endpoint to update team battles.
- The page that finds puzzles taken from the games of a certain user will no longer show puzzles from closed accounts.
- Fixed a bug with the "go deeper" button on computer analysis.
- Sped up the ending animation for Puzzle Storm.
- Games served via the API should now arrive 50% faster.
- Ongoing games will now be given for all game exporting APIs with a small move delay.
- Puzzle Storm runs now expire after 2 minutes if not started.
- The message that users receive when they look for puzzles from their games and find none will now include "You have no puzzles in the database, but Lichess still loves you very much."
- Fixed a bug with mouse wheel scrolling in puzzles.
- Fixed a bug that was giving incorrect team performances for team battles.
- Added a link to a page about different ratings systems to the FAQ section about what rating system Lichess uses.
- Small change in wording for the description of the "Discovered Attack" Motif.
- Added a link to the BOTs blog post to the page for community BOTs.
- Clicking on a user's puzzle rating no longer takes you to your own puzzle dashboard.
- Closing a team now automatically denies all open join requests.
- Puzzles arrived at via a direct link are now unrated.
- Removed the Bongcloud Trophy.
- New Translation via Crowdin.
January 28th, 2021
- New Feature: "Puzzle Storm."
- A new drop-down menu on the homepage called "Puzzles" featuring Puzzle Storm and the Puzzle Dashboard. Regular Puzzles have also been moved to this section from "Learn."
- Puzzle Storm attempts added to user activity feed.
- Fixed an XSS vulnerability in the study topic tagger. (Thanks to bhaviat Hackerone)
- Fixed an authentication bypass in study sockets. (Thanks to bhavi at Hackerone)
- The API now sends a complete list of teams for team battles.
- New translations via Crowdin.
January 23rd, 2021
- The maximum number of teams in a team battle has been raised to 200. This should be considered a public beta, we don't know how stable these bigger tournaments are yet.
- The team battle interface has been changed to accommodate more teams. You will now only see the top 10 teams and your own team (if playing) on the tournament page with a link to another page with the full standings.
- The puzzle dashboard is now linked on a user's profile. You can click on the puzzle rating to open it.
- Bots can now show a reason for declining challenges.
- Fixed a bug where hovering over your opponent's clock did not show the correct tooltip.
- Fixed poor wording on the contact page explaining how to file a user report.
- Swiss tournaments will now show notifications for any streamers currently playing.
- The puzzle dashboard no longer says "Train these to optimize your progress!" when no puzzles has been attempted. It now says "Nothing to show, go play some puzzles first!"
- Tournaments linked on the homepage now have a maximum countdown time of 24 hours.
- New Translations via Crowdin.
January 20th, 2021
- Mobile app version 7.7.0 released.
- Stockfish 12 now available on the app for standard chess and all variants.
- Fixed the OTB clock display in the app.
- Added The California piece set to the app, updated the Maestro and Cardinal set.
- Updated app translations.
- NNUE toggle added to the app analysis board.
- Fixed multi-board view for broadcasts.
- More Checkmate puzzles themes; "Arabian Mate," "Boden's Mate," etc.
- New Translations via Crowdin.
January 15th, 2021
- New Puzzle Dashboard added at https://lichess.org/training/dashboard/30/dashboard with "Improvement areas," "Strengths," and a full puzzle history.
- Added 3 new puzzle themes; "Master," "Master vs. Master" and "Super GM."
- Added a "play with the machine" button after a puzzle attempt is made. This allows you to play out the position against Stockfish.
- New puzzles added, now over 1 million puzzles in the database.
- Fixed a bug where puzzle history was stored locally after logging out.
- Fixed some bugs with Puzzles on the app.
- Team Leaders can now set a password to allow joining a team.
- Added a section for featured bots on https://lichess.org/player/bots.
- Improvements to which games are chosen for "top game" on https://lichess.org/tv.
- Added Chess960 variant tournaments and tweaked variant tournament scheduling to make more hourly variant tournaments.
- Self-mentions (with "@") are no longer possible in chat.
- Fixed a bug where BOT accounts were incorrectly shown offline.
- New Translations via Crowdin.
- Fixed session fixation with magic login links and added an OAuth scope to create login links.
- Added text shadow when using a transparent background to make the text more readable.
- The privacy policy has been updated and a link is now included on the signup page and the email confirming a new account.
- Fixed a bug that caused some lag when passing 120,000 concurrent users.
- Released fishnet 2.2.1 The minimum required version necessary for fishnet clients is now 2.1.3, so all standard games are now analysed using NNUE.
- Fixed a bug that had broken embedded interactive lesson chapters in studies.
- "Can I change my username?" added to FAQ.
- Added a logout URL for users with very old browsers that cannot access the menus on the homepage.
- Fixed a bug with anonymous correspondence seeks.
- New URL for the changelog: https://lichess.org/changelog. The changelog is also now linked on the website in other documentation like Lichess.org/about.
- Improvements to the non-visual user interface for blind users.
- The maximum amount of study topics is bumped up to 64 from 32
- The maximum number of cores for local analysis has been raised to 32 from 16.
- Added language that clarifies that playing (for example) Stockfish level 8 is still using Stockfish version12.
December 30th, 2020
- Added a list of upcoming or ongoing tournaments that each user has registered for. It can be reached by going to your profile and clicking on "tournament points," then "upcoming."
- The swiss tournaments featured on https://lichess.org/swiss will now be more recent tournaments and exclude tournaments with manually scheduled rounds.
- Numerous tweaks and fixes to the puzzle system. (The site has been updated 6 times since the last changelog entry, mostly with small changes to the new puzzle system)
- It is now against Lichess rules to offer a pdf file or software as the prize in a tournament. Please report this with lichess.org/report if you see it happening.
- Fishnet 2.2.0 is Live!
- The small orange circle that appeared in the lower right corner of each chessboard has been removed. (It's still possible to resize the board this way)
- Fixed a bug where the chat presets weren't appearing for anonymous games.
- Fixed a bug where it was sometimes possible to chat in anonymous games that come from the lobby.
- Fixed a bug where the Racing Kings preview image was flipped for players when they played black.
- Piece animation durations have been simplified and normalized.
- New volunteer translations via Crowdin.
December 22nd, 2020
- The long awaited new Lichess puzzle system is live.
- Both the new Lichess puzzle set and the previous one are now available for download.
- New volunteer translations via Crowdin.
- Mods can now set kid mode for users.
- A slight gradient was added to capture indicators.
- Added three new Variant World Champion 2020 Trophies.
December 16th, 2020
- Upgraded all local analysis to Stockfish 12; the analysis board, studies, and broadcasts.
- "Request Analysis" limits raised back to old levels. You now receive 30 per day/120 per week.
- Fixed a bug where some users were able to use chat in an anonymous game started from the lobby. Chat is only supposed to be possible in anonymous games from direct challenges.
- Various changes to the new puzzle system beta.
- A new permission that allows some users to make Oauth challenges for any other user without an Oauth token.
- Removed the captcha on team join requests.
- New translations via Crowdin.
December 11th, 2020
- The open beta for the new puzzle system is now available on our testing site.
- A welcome email will only be sent to new accounts if there is no confirmation email sent.
- New Translations via Crowdin.
- Fixed a bug where some thematic tournaments were using the wrong FEN start position.
- Fixed a bug where Lichess was not able to send system DMs to users without an associated Email address.
- Minor edits to the Fishnet acceptance message.
November 30th, 2020
- A big update to Fishnet, the software that handles automated game analysis on Lichess. It will now use Stockfish 12 NNUE and provide better analysis faster.
- "Close" button in team settings changed to "Close Team" for clarity. It was also made bigger, redder, and scarier to avoid accidental team closings.
- Password Complexity meter added to the password reset form.
- Limit on players in Swiss tournaments raised to 4000. (Previously 2000)
- Now possible to abort a simul from the edit simul page.
- New Crowdin translations.
November 25th, 2020
- Fixed a bug on the swiss tournament form where the 90 second interval was labeled as "one minute"
- Added a text warning on the change password form for when the 2 entered passwords don't match.
- Improvements to the Oauth API system.
- Fixed a bug where user's requested analysis was counted twice.
- Updated the opening names database.
November 16th, 2020
- Fixed a bug that sometimes caused a "bad request" error for Stripe payments.
- New Crowdintranslations.
- The search fields previously removed from the games search page have now been returned.
- Fixed a bug that sometimes caused banned users to not be removed from tournaments standings.
- Mods can now edit simuls.
- The new account creation screen now has a password complexity meter.
November 9th, 2020
- Stricter limits on the amount of Fishnet game analysis that users can request. 25 per day/100 per week now allowed per account. (These limits subject to change)
- Requesting analysis on the games of others now counts twice as much as your own games against the limit.
- An account is now required to request analysis.
- Homepage preset seek pairings tweaked to be more efficient.
- Changing the associated Twitch or YouTube channel for a streamer page now requires mod approval.
- The new Chess.com API for live games can now be used as a source for broadcast pages.
- Fixed a small bug with DGT board text-to-speech.
- Tournament creation limits doubled for tournament managers.
- Some fields on https://lichess.org/games/search removed.
- BOT accounts no longer allowed to post links.
- Fixed a bug with team leaders timing out users in their team chat.
- The banned IP address is now shown on the page that says a user is IP blacklisted.
- Small fix to the Tournament form.
- New Crowdin translations.
October 20, 2020
- It is now possible to start a swiss tournament, arena tournament or simul from any legal chess position by entering a FEN.
- Added a setting to event pages. (The big buttons on the homepage that usually link to streams or events) It's now possible to give a countdown for an upcoming event or simply redirect to the intended URL immediately. (Event pages can only be created by admins)
- New selectable icons added to homepage event buttons. A microphone, A trophy, The Lichess Logo and the Offerspill logo.
- Added links to Lichess.org/dgt. The Lichess/dgt board integration feature.
- Added support for playing multiple concurrent games with a dgt board
- Added a new API endpoint for downloading the results of a swiss tournament.
- Fixed a bug with the patron lifetime amount display.
- Minor visual improvements to the Swiss tournament FAQ
- Improved the "help" link to captchas on new forum posts, new account registrations and other pages.
- New translations via Crowdin
October 16, 2020
- Tweaks to markdown text on event and broadcast pages.
- Lichess.org/support now redirects to lichess.org/contact.
- Fixed a bug where zen mode would move the board slightly.
- Tweaks to the ban appeal interface.
- Banned users with shield trophies will now have them removed automatically for 30 days.
- While choosing players, the simul user interface now shows the number of players currently selected to play.
- Users are now allowed to re-try the "request computer analysis" button on a study or broadcast every 5 minutes.
- Banned users are now greyed out on swiss tournament podiums.
- New translations added via crowdin.
- Removed unused css.
- Added "Dark board" theme.
Distant past
We started to maintain this less technical changelog only 10 years after Lichess saw the light of day, so there is plenty more history in the commit logs of all the source repositories.