You're holding it a bit wrong, but that's on me: the API doesn't say any of this anywhere. I re-ran your exact case on v1.3 (build 19942662) at 360x640 and 1280x720:
- strike() takes the cell index, not a point. strike(cellCenter(8)) returns false, and strike(8) lights it and wins level 1.
- cellCenter() returns game-space coords, not page pixels. The game draws in a 700-tall space scaled to the window, with the board column (max 520 wide) centred. To click: S = innerHeight/700, OX = (innerWidth/S - min(innerWidth/S, 520))/2, then client = ((x + OX)*S, y*S). At 1280x720, cell 8 is (230,191) in game space and (609,196) on screen. A real click there wins level 1.
- If you goto() from the title screen without pressing Play, the title overlay is still on top and takes every click. The API calls still work under it, which makes it extra confusing.
With Play first and that conversion, a real click on cell 8 wins level 1 at both sizes, 0 errors. Thanks for digging in.