And by bugs, I don't mean the type found in Golden Spider.
I mean a programming error, or perhaps more accurately a feature.
The Undo button worked except that when moving a card from the Waste to the Stock, the card was placed on the Waste face up, and remained face up.
I'm calling this a feature rather than a bug as the coding worked as intended. It was just not what was required.
This was suprisingly difficult to fix.
The reason is that the javascript code is a big, long and monolithic. This is not a great coding style.
I've been coding for years and never normally write code in this fashion. It was partly an experiment, and partly because I didn't think about the initial design in sufficient detail.
I also could not (and can not) be bothered to refactor it in a better manner as I went along.
I have another coding project planned (Mahjong.day). I will plan and write this in a more traditional manner.
Let's return to SolitaireOnline.Org.
Although as an (ex)professional coder, I am slightly appalled by a 3000 line file, it isn't (or wasn't) entirely unknown in the games programming world.
Good editors do to a point obviate the need for multiple smaller files (within reason).
While I'm not holding the code in solitairemain.js up as a shining example of good coding practice, some of the ideas within it are sound.
I will implement these more successfully in Mahjong.day.
Moonface