The 1.x series of Interhack is the original version. I like to think of 1.x as a prototype that far outlived its deserved lifespan.

As soon as I got the basic filter (stdin to NAO, NAO to monitor) working, I knew I could implement a helluva lot. I just hacked on it without thinking hard about the implications.

Luckily 1.x is very featureful. Its downsides, however, led me to start (from scratch) 2.x.

Despite all these negatives, I still very much like 1.x.

1.x is currently the trunk because 2.x is not yet ready.


2.x is a complete rewrite using Moose, a modern object system.

One of the design decisions was that the core should remain completely free from new features. You should be able to use Interhack with no plugins and it should be exactly like telnetting in and playing normally.

The central concept for plugins is the idea of hooks. Interhack provides many small methods (such as toserver, which sends a keystroke to the server; or check_input, which validates input -- always returns 'valid' in the core). Plugins 'wrap' these small methods to do whatever they like. For example, they Keystrokes plugin wraps the toserver method and increments an internal counter for each character in the text.

2.x lacks many of the plugins of 1.x, but it does have some new awesomeness that was impossible in 1.x.


0.x is a minimal implementation that developers can toy with. It was written (in only a few minutes) after 2.x was started.

It's a useful starting off point if you just want to toy with it. Being so small, it should easily fit into your head. It's only 70 lines.

The 'control-E => write Elbereth' macro is implemented, as well as coloring all Elbereths purple (to make it easy to tell at a glance how well you're covered). These features are one line each.

We recommend 1.x (or 2.x) for all of our users, but some people may have fun toying with 0.x. :)