New feature to be tested in Picochess V4 beta - making moves from keyboard

434 views
Skip to first unread message

Johan Sjöblom

unread,
Aug 24, 2025, 1:18:02 PMAug 24
to PicoChess
Hello brave testers of Pico V4.

Thanks to Antonio (antmp27) there is now an improvement in the web client. You can enter moves from the keyboard. You can type e2e4 etc to make moves. It also contains an improved natural wood theme layout and a better view of the engine analysis tab.

You cannot yet update to this version. It still needs to be tested so its not published yet. There is a change proposal (PR) in beta V4 to be tested and reviewed by any brave tester, see:
https://github.com/JohanSjoblom/picochess/pull/90

I have tested it and I liked it. I would need someone else also to confirm that this branch works well before we merge it into the main branch for everyone. 

To test you need to pull the feature branch like this:
git fetch origin
git checkout 89--moves-from-keyboard
...and yes, due to my typo there is a double-dash in the branch name :-)

- Johan

Johan Sjöblom

unread,
Aug 25, 2025, 2:40:32 PMAug 25
to PicoChess
I have now this evening cleaned up the new feature branch 90. To summarize, it introduces:
- keyboard moves to support DIY boards like Berger SolussChess, or just moving by typing on keyboard
- natural wood theme
- vertical scrolling - good for mobile phones - so that you can see the opening/games/engine tabs by scrolling down

Now it can soon be accepted into the main branch and published for all... But we still welcome feedback and testers before we do that.

- Johan

Johan Sjöblom

unread,
Aug 26, 2025, 10:41:08 AMAug 26
to PicoChess
Hi brave testers of V4.

I have now merged the issue mentioned in this discussion thread. This means that when you update the next time you will get this version.
Feel free to report issues in the github or here in the channel... Testing goes on. Next I will fix issue 87 so that V4 could use the new LC0 personalities. I need to add support for at least PicoNode and PicoDepth uci file settings to be used by LC0 to restrict the playing strength of LC0 according to the personalities...

-- Johan

Henri

unread,
Aug 27, 2025, 2:14:30 PMAug 27
to PicoChess
Hi Johan,

I can confirm that the update worked, that the screen with the new board looks nice and that the keyboard function works :)

Henri

Op dinsdag 26 augustus 2025 om 16:41:08 UTC+2 schreef messi...@gmail.com:

Johan Sjöblom

unread,
Aug 28, 2025, 3:14:29 AMAug 28
to PicoChess
Thanks Henri. Nice to get confirmation.
Kudos goes to Antonio who made these improvement.
There is one more improvement he has, ... that improves the engine analysis tab style. But I was not able to cherrypick that one into the current solution. At least not yet...

Amp

unread,
Aug 28, 2025, 4:40:14 AMAug 28
to PicoChess
Good morning. Being able to enter moves by keyboard was something that was very good for me for the different projects that existed before, such as Berger's with SolusChess.

The other modification that Johan talks about is something that I personally find very useful and is the possibility of being able to see the number of plays we want while playing along with their rating. How does the Centauro board have the option? I leave a photo so you can see.   The possibility of increasing it remains in Johan's hands, although functioning works.

Captura de pantalla 2025-08-21 093458.jpg

Johan Sjöblom

unread,
Aug 28, 2025, 5:50:23 AMAug 28
to PicoChess
I have not given up on it yet! I will open a separate issue and PR for the engine tab improvement.
Then I will try test step by step adding part by part until it works. 

Dirk

unread,
Aug 28, 2025, 7:08:28 AMAug 28
to pico...@googlegroups.com
Hi Johan, hi Antonio, 

we already had the multi PV engine feature in PicoChess long time ago (although not looking that nice like Antonio’s version did).

If I remember correctly we got rid off that functionality because it was impossible to stop/quit the additional running analysis threads when running on the picochess server itself (in chromium on the raspberry pi - not the external web browsers eg from you mobile/tablet).

So this would be to be tested if you are adding it again.

Regarding the move entering input field: could we hide this somehow when not in use? For me it is more like a really nice (don’t get me wrong!) debug utility (because we have the dedicated web-play only mode for this if you really want to play without the eBoard in my opinion). Just me 2 cents…

Dirk

Amp

unread,
Aug 28, 2025, 7:52:08 AMAug 28
to PicoChess

The analysis variants with the web engine don't consume many resources on my Raspberry Pi 3b+, and as I said before, I find it very educational for chess games. (Personal opinion, of course.) When you're playing and don't know which way to go, the program gives you the 3 (or however many you have assigned) best moves highlighted with their value.

The keyboard movement is very discreetly placed in the top right corner, and simply ignoring it doesn't affect the functioning of Picochess. It's an added option without affecting any functionality.

Of course, the goal is to make Picochess as adaptable as possible to the needs of poor players like me... hahaha

Dirk

unread,
Aug 28, 2025, 8:09:24 AMAug 28
to pico...@googlegroups.com
Antonio,

of course multiple PVs /analysis are nice - that is no question (and I like this as well!).

I just mentioned that we we couldn’t stop the separate engine analysis threads once they are running in a consistent way (when running the web display on the raspberry pi) when we had this feature enabled in PicocChess long time ago and that would be an important test case for V4.

Dirk 

--
You received this message because you are subscribed to the Google Groups "PicoChess" group.
To unsubscribe from this group and stop receiving emails from it, send an email to picochess+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/picochess/0f079390-7b29-447b-bd62-8acd743451een%40googlegroups.com.

Henri

unread,
Aug 28, 2025, 8:17:16 AMAug 28
to PicoChess
Hi all,

Now that Dirk has thrown in his two cents about some new (or renewed) features in picochess, I'd like to contribute my own. It's not about features or updates, but about picochess as a whole. First things first: I think the dynamics surrounding picochess are fantastic, I think it's by far the most beautiful and best chess program EVER, and I'd like to offer a deep bow to everyone who has contributed and continues to contribute, especially Randy, Dirk, and more recently Johan. Their efforts are indispensable and priceless.
I try to follow the developments around picochess as closely as possible and stay up-to-date on the versions, which can be quite an effort at times with all those new images :)

As a relative outsider, I'm starting to be a bit surprised by the latest developments. If I understand correctly, Johan is updating Picochess with more recent Python libraries. A fantastic initiative; his beta is now at version 4.1.3. Meanwhile, Dirk is contributing even more classic engine projects and LC0 personalities, and we're now at version 3.4.
For the first time, Johan's beta has included some innovations that aren't (yet) present in the standard Picochess version. The 4.1.3 desktop has a brown board and the option to use a keyboard for input. As far as I'm aware of, more options are on the way. As much as I applaud these changes, I'd like to return to a single, uniform Picochess version as soon as possible.

Dirk, Randy, Johan, when will the beta version (or so it seems) be able to merge with the official version? What are the problems with that? Who follows who?

There goes my two cents :)

Henri


Op donderdag 28 augustus 2025 om 13:52:08 UTC+2 schreef antonio.z...@gmail.com:

Johan Sjöblom

unread,
Aug 28, 2025, 10:07:39 AM (14 days ago) Aug 28
to PicoChess
Good question Henri.
I am so new here too so I have to throw in my 2 cents. So the question is if and when we can switch to all develop the 4.x.. Or can we ever?

I think the most simple answer is that there are still some open issues to solve on V4, and it needs more testing still.
A little longer answer is that we need a long enough time to harden and stabilize the new V4 platform. This is a typical situation with feature rich programs that two versions have to co-exist for a suprisingly long time. V4 is a pilot and beta and we have to prove and test that it can take care of the most important functions in V3 before we make the switch.

But it is up to us to decide. Maybe mostly Randy and Dirk, as I am only a 57 year on on-job training :-)  I start to have a very good understanding of the backend code but I dont know nearly enough about the echo-system yet. I still find out about new features all the time. As said, this is a very feature rich software.

We should perhaps list and prioritize the issues preventing us from joining forces. What are the issues that we need to solve before we could consider a switch? What do we need to do to make it a common platform for us to all develop in?

There is a more human issue: its not easy to develop in someone elses github. I have tried to keep the main program picochess.py as unchanged as possible, but there are changes that were necessary due to details given below. It should indeed be possible for us to all develop only one version. I have sent out github invites to some already, and I will send out developer invites to everyone/anyone who can make code changes. The only thing we have to keep in mind if we all develop the same version is that we have to use branches and PRs when developing and coding so that we dont mix things up.

— Johan

PS Some tech details
The old chess library can never go higher than Python 3.8 (not sure if it was exactlyl that version). It is therefore just a question of time until we have a Python platform issue on our hands as the current implementation is stuck in an old Python. You can always run it in virtual environments etc, but development might become challeng at some point.
There is a new async architecture replacing the threads and changing the messaging system. And picochess now uses the latest version of the chess library which unfortunately is not at all like the existing one. The new chess library has given us many surprises. It was not simply an issue of updating some function calls, it forced me to rewrite the entire uci communication and create a totally new analysis background process (a totally new background eternal brain for picotutor). … There could still be stability issues, although the playing and analysis, and the messaging system have been stable now for a while.
In addition to the UciEngine rewrite the Picotutor was also using the old chess library. I have rewritten the Picotutor as well trying to take detailed care that the evaluation algorithm is still the same Cambridge based one. Now the Picotutor also uses the UciEngine, so next time the chess library changes, there will only be one level to change.
To summarize the technical changes. Picotutor and Uciengine are quite rewritten. Ideally they should not have affected picochess.py main, but they did, especially the way moves are being made, and how analysis is received back. The eboard and the state handling in picochess.py should be quite similar still.
One example of a new feature is that Tutor stores the game comments and at the end of the game they are written to the PGN file.
DS

Johan Sjöblom

unread,
Aug 28, 2025, 1:07:21 PM (14 days ago) Aug 28
to PicoChess
And to some easier ”questions” about the input box, and multipv/client-stockfish

Not an expert on frontend client technologies, but I think it would be easy to hide the move text input, I guess it can simply be made invisible. It would still work and be there, but you would not see it. I guess its just an attribute to add.

On the multipv and running Stockfish in the browser. Again not being an expert on client technologies but it would be nice if we could detect if we are on a browser on the Raspberry PI ”localhost” or if the browser client is running in a different machine. If we could detect that we are running on the local Raspberry we could show the output from the picotutor analysis that is running in the background all the time. It would be interesting to see what the machine tutor thinks about the current lines. And the tutor is running a multipv analysis.
If we detect that we are on a different client we would not have any problem to run several local extra stockfish analysis…

Note that while I have updated the repository Stockfish to 17.1 I have not updated the stockfish used by the client. I am not sure I know how to compile a typescript/javascript client version of stockfish. I dont think anyone has updated the stockfish in the web client code for quite some time.

— Johan

Amp

unread,
Aug 28, 2025, 2:25:48 PM (14 days ago) Aug 28
to PicoChess

Dirk

unread,
Aug 29, 2025, 7:02:42 AM (13 days ago) Aug 29
to pico...@googlegroups.com
Johan,

We can indeed detect if we running locally on the I or external browser. Look at the PGN download button which is hidden in case of running locally on the PI (maybe also a way to hide the flashing input box of the move input somehow - at least the flashing cursor!?)

Regarding the analysis engine: I would keep it simple: just run the java stockfish (newer versions might need more power so it always a compromise which version to use) engine not the tutor engine in case of the PI for web.

Maybe the problem with the multiple java stockfish analysis threads running on the PI browser is already solved by using your newest libraries - we would have to check thats I have mentioned it.

Dirk

-- 
You received this message because you are subscribed to the Google Groups "PicoChess" group.
To unsubscribe from this group and stop receiving emails from it, send an email to picochess+...@googlegroups.com.

RandyR

unread,
Aug 29, 2025, 11:43:07 AM (13 days ago) Aug 29
to PicoChess
From my perspective, once v4 supports all the features of v3 and the bugs have been solved, I will update my images to use v4. I don't think we are there yet but to expedite the move I would encourage as many people as possible to install and test Johan's v4, test all the functions and provide feedback. Posting on this forum will get the most exposure and will not require a GitHub account to open or contribute issues. A while back I provided v4 Desktop and Lite images for those who didn't want to go through the build instructions. They are outdated now but should be able to be updated using the built-in update function in the System/Power menu.

Yes. It is a very exciting time for PicoChess and many thanks to the developers who continue to enhance it!

Randy

Johan Sjöblom

unread,
Aug 30, 2025, 11:20:18 AM (12 days ago) Aug 30
to PicoChess
Yes we do need to fix more issues before making the switch.

One specific update-braking fix would have to be done at some point, and I should do it before any new image is being made for V4. Its issue 88 https://github.com/JohanSjoblom/picochess/issues/88
This issue change will make sure that update can never change the engine library. At the moment Stockfish 16, and 17.1 NNNUE, LC0.31, and LC0.32 are in the repository and more specifically in the engine library. This issue change will move them from the engines library to another folder like "engine-examples". The install script will only copy them to the engine folder for an empty clean install. So we have to coordinate this change in at some point... and it would be a good idea to do just before a new image is made for V4. Give me a warning before we are ready to make a new V4 image and I will do it before the image is being built. It should make it easier to guarantee that the image engines are as built.

Meanwhile, now I have added support for PicoDepth and PicoNode to be read from the uci engine option file. This should enable people to test LC0 personalities, including myself. I really want to test play the nets trained on "normal human" play. They should feel a lot less machine-like and will make playing a computer fun again. Wheres the fun in getting slowly killed by a super-accurate stockfish... It makes no mistake and its play is too "cold".

I will next have a look if I could hide the input field for the move entering... To use a famous quote; that should not be too difficult :-)

BR, Johan

Johan Sjöblom

unread,
Aug 30, 2025, 11:47:07 AM (12 days ago) Aug 30
to PicoChess
Well some things are indeed not so difficult. Now the input move field is hidden, no blinking cursor, no extra frame... Just the functionality that you can type e2e4 enter on the keyboard (so that the DYI engines would work)

Randy Reade

unread,
Aug 30, 2025, 2:30:21 PM (12 days ago) Aug 30
to pico...@googlegroups.com
I wasn't planning on making a new v4 image yet as I thought that running the update was enough to carry out testing. I don't think it matters which engines are being used for testing. Yes, it will be important when v4 is out of beta that a user's engines and configuration remain intact so go ahead and make those changes now. Users who added engines have the skill to do it again if those changes mess up their current engines folder, and those that don't can use the ones you provide. Or am I missing something?

The way I see it working is that a new user can use your quick installation script to get PicoChess on their system and be able to use it as is and the update function should just grab the updated python code from time to time.

I WILL make a new image if required, though.

Randy

Johan Sjöblom

unread,
Aug 31, 2025, 12:10:26 PM (11 days ago) Aug 31
to PicoChess
You are not missing anything. No need for any new image for V4 now.Later yes, as hou said: when we are out of beta then we need to make the change. But getting there can still take quite much calendar time…  a few months at least.. but I would not be surprised if it takes one more year. Troubleshooting takes time, once I spot the difference to V3 then the fix is easy to do.
And Dirk is now giving a lot of more test input, and thats great, I will try to use that input and fix the issues one by one.
Johan

Johan Sjöblom

unread,
Sep 6, 2025, 3:01:02 AM (5 days ago) Sep 6
to PicoChess
Hi all.

I finally got around to testing the LC0 personalities like "meangirl" etc yesterday on the Pico V4.  Now its finally fun to play the computer as it plays like a human :-)  Like someone commented, this is a true game changer for playing against computers. Now you can play different personalities and it no longer feels like you are getting slowly crushed by Stockfish. The game now has random events like a real human game.

I changed the lco.uci file according to the info in this group. Now I am experimenting with the new PicoNode setting in the lc0.uci file to see when meangirl is playing at a level suited for me. If you don't have any menu-based time settings in your ini file to force the time to be "691" or to force the depth or node settings, and only use PicoNode in the uci file: In this case the LC0 will also respect whatever time constraint you are playing with. So I am playing 3 2 standard Blitz with meangirl with 2 threads and currently raising the node count to bigger than 6. PS, at the moment I am testing on a Debian laptop so I have a "very strong CPU". You can connect any Debian laptop using Bluetooth to an eboard like DGT by using the script "sudo /opt/picochess/connect-dgt-on-debian.sh". This script uses Bluetooth search to find your DGT board and to make a serial port that picochess will recognize. I need to run this script after every boot on my Debian laptop, but otherwise it works nice. Remember to power on the DGT board before running the script
I have the web client in the phone next to the DGT board so the laptop is kind of invisible to me. I don't really mind that there is a laptop running picochess somewhere within Bluetooth reach.

AND: I noticed a problem with mobile phone browsers that the virtual keyboard "jumps up" as soon as you click the menu or switch between the "engine/book/games" tabs etc. I made a hotfix (a one line change in the clock.html) to fix that now. To get this fix you can either update, or as the change is so small you can just do "git pull" command in the /opt/picochess folder to get the new clock.html... If you have not pulled for a while you will also notice that I added scrolling to the portrait mode earlier. This hotfix adds only one thing; inputmode="none" to the new invisible keyboard input which fixes the problem on Android 12, IOS 15 and later.

I am also testing Antonio's new improvement (which is only in a branch at the moment). It gives a non-localhost browser ability to have more than one line of client engine analysis. It looks really nice, but I need to test it a little bit more. In the mobile phone next to the DGT board I can have engine analysis running on 2-3 lines, and still see the latest computer move announcement.

Continuing testing...

Johan

Johan Sjöblom

unread,
Sep 6, 2025, 11:04:50 AM (5 days ago) Sep 6
to PicoChess
Antonio's improved engine analysis style on the web client is now merged as part of the master. Its now available to anyone who does git pull or system update.
Johan

Dirk

unread,
Sep 6, 2025, 1:59:29 PM (5 days ago) Sep 6
to PicoChess
Looks good - multiple engines threads can be stopped correctly as far as I could see.

Thanks johan and of course Antonio!

Johan Sjöblom

unread,
Sep 6, 2025, 2:07:18 PM (5 days ago) Sep 6
to PicoChess
Yes, kudos goes to Antonio. I only tested and reviewed the code. At the moment the plus and minus buttons are hidden on localhost, so you will get max one line.

Meanwhile, I continued testing the "Mean Girl" and on my Debian laptop I have arrived at the following setting to get it to play around 2.000 elo.
Need to test more, but at least if you have CPU (like my 4 year old laptop) then this setting seems to feel quite "human".

I play Blitz with 3 2, so its probably time that restricts mean girl in most cases but the 10000 prevents it from being superhuman. The PolicyTemperature makes it more creative, again for more human like play.

[01-Mean Girl]
WeightsFile = /opt/picochess/engines/lc0_weights/meangirl-8.pb.gz
Threads = 2
PolicyTemperature = 0.3
CPuct = 1.2
PicoNode = 10000

Reply all
Reply to author
Forward
0 new messages