En Croissant - a new chess GUI

Discussion of chess software programming and technical issues.

Moderator: Ras

fransal
Posts: 10
Joined: Wed Feb 15, 2023 6:35 pm
Full name: Francisco Salgueiro

En Croissant - a new chess GUI

Post by fransal »

Hello everyone!

I am excited to share with you my latest project, a new chess GUI that I have been working on for the past few months. I wanted to have a desktop app that was as user-friendly as the web-based ones. It includes a database based on SQLite, and it's getting close to being as fast as Scid. The schema is similar to OCGDB, with the 2-byte move encoding. Although only exact position searches are currently implemented, I plan to add partial searches in the near future.

Other features currently done:
  • Analyze your games with multiple engines at the same time
  • Download games from Lichess or Chess.com and keep them up to date
  • Add annotations and comments to your games
This is still a work in progress, but if you want to give it a try and maybe give some feedback, here's the download page:
https://www.encroissant.org/download

And if you want to contribute or check out the source code, you can visit the GitHub repository here:
https://github.com/franciscoBSalgueiro/en-croissant
User avatar
AAce3
Posts: 80
Joined: Fri Jul 29, 2022 1:30 am
Full name: Aaron Li

Re: En Croissant - a new chess GUI

Post by AAce3 »

Congrats! the GUI looks wonderful and I'm loving the aesthetic.
Forced en passant is an option that I haven't seen before :P
I'm having trouble adding a local engine exe on windows though. hoping to be able to use this for analysis if/when it gets fixed.
User avatar
algerbrex
Posts: 608
Joined: Sun May 30, 2021 5:03 am
Location: United States
Full name: Christian Dean

Re: En Croissant - a new chess GUI

Post by algerbrex »

AAce3 wrote: Thu Mar 23, 2023 10:51 pm Congrats! the GUI looks wonderful and I'm loving the aesthetic.
Forced en passant is an option that I haven't seen before :P
I'm having trouble adding a local engine exe on windows though. hoping to be able to use this for analysis if/when it gets fixed.
Yup same for me.

I agree though, I really like the minimalistic aesthetic!
fransal
Posts: 10
Joined: Wed Feb 15, 2023 6:35 pm
Full name: Francisco Salgueiro

Re: En Croissant - a new chess GUI

Post by fransal »

Thank you very much!

I believe the new version fixes that issue. Let me know if you have any more problems.
I'll also be adding an updater in the next version, so it will give an in-app notification when there's a new release.
User avatar
Steve Maughan
Posts: 1265
Joined: Wed Mar 08, 2006 8:28 pm
Location: Florida, USA

Re: En Croissant - a new chess GUI

Post by Steve Maughan »

Congrats — it looks really good!

—Steve
http://www.chessprogramming.net - Juggernaut & Maverick Chess Engine
bastiball
Posts: 5356
Joined: Tue Oct 20, 2020 4:18 am
Full name: Basti Dangca

Re: En Croissant - a new chess GUI

Post by bastiball »

I love the GUI!
Basti Dangca
CCRL testing group
fransal
Posts: 10
Joined: Wed Feb 15, 2023 6:35 pm
Full name: Francisco Salgueiro

Re: En Croissant - a new chess GUI

Post by fransal »

I've just released 0.2.0!

I improved the performance of position searching and changed the move codification, which has resulted in smaller database sizes. The new codification uses a single byte to represent the index for the list of legal moves in the position. There might be a way to reduce the size even further by using a variable number of bits, but that's something to be explored in the future.

I've also added the database downloader with the options of MillionBase, Caissabase and the Ajedrez Data collections. Do you know any other good databases to include?
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: En Croissant - a new chess GUI

Post by mvanthoor »

fransal wrote: Wed Apr 05, 2023 12:40 pm I've just released 0.2.0!
I like the program. It's (almost) what I have in mind setting up one day. I see you wrapped it in Tauri. Did you use "normal" web-technologies to create this, or is it written in something like Yew? (The later is what I plan to do.)

AFAIK, BanksiaGUI uses its own SQL-database now (the one you refer to); if yours is similar, as you say, it could be useful to align both Banksia and your GUI. Personally I'm also going to use an SQL database and it would be nice that the format turns out to be a standard.

The next step would be to redefine PGN version 2 to use the full, long notation instead of SAN and I could actually die happy.
I've also added the database downloader with the options of MillionBase, Caissabase and the Ajedrez Data collections. Do you know any other good databases to include?
https://theweekinchess.com/

Not a full database, but one can get it for a donation, and then add the latest games to it. (Or you can start from a different database and then add their games).
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: En Croissant - a new chess GUI

Post by mvanthoor »

AAce3 wrote: Thu Mar 23, 2023 10:51 pm Forced en passant is an option that I haven't seen before :P
It's a meme from reddit's AnarchyChess. It's a stupid subreddit (IMHO) that pops up in your reddit feed if you do anything remotely chess-related. Often people get caught off-guard and some newcomers to chess actually think that some of the crap they post are actual chess rules until someone points out to them that AnarchyChess is a meme subreddit.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
fransal
Posts: 10
Joined: Wed Feb 15, 2023 6:35 pm
Full name: Francisco Salgueiro

Re: En Croissant - a new chess GUI

Post by fransal »

mvanthoor wrote: Wed Apr 05, 2023 4:22 pm
fransal wrote: Wed Apr 05, 2023 12:40 pm I've just released 0.2.0!
I like the program. It's (almost) what I have in mind setting up one day. I see you wrapped it in Tauri. Did you use "normal" web-technologies to create this, or is it written in something like Yew? (The later is what I plan to do.)
Thank you! I'm using React, but I did consider using Leptos. The main reason I ended up choosing React was to be able to use the Mantine component library, which I think is quite nice.
AFAIK, BanksiaGUI uses its own SQL-database now (the one you refer to); if yours is similar, as you say, it could be useful to align both Banksia and your GUI. Personally I'm also going to use an SQL database and it would be nice that the format turns out to be a standard.
BanksiaGUI has a similar format, but it isn't compatible. The 3 differences right now are:
  • I added 3 new columns to the Games table: WhiteMaterial, BlackMaterial and PawnHome. The first two are the minimal amount of material points each color had during the game. PawnHome is a bit representation of whether the pawns are in their home positions at the end of the game. They serve as optimizations to accelerate position search.
  • Move encoding. I had a version where I was using the same 2-byte encoding used by Banksia, but I ended changing to the 1-byte encoding I described earlier. Banksia allows for 3 different types of move encoding, and I'm not sure that's a good idea for a standard. I believe it should just have 1 encoding, optimized for performance and size.
  • Banksia changes the date format to YYYY-MM-DD and replaces '?'s with '1's while En Croissant keeps the same YYYY.MM.DD from the PGN standard as is.
I believe the main challenge for a standard is actually choosing a move encoding. Right now, the 2-byte encoding from banksia is not great in terms of size. It also supports an almost-1-byte encoding, but it's not easy to implement (at least I was not able to port it to rust). The 1-byte encoding from EnCroissant is also dependent on the move generation from the shakmaty library, so I don't it would be easy to use in other languages.
https://theweekinchess.com/

Not a full database, but one can get it for a donation, and then add the latest games to it. (Or you can start from a different database and then add their games).
Thanks I will take a look!