BesoGo: yet another web-based SGF editor

Instead of displaying an iframe, you could do one of the following:

  1. Add a div with the class besogo-editor and set attributes of the div to set options for besogo, and then call besogo.autoInit() to initialize the editor.
  2. Add a div, and then call besogo.create(div, options); to initialize it with options specified in the dictionary object options.

Unfortunately, my code does not make it possible for this to be immediately done. However, the code could be modified to make this possible. The editor object actually has functions for setting game info, but the editor object is not directly exposed to the code calling besogo. However, this could be achieved by modifying the besogo.create function to return a handle the editor object. My editor object does have a rudimentary game info editing capability built into the comment panel (but I suppose you wanted to trim that away).

Further, another way to do this is to pass an initial SGF file into besogo, with the game info fields set (if all you want to do is initialize player names, etc.)

Could you specify what limitations might be present in whatever platform you are working with? How are you even interfacing with a database if your platform is “no-code”? I think you’ll have to figure out how to directly modify the javascript, html, css in order to customize and integrate besogo properly.

Automatically loading an SGF can be done by passing the URL via the sgf option, or just simply placing the SGF text into the body of the div. Please see the documentation in the README and let me know if you have any questions.

I think saving an SGF directly to your database could be accomplished by modifying the code in js/filePanel.js to hook into your database rather than generating a download.

Would you mind just discussing this publicly here? I think keeping this process open might be helpful for other potential users that would like to do something similar. Further, someone else might offer advice as well.

For Japanese rules games, another way to accomplish preset handicap stones is for your website to set up an initial SGF file with the handicap stones set up as “set stones”. Besogo will automatically set white as the first to play if there are black handicap set stones in the root node of the SGF.

Besogo is designed more as a generic SGF editor rather than a game interface (i.e., there is nothing to prevent funny business, or enforce the rules, in a competitive context) and it is not programmed to be aware of the differences between various rules. Adding support to automatically pass the first N turns of white in order to set handicap stones for Chinese rules would be possible, but it would require more significant implementation work. We’d have to think about what happens if a player navigates away from the current game state, or tries to create variations, etc. I guess the cleanest way would be to add a new state variable into the game tree to track how many more times white still needs to pass.

1 Like

Genius! This is a great simple way to set up pre-placed handicap and player info. I’ll review your readme documentation and see if I can get it working.

Your other suggestions were good as well. I’ll attempt to implement them and see if I can’t get things up and working. Either way, I’ll comment back here and let you know.

I’m fine to discuss it publically, the reason I suggested a PM was that I was thinking of sending you a link to my “no-code editor” which would have allowed you direct access to edit the project. Anyone with this link would be able to delete or edit anything.

However, honestly, the rest of your answers were so thorough I think that I may be good to go after some trial and error on my side of things. So thanks again for the help!

1 Like

I just found out today in the chat from @seequ that BesoGo is being used in a website here:

That makes me so happy!


I could be wrong, but it seems you can’t toggle the navigation mode with the leftmost yin-yang button?

If I open testing.html with ?tool=navOnly, I can turn the navigation mode off by clicking the yin yang button. But clicking it again doesn’t return me to navigation mode.

1 Like

Yes, that’s right, it only goes one way, since clicking the yin-yang button switches to play mode, but it does not switch back into navigation only mode, when clicked again.

However, I like your suggestion. Let me make a quick change to make it switch back into navigation only mode, if it is currently in play mode.

EDIT: Done! Clicking on the Yin-Yang button now switches back to navigation only mode, if already in the “auto” play mode (i.e., when the Yin-Yang is selected)


Thanks a lot, I’ll download the new version.

1 Like

Neat, just noticed this connection between pull request from someone implementing a new feature and Nordic Go Dojo announcing the deployment with the new feature.


@tozgrec recently shared some nice wood textures here: Board backgrounds library - #148 by tozgrec, and I just confirmed with them via private message that I can use these in BesoGo. So, these will appear in a new release, at some point, once I confirm licensing details. Here’s a preview of what it looks like:

Updated Theme

New BesoGo skeuomorphic rendering using the new wood texture

Lighter Version

With a lighter version of the same wood texture

Original (older) Edition

Here is the original BesoGo wood theme

What do you think?


Nice! The texture looks great!

I still need to fully integrate Besgo into my site! It’s such an awesome tool!

Hade some folks using it to record their match yesterday, but when their phone rotated the screen, the whole game was lost! :sob: Not sure if it was my implementation or besgo (probably my fault)

1 Like

Oh no! I’m sorry to hear that. Maybe the browser window was refreshed? That will wipe the memory of the game tree state, since BesoGo does not use any local storage to maintain such state. Maybe a nice update would be to cache the application state in local storage, or have the interface hook into sending data back to your server.

1 Like

I don’t think it was a refresh, but I definitely need to look into hooking it into my server anyway (currently I’m having people save the game as an sgf and then re-uploading it… haha). Saving to local storage prior to saving to the server might be nice though!

1 Like

Good choice.

1 Like

Known Public Users of BesoGo

See also: Josekle 🟢⚪🟣🟢🟣 and Josekle Development

This post is a wiki, please add others that you might know of, if any.


@Devin_Fraze, how are things going with using BesoGo for your project? Is your use case visible on a public website somewhere?

I’m just so happy to hear about my code being useful for others.

It’s going decent. I’m working on a redesign of my site that will hopefully use and integrate besgo much more. Alas, it currently is being very underutilized. However, my hope is that BesGo will become the go-to tool for people recording their irl games (at clubs or tournaments).

It’s not intuitive how to get to the board on my site and also I’ve discovered just now it has some bugs as well. So I screencapped an example below. You click open goban to launch BesGo and players can set the board size and style dynamically.


Just got reminded about BesoGo from here: Josekle Development - #178 by yebellz and I am a bit worried that the button design might put some potential new users off a bit as it seems a bit too oldschool.

From a quick glance it seems to be just some .svg icons? I am generally bad (and easily bored) at trying to comprehend and process someone else’s code, but if it was a matter of supplying .svg files, I would be happy to give it a shot at designing something probably still basic, but hopefully a bit more modern looking.


It’s really a bit convoluted how I made the buttons. They are specified as SVG, but I procedurally defined them in the code. Hence, I made them kind of simple, just for convenience.

Regardless, I think that it would be fairly straightforward for me to import designs from SVG files into the current code. Even other forms of graphics could be possible, and maybe everything could be specified by CSS. However, I do prefer vector graphics.

Some buttons are just text right now (like “Raise”, “Lower”, “Cut”, etc.) and I would definitely like to improve those into some sort of language-independent icon.

Thanks for your help in improving the graphic design!


There are also a lot of great open source icon repositories. Maybe digging through some of these could save some work.

Some of these could also be helpful for Josekle



pipe dream

Nobody asked, but there are some OGS issues that would be solved by an SVG board

1 Like

Dear @yebellz ,

I just got fed up with Sabaki for having to wait for the move tree and info to animate/scroll every time. So I tried BesoGo and instantly liked how simple and snappy it is. :slight_smile:

I just wanted to view a folder of tsumego files, which is 900 of them, without opening 900 different windows. Maybe I still haven’t found the right program for my use case…

Anyway. I noticed that it would be handy to have a “drop area” over the whole board in BesoGo to drag file(s) into, which should be a shortcut to the “Open” command.

I also noticed the following:

  • Upon unselecting the move tool (by click when it’s active), there is no active tool at all and I also can’t cut variations in this mode. Is this intentional?
  • I love that it automatically gives the first move to white if it detects handicap. It’s so smart. :blush: But there is also the use case of creating tsumego for any color. Are you planning to enable moves of any color at all times?
  • I have to erase all branches to be allowed to edit the root position. But all sgf editors are weird like that.

Thanks for helping me out today.