GithubHelp home page GithubHelp logo

franciscobsalgueiro / en-croissant Goto Github PK

View Code? Open in Web Editor NEW
359.0 359.0 35.0 8.46 MB

The Ultimate Chess Toolkit

Home Page: https://encroissant.org

License: GNU General Public License v3.0

Rust 18.07% TypeScript 81.39% CSS 0.52% HTML 0.03%
chess chess-database react rust tauri

en-croissant's Introduction

Hi there ๐Ÿ‘‹

GitHub stats

Top Langs

en-croissant's People

Contributors

anderslundback avatar coccocoahelper avatar franciscobsalgueiro avatar pmyszka avatar powy-e avatar sleeplessghost avatar tblrone avatar yuval59 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

en-croissant's Issues

Incorrect calculation of total games vs downloaded games.

When downloading lichess or chess.com games of a player the number of downloaded games is higher than the number of total games.

I am investigating the source of the discrepancy right now and will hopefully have a PR that fixes this soon.

Example:

grafik

Bug when trying to add account

I tried on MacOS to add my chess.com account. Then this error occurs :
Application error: a client-side exception has occurred (see the browser console for more information).
Of course, the Home menu is not working anymore, always showing this message when I try to open it. I tried to delete the app and install it again, but the same message appears. I think a file was written in my system and the new installed app uses this file โ€ฆ

Engines processes should be persisted

Currently, for simplicity, engine processes are restarted on every position or settings change. However, they should be kept alive and the changes to position and settings be done through the uci protocol (#11 (comment))

Problems:

  • Avoiding leaks: processes should be killed when no longer needed (e.g. tab is closed)
  • Engine should be restarted if it quits unexpectedly
  • Should evaluations for previous evaluated positions be cached in some way? Maybe optionally allow to re-run the engine?

Still cannnot add engine on MacOS en-croissant v2.1?

Hello again. I still cannot add an engine on MacOS en-crossaint new version v2.1. I go to -engines-add-local-click-in-the-binary-field and all engine binaries are still greyed out. Am I missing some option?

Also although I could download Komodo under -engines-download it will never actually start (no err msg, nothing) if I select it to play against as an engine or for analysis. . So I really cannot test ANY of the play or analysis features on MacOS!

Thanks in advance. - kenpchess

New Release?

Hello! I noticed you are making a lot of commits. Are you going to make a new release anytime soon? (I am on an older mac - Big Sur OS) and never was able to build from source anyway. Thanks in advance.

Local puzzle databases

I would like to implement this, however I can't find any standard way of representing puzzles.

I made the lichess puzzle db with a small script to convert from the specific format used by the lichess database to the SQL format accepted by en croissant.

@dav1312

Migrating to Mantine v7

Now that Mantine Datatable supports v7 we can start the migration to the new version, which will require some rewriting of the styles code.

App crashes, when adding an closed Lichess Account

I tried adding my Lichess account although it has been closed to test, if en-croissant can still download its games.

The application immediately crashed and crashes every time I start it again. It only becomes usable again after deleting en-croissant's AppData directory.

I verified, that the same problem happens, if I try to add other closed accounts and that adding accounts, that are not closed, works.

Steps to reproduce:

1. Go to Accounts->Add Account
2. Choose Website=Lichess and Username=Nevsor
3. Click Add

Additional information:

OS: Windows 11
en-croissant: v0.6.0

Error message:

Unexpected Application Error!

Cannot read properties of undefined (reading 'ultraBullet')

TypeError: Cannot read properties of undefined (reading 'ultraBullet')
    at https://tauri.localhost/assets/index.js:1123:126023
    at Array.map (<anonymous>)
    at NTt (https://tauri.localhost/assets/index.js:1123:125915)
    at nP (https://tauri.localhost/assets/index.js:38:19551)
    at Ok (https://tauri.localhost/assets/index.js:40:3143)
    at IJ (https://tauri.localhost/assets/index.js:40:44877)
    at AJ (https://tauri.localhost/assets/index.js:40:39819)
    at d5e (https://tauri.localhost/assets/index.js:40:39745)
    at S6 (https://tauri.localhost/assets/index.js:40:39596)
    at Dk (https://tauri.localhost/assets/index.js:40:35959)

Analysis Report Issues

If I download and install En Croissant from the web page, open a game then run an Analysis Report, values in Brilliant, Good, Interesting, Dubious, Mistake or Blunders and moves are highlighted appropriately. And since the pre-reported Chess.com download failures still exist in this version, I would assume it hasn't been updated yet to the latest versions available on Github. But, if I download from Github and build, the values on the Analysis Report are always zero and nothing is highlighted in the move list. In addition the ACPL and Accuracy values are quite a bit different than before (maybe this is as-expected, but I find it hard to believe that my games evaluate to over 99% accuracy pretty much always ... I wish!). The Generate Report Button updates to indicate the evaluation is running.... so something is happening. Other updates (like the aforementioned Chess.com downloads) now work. It feels like my build process works as-expected, etc (I just followed the instructions provided for setup and build using VS Code).

Issues and features

Issues

  • When using multiple engines, the eval bar can get crazy if the engines have very different evals
  • #229
  • #232
    image
  • Wrong file missing error in all engines
    image
  • It's not possible to change the number of lines of chessdb
  • #144
  • #145
  • #143
    image
  • Use move history instead of fens
    position [fen | startpos] moves ...
    This helps with / fixes 3-fold detection
  • If an analysis is running, and database moves are pressed, the analysis doesn't update the position and the engine will still analyze the original position
  • #132
    The uci command also outputs all the available options with their type, and their default values. Sending the engine options that it doesn't support may cause unexpected issues.
    Something that would be cool is adding a button to select a file from the computer if the option has "file" (or "File") in its name.
  • When a pgn starts with black to move the moves still start as if it was white
    e.g. loading:
    [FEN "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq - 0 1"]
    [SetUp "1"]
    
    1...e5 2.Nf3 Nc6 *
    
    results in:
    [FEN "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq - 0 1"]
    
    1. e5 Nf3 2. Nc6
    
  • The pictures when trying to load the engine are stretched. Might require to be inside of a div with text-align: center.
  • App crashes trying to enable Stockfish
    image
  • #95
    Prettier lichess deals with this using overflow: hidden to the chessboard. Chess.com doesn't deal with this and just has a very small border radius which makes this issue imperceptible.
    image
  • #91
  • #90
  • #89
    When using just 1 line with Komodo, the info doesn't update. The engine works fine in the logs.
  • #88
  • #87
  • #81
    This causes some issues like, in Stockfish, clearning the hash after every position which means the engine doesn't "learn" about the game.
  • #62
  • #16
  • #12
  • #39
  • If you try to analyze a previously analyzed position, the eval and depth don't update until you get a to higher depth (even if intentional it doesn't seem like a good idea)
  • #18
  • #22
  • #35
    navigator.hardwareConcurrency
  • The picture for the Komodo default engine should be Komodo, not Komodo Dragon
  • #33
  • #28
    image
  • #20
  • #26
  • #54
    image
  • #30

Ubuntu-only issues?

  • #64
    image
  • #65
    image
  • #68
    • Default komodo:
      image
    • Default Stockfish:
      image
    • Local engines don't appear in the modal when trying to add them into the binary file input

Suggestions

  • #231
  • #146
  • Make the clock progress bar animation move from right to left, just like the progress bar itself
  • #103
  • More keyboard shortcuts
    • New tab (Ctrl+N)
    • Load FEN or PGN from clipboard (Ctrl+Shift+V)
    • Write PGN to clipboard (Ctrl+K)
    • Analyze with all engines (Ctrl+G)
    • Stop all engines (Ctrl+H)
    • Restart engines (Ctrl+.)
    • Play vs engine (F9)
    • Engine selfplay (F11)
    • Generate game report (F12)
  • #116
  • Being able to modify and load a FEN and PGNs directly in the inputs of the info tab
  • #114
    You can make some assumptions like:
    • default flags can be assumed to be w - - 0 1 if some are missing
    • if it has tabs or new lines they should be replaced with spaces
    • multiple spaces or spaces at the beginning or end should be removed
  • Being able to load multiple PGNs in the import PGN game
  • Delete all sidelines
  • #104
  • #142
  • Different arrow colors for each engine
  • More default engines (Leela, Berserk, Igel, Rubi, Koivisto, etc. Or even older Stockfish versions or Stockfish dev)
  • Being able to limit what moves the engine analyzes (searchmoves)
  • The engine page add new button td might need colSpan={3}
    <td>
    <Button
    onClick={() => setOpened(true)}
    variant="default"
    rightIcon={<IconPlus size={14} />}
    >
    Add new
    </Button>
    </td>
  • Improve Play Chess options.
    • Some engines might not support Skill Level.
    • Impossible Bot should not have a Skill Level input, it should use the engine default.
    • If the user changes the default parameters, the selected bot should change to some "Custom Bot".
    • More limit customization like limit by nodes, thinking time or a time control.
    • It makes no sense to have a Color option when selecting Human.
    • The Event and player names should be filled accordingly. For example: Event: Easy Bot. Black: Stockfish 16.
  • #115
  • Being able to let 2 engines play against each other
  • #113
  • Being able to disable inline notation of the moves
  • Resizable chessboard
  • Automatic resize of the chessboard for small screens
  • #47
  • Using online databases (https://github.com/noobpwnftw/chessdb) for move evaluations
  • Save engine settings (fixed by #92)
    It is pretty annoying having to set the settings every time I open a new tab or when closing an opening the app.
  • #24
  • #70
  • A way of running all engines at the same time
  • #45
  • #42
  • Being able to limit the engine by time, nodes, mate, or no limit at all.
  • Update default Komodo to 14 (https://komodochess.com/pub/komodo-14.zip)
  • Eval graph
  • #78
  • #43
  • #37
    image
  • #14

Game report

Issues

  • After changing a tab the report will not be shown
  • Trying to generate a report with an engine that doesn't support multipv will crash
  • Unfinished reports
    1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 *
    1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 Bc5 5. c3 O-O 6. O-O d6 *
  • If a report starts with black to move and white makes the evaluation go up, it will trigger a mistake e.g. with a 100ms analysis with SF 16.
    [FEN "r4rk1/1pp3p1/p2p1qPn/3Pp3/2P1B1b1/5N2/PP2QPPR/1K1R4 b - - 4 26"]
    [SetUp "1"]
    
    26... Bf5 27.Nd2 Ng4 28.Qxg4 *
    
    image
  • The starting position is not being analyzed.
    This means that if the starting position has an evaluation very different from 0.15, the first move will be misevaluated. e.g. If white has piece odds, no matter what move it does it will be marked as a blunder or, if black has piece odds, if white makes a mistake it will not be marked as a blunder.

Suggestions

  • Stop reports
  • Live report of nags
  • Use the selected engine settings
  • More configurations (limits)
  • Do the analysis backwards
    With engines like Stockfish or Komodo this considerably increases the quality of the analysis, in addition to providing a more reliable and trustworthy one as well, which allows for the following:
    • Clean up the analysis
      When the analysis is finished, go through the moves forwards and:
      • If the player played the best move, we should use the same evaluation the previous position had. e.g if the best move in the starting position is 1. e4 and the evaluation in the starting position is +0.4, and after 1. e4 it was +0.3 then 1. e4 should increase to +0.4.
      • If its black to move and the evaluation is higher than in the previous position or, if its white to move and the evaluation is lower than in the previous position, we should use the same evaluation the previous position had.
    • Add best, excellent, and good moves
      Base on these limits https://support.chess.com/article/2965-how-are-moves-classified-what-is-a-blunder-or-brilliant-and-etc
    • Add great (!) moves
      (Change multipv to 2) If the played move was the best move, and if the played move was the only good move in the position, and it's not taking material, it should be "great".
    • Add brilliant (!!) moves
      If the played move was the best move, and that move made a piece of higher value than the one we might or might not have taken be in danger, it should be "brilliant".

Add support for variants

Support all variants from lichess.

  • Chess960
  • King of the Hill
  • Three-Check
  • Antichess
  • Atomic
  • Horde
  • Racing Kings
  • Crazyhouse

Don't stop running engine for checkmate position

When you reach a checkmate position, it seems odd to stop the engine - often I want to walk backwards from a position and evaluate the positions that lead up to that and it's annoying to have to restart the engine process.

Repro:

  1. New analysis board:
  2. Run Stockfish
  3. f3 e6 g4 Qh4# (oddly 40% of lichess play d5 here ๐Ÿคฆ)
  4. Stockfish stops running

Cannot add engines on MacOS

Hello, interesting software! I cannot add an engine under the Mac OS version of en-crossant. It seems that all engine binaries are greyed-out under the local file selection (the download option seems to work, though). (I have dozens of UCI and WindBoard engines, I compile them myself and they work fine under cutechess, BanksiaGUI, etc). I hope you keep improving en-croissant, it is "rough around the edges" but very interesting. Thanks! --kenpchess

Improve progress indication for actions that take a long time

Currently, many actions that require significant processing time are indicated by a simple spinner. However, some of these actions could benefit from a more detailed progress indicator to give users a better sense of how long the process will take, what stage it is currently at, and whether any errors have occurred.

Suggested by @kenpchess in a discussion in #3

Castling text wrap

Unable to reproduce, even on Linux. I can try a fix but I'm not sure if it'll work.

Unable to open application

The steps I followed were the following:

  1. I downloaded the linux .deb file from the website, as I am running Ubuntu 22.04.3 LTS.
  2. sudo apt install ./en-croissant_0.6.0_amd64.deb
  3. I then executed the binary, and this is the output that I get
    image

I don't know what the issue is, but I've been trying to fix this for the last couple of hours without much success, so any help I could get would be appreciated.

Engine settings not saving

Hey im loving the style of the GUI.
I understand that its still early in development. Is there some kind of setting i have to check for the app to save engine settings like threads, depth and hashsize? Would love to not enter those again every time after starting.

Thanks!

Feature suggestion: Eval chart for game report

It would be nice to have an eval chart shown after generating a report of a game similar to what lichess shows:

image

May need some reworking of the Report panel as there doesn't look to be much space for it currently, perhaps the section with accuracy / acpl / number of good etc moves could be compacted? Or the chart could go in another panel potentially.

Lichess uses a highcharts area chart, should hopefully also be possible to make something similar with recharts area chart https://recharts.org/en-US/api/AreaChart

I'm happy to add this, just wanted to check if it was a feature you wanted first and if you have any thoughts about where it should go in the UI

Sidenotes:

  • Could potentially hide the "Generate report" button after you have generated a report (unless the PGN is modified)
  • The "Generate report" modal could default to selecting the first engine (if you have any) instead of requiring it to be picked each time

Rework of repertoire practice mode

Suggestion to rework the practice mode to use a spaced repetition algorithm that factors in things like date solved to determine when positions should next be reviewed. A common one is SM-2 (example implementation: https://github.com/Maxvien/supermemo)

IMO the current workflow is a little clunky as well with needing to click on "Practice next position" / "Practice random position" after each position.

I can try adding this at some point if you would be happy with the change

Chess.com download doesn't work.

Adding a Chess.com account works, but when the option to download games is clicked it doesn't work and the wait indicator just spins. The downloads never occur. Lichess downloads are working fine.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.