Libaduk - Lichess fork for Go

Hi all,

For a long time I’ve wondered how hard it would be to fork Lichess and use it to play Go. It turns out it’s super hard. But what’s not hard is grabbing the CSS and re-implementing some of the basic functionality in Svelte with an LLM.

The code is here: Libaduk: A re-implementation of Lichess for Go. You can try it out at https://libaduk.com/.

I’m not really interested in hosting Yet Another Go Server – I think most people here have seen the community fracture too many times. But hopefully this code is helpful and it’s easy to imagine taking this frontend and using OGS or KGS as a backend. I’m happy to help in whatever way I can.

I’d be happy to discuss more in this thread, or if you find one of the many bugs or many missing features you can report them at the links below.

9 Likes

I made my own client based off of the similar design,

I think having a LiBaduk sounds cool in theory, using ogs as the server, but I guess the question is why?

1 Like

but I guess the question is why?

It’s a reasonable question! For me, the OGS UI isn’t satisfying to use in the same way that Lichess is. Something about the layout of the page and the feel of playing stones just doesn’t do it for me even as compared to Sabaki (which are the components used here).

This means in my free time I’ll turn to playing quick chess games or chess puzzles instead of Go, even though it’s not the game I prefer. I made this for playing by myself and with friends, but I’ve put it up and posted here in case it’s more generally useful.

4 Likes

Do you have plans to hook it to ogs?

1 Like

That’s how you code these days :mechanical_arm:

True story. I tried to argue for this pretty hard. This was my lichess inspired Wireframe: Rework the "Automatch finder" (formerly "Quick match finder") - #141 by Regenwasser

They did end up implementing some of it. But not the whole thing.

Ok, while I do agree with your general point this sounds a little bit over the top :grin:

1 Like

Do you have plans to hook it to ogs?

Not right now, but I would be happy to help someone who was interested. Never say never but it’s not in my top 3 on my priority list.

True story. I tried to argue for this pretty hard. This was my lichess inspired Wireframe: Rework the "Automatch finder" (formerly "Quick match finder") - #141 by Regenwasser

Super interesting stuff in that thread, appreciate the reference.

this sounds a little bit over the top :grin:

No arguments here. I’ve been around long enough to not extrapolate trends from the data point of a single unreasonable user. But at least for me I like the design of lichess enough and dislike the design of OGS enough that it tips the balance for the “go to the site for 5 minutes and do a few puzzles” use case.

1 Like

Alright, leaving an update from the initial post because the site is quite different from then. I’m not planning on doing this regularly since I’m not really trying to get a userbase, but if the site is useful for you as always feel free to reach out or use it.

New screenshot:

New features:

  • Uses the OGS TV API to show streams in the top left.
  • Uses the OGS liveplay API to show the top game in the bottom left.
  • Play games against local models (reuses the Kaya code)
  • Uses one of the WeiqiHub datasets for problem of the day and play random problem. These aren’t curated on libaduk, but are still pretty fun.
  • Users optionally can link an account to OGS and see unranked games in the lobby and use quick pairing to post an unranked game. You can then play those games but please use caution when using this, the functionality is rough around the edges. If you find weirdness let me know.
3 Likes

Really big fan of your work here. I would give your post a super like if that existed in this forum. To quote myself from the other thread:

1 Like

Hello.

I just registered on libaduk.com :slightly_smiling_face:

Tried the default Passkey but for some reason it didn’t work (before attempting that I did whitelist libaduk in all my blockers), but the QRcode thing worked.

Then I went to preferences and looked at “link OGS”, but decided to cancel, and after clicking “cancel”, I got this:

{"error":"Invalid state parameter"}

And then I came here for the bug report :grinning_face_with_smiling_eyes:

Your site looks nice!

Really appreciate it! I wish I could take more credit but the vast majority of the hard work was done by lichess in making their site look nice. Anything that looks great comes from them and then the broken things are mistakes I made in porting it over.

Tried the default Passkey but for some reason it didn’t work (before attempting that I did whitelist libaduk in all my blockers), but the QRcode thing worked.

I have a friend who had a similar problem but for the life of me I haven’t been able to reproduce it. If you could send me more details here or in DM I’d be very appreciative! I use basically the simplest implementation from Passkeys | SimpleWebAuthn but there’s some percent of users it just flakes out for.

I know exactly what that second bug is, should be able to knock that out soon. Thanks for sending it!

1 Like

It just says “Verification failed” in red.

How can I help with diagnosing?

  • macOS Tahoe 26.5 public Beta (25F5042g)
  • Safari

Basically as soon as I’m able to create the issue on my end I should be able to fix it up, so this is already helpful and is totally different than what the other person had. Almost certainly an implementation issue on my end but I don’t know what yet and everyone’s passkey looks different. I guess the other questions I would have are:

  1. what do you see as your initial option for creating the passkey? This is computer-by-computer since it’s just an API browsers are supposed to implement. I usually use Bitwarden, but on Safari I see an OSX pop-up “use touchid to sign in”. I was able to just use safari and touchid to make a test account though.
  2. Do you have any extensions or plugins that could be intercepting or altering the messages? Password managers are the most likely suspect, but maybe there’s something else that could be going weird with the networking?

Safari? Really? Try Firefox or something else open source!

Upon entering a username and clicking “REGISTER WITH PASSKEY” I get this:

And after clicking “Continue”, this again:

I have LOTS of extensions, but I have disabled ALL content blockers, first with Safaris’s own setting:

And then again extra (redundantly?) by whitelisting in

  • Ghostery
  • wBlock
  • StopTheMadness Pro

I even tried in a private window (where all extensions are turned off by default), same result: “Verification failed”


LOL, really? Next you’ll tell me I should try a different computer instead of a Mac, or logging in from another place than Germany? :winking_face_with_tongue:
I think I have seven or eight different browsers on my machine, and I must have used perhaps a dozen or more in my 35 years of surfing on the WWW, but currently Safari is my browser of choice :slightly_smiling_face:

And when trying to diagnose a problem that occurs with Safari it wouldn’t be of much use if I’d try Firefox, or DuckDuckGo, or Brave Browser, or Chrome, or Arc Browser, or Vivaldi, or Microsoft Edge, or Opera, or iCab (which BTW I loved to use for a few years back when it was new) … :wink:

Really appreciate the info and the effort you’ve put into this! Seems like we can exclude extensions pretty thoroughly as a cause.

That second “Save a passkey” screen is entirely different than mine on Sonoma. I’m overdue to bump my own machine so hopefully I can reproduce the issue after that. The problem went away on its own (?!) for the other person but I’d still like to get to the bottom of this. Thanks again for the info!

3 Likes

I mean I do recommend Linux a lot. But I have to admit that the MacBook is a good product.

Using a VPN is usually a good idea.

What I’m saying is that the problem that occurs with Safari is that it is Safari.

Not of much use for reproducing the bug but of much use for having a better browsing experience in general :grin: