The tsh core has been updated quite a bit in cvs. The module API has not changed a great deal, but some additions have been made.
Modules can now set priorities on their hooks. This is intended to facilitate, for example, alias command that take priority over other commands. It is, however, a generic mechanism. Currently there are 3 priorites. The default priority is the lowest - builtin command (higher priority than external programs, but not above anything else).
Also, there is a globally available structure called tsh_data which contains various things to which modules may want or need access. Examples are the input and output streams, the variable stack, return status of last executed command, etc.
There are also a few bug fixes. Please report any bugs you find.
As I find this core to be fairly useable, I've moved on to a module for supporting variables, both environment and shell, including stackable frames to allow for local scope, though I will return to the core at some point to add support for files which are loaded automatically at shell startup.
For details on changes, check the changes file.