v0.5.0  [05jul01]

* added priv 'W' which allows walls to be sent
* added walls
* can reconnect to a session from a new socket (old session is detached
  with a 'logout' message containing 'detached'; new session includes the
  key 'attached' in the 'welcome' message -- see protocol.txt for details)
* messages can be sent to offline users now (only by id): stored in the
  database and delivered the next time the recipient logs on
* initial support for "replicant" connections (multiple connections per
  session) -- not well tested
* protocol version upped to 0.1

v0.4.0  [07may01]

* rename: the say2 server is now called "jenova"
* added 'alias' config option for hostname aliases (passed along with the
  server cert)
* don't bail if the default rcfile doesn't exist
* fixed potentially horrible leak of enaml blocks in the socket read loop
* new "motd" command so the client can get a repeat of the MOTD (requested
  by matt)
* new backend support: gdbm (easier than mysql for non-linux users)
* new hidden command-line options: "--add", "--lookup", "--email",
  "--password", "--set-privs" for adding users, looking them up, and
  changing their privs from the command line
* ported to NetBSD (thanks to rob misiak)
* ported to Solaris (thanks to greg brown)
* added ndbm support for systems without gdbm

v0.3.4  [15apr01]

* reworked the low-level async socket engine to use GIOChannels instead of
  hijacking the glib poll loop (potentially destabilizing but much easier to
  port and debug)
* ported to Darwin 1.3 (the MacOS X shell)
* added 'debug' command and PRIV_DEBUG ('D') for more sephiroth debugging
* added 'protocol' field to the 'hello' message, containing a list of two
  numbers: major version number and minor version number; currently this is
  always [0 0] but in the future this will identify major protocol changes

v0.3.3  [04apr01]

* new commands 'set-attributes' and 'get-attributes' to set and get name/value
  pairs on clients
* fixed small annoyance where the server would send "hello:{ }" instead of the
  more concise "hello" when a command had no fields
* complete overhaul of old "scrolls" (now "memory") system to make it more
  consistent (totally new commands/responses) and cleaned up the code a lot
* separated out the command dispatcher into a general-purpose set of functions
  in lib/
* logs when a client pings out (as opposed to an explicit logout)
* overhauled the 'history' command to be more efficient, and changed the output
  format to be consistent with other dumps (using 'begin-response' and
  'end-response')
* private messages sent with 'message' now have 'to-id' and 'to-nick' fields on
  them, and are echoed back to the sender, if the sender is not the recipient
* sephiroth now runs as a daemon unless you use '-d'; 'make install' installs
  init.d scripts; support for dropping to user "nobody" after setting up, when
  running as root -- all this means you can have sephiroth run as a normal
  system service now

v0.3.2  [19feb01]

* new pref 'icon' which is a binary blob up to 4k (intended to be used as an
  icon on GUI clients)
* fixed 1002: couldn't change nicks back to your own id
* when sephiroth can't parse an enaml line, it'll echo that line back to you
  (requested by josh)
* 'whois' now gives info for users who aren't online, including the last-login
  and last-logout (covering the 'seen' stuff from bug 1005)
* the 'login-epoch' field in 'whois' has been renamed to 'login' to be a bit
  more consistent
* 'whois' returns 'no-such-client' for nonexistent users
* the 'error' response now contains the command that caused it
* 'whois' takes an optional 'icon' flag which will return the user icon in the
  client-info response (if the user has an icon stored)

v0.3.1 and earlier: lost in the mists of time!

