libredo is a simple library that makes it easy to add powerful undo and redo commands to a logic puzzle game (or similar type of program).
Many such programs that provide undo and redo commands will remember undone states only while a user is using these two commands. Once the user uses some other command that changes state in a new way, all of the undone states are forgotten. This limited functionality is common, if not ubiquitous. I would like to see more programs offer something better.
libredo is designed to manage a complete history of user actions. The library makes it easy for programs to allow users to navigate around the complete history, to alert them when they move into already-explored territory, and to automatically detect when existing subsequences have been improved upon.
The distribution comes with full documentation for the API, as well as a sample program that demonstrates all of the features of the library using a simple curses-based sokoban game.
The current version of libredo is 0.7. While the code is well tested, libredo is still considered to be alpha software, and the API is still subject to change.
For now libredo is distributed under version 2 of the GNU General Public License. Questions, bug reports, and general criticism all should be directed to me.