1.2.3:

 - Optionally use GTK+ 2.0 for GTK+ clients. While the changes required were
   minor, I'd like to get rid of USE_OLD_GTK soon. Please let me know if you
   really, really need to use GTK+ 1.2.
 - Don't use ## to paste strings in ARG(). This was always horribly wrong, but
   prior to version 3.2 GCC's preprocessor let me do it.
 - Use pkg-config to get the proper CFLAGS and includes for libxft. The old,
   hardcoded values no longer work with newer versions of the library.
 - aepanel-gtk can now run at the bottom of the display, instead of just the
   top. Additionally, it now pops its menu up in the right place (above or
   below the "Menu" button, depending on what edge of the screen it's on),
   instead of wherever the pointer happens to be.
 - Use \- for literal dashes in manpages, so that they render as U+002D and
   not U+2010 (hyphen) on UTF-8 systems. Also updated aeclients man page to
   reflect the removal of --show and -vv from set-gnome-pda.
 - Moved aewm itself into a subdirectory, src. Used this opportunity to clean
   up Makefiles and #includes a bit.

1.2.2:

 - In a fit of stupidity I lost get_gnome_pda's error recovery (return all
   zeros, not uninitialized garbage, if the hint doesn't exist) while
   moving/editing other parts of it. This caused major problems on a server
   where the hint doesn't exist yet (e.g. windows mapping offscreen).

1.2.1:

 - Call setsid(2) in fork_exec() to prevent child processes from dying when
   aewm is killed or crashes. (thanks, Ciaran Anscomb)
 - Don't crap out with a divide-by-zero error if a client sets a PResizeInc
   hint of 0. (ditto)
 - Improved the appearance of debugging info a bit. It does however assume an
   80-character terminal, so you'll have to adjust and recompile if you want
   more.
 - Call XFlush() in set_gnome_pda to avoid set-gnome-pda exiting before the
   change takes effect. Made some more cleanups to the set/get_gnome_pda
   interface, mostly using a struct instead of 4 ints.
 - Fixed aepanel-gtk to not clobber parts of the GNOME_PAGER_DESKTOP_AREA hint
   when starting and exiting. Unfortunately it does so by saving the old hint
   and restoring it on exit, which is wrong in several cases. However, it's
   less wrong than before.
 - Removed multiple levels of verboseness in set-gnome-pda. The extra
   complexity wasn't worth it.
 - Added a missing #include <string.h> in client.c and manage.c.
 - Used spaces for indentation again, and made some other minor annoying
   cleanups. Sorry.
 - Made theight bail out if sent a NULL client_t. I was able to get a stack
   trace for a few crashes and they (rather inexplicably) pointed here.
   Obviously, something else is the real problem, since no other function
   *should* call theight on a NULL or invalidated client, and several other
   functions assume that they're getting a good pointer.
 - Made some minor edits to DESIGN, but I am way too lazy to do more real work
   on it.
 - Added items to TODO.

1.2.0:

 - Here we go, another stable release. I haven't updated DESIGN, but I have no
   idea when woody will freeze and I'd like to get this out the door.
 - Changed all occurences of "minimalistic" (which is not a word) to
   "minimalist" (thanks Matt Zimmerman).
 - Made titlebar padding (formerly SPACE in aewm.h) configurable at run time.
   Ideally, the default for this should be calculated from the font.
 - Added "include" directive to config file parser (thanks azz).
 - Fixed set-gnome-pda -v and -vv, and made all clients bail out on bad
   options.

1.1.5:

 - Fixed default config and config file parsing order.
 - Added long and short versions of all command line options.
 - Turned GNOME_PAGER_DESKTOP_AREA on by default.

1.1.4:

 - Added aewm config file (~/.aewm/aewmrc).
 - Fixed clients/Makefile so that specifying CFLAGS works, set-gnome-pda gets
   installed, and ln always uses -sf.
 - Updated the rest of README to document the new clients.

1.1.3:

 - Switched to the XFree86 license.
 - Fixed a segfault that could happen with Xft if a client's window
   disappeared. I think there is still a possible segv lurking somewhere, but
   I can't trigger it anymore. If you use Xft, especially with gdkxft, please
   try to bang on it.
 - Major reorganization/rewrite of all included clients (formerly referred to
   as "goodies"). All now support hierarchical menus, and use a new config
   file. You will need to convert your old .paletterc.
 - Got rid of sleep in aesession, now it just sleeps in wait().
 - Added optional support for Gnome's GNOME_PAGER_DESKTOP_AREA hint.  Noticed
   a badly named dummy variable in my XGetWindowProperty calls while doing
   this and fixed it.
 - Wrote set-gnome-pda to allow manipulation of this hint.
 - Reformatted ChangeLog slightly.
 - Fix USPosition of 0 for real this time. Also accounted for border width,
   made other init_position tweaks to accomodate the possibility of
   GNOME_PAGER_DESKTOP_AREA, and ignore USSizes of 0 (this works around xpdf's
   brain-damage, and possibly other broken programs).
 - Included draft of DESIGN document.

1.1.2:

 - Rewrote init_position again. This fixes the problem with specifying a
   USPosition containing 0.
 - Added gtk-menu client contributed by Adam Sampson <azz@gnu.org>. I want to
   fold this stuff into the rest of the goodies eventually.
 - Added a "-version" option for printing version information from the command
   line.
 - Added some proper headers to all the files in goodies/lib/.
 - Replaced strcpy/strcat in panel-misc.c with snprintf to prevent a possible
   buffer overflow.
 - Made some improvements to the .paletterc parser: squish a possible
   segfault, handle comments/blank lines, ignore menu directives.
 - Reformatted man pages.

1.1.1:

 - Fix typo in man page install location.
 - Use -lXt when compiling Xaw goodies (required to build on SunOS).
 - Added some more documentation (mostly about things that are likely to
   break.)

1.1.0:

 - Xft (freetype extension) support, thanks once again to help from Adam
   Sampson <azz@gnu.org>.
 - A few Makefile improvements: only link against required libraries, easier
   enabling/disabling of options, don't attempt to compile against headers in
   the binary destination tree.
 - Yet more init_position tweaks -- use x position hint even if y is out of
   range and vice versa, and take window gravity into account when
   positioning.
 - Some additions and improvements to the debug code (mainly printing names of
   constants instead of cryptic numbers).

1.0.0:

 - All right, I think we're stable now. New stuff will go into 1.1.x.
 - Changed init_position so that it doesn't cut off very large windows. This
   was merely annoying for regular windows, but it was downright buggy for
   incsized ones.
 - Fixed compilation bug when shape support was disabled.

0.9.19:

 - OK, I broke command line parsing again. Yes, I'm an idiot.
 - Fixed problem with exec()-ing a non-existent program.

0.9.18:

 - Fixed bug in init_position; we can safely use PPosition now. If windows
   start popping up in bad places, check their size hints before yelling at
   me.
 - Use fork/exec instead of system(3) to run programs. Fixed signal handlers
   to reflect this (we need POSIX sigaction(2)).
 - Cleaned up MWM hints/WM_SIZE hints code (they sort of match now), and only
   request the MWM atom at startup instead of for each call.
 - Started yet another goodies reorganization, and ended up reverting a lot of
   it. However what's changed should go a little ways towards cleaning things
   up.
 - Fix a build error where some goodies files that needed to be compiled
   against X were compiled without -I/use/X11R6/lib, failing on systems
   without a symlink from /usr/include/X11.
 - Tossed out historical 'iheight' junk in border calculation.

0.9.17:

 - Use ln -f to ignore overwriting previously installed manpage links.
 - If MWM hints are enabled, no-border windows will no longer get a border
   upon exiting.
 - The order of buttons in *-palette is no longer changed by title updates or
   unhiding windows.
 - xaw-palette was fixed to work with proper versions of Xaw (shame on me for
   testing with Xaw3d!), including the one in XF4. The new internals have
   ported over to gtk-palette.

0.9.16:

 - Fixed a shaping bug (which actually existed before changes made in 0.9.15)
   where a window that used to be shaped, but then became unshaped, wasn't
   updated properly.
 - MWM hints support can now be compiled in with -DMWM_HINTS, thanks to help
   from Adam Sampson <azz@gnu.org>.
 - Set the input focus upon entering a window frame, instead of on entering
   the child window.

0.9.15:

 - Display a titlebar for shaped windows. This also makes the bug where shaped
   windows were getting gravitated as if they had a titlebar irrelevant.
 - Tiny cleanups for the Debian package, including:
 - Man page for the goodies.
 - Typo in makefile fixed (tried to strip manpage, ah-reer-reer-reer).
 - Polished the main man page a bit.

0.9.14:

 - Free cursors and GCs in quit_nicely.
 - Switch order of objects and libraries in Makefile to placate Solaris cc.
 - Rename raise to raise_win -- raise is in signal.h of course (duh!)
 - Added copyright notice to all goodies and Makefiles due to someone ignoring
   my license (this has been worked out).
 - Bail out on lack of default font. You *should* be reading aewm.h first of
   course ;-)

0.9.13:

 - Fix really stupid thing I did while refactoring make_new_client, where a
   window that started as Withdrawn would stay that way instead of getting
   mapped.
 - Deal with withdrawing clients properly in *-palette, by watching for the
   WM_STATE property to be changed instead of looking at UnmapNotify events.

0.9.12:

 - Clean up clients on receipt of a DestroyNotify. This is needed when a
   client is already unmapped (i.e, the user iconified it) and it exits.
 - Preserve window stacking order on exit and restart.
 - Mucked about with the make_new_client logic; tell me if this breaks
   something.
 - Added gtk-*-menu clients contributed by Adam Sampson <azz@gnu.org>.

0.9.11:

 - Got rid of unneeded PropertyChangeMask on root window. Silly me.
 - Removed the ugly array/linked-list hack from xaw-palette, so that the
   internal workings of both palette clients are now basically identical.
 - static'd everything that should have been static.
 - Updated email, documentation, etc.
 - Got rid of handle_reparent_event, as a client call to XReparentWindow is
   taken care of by handle_unmap_event.
 - Backed out the 0.9.9 change to option-parsing macros, which were causing
   all options to fail miserably (argh).

0.9.10:

 - Handle withdrawing windows properly in xaw-palette. Both palette clients
   are a little saner now.
 - Updated goodies docs.
 - ungravitate when printing geometry for move/resize.
 - Moved more code from individual goodies to common-run.c.
 - Got rid of unhide() as we never use it.
 - Replaced GenericWidget typedef silliness with global variables.  sometimes
   you just have to pick the lesser of two evils...

0.9.9:

 - Finally de-insanified handle_xerror. Instead of going through contortions
   in remove_client to avoid raising errors, we turn the error handler off
   during the server grab.
 - Both palette goodies now track iconification of clients and WM_NAME
   changes.
 - gtk-palette is now oriented horizontally, and includes a menu, providing
   lots more space for client buttons.
 - Made the parse_option macros reusable (thanks to the comp.lang.c folks for
   the reminder).
 - make sure get_wm_name in the goodies doesn't crash for windows that have no
   name.
 - Minor typo corrections and stuff.

0.9.8:

 - Brown paper bag: take debugging stupidity out of gtk-palette.
 - Overhaul the goodies' build system yet again.
 - Gtk-palette now gets the screen size correctly.
 - All switch/palette goodies now cut off long titles, use WM_NAME instead of
   WM_ICON_NAME, and place iconified titles in parenthesis.
 - No changes to aewm itself in this release.

0.9.7:

 - Added lots of comments.
 - General code cleanups, tweaks, reformats all over.
 - Fixed iconic state problem.
 - Plugged a memory leak in send_wm_delete.
 - Added -new3.
 - Fixed -new[123] allocation bug.
 - Made debug code considerably saner.
 - Print "80x25" and such when resizing xterms.
 - Replaced sprintf with snprintf.
 - Got rid of -display. set DISPLAY in your environment instead, so that it
   propagates to child processes.
 - Messed around with the goodies' build system.
 - Fixed gtk-palette; events are now filtered properly at the GDK level.
 - Replaced variable length arrays with malloc/free.
 - Added xsession, since I've been using it forever.

0.9.6:

 - Fix for handling inital window geometry.
 - A few memory leaks plugged.
 - Wrote a man page
 - More consistent borders for transient windows.

0.9.5:

 - Print window geometry while moving/resizing.
 - Added some WM_NORMAL_HINTS sanity checks
 - Set the keyboard focus on window enter (for rxvt, etc).

0.9.4:

 - Root menu replaced by another client.
 - Added -bw option.
 - Border-drawing fixes (only visible if you have very wide borders).
 - Got rid of mouse button exit.

0.9.3:

 - Put the root menu code back in.
 - Added more goodies and reorganized them.

0.9.2:

 - Minor ICCCM compliance fix regarding WM_STATE.

0.9.1:

 - A small fix to make the palette complain if no rc file exists.

0.9.0:

 - Initial public release. Before this, aewm was called 'swim' and was used by
   me as a school project. It was also rather unstable.
