- Blind mode tutorial
lichess.org
Donate

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.

January 2026

Mobile updates

  • Add team tournaments #2384
  • Add study search sorting #2299
  • Add broadcast improvements #2459
  • Add log screen #2463
  • Update chess openings db #2404
  • Remove delay when entering analysis board #2471
  • Clear shapes when loading new puzzle #2413 (thanks dnp314)
  • Reset puzzle streak correctly when failing the first puzzle #2452 (thanks sam-baumann)
  • Fix notification issues on iOS #2451

Site updates

  • Add FIDE player photos 84dd433
  • Add FIDE player rating history #18868
  • Add Opera Mate puzzle theme with translation and icon #18936
  • Add Morphy's Mate puzzle theme with translation and icon #18937
  • Add Pillsbury's Mate puzzle theme with translation and icon #18939
  • Add cover fees option to patron page #18968 (thanks dav1312)
  • Patron page improvements #18945, #18950, #18956 (thanks dav1312)
  • Broadcasts: Player improvements #18778
  • Broadcasts: Player replacement takes precedence over fideTags #18782
  • Broadcasts: Sync game height to vertical resizer #18785
  • Broadcasts: Show points scored instead of results #18912
  • Broadcasts: Add shared group leaderboard #18930, #18944
  • Recap: Add patron slide #18840
  • Increase variant tourney frequency #18461
  • Clock logic improvements #18910
  • Focus password input after toggling visibility #18978
  • Convert forum reaction png to webp #19000
  • Move column visibility logic to page-specific scopes #18958 (thanks dav1312)
  • Add register link and spacing to anonDasher UI #18783 (thanks fmata89)
  • Add study shortcuts #18833
  • Add “Şahî” piece set #18836 (thanks TamerKaratekin)
  • Make profile hamburger buttons turn blue when pressed on mobile #18834
  • Update Corner Mate Icon #18935
  • Fix infinity scrolling in study search #18771
  • Fix chat height on tablets #18863
  • Fix takeback push notification for correspondence games #18919
  • Fix board editor #18931
  • Fix castling premove to respect rookCastle preference #18587 (thanks rhowel33), #18824
  • Fix PGN copy bug on Safari #18831
  • Fix embedtv name #18896
  • Broadcaster App: Refactor to use sqlite #98, #99, #100
  • Lila-search: Completely overhauled study search #655
  • Lila-search: Study with nested chapters #663
  • Chess-openings: Add some A37 lines #259 (thanks jdart1)
  • Chess-openings: Added some B45 lines #260 (thanks Chess4757)
  • Chess-openings: Fix some Polish opening and related lines #261 (thanks jdart1)
  • Chess-openings: French Defense: Advance Variation, Kupreichik Variation #263 (thanks xaverh)
  • Chess-openings: C18 + C19 fixes #264 (thanks jdart1)
  • Chess-openings: Added endgame variation for Semi-Tarrasch #265 (thanks Chess4757)
  • Chess-openings: Add some C19 lines #266 (thanks jdart1)
  • Chess-openings: Add C18, C54, and C65 lines #268 (thanks Chess4757)
  • Database: Add Disco Chess to the related projects section #80 (thanks discochess)

API updates

  • Alphabetical order for sidebar sections #593
  • Update youtube attribute casing for streamers #591
  • Add new .NET client to list #594 (thanks Dblike)
  • Remove legacy API documentation endpoint #18812 (thanks meedoomostafa)
  • Fix to show ranking - working as documented in the docs #18814 (thanks vivek-kasar38)

Accessibility updates

December 2025

Mobile updates

  • Add blog home carousel #2336
  • Add "show threat" mode in analysis #2243
  • Add broadcast group live indicators #2365
  • Add correspondence challenge push notifications #2244
  • Add find board by player search in broadcasts #2327, #2330
  • Add takeback button #2334 (thanks overcharged-coder)
  • Analysis improvements and fixes #2400
  • Update fide-feds #2335
  • Disable Wakelock when a game ends #2275 (thanks ChopinDavid)
  • Show empty state instead of the perpetual spinner when navigating to Friends page and following 0 users #2284 (thanks ChopinDavid)
  • Show OTB config bottom sheet at OTB game start #2320 (thanks nirajk14)
  • Fix false positive for alternative castling notation in puzzles #2355
  • Fix move confirmation #2377
  • Fix displaying puzzle stats for other users #2395
  • Flutter-chessground: Add board (purple) and piece sets (xkcd, firi) #82 (thanks lumiknit)
  • Flutter-chessground: Sync staunty knight pieces to web version #83 (thanks lumiknit)

Site updates

  • Recap 2025 #18750
  • Adjust Glicko-2 to account for first move advantage #18629
  • Add Triangle Mate puzzle theme with translation and icon #18666
  • Add Blindswine Mate puzzle theme with translation and icon #18704
  • Add Discovered Check puzzle theme with translation and icon #18720
  • Add Corner Mate puzzle theme with translation and icon #18721
  • Add new 7MB net for Stockfish 17.1 #18671 (thanks jonbgamble)
  • Broadcasts: Reorder some finished broadcasts among the ongoing ones #18763
  • Broadcasts: Don't show relay source url during broadcast #18541
  • Update FIDE federation flags #18542
  • Redirect to local swag store page #18553
  • Update YouTube embed URLs to use no-cookie version #18562
  • Update username policy link in FAQ #18751 (thanks groverneev)
  • Minify caliente pieces #18613
  • Sort all profile flags #18709
  • Improve forum quoting #18556 (thanks jonbgamble)
  • Bump study chapter max nodes to 10k - dont fail silent, give reason #18678 (thanks jonbgamble)
  • Scroll to obscured study chapter when going from members -> chapters tab #18538
  • Search box hover improvements #18560
  • Support webp 2d pieces #18649 (thanks jonbgamble)
  • Improve monarchy piece set rook lighting #18715 (thanks slither77)
  • Don't show the Resume practice button in end-state positions. #18544
  • Don't show the scroll button when already on the player's page #18551
  • Prevent illegal challenges from being attempted #18591
  • Never have lifetime donation be selectable if user is already a lifetime patron #18596
  • Fix image style & captions #18558 (thanks jonbgamble)
  • Fix stalemate showing false legal move markers #18669 (thanks yl275)
  • Fix copying raw PGN doesn't remove the initial position comments #18693 (thanks dhalleela)
  • Fix border radius of lifetime donation and opening explorer #18768 (thanks dav1312)
  • Broadcaster App: Add favourite rounds / broadcasts and navigation #91
  • Broadcaster App: Add BroadcastView component and separate routing for broadcast details #92
  • Broadcaster App: Add breadcrumb back to tournament for easier switching between rounds #93
  • Broadcaster App: Pin broadcasts instead of rounds #94
  • Broadcaster App: Settings UI improvements #96
  • Broadcaster App: Add update notification to sidebar #97
  • Lila-search: Add export games functionality in ingestor-cli module #630
  • Lila-search: Ingest study's likes (and rank) changes to elastic search #631
  • Lila-search: Make forum's userId optional #633
  • Lila-search: Make metrics a bit better #646
  • Lila-search: Implement study2 index #653
  • Chess-openings: Fix French Defense Classical line #253 (thanks seccohazy)
  • Chess-openings: Add a A48 line #255 (thanks jdart1)
  • Chess-openings: Add some C54 ines #256 (thanks jdart1)
  • Chess-openings: Update c.tsv #258 (thanks Chess4757)
  • Scalachess: Write Traverse instance of Tree manually to optimize stack-safety #773
  • Scalachess: Fix no-space between variation comments and move number #780
  • Scalachess: Compute fide ratingdiffs according to time control #782
  • Scalachess: Tiebreak: add lastRoundId to Tournament for ForeBuchholz #783
  • Chessground: Dont let firefox mac draw arrows on pawn promotion #363 (thanks jonbgamble)
  • Chessground: New wrapper for Svelte 5 added #364 (thanks janldeboer)
  • Chessground: Last move highlights for rook castle #367

API updates

  • Docs: Add Scalar #580, #582, #583 , #590
  • Broadcasts: include your private and unlisted broadcasts #18532
  • Broadcasts: Include private in apiShow endpoint when requested by owner #18657
  • Broadcasts: RelayTour.player API endpoint to work with study:read tokens #18724
  • Puzzles: add batch theme vote API #18745
  • Include full URLs in user activity API #18725
  • Remove upcoming field from BroadcastTop schema #573
  • Add syncSource property when creating/editing a broadcast round #576
  • Specify permission for broadcastTourGet #577
  • Add patch query param for updating broadcast round #579
  • Patron schema updates #581
  • Add Accept header options for x-chess-pgn vs x-ndjson #584
  • Add Accept header for other endpoints #585
  • Fix required keys on PerfStat, change numbers to integers #570 (thanks GameRoMan)
  • Fix API documentation to reference X-FEN rather than FEN. #572 (thanks Kile-Asmussen)
  • Fix schemas, update description #578 (thanks GameRoMan)

Accessibility updates

  • Add translation for "Round X" for broadcasts #18731
  • NVUI: Announce position piece per piece #18578
  • NVUI: Replace trailing spaces with punctuation #18614
  • NVUI: add color when listing moves #18734

November 2025

Mobile updates

  • Add learn from your mistakes feature #2229, #2241
  • Add writable studies #2321
  • Update chess openings database #2325
  • Tablebase: Prepare 8 piece DTC support, tweak metric display, relax response parser #2287
  • Tablebase: Add max DTZ/DTC 3-8 piece endgame positions #2294
  • Don't try to account for alternative castling notation in annotations #2255
  • Hide study hint when changing chapter or correct move has been played #2298
  • Discard piece after tapping square again in Editor #2213
  • Over the board: Prevent screen pop when game is started #2230 (thanks erik-mor)
  • Prevent Users seeing their own Profile as UserScreen #2295
  • Fix Clock Tool Support for 0+X Time Controls #2277 (thanks cappylot)
  • Fix Clock Misorientation in tablets #2224
  • Fix correspondence not receiving push when app is just put in background #2239
  • Fix retro evaluation and simplify retro interface #2248
  • Fix flags on profile #2290
  • Fix team score out of sync + requesting /teams for nonteam tournaments #2323
  • Fix Patron Icon size #2324

Site updates

  • Broadcasts: Fix unplayed tag when the source regresses #18395
  • Broadcasts: Add announcement page to the calendar #18431
  • Broadcasts: Reduce spurious force variation #18327 (thanks jonbgamble)
  • Implement study search sorting #18427
  • Add image hosting and markdown for forums #18378, #18506 (thanks jonbgamble)
  • Add game actual duration in movetime chart #18442
  • Add invert clock option for right handers on mobile #18340 (thanks jonbgamble)
  • Add direct settings shortcut above bell notifications #18383 (thanks jonbgamble)
  • Add spacing in Result dropdown option for insufficient material claim #18390
  • Update emoji picker import to use named export #18346
  • Update emoji set to version 17 #18368
  • Easier Class login #18360
  • Always show rating chart for authenticated users #18379
  • Don't toggle the explorer when prohibited by study settings #18412
  • Sortable study topics #18414
  • Allow empty strings when setting PGN tags #18453
  • Disable 404 link to forum when in kid mode #18454
  • Describe buttons more fully in tooltip #18397 (thanks jonbgamble)
  • Check for missing rating history canvas on advanced search #18380 (thanks yl275)
  • Whitelist i.ibb.co links in forums #18478 (thanks AuburnMedia)
  • Refactor remove analysis board redirect link from position number (chess960) #18493 (thanks Sama-004)
  • Study: Scroll to selected chapter #18497
  • Revert variant team battles color back to blue #18525 (thanks SilverOffense)
  • Fix fetch path for flair list #18488
  • Fix best move arrows in game reviews #18312 (thanks timdyck)
  • Fix crosstable hovering south when player has under one minute #18324 (thanks jonbgamble)
  • Fix material hidden by clock #18357 (thanks jonbgamble)
  • Fix quote #18505 (thanks icecream17)
  • Broadcaster App: Navigate to a Round by entering its lichess URL #88
  • Chess-openings: Add a C47 line (can be reached by transposition from Vienna Game) #246 (thanks jdart1)
  • Chess-openings: Reclassify/add some C18 and C19 lines #247 (thanks jdart1)
  • Chess-openings: Add some C54 lines. #248 (thanks jdart1)
  • Chess-openings: KID: Fianchetto Variation with Nf3 #249 (thanks Frederico-Messa)
  • Chess-openings: Fixes for A11/A12/A14 #250 (thanks jdart1)
  • Chess-openings: Add some D45 and D46 lines #251 (thanks jdart1)
  • Chess-openings: Add C13 line #252 (thanks jdart1)
  • Chessground: Fix pawn promotion premoves #348 (thanks jonbgamble)
  • Chessground: Allow the client to specify additional premove predicates #350, #355
  • Chessground: Return undefined if pos[1] is < 0 or > 7 in pos2key #351
  • Chessground: Fix premove promotion bug #353
  • Lila-search: Simplify metrics setup #586
  • Lila-search: Ingest study rank, createdAt, updatedAt #609, #610, #611
  • Lila-search: Support sorting for study index #614
  • Scalachess: Remove duplicate bishop and pawn condition check #760 (thanks RedTrait)

API updates

Accessibility updates

  • Translate variants #18464
  • NVUI: Always display all the actions in user profile #18398, #18513
  • Fix blind mode color picker #18356

October 2025

Mobile updates

  • Add Patron colored wings #2227
  • Add haptic feedback for page refreshes #2169 (thanks OldUser101)
  • Add Linux platform #2171 (thanks christianfl)
  • Bring back streak rating on tablet #2200
  • Handle crazyhouse deeplinks #2202
  • Profile fixes #2203
  • Clear user shapes when puzzle or position changes. #2206
  • Fix resetting scroll when navigating study chapters #2164 (thanks OldUser101)
  • Fix displaying drawn shapes on puzzle streak and storm screens #2168 (thanks OldUser101)
  • Fix removing duplicate rating text from game loading screen #2185 (thanks OldUser101)
  • Fix a typo in the HTTP logs screen title for consistency #2192 (thanks OldUser101)
  • Fix game loading in Landscape mode #2201

Site updates

  • Add Patron tiers #18081, #18244, #18266, #18238, #18281
  • Broadcasts: Add an "Unplayed" Termination tag for games #18210
  • Broadcasts: Add deep link to Broadcaster App from manager section #18133
  • Add Puzzle Racer vehicles #18231, #18236, #18270
  • Add disclosure buttons toggle in action menu #18128
  • Add button to Study Share to enable users to share raw PGNs #18153 (thanks kutyel)
  • Update opening explorer wiki books display #18277 (thanks PeteCrowley)
  • Update wiki books info for analysis page #18279
  • Make lobby buttons and dialogs easier for a new user #18134
  • Add android device vibration on opponent moves #18149
  • Rework the user actions menu #17942 (thanks Paul-Etienne)
  • Fix threat mode toggle #18154
  • Fix tablesort header alignment #18168
  • Fix puzzle color setting remains after moving away from opening theme #18252
  • Broadcaster App: Restore update notifications #75
  • Broadcaster App: Always show sidebar #76
  • Broadcaster App: Add deep link support #77
  • Broadcaster App: Refactor routing + deep links #78
  • Broadcaster App: Fix URL.parse for safari webview #79
  • Broadcaster App: Fix user agent on Windows #84
  • Broadcaster App: Fix debounce, push max 1 req/s #86
  • Scalachess: Rating color advantage #598, #599
  • Scalachess: Adjust Glicko-2 to account for first move advantage #755
  • Scalachess: Keep up with new FIDE rating regulations #758
  • Chess-openings: Add some A48 lines #245 (thanks jdart1)
  • Lila-docker: Github codespaces #177
  • Database: Add blitztactics.com link to related projects #78 (thanks linrock)
  • Database: Remove link to Twitter #77 (thanks cakiki)
  • Database: Add Chessboard.fun to related projects #76 (thanks ImMoSer)

API updates

  • Add blog carousel #18302
  • Add patronColor #534, #18292
  • Show challenge request body params as oneof's #526
  • Update broadcast and user schemas #528
  • Update schemas and all example responses #530
  • Specify required tiebreak properties #529
  • Specify broadcast group required properties #531
  • Fix required keys in schemas #536
  • Document getting a broadcast player #537

Accessibility updates

  • NVUI: Show pieces and square colors to sighted testers #18094
  • NVUI: rating range slider #18103
  • NVUI: Announce online status in profile #18145
  • NVUI: Allow mixed case in commands #18157
  • Translation support for module "video" #18064 (thanks shprotru)

September 2025

Mobile updates

  • Add quick actions #1986 (thanks aba2222)
  • Add Tablebase Explorer #1994
  • Add Matchup in TVScreen and GameScreen #2030
  • Add On Tap to UserFullNameWidget #2033
  • Add message section privacy prefs #2036
  • Make promotion dialog dissapear if pressed back #2045
  • Add Result to Analysisboard #2053
  • Add Team View to Broadcasts #2058
  • Add chat context menu with copy and report #2096
  • Add study chat room #2107 (thanks aba2222)
  • Add initial Linux desktop support #2114 (thanks christianfl)
  • Add Challenge from custom position (using board editor) #2069 (thanks aba2222)
  • Add the newly added insufficientMaterialClaim GameStatus #2121
  • Add change password and 2FA buttons to account settings #2145 (thanks OldUser101)
  • Recognize links in chat and conversation screens #2091
  • Indicate game results in tournament player view with colors #2118
  • Network aggregator #2064
  • Show a list of study members #2155 (thanks OldUser101)
  • Support challenging friend with unlimited time control #2156
  • Move the game bottom bar buttons to below the move list in landscape mode #1682 (thanks Mauritz8)
  • Remove abort button from tournament games #2086
  • Remove leading 0 in crosstable scores #2119
  • Allow to set kid mode from the app #2153
  • Don't send puzzle result when reviewing storm #2154
  • Add all drawables resources in the keep file #2094
  • Fix studies with illegal positions not loading #2087
  • Fix another study loading issue #2117
  • Fix game seek rating and localize numbers #2080
  • Fix challenges #2126
  • Flutter-chessground: Fix promotion selection if player on top promotes #79

Site updates

  • Broadcasts: Allow grouping for everyone in unofficial broadcasts #17924
  • Custom SVG glyphs for 3-5fold repetition #17991
  • Stack multiple glyphs #18060
  • Allow draw claims by insufficient material #17666
  • When a perf trophy is clicked, go to that perf's leaderboard #17930
  • Move engine toggle to control row in one column views #17960
  • Remove site header from oauth and tweak css for tiny screens #17972
  • Read %clk comments in Tools -> Game import #17985
  • Leaderboard features #17986
  • Optimize PNGs to reduce filesize #17993
  • More colorful placeholders for blog thumbnails #18041
  • Fix analysis scroll to top on fast-backward #18042
  • Fix autoscroll when anchor is used in the game url #18051
  • Fix timeago on user show #17959
  • Fix takeback does not reset to initial clock #17979
  • Broadcaster App: Refactor + Send all pgn each push #62
  • Lila-search: Use new cats-mtl submarine error propagation #542
  • Chessground: En passant edge cases #336
  • Chessground: Optionally draw shapes and svgs behind pieces #337
  • Scalachess: Implement Tiebreak.foldModifier #726
  • Scalachess: Horde insufficient material updates #730
  • Chess-openings: B45 fixes #244 (thanks jdart1)
  • Chess-openings: Add some A65 and E81 lines #243 (thanks jdart1)

API updates

  • Let board API seeks join pools when compatible #18022
  • Add insufficientMaterialClaim status #513
  • Document relay group tour live #519
  • Document event-stream connection limit #521 (thanks bryghtlabs-richard)
  • Document too many parallel game-stream requests #522 (thanks bryghtlabs-richard)
  • Document color query parameter for /api/challenge/accept #523

Accessibility updates

  • Use a css exception for blind mode to always show ceval #18033
  • NVUI: Playing on a touchscreen #17847
  • NVUI: Allow to use the phone as a desktop #17950
  • NVUI: Implement gameMode as a select #18061
  • NVUI: Puzzle get hint #18079
  • NVUI: Promote to king from board (antichess ) #18004
  • NVUI: Speak and play best move #17996
  • NVUI: Fix puzzle streak page #18088
  • NVUI: Fix analysis #18030
  • NVUI: Fix puzzles #18023
  • Translate speech synthesis #17963, #17978

August 2025

Mobile updates

  • Add private messaging #1981
  • Add crosstable scores to userscreen #2014 (thanks HaonRekcef)
  • Add conditional premoves in correspondence games #1802
  • Add "follow player" and "subscribe to tournament" broadcast features #17789
  • Fix broadcast player assumed to be not "null" #1943
  • Fix updating puzzle context when the puzzle changes #1976 (thanks OldUser101)
  • Fix resetting time when bot position is changed + fix border radius of position thumbnails #1930 (thanks HaonRekcef)
  • Fix rounding error #2000 (thanks HaonRekcef)
  • Fix Display of Material Difference in TV #1992 (thanks HaonRekcef)
  • Fix switching pages for large tournaments #1978

Site updates

  • Broadcasts: Improve FIDE player follow notification #17758, #17763, #17785, #17818
  • Broadcasts: Add tiebreaks #17751
  • Broadcasts: Add "private" visibility option #17805, #17832
  • Broadcasts: User permission changes #17838
  • Broadcasts: only show standings disclaimer when enabling rankings #17903
  • Link to FIDE players in community -> players #17927
  • Add collapse buttons to analysis move list #17815
  • Make blogs more discoverable #17690
  • Blog carousel: Show "Timeless" rather than publish date if more than 30 days old #17862
  • Maintain flipped board orientation in puzzles when cancelling premove #17820
  • Extend timeout grace for non-bullet time controls #17866
  • Align "Donate" button for not logged in users #17879 (thanks sebBertWeb)
  • Opening search improvements #17794
  • Declutter analysis move context menu #17743
  • Let desktop users resize study side elements #17714
  • Fix ratingChart perf style #17905
  • Fix bug with report block button #17909
  • Fix tournaments with no streak bonuses win color #17882 (thanks Chaaronn)
  • Fix chart tooltip order same as profile page #17873 (thanks Sama-004)
  • Fix light mode button text shadow in blog #17868 (thanks cmgchess)
  • Fix insights clear button rendering when filters are present #17843 (thanks cmgchess)
  • Fix table background color not displaying properly when user has a long name #17841 (thanks Sama-004)
  • Scalachess: Fix deadlock class initialization #716
  • Scalachess: Implement Canplay with raw uci strings #715
  • Scalachess: Add a new status code #707
  • Chess-openings: E38 + E59 updates #242 (thanks jdart1)

API updates

  • Add claim-draw for disconnected opponents #17871
  • Broadcast visibility #510
  • Broadcast tiebreaks #508
  • Claim-draw for Board and Bot API #507
  • Update max limit to 100 for both broadcast push and upstream ids #500
  • Update GameFullEvent #499
  • Update broadcastsOfficial wording #498
  • Clarify URL-encoded tag pairs are supported in analysis pgn URL #506 (thanks mao-sz)

Accessibility updates

  • NVUI: Better announcements #17827
  • NVUI: Announce computer eval from chessboard #17795
  • NVUI: Commands consistency (gameplay, analyse, puzzle) #17784
  • NVUI: Translations #17845
  • NVUI: Remove time attributes when blind mode is on #17857
  • NVUI: improve forum navigation #17867
  • Use former Notify #17803
  • Don't use liveText in Notify #17790
  • Add a link to blind mode tutorial #17823
  • Fix NVDA #17831

July 2025

Mobile updates

  • New learn tab and revamp menus #1860
  • Add "LIVE" badge to user screen Watch games #1899 (thanks poliver)
  • Modernize Android splash screen #1884 (thanks poliver)
  • Fix opening Editor from Analysis Board to persist state of position #1915 (thanks HaonRekcef)
  • Remove legacy android assets #1875 (thanks poliver)
  • Add more puzzle history lines when viewing on larger devices #1923 (thanks HaonRekcef)
  • Add opening name to Landscape Layout of Opening Explorer #1916 (thanks HaonRekcef)
  • Fixes for the clock tool #1832 (thanks spellr), #1827, e5db78a
  • Don't show engine lines toggle if set to 0 01ef2ce
  • Add greeting to welcome screen a05f974, 1bb20c9
  • Continuous Integration: Upload build artifacts and fix iOS Firebase Swift error #1910 (thanks spellr)
  • Fix documentation markdown #1888 (thanks poliver)
  • Align multiline text to center #1848 (thanks Axl-Lvy)

Site updates

  • Broadcasts: set custom points for wins/draws per round #17599
  • Broadcasts: Subscribe to players to be notified when they are playing #17723
  • Broadcasts: Show note for unofficial broadcasts #17704
  • Broadcasts: Fix player score showing undefined #17627
  • Broadcasts: Default to user's timezone for schedule when creating a broadcast #17707
  • Broadcasts: don't sync bye games treat them like games that have zero info about one of the player, which means skipping them entirely 0457a0c
  • Add player info Anonymous and AI to game streams #17608
  • Show the 'Puzzles by openings' page for anonymous users too. #17611
  • Offer a choice of voices for speech synthesis #17678
  • Make sure a player can't get paired to themselve on another device 6c4c289
  • Don't show apple and google pay donation links until going through stripe #17727
  • Scalachess: Fix asymetry in heuristic mixedness score for middlegame phase #701 (thanks rmarquis)
  • Scalachess: Use mapAccumulate #698 (thanks Masynchin)
  • Chess-openings: Add some Benoni Defense A65 lines #241 (thanks jdart1)
  • Chess-openings: Add some A29 English opening lines with .. d6 #240 (thanks jdart1)
  • Chess-openings: Add a C55 Italian line #239 (thanks jdart1)
  • Chess-openings: Change move order to match parent variant of Benoni line #236 (thanks ryathom57)
  • Chess-openings: French Defense Classical fixes, add Shirov-Anand Variation #235 (thanks seccohazy)
  • Broadcaster App: Fix "stream did not contain valid UTF-8" when reading PGN file #65

API updates

  • Update ChallengeDeclinedJson #486 (thanks GameRoMan)
  • Add BulkPairing schema [WIP] #484 (thanks GameRoMan)
  • Use Clock for clock property in ArenaTournamentFull #483 (thanks GameRoMan)
  • Add required keys to ArenaPosition #482 (thanks GameRoMan)
  • Use GameColor for winner in GameStateEvent #481 (thanks GameRoMan)
  • Fix tiny token test timestamp typo #476 (thanks bryghtlabs-richard)
  • Add ratingDiff to gameFinish stream event #493
  • Keep api versioning in step in both package.json files #480, #490
  • Update stream event schema for AI opponents #479
  • Add check property for broadcast round games #477
  • Fix incorrect broadcast round form scheme #474
  • Broadcast custom scoring #473, #475

Accessibility updates

June 2025

Mobile updates

  • Feat: highlight live move in correspondence analysis #1807
  • Implement broadcast search feature #1736
  • Http log screen only displays path when host is Lichess #1735
  • Fix orientation incorrectly locked to portrait on tablet #1689 (thanks Mauritz8)
  • Fix: studies with illegal positions #1686
  • Use FadeForwardsPageTransitionBuilder #1685 (thanks TheLastFlame)
  • Add button to share only game URL #1622 (thanks FractalBoy)
  • Fix: Make opponent's clock red when a player flags #1580 (thanks QuartzIII)
  • Analysis improvements #1823
  • Study list screen improvements #1819
  • Fix confirm move menu on iOS #1804
  • Puzzle immersive mode and game screen improvements for small screens #1803
  • Fix board position change when starting a game and Immersive Mode is set #1781
  • Upgrade sound effect plugin #1780
  • Fix create game mode and variant options not accounted for #1753
  • Stockfish nnue download #1694
  • Improve play button and iOS theme improvements #1692
  • Tournament public chat, help and stats #1676

Site updates

  • Add a way to undo changes to shapes on study boards. #17594
  • Add empty alt text to feed icons #17587 (thanks randompearl-stack)
  • Align Blog Metadata #17582 (thanks randompearl-stack)
  • Fix:"Clear Board" button no longer changes player to "white to play" (closes #17310) #17574 (thanks jogendra05)
  • Dont try make a chart when there is no information about the puzzles #17552 (thanks BElluu)
  • If the user manually scrolls to the bottom of a chat, enable autoscroll for future messages #17546
  • Fix: Corrected China-Blue board image #17517 (thanks Tux960)
  • Add aria to lobby modal dialogs #17502
  • Fix(ui): prevent puzzle tools sidebar from shrinking #17496 (thanks jogendra05)
  • For /opening search box, add a space between a dot and move, if not provided. #17494
  • Broadcast API search endpoint #17483
  • Use formatClockTimeVerbal in clock speak #17473
  • Firi pieceset rook: Redraw as a simpler single shape with line accents #17470 (thanks jfaure)
  • Include who did what for takebacks #17468
  • If showing a range, animate it and replace the spinning knight. #17466
  • Add punctuation to move to help screen reader #17465
  • Cancel a takeback if the opponent (rather than the player) moves #17457
  • Add control buttons for the lobby\_\_blog carousel #17415 (thanks yassine-safraoui)
  • Update the pool range (if applicable) after a game finishes #17408
  • Highlight moves when hovering over the copy/delete buttons #17290
  • Refactor gif-export using playPositions #17593
  • Don't auto draw as we're not sure about opponent has no mating material #17556
  • Update appstore link #17549 #17580
  • Optimize StudyPgnImport's accumulated context #17524
  • Minify firi pieces #17488
  • Disable wake lock in correspondence games #17478
  • A streamer is "in" tournament if they recently played #17446
  • Fix: re-fetch and re-check broadcast round during delayed push b73cc95
  • poll broadcast rounds 1h before they start fcd8b32
  • add minimal /embed/analysis b0118d0

Accessibility updates

  • Nvui (non-visual UI/blind mode) translations #17504 #17562
  • Better description for board focus nvui #17510
  • Modify nvui round page layout #17452
  • Render clock in a verbal way - nvui #17442
  • Provide copy FEN button in nvui #17407
  • Render chat room in analyse.nvui #17387

Translation updates

Many language translations added/updated thanks to many CrowdIn contributors

API updates

  • Update arena schemas and examples #465
  • Update external engine schemas and examples #458
  • Update challenge schemas and examples #457
  • Add docs for broadcast search endpoint #446
  • Update oauth schemas and examples #445
  • Update examples for Puzzles endpoints #444
  • Update TV schemas and examples #443
  • Update FIDE player schemas and examples #442
  • Update opening explorer schema and examples #441
  • Update schema and examples for autocomplete usernames endpoint #440
  • Challange decline status "created" -> "declined" #471
  • Fix broadcast search description. #470
  • Add required keys to GameEventPlayer #469
  • Add required keys #468
  • Create script for bulk pairings examples #467
  • Add required keys for ChallengeEvent #466
  • Update UserActivity #464
  • Add required keys to User #463
  • Add Leaderboard schema #462
  • Update GameEventInfo #461
  • Revert anyOf to oneOf in TimeControl #460
  • Rename OpponentGone to OpponentGoneEvent to match other game stream events #459
  • Add required keys to ArenaTournament #456
  • Update GameChat schema #455
  • Use Title for player's Title instead of string #454
  • Add TimeControl, challenge jsons/events #451
  • Year on fideplayer can be null #448 (thanks AllieJonsson)
  • Add type to crosstable #447 (thanks AllieJonsson)

May 2025

Mobile updates

  • Add tournament screen #1583
  • Watch friend TV #1636, d9d4da5
  • Add flair picker to profile edit screen #1670
  • Over the board feats: Resign, Offer Draw and notification on threefold repetition #1571 (thanks andy-ife)
  • Add castling method option #1347 (thanks Jimima)
  • Add IC board theme 3b12f80
  • Add badge for current streak score in puzzle tab #1606
  • Better filter cloud evals #1634
  • Option to go deeper in engine analysis #1669
  • Add time-based greeting icon #1619 #1621 (thanks pafmoura)
  • Add GitLab to social media links section of profile #1611 (thanks QuartzIII)
  • Fix: Low time audio alerts #1627
  • Fix: Avoid stuck game popup d7df363
  • Fix: disable chat if account is in kid mode #1610
  • Fix: broadcast observed games null exception #1601
  • Fix: Wrong clock ticking after takeback #1650
  • Flutter-chessground: Fix: flip pieces on Y-axis instead of rotating #74 (thanks QuartzIII)
  • Flutter-chessground: Example buttons update and orientation fix #76 (thanks vovagorodok)
  • Numerous other tweaks and bug fixes

Site updates

  • Add Stockfish 17.1 #17275
  • Resizeable broadcast sides #17280
  • Tournament description toggle view #17296
  • Add blog recommender system based on blog similarity. Recommendations at the end of the blog post #17315, #17303, #17340, #17353, e0c5fce
  • Add Firi pieceset #17372 (thanks jfaure)
  • Show language in broadcast streamer menu #17306, 0d7709f
  • Improvements to the non-visual user interface #17312, #17341, #17401, #17416
  • Copy variation PGN button copies the entire variation #17261
  • Blog automoderation #17365
  • Add a tooltip to the coordinates training graphs showing the score #17336
  • Optimize broadcast game reading #17339, #17328, #17327, #17326, #17339, #17344
  • Link public titled accounts with their FIDE profiles. Include their FIDE id in PGN exports. 3013381, 98b36e3, 743a7a7
  • Tweak titled player signup form. Default public setting to false #17371
  • Move unpopular board themes behind a button #17282
  • Tweak new account signup message. Clarify that unconfirmed emails and accounts will be deleted after 48h #17380
  • Rematches against bots in fromPosition games keep the same color #17285
  • Conform study date tag input to PGN specification 9215890, #17402
  • Remove broadcast chat toggle if the liveboard tab exists #17295
  • Remove spectator list in broadcasts fd5e4ce, 5a4ae34
  • Broadcast chat snaps to bottom on page load 2ad3ce1
  • Disable spellcheck in notes #17270
  • Minify piece sets #17349
  • Hide best move arrows if lines is set to 0 in puzzles #17304
  • Support exotic broadcast results #17347
  • If there is a Termination pgn tag, show it #17423
  • Remove embed support for twitter #17410
  • Remove study pgn source flag 01652f2
  • Teams don't need more than 3 accounts managing leader permissions ba77fcc
  • Never orverwrite the study Site tag add ChapterURL instead 7c07aa4
  • Fix: reset page number when pagination is changed in brodcast multiboard view #17405 (thanks Sama-004)
  • Fix: Pieces dropdown not shown during promotion while blindfolded #17375 (thanks blastoncrush)
  • Fix: duplicate rendering of comments for mainline moves forced as variation #17256 (thanks Bayuo321)
  • Fix: "Play Bot" button content overflow #17298 (thanks ChaseNelson)
  • Fix: Prototype-polluting function mod.activity() code Injection #17335 (thanks odaysec)
  • Fix: Theme color for calendar in advanced search and chess insights header #17350 (thanks Sama-004)
  • Fix: Lichess blog color title variable #17281 (thanks randompearl-stack)
  • Fix: duplicate chats when switching variants in broadcasts #17317
  • Fix: "hide results" broadcast setting not honored at the end of the movelist #17346
  • Fix: puzzle streak continues after logging out #17397
  • Fix: multi-pgn-viewer arrows with uncached assets #17425
  • Fix: displayed number of ongoing games #17421
  • Scalachess: Improve error messages when reading games #651, #650, #649
  • Scalachess: Improvements to pgn parser #648, #647
  • Numerous other tweaks and bug fixes

API updates

  • Publish NPM types package #433
  • New api challenge form field onlyIfOpponentFollowsMe allows sending challenges to followers only, to avoid the rate limit associated to sending challenge to random players 10b3c7e
  • Add round url to broadcast/top api #17390
  • Test API requests against a local dev server and update schemas and example responses accordingly #434, #436, #437, #438, #439
  • Better missing scope error message 6f80e45

Miscellaneous

  • Publish stockfish wasms to Github and NPM #6, #7 (thanks Disservin)
  • Lila-docker: Use lifat from lila repo with git-lfs if available #158
  • Chess-openings: Sicilian Defense: Marshall Gambit -> French Defense: Marhsall Gambit #225 (thanks hkopp)
  • Chess-openings: Add a D24 QGA line (was mis-classified as D37) #226
  • Database: Link to the centiseconds-grade export #67
  • Database: export all broadcast games of a year a2cc3d8

April 2025

Mobile updates

  • Broadcast refactoring and bug fixes #1545, #1542, #1536, #1533, #1532, #1509, #1365
  • Work on player's result screen in broadcasts #1569, #1555, #1554
  • Play a notification sound on new messages #1466 (thanks vincendep)
  • HTTP request logs screen #1442 (thanks vincendep)
  • Added colors to user performance page. #1504 (thanks ItsDang)
  • Refactor opening fetching to use FEN instead of moves #1553 (thanks okmsbun)
  • Cloud and engine analysis refactoring/tweaks #1528, #1498, #1500
  • Use RichText widget to display study chapters title #1489 (thanks vincendep)
  • Color ratingDiff of 0 yellow instead of red #1382 (thanks cioccarellia)
  • Fix Clock Orientation for Better Readability in Landscape Mode #1531 (thanks okmsbun)
  • Fix clock orientation by adding inverted opponent view #1525 (thanks okmsbun)
  • Fix board hue filter to only apply to the background #1511
  • Fix: prevent move list from resizing when first move is made #1574
  • Fix best move arrow toggle #1576
  • Fix typo in setting\_dev\_env.md #1585 (thanks awan1)

Site updates

  • Add Stockfish 17.1 #5, #17274, b1786d2
  • Add RhosGFX piece set #17131 (thanks gloyens), #176
  • Add a reply button in non-game chats. #17214
  • Live board chat plugin for broadcasts #17226, #17253
  • Blogs: disclose sponsored content, affiliate links or commercial advertisement in posts #17121
  • Choose 960 start position on the analysis board #16978
  • Show user's connection strength while playing #17140
  • Allow victory claims in games from challenges #17120
  • Limit arena standings recalculations to 3 days after #17204
  • Reorganize UI on small viewport #16969 (thanks yafred)
  • Add explanation for draw claims by insufficient material. #17114
  • Minify newspaper theme #17128
  • Make password reset confirmation louder to maximize chance it is read #17163
  • Allow text wrapping in board menu #17211 (thanks Sama-004)
  • Always include the latest rating in chart rating history #17207 (thanks viczommers)
  • Add translatable fields #17216, #17130, #17086, #17166 (thanks yafred)
  • Add replacement for Norwegian 'å' character #17162 (thanks bastianpedersen)
  • Display all the squares of the board even if screen is small (blind mode) #17025 (thanks yafred)
  • Play crazyhouse in accessibility mode #16997
  • Don't schedule elite tournaments more than a week in advance 6224e80
  • Prevent bots from berserking from the web UI ad72bc2
  • Allow importing PGN without a chapter name e68c947
  • Add bi-monthly browser upgrade nag for older unsupported browsers 1ba82d1
  • Let bots join 60 tournaments at once; 20 for other users 4fceb3e
  • Keep players color when rematching a bot from position c8902fd
  • Fix triggering success for two practice chapters instead of one #17075 (thanks yugarinn)
  • Fix Missing Learn from Mistakes Next button on Mobile #17052 (thanks ChaseNelson)
  • Fix draw claims as explanations for imported games #17191
  • Scalachess: Fix Typo: bitshop -> bishop #634 (thanks joshuarayton)

Development tooling

  • Lila-docker: Github codespace devcontainer #150
  • Lila-docker: Add quick start option #149
  • Lila-db-seed: Create special playbanned user for testing #67

API updates

March 2025

Mobile updates

  • Fix board hue filter to only apply to the background #1511
  • Fix esperanto lang and update all translations #1433
  • Many theme fixes #1414
  • Show eval in move list when 2 columns #1474
  • Add analysis small board settings #1465
  • Add playban message #1463
  • Broadcast ongoing game status change #1509
  • Allow using TvController w/o providing a channel #1505
  • Tweak analysis settings UI #1498
  • Implement cloud eval #1391, #1426, #1452, #1467, #1469
  • Support relative uri reference in broadcast markdown description #1464
  • Deep links #1353, #1417, #1458, #1462
  • Fix clock #1428, #1434, #1437
  • Add new broadcast game results #1435
  • Fix elo chart #1430
  • Add ongoing games filter to boadcast round #1427
  • Add two-column tree view #1416
  • Add bookmark removal to context menu on game bookmark screen #1413
  • Add detail view to game history screen #1057
  • Reduce ongoing game requests #1494
  • Expose the relay socket version to anon mobile reqs e7205ff
  • Expose game tournament data in mobile socket full event 9a4600a
  • Expose stripe currencies for the mobile app 9c2d485
  • Oauth api endpoint for stripe checkout cc609ec
  • Fix board shift after game in zen game only mode 6da4935
  • Don't show study like button if anon db20d2f
  • Fix board hue filter to apply only to background 636a5f6
  • Improve engine depth info widget c4b6053
  • Don't override a cloud eval with a local eval 93d0f01
  • Add share menu to broadcast round screen b331553
  • Improve context menus 9d47d7c
  • Show ongoing game on home even if no played games 3160ac4
  • Improve analysis tree view b0ae6e6
  • Simplify custom game screen 5414b7e, fef776c
  • Make alternate row colors consistent globally ffdad9c
  • Simplify broadcast round screen b7ebf2b
  • Fix eval gauge display on broadcasts b7746a1
  • Don't hide variations by default now we have column view 8ca20b1
  • Fix broadcast game analysis settings a75e192
  • Show lichess analysis in broadcasts finished games 3018e7d
  • Show eval in move list when 2 columns df8ba2b
  • Move puzzle difficulty selector to settings b798dbc
  • Fix analysis column view padding ce9f1f6
  • Improve PGN 2 column view 1280a86
  • Fix tree display settings on broadcast game screen f61d98f
  • Add analysis small board settings 57e1590
  • Restore menu share on phones and improve tablet detail game tile 00ee8f6
  • Put the engine toggle in the bottom bar for broadcast 461df37
  • Improve analysis engine toggle button 2795c30
  • Better light theme android quick game matrix 7ed6497
  • Same light scaffold background as lichess website on iOS 745e71d
  • Fix light theme clock style 91c017b
  • Fix transluscent dialogs in custom bg themes Fixes #1450 2dca929
  • Restore dark background colors 22ca16d
  • Improve quick game matrix theme 79a954f
  • Disable PGN and FEN share on analysis when computer is not available a19d7d6
  • Migrate player screen to use app bar bottom 2fbc372
  • Restore fidelity color scheme on iOS 8fba5e2
  • Add a close account button 745c09b
  • Remove player summary from archived game info dialog 8373087
  • Simplify share menus e4f6502
  • Only blink button if game is playable e94ac7b
  • Make clock tool play button stand out 48d201c
  • Add colors to user performance page. #1504 (thanks ItsDang)
  • Use RichText widget to display study chapters title #1489 (thanks vincendep)
  • Play a notification sound on new messages #1466 (thanks vincendep)
  • Updated puzzle analysis and other eval arrows to match theme arrow #1461 (thanks ItsDang)
  • Add Puzzle Hints #1459 (thanks CloudyDino)
  • Add unrated puzzles option #1445 (thanks CloudyDino)
  • Show chapter numbers #1438 (thanks vincendep)
  • Added emergency sound to the clock tool #1409 (thanks sdalvi10)
  • [Feat] Load position in board editor #1394 (thanks vincendep)
  • Always start white clock in clock tool #1390 (thanks CloudyDino)
  • Flutter-chessground: Fix pawn promotions during bot play #68 (thanks eliogilvy)

Website updates

  • Add xkcd piece set #17051 (thanks detroyejr)
  • Fix clock bar flicker on android brave #16970
  • Fix copy PGN to clipboard #17046
  • Do not unfocus chat when clicking on it again #17072
  • Have a click unselect pgn text if already selected #17064
  • Do not have the client engine use the server eval #17061
  • Fix Stockfish 17 webassembly stack overflow crashes dd6ae89
  • Allow immediate draws if opponent has no mating material #16989
  • Improve draw offers when viewing previous plies #16979
  • Enable searching for any non-space phrase in a chapter title #16959
  • CSS assets are now cached consistently by cloudflare #16938
  • Tone down the warning when a losing player runs out the clock #17074
  • Do not delete tour if official #17024
  • Do not let non-admin broadcast users edit the pinned streamer #17023
  • Allow proton.me email domains #17022
  • Add Crazyhouse support to non-visual user interface #16997
  • Support monitoring for lichess broadcaster app #16991
  • Fix broadcast form logic involving chess.com domain #16974
  • Let bots play arena games #16963
  • Add CGO & GRL flags for fide #16947
  • Fix buggy css rule on ublog creation form 01bc246
  • Read up to 768 games in official broadcasts 1bf40ff
  • Allow importing PGN without a chapter name e68c947
  • Dont actively sabotage older Safari versions a38a350
  • Add bounds for level in StageProgress form cc010e4
  • Update links to spreadshirt shop 69840b9
  • Don't schedule elite tournaments more than a week in advance 6224e80
  • Allow youtube clip embeds in blogs d208b96
  • Prevent bots from berserking from the web UI ad72bc2
  • Show up to 12 alternative boards on the broadcast gameplay page 12d2a5c
  • Autoscroll chat on insertion 608de8c
  • Prevent chatting in event far in the future b10bb1f
  • Handle escape key correctly in all dialogs ab533e4
  • Dont traverse variations on accidental shift key presses c4cf795
  • Let the broadcast owner set the round status af04531
  • Unlimited bot challenges to friends 0bada1b
  • Fix timing issue where a practice lesson can be skipped #17075 (thanks yugarinn)
  • Do not show markdown preview tab in blog editor #17060 (thanks nicvagn)
  • Fix engine failure error message #17049 (thanks yafred)
  • Change profile links in chat into mentions #17047 (thanks arthurlw)
  • Do not allow text selections in clock area during gameplay #17033 (thanks arthurlw)
  • Allow user to select color again in blind mode #17017 (thanks yafred)
  • Exclude private studies from profile count #16982 (thanks boriskrisanov)
  • Test for draw when parsing a pgn before assuming resignation #16965 (thanks yafred)
  • More accurate help message when pasting pgn in study #16927 (thanks yafred)
  • Show correct max number of games for multi PGN import #16922 (thanks jelmis)

API updates

  • Add withdraw field /api/tournament/id/results #17079
  • Add web scope to tournament join and withdraw APIs #17044
  • Return bots and account age conditions in tournament API #16996
  • Add reloadEndpoint to the tournament API json 4b2bf47
  • Enable oauth in /api/tournament/:id 0e75dc0
  • Docs: Remove followsYou field from example #424
  • Docs: Setup formatting with prettier and format all files #422
  • Docs: Document missing tournament conditions #421
  • Docs: Update schema for adding/editing broadcast round #420
  • Docs: Use openapi string data validation to show character lengths #419
  • Docs: Broadcast via Lichess usernames #418
  • Docs: Added new client to list #423 (thanks Rabergsel)
  • Docs: Add required to cloud eval #416 (thanks AllieJonsson)

Broadcaster updates

  • Broadcaster: Add link to open devtools from within UI #61 (thanks fitztrev)
  • Broadcaster: Setup tauri single-instance plugin #60 (thanks fitztrev)
  • Broadcaster: Upgrade to tailwindcss v4 #59 (thanks fitztrev)

Opening explorer updates

  • Accomodate for move-orders in Semi-Slav defense v Rubinstein System #223 (thanks xaverh)
  • Add Dilworth Gambit #222 (thanks Zinkelburger)
  • Guatemala Defense is part of Owen Defense #221 (thanks Malorra)

Database updates

February 2025

Mobile updates

  • Broadcast carousel #1384
  • Custom board background and theme improvement #1370
  • Challenge leela odds bots #1211 (thanks HaonRekcef)
  • Add killbox mate puzzle theme #1368
  • Improve user profile location display logic #1373 (thanks okmsbun)
  • Add blink effect to next button based on game step cursor #1371 (thanks okmsbun)
  • Fix: Correspondence confirm move behavior #1329 v2 #1349 (thanks vimarisoft)
  • Make arrow color of puzzles the same as best move on analysis #1340 (thanks vimarisoft)

Website updates

Notable changes

  • Lichess has stopped posting updates on Twitter/X. You can still keep up-to-date using the Lichess feed. You can also follow us on any of our other platforms
  • Allow a user to make sticky blog posts #16736, #16777 (thanks yafred)
  • Changes to the way that fonts are rendered on browsers #16806
  • compression: Port game compression library from Java to Scala for performance improvements #20

Broadcast updates

  • Show or Hide broadcasts results #16650 (thanks yahya-lafhal)
  • Hide broadcast results in the single board view #16799 (thanks yafred)
  • Create broadcasts from a list of Lichess usernames, support delay for these broadcasts. d42d9d5, #16848
  • Broadcaster app: Changes to the way files are watched and multi-game pgn files are uploaded #58,#57,#56,#55, #53
  • Add new fide federations #16901
  • Using fide flags as webp instead of SVG #16894
  • Results with color #16830

Other Changes

  • Allow any member of a team to create team simuls #16832
  • Add Vukovic Mate puzzle theme f3187e7
  • Improvements to accessibility mode #16560, #16864
  • Changes to account closure options #16779
  • Remove references to Lichess twitter 3a80fb7, 2a40266
  • Execute top move from tablebase with Shift+Space #16896 (thanks phihag)
  • Add Kurdistan flag #16810
  • Add Neovim flair #16847 (thanks brabli)
  • Add emacs flair - close #16841 #16844
  • Add winning color if present to JSON game streams #16725 (thanks tors42)
  • Minify SVGs #16891,#16746,#16741,#16740,#16735
  • Replace ===true with !! and !==true with ! for boolean|undefined variables #16884 (thanks cmgchess)
  • Add analysable condition check to eval keybind #16863 (thanks cmgchess)
  • Remove blindfold mode from shortcuts help #16860 (thanks yafred)
  • Fix practice mode underboard in the case of stalemates #16678 (thanks FawzyAshraf)
  • Show puzzle hint when square is 0 #16720 (thanks KillerKady)
  • Allow private notes on games in kid mode #16769 (thanks yafred)
  • Include ublog in header on synchroneous requests #16749 (thanks yafred)
  • Change tournament table style on smaller screens #16747 (thanks FawzyAshraf)
  • Export PGN with tags #16739 (thanks yahya-lafhal)
  • User who can edit lichess post should see a edit link on the post #16785 (thanks yafred)
  • Fix error in browser console when typing a note #16781 (thanks yafred)
  • Make challenge list scrollable #16816 (thanks yafred)
  • Chess-openings: Corrections and additions in the Nimzo-Indian Defense #219 (thanks seccohazy)
  • Chess-openings: Nimzo-Indian Saemisch Variation starts after 4.a3 #218 (thanks Allirey)
  • Chess-openings: Move order fixes in the French Defense #217 (thanks seccohazy)

API updates

Translations

Many language translations added/updated thanks to many CrowdIn contributors

Development aids

  • Lila-docker: Add ability to have Live streamers #139
  • Lila-db-seed: Mention lichess indexes creation in README #65 (thanks yafred)
  • Lila-db-seed: No index should not be created by spamdb (use lila/bin/mongdb/indexes.js #64 (thanks yafred)
  • Lila-db-seed: Create index needed for /study/topic/\<topic>/mine #63 (thanks yafred)
  • Mobile: Improve documentation on setting a dev environment #1334, #1369

January 2025

Mobile app updates

  • Many performance improvements
  • Improvements to Broadcasts, Studies, and Streamers tabs
  • Added Custom board colors and theme #1251
  • Add study share menu & improve study menus #1216
  • Feature: share option in the broadcast game screen #1254 (thanks HaonRekcef)
  • Added Bluesky to social links #1239 (thanks TheOnlyTails)
  • Add privacy setting for challenges #1208 (thanks HaonRekcef)
  • Show captured pieces instead of material imbalance #1142 (thanks Jimima)
  • Edit profile page changes, closes The biography resets when reducing the keyboard #1245 #1269 (thanks nunibye)

Website updates

Broadcast updates

  • Improvements to clock handling in broadcast games
  • Distinguish board when viewing a line variation b3930a1
  • Added broadcast button to return to live position b909dc5
  • Warn about unsecure http:// URLs in broadcast upstream form 904c1ab
  • Stockfish now works on Broadcast embeds
  • Improvements to Broadcast listing pages

Internationalization

Other

API updates

  • Board API can specify a color when creating a realtime seek cc36ba3
  • Broadcast push endpoint updated with /api prefix #404
  • Pgn-viewer: Add option to enable/disable keyboard navigation #42
  • API Docs: Add mapping to timeline model #402 (thanks AllieJonsson)
  • API Docs: Update Timeline.yaml to use anyof #401 (thanks AllieJonsson)
  • API Docs: Update Timeline.yaml with models #400 (thanks AllieJonsson)
  • API Docs: Opening explorer models #399 (thanks AllieJonsson)

See the lila-search changelog for what's changed with search functionality

December 2024

Key changes

  • Puzzle improvements
    • Added optional puzzle hints 0145b2a
    • Improved quality of puzzles by removing ones where multiple similar evaluation lines are possible #16293 #16390 #16438 #16488
  • Glicko improvements for ratings
    • Use lower virtual rating for first game pairing #16385
    • Glicko calculator moved to scalachess library #16441 #597
  • Use device's share UI for "play with friend" on mobile #16417
  • See the lila-search changelog for what's changed with search functionality
  • Game/Puzzle/Eval database update

Mobile app updates

  • Add ability to watch Broadcasts #944
  • Add interactive studies #1128 #1111 #990
  • Implement study "like" #1190
  • Analysis improvements
    • Implement engine search time on Analysis board #1188
    • Add tabs for moves, opening explorer, and game summary #1167
    • Add button to expand collapsed variations #1137
    • Allow 0 eval lines #1125
  • Improve board default settings when using a mouse #1165
  • Sound effects
    • Play Sound.lowTime if less than 8 seconds to make first move #1160
    • Play sound when new game is started #1159
  • Clock improvements and move lag compensation #1135
  • Other UI/UX improvements
    • Increase move list height in tablet/landscape view #1126
    • Filter chat spam b863459

API updates

Broadcast updates

  • Broadcaster App v0.24.0 released
    • Added broadcast pagination
    • Added ability to list broadcasts of other users
    • Support games.pgn without game-x.pgn #41
  • Setting up a new board will bypass any move delay so it appears instantly d73217b

Other updates

Thanks to our community contributors

  • Many language translations added/updated (thanks to many CrowdIn contributors)
  • Study Editor starting position match up with the variant #16481 (thanks johndoknjas)
  • Add vignette effect on time control flairs #16475 (thanks TheForkPower)
  • Allow up to 10 emojis/symbols in a user's profile bio. #16469 (thanks johndoknjas)
  • Adjust board thumbnails #16468 (thanks johndoknjas)
  • Make squares evenly proportioned on grey and olive boards #16456 (thanks johndoknjas)
  • More strict equality #16449 (thanks johndoknjas)
  • Change some usages of == into ===. #16440 (thanks johndoknjas)
  • Fix square highlighting for the wood board. #16434 (thanks johndoknjas)
  • Have Git ignore dump.rdb. #16433 (thanks johndoknjas)
  • Fix highlighting of chapter (#16418) #16432 (thanks FreerGit)
  • Square highlight misalignment in .svg board themes #16408 (thanks johndoknjas)
  • Fix: sound slider not working on safari #16405 (thanks seren5240)
  • In the lobby, vertically align Mode with Rating and Time. #16399 (thanks johndoknjas)
  • Move the list button to a less used area of the lobby chart #16388 (thanks johndoknjas)
  • Enable newlines in profile bio and don't shorten text #16346 (thanks johndoknjas)
  • Prevent overwrite of .mchat\_\_tab border radius in voice tab #16341 (thanks DevelopmentHF)
  • Automatic orientation for puzzles in studies #16339 (thanks phihag)
  • Add delay to victory, defeat sounds #16319 (thanks Zinkelburger)
  • Add keyboard support to lobby pools #16280 (thanks blevantovych)
  • Scalachess: Use FIDE table for rating performance calculation #595 (thanks aarew12)
  • Chessground: Improve CSS for coordinate text placement and color #304 (thanks BSmick6)
  • Lila-search: Use Future.successful wherever possible #361 (thanks gravetii)
  • Lila-search: Update otel4s to 0.11.0 and otel4s-experimental-metrics to 0.5.0 #358 (thanks iRevive)
  • Chess-openings: Add a D11 line #212 (thanks jdart1)
  • Chess-openings: French Winawer: Poisoned Pawn, Eingorn and Warsaw variations #211 (thanks seccohazy)
  • Chess-openings: Add a transposition into E04 #209 (thanks jdart1)
  • Chess-openings: Add Delayed Alapin Variation #208 (thanks jdart1)
  • Mobile: Add accept/decline buttons to game result dialog after rematch offer received #1153 (thanks Jimima)
  • Mobile: Added choice picker in settings and game settings sheet to switch the clock position to the left side #1136 (thanks Jimima)
  • Flutter-chessground: If using a mouse, handle piece dragging like lichess web. #59 (thanks safraser)

November 2024

Key changes

Broadcast updates

  • Lichess Broadcaster App is now code-signed for MacOS
  • Added timezone selection when setting broadcast start date/time
  • UI improvements to Board tab's empty state #16230
  • Fix contributor permissions for multiple broadcast rounds 969ea01 #16177

Mobile app updates

  • Revamp puzzle tab #1071
  • Make analysis tree view more "tree like" #1053
  • Coordinate trainer adjustments #1041
  • Improve BoardThumbnail with a board optimized for scrollables 820ec0e
  • Add study and bersek icons 87d307f
  • Show lichess analysis comments by default 937d22d

API updates

  • Add API endpoint for recent tournaments played by a player #16259
  • Faster user tournament downloads for oauth requests 90820ba
  • Custom 404 message for cloud eval position not found #388 #16207
  • Updated broadcast tour schema + add timezone #386 02921a1
  • Removed color from board API seeks #384
  • Allow challenge API to ignore moreTime rules and preferences 3539837

Other updates

  • Added custom UI for confirms/prompts/alerts #16279
  • Use webp for streamer, blog, coach, and tournament image uploads #16233 #16231
  • Default study icon if a flair is not selected #16205
  • Allow emojis in notes #16165
  • When writing blog posts, remember markdown editor mode #16170
  • lila-search v3.0.2 released with CLI updates, performance improvements, and more

Thanks to our community contributors

  • Many language translations added/updated (thanks to many CrowdIn contributors)
  • Use toLowerCase on the orientation color to handle it correctly when adding a chapter #16264 (thanks yahya-lafhal)
  • Display the 'c' keyboard shortcut under the 'other' to focus chat for rounds #16258 (thanks shimsangjoon)
  • Add "checkmate" sound to robot voice #16220 (thanks Zinkelburger)
  • Change cursor style for profile rating graph #16203 (thanks kneuner)
  • Make the black bishop's crosses white for the Maestro and Tatiana sets #16166 (thanks ShawkMusic)
  • Revert "Make the black bishop's crosses white for the Maestro and Tatiana sets" #16193 (thanks ShawkMusic)
  • Keep the remember me checkbox value when failing the login #16192 (thanks yahya-lafhal)
  • Add some easy tests for game.Event #16150 (thanks costas-basdekis)
  • Fix: Use single column on mobile forum search #16141 (thanks seren5240)
  • Scalachess: Use FIDE table for elo calculation #581 (thanks aarew12)
  • Chess-openings: Add Martian Gambit (B18) #205 (thanks TheForkPower)
  • Chess-openings: English Opening fixes #204 (thanks jdart1)
  • Chess-openings: Update move order for Benoni Defense: Benoni-Indian Defense, Kingside Move Order #203 (thanks ryathom57)
  • Chess-openings: Sorensen gambit issue #200 #202 (thanks esmith1092)
  • Lila-db-seed: Simul seeder #57 (thanks tontsa28)
  • Mobile: Disable resizing of app view on Android #1072 (thanks meenbeese)
  • Mobile: Add local notifications and listen for challenge requests #902 (thanks incogg)
  • Dartchess: Fix PGN test by differentiating single and multigame PGN parsing #42 (thanks KMK-Git)
  • Papers: Remove extra spaces, duplicates and invalid text #1 (thanks jmg-duarte)

October 2024

Key changes

API updates

  • Add info.{location, website, standings} to broadcast response #380
  • Blitz games can now be played with the board API when created via bulk pairing #383

Mobile app updates

  • Add offline games ("Over the board") #924
  • Add symmetric piece set #51
  • Improve share menu 26510d3
  • Improvements to premove behavior #961 #49
  • Improvements to opening explorer UI
  • Improvements to notification functionality
  • Improvements to challenge UI

Broadcast updates

  • Broadcast info: add location, websiteOfficial, standings #16118 #16009
  • Broadcast organizers can set times with 12-hour clocks de5b3e

Other updates

  • Improved challenge links #16004 - Read more here
  • PGN Viewer will show game result as final comment
  • More blog posts shown on homepage #16126 and highlight Lichess blog posts 5f96cf5
  • Search improvements for forum posts
  • Improved arena tournament scheduling (more tournaments + better spacing)
  • Support more game results 0-0, 0-½, ½-0 #16081

Thanks to our community contributors

  • Many language translations added/updated (thanks to many CrowdIn contributors)
  • Improve broadcast date filtering #16047 (thanks seren5240)
  • Update to UI for disabling and enabling the chat room (#15943) #15961 (thanks Itachii27)
  • Fix display top players in rating distribution chart #16035 (thanks seren5240)
  • Fixes no puzzle history console error #16116 (thanks ChaseNelson)
  • Fixes sound slider CSS to remove logs #16107 (thanks ChaseNelson)
  • Adds overflow-wrap to prevent overflow of study\_\_metadata table rows #16076 (thanks 1rodriguez)
  • Fix minimum width for uncommon openings percentage bar #16065 (thanks seren5240)
  • Replace divs with buttons in study chapter #16064 (thanks franciscoBSalgueiro)
  • Fix interactive lesson state #16056 (thanks seren5240)
  • Fix activity timeline mixes correspondence and correspondence-length variants #16052 (thanks seren5240)
  • External link warning in bio links #16051 (thanks seren5240)
  • Show Your Rating in parens too #16042 (thanks greg-finley)
  • Fix can't complete knight bishop "epic failure" #16027 (thanks seren5240)
  • Lila-search: Use Instant directly at config loading #328 (thanks BanyMaciej)
  • Lila-search: Fix bug introduced in refactoring of unique #308 (thanks gravetii)
  • Lila-search: Refactor unique method to use exists without empty string #303 (thanks gravetii)
  • Chess-openings: Add an A29 line #190 (thanks jdart1)
  • Database: Update github link in index.html.tpl #57 (thanks cakiki)
  • API Docs: Update documentation example for user performance statistics #377 (thanks EpokTarren)
  • API Docs: Make example for /api/tv/channels match api responses #376 (thanks EpokTarren)
  • Mobile: TV add last move highlights #1040 (thanks sid0-0)
  • Mobile: Disable board analysis if more than 32 pieces on board #1036 (thanks sid0-0)
  • Mobile: Added option to open Board Editor #1032 (thanks sid0-0)
  • Mobile: Update FVM config files for FVM 3.0 #1025 (thanks jas14)
  • Mobile: Fix castling in 960 #995 (thanks HaonRekcef)
  • Mobile: Link opening name to lichess page instead of wikibooks in explorer #989 (thanks Mauritz8)
  • Mobile: Improve display and sharing of master games #953 (thanks HaonRekcef)
  • Mobile: Improve share pgn #951 (thanks HaonRekcef)
  • Mobile: Add en passant option in Editor #950 (thanks HaonRekcef)
  • Mobile: flip players on flip board action in archived game screen #905 (thanks Mauritz8)
  • Mobile: Time handicap in clock tool #685 (thanks Mauritz8)
  • Lila-stockfish-web: Fix emscript version message #4 (thanks Disservin)
  • Lila-stockfish-web: Split Glue File & Prepare for Sf 17 #2 (thanks Disservin)

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 and allowList 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

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

  • Improve board interactions with a custom gesture detector #37 and #833

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

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

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

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 and descriptionPrivate 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

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

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

Other updates

Thanks to our community contributors

December 2023

Key changes

Other updates

Thanks to our community contributors

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

Thanks to our community contributors

May 2023

API updates

April 2023

API updates

March 2023

API updates

February 2023

API updates

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

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

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

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

API updates

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

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

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

July 2021

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

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

March 13th, 2021

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.