Hide last move indicator


I checked out online-go.com , yarn install’ed it, everything runs fine as per Eugene’s step 1/4.

I checked out goban , yarn install’ed it, yarn linked it, and yarn link goban’ed it into the online-go repo.

I found and fixed a version dependency mismatch using the same version defined in the two package.json files - and adding a ~ for good measure.

And then it all comes down to - there is no such file as goban/lib/goban.js. Searched locally, searched on github, nothing, nowhere.

I found a resource in the developer console on the “live” site that seems to be related: goban.min.js. (I haven’t yet been so lucky as to be able to find goban.d.ts)

The weird part is that if I use the source of goban.min.js into my own manually generated lib\goban.js then my localhost:8080 works after the yarn links…

I know I am betraying my rustiness with the framework and my unfamiliarity with a million other subtleties, surely, but I would so welcome finding that the missing lib folder is generated, or something - and not outright missing.

No worries on rustiness. That’s a weird issue, and unfortunately I can’t say I’ve run into it before.

One thing I can say is that you won’t find goban.js in the source because Goban (and the rest of OGS) is written in TypeScript. Here is the file you are probably looking for in the source code: goban.ts. This file gets “compiled” to goban.js, then minified to goban.min.js which is eventually served. As far as why it does not get served, I am at a loss. I would tell you to make sure that you’ve run nodeyarn install, but I assume you already have (and I think that’s part of the make script as well).

EDIT: Maybe you need to run yarn install in the goban repo? Or make?

Ok, thanks for explaining in simple terms the .ts -> .js -> .min.js process - it helps. And thanks for the make reference. I’ll read up on that.

I do not understand these opening lines of package.json in the goban repo, though:

    "name": "goban",
    "version": "0.5.37",
    "description": "",
    "main": "lib/goban.js",
    "types": "lib/goban.d.ts",
    "files": [

…what is the lib folder?

Firstly, I don’t think you need to worry too much about package.json in order to get going. That said, the lib dir is specified in tsconfig.json:

"outDir": "./lib/",

tsconfig.json holds the configuration options for the TypeScript compiler. That line says put all the compiled output (including goban.js) into a folder called lib.

Again, I wouldn’t worry too much about either of these files if you aren’t making a large structural change to the repo.


I’m trying to bump this issue. I really like the idea of hiding the last move indicator, it would be particularly useful when teaching beginners on OGS. Any more interest in implementing this?

1 Like

Coming back to this 2 years later… I realize no one mentioned the yarn build-debug command would create the lib/ folder (although make should do that as well)

See @Eugene, I told you goban was hard!

Having such an option doesn’t really hurt anybody who doesn’t want to use it, so feel free to introduce whichever options makes anybody happy, but I strongly question the premise of it being a useful option to begin with, like at all… Sure, maybe you want to avoid puppy go, and hiding the marker is one way to help you do that, but 1) is it an effective way of doing it? and 2) what else will you lose along the way, that will hinder your play?

  1. There will still be many cases where you’ll just know anyway where the opponent played in live play, e.g., when they respond locally, in the area where you just played, which is the most fresh in your mind and easiest to recognize, and arguably the most occurring since local replies are quite common. These are also the least important moments when it comes to the second point.

  2. The real advantage of having that marker is to allow you to make a local adjustment to your board judgment in a timely fashion. Sure, the marker isn’t technically part of the board-state from an optimal game-play perspective, but we’re not machines, and we neither have to nor should re-evaluate the entire board anew after every move. Both in absolute terms, but especially when combined with considerations about ticking time and byoyomi. What happens when you’re in byoyomi and your opponent plays a move you don’t know where it is? You’ll have relatively few seconds to check all the important reverse-sente moves to see if/which one the opponent played (which defeats the purpose), double-check everything because making a mistake would be game-ending, triple check even, then figure out where to play instead.

Ultimately, there’s better ways to train oneself to avoid puppy go.

1 Like

A toggle in the settings. Some like it some don’t. One more choice suggested: appears but fade away (let’s call it “realistic”).

Hiding the last move indicator would be very useful for teaching go with a demo board. Is there at least a way to hide the last move indicator by using the browser’s javascript console?

Why is hiding the last move indicator very useful for teaching go?

Less input in a middle game position for example.

Before making screenshot of position, I hide last move indicator by tool of adding symbol to stone. To select " " (space) press Alt+255 in num pad. This is weird and not possible to use during game. Special option would be better.


it may be useful to create position to remember. Next move should depend on position, not on where last move was. Last move indicator may create memory that attached to not relevant fact.


Not sure if this is what everyone wants, but clicking “Pass” in analysis mode will temporarily hide the last move indicator.


On real board its easy to miss where the last move was. I missed it several times. I had to ask opponent “who plays next?”. And its hard to update your awareness of board when you can’t find what is different. You look at board and see it like it was move before, without new stone. It’s possible to miss attack on your group.

But OGS gives huge cheat external help which not possible to turn off. As a result, you can’t train awareness of the board itself. Instead you learn to update your model of the board with the last stone.

1 Like

Click pass means that you saw already where is the last move
This is limited to the analysis stage.
Anyway it’s a good reminder.



1 Like

You’re welcome.


Meanwhile, I continue to lose games because I unable to find where last move of opponent was.
This time it happened several moves in a row and then I suddenly lost huge group in top right.
I systematically tried to search for weaknesses everywhere very hard, but looks like I see outdated model of board instead of real board. Usually model gets updated by last move indicator or hand of opponent, but this time it doesn’t happen. Still not used to this new way of playing.


As if Go wasn’t already hard enough :stuck_out_tongue_winking_eye:


Paradoxally this magnifiscent feature should make us more focused, stronger so go becoming easier.

1 Like