1.2.7:

 - Backport the following from 1.3.3:

 - Added the lib stuff to X11OBJS in clients/Makefile (thanks Doug
   Vetter).

1.2.6:

 - Backport the following from 1.3.1:

 - Rename this file to NEWS and reformat it.

 - Deal properly with clients that set unitialized garbage or off-screen
   values in position hints.

 - Handle CirculateRequests. I implemented this for something I ended up
   not using, but if only for the sake of completeness it should be in
   there.

 - Sleep in aesession in case there are no children for some reason
   (reported by Craig Brozefsky).

 - README update: explain key bindings, clean out some cruft, update
   Adam's email.

 - Add half the font height to the size of transient titlebars. If
   you're using Xft, you're probably going to want to crank the padding
   down, which makes them too small otherwise. Or else I am just getting
   old and need a new eyeglass prescription.

 - Backport the following from 1.3.2:

 - Once again, ignore PPosition hints of 0,0. I don't know how this got
   lost. Perhaps we were doing it wrong all along.

 - Also fix Adam's email in aeclients.1x and NEWS.

1.2.5:

 - Don't exit if a specified rc file can't be found. Also fixed some
   tiny mem leaks in the rc code.

 - Draw window outlines properly when moving a client without a
   titlebar.

 - Various minor cleanups all around, as 1.2.x enters bugfix-only-land.

1.2.4:

 - Get rid of type-punned pointers everywhere to appease gcc 3.3.

 - Use enums where appropriate, and clarify associated code.

 - Cleaned up the parser immensely. Now backslashes will work anywhere,
   not just for \". Thanks to Bill Allombert for the idea.

 - Handle root window clicks on ButtonRelease, not ButtonPress. This
   should fix all the awful zombie aemenu problems.

 - Updated README and LICENSE to reflect the unfortunate death of David
   Hogan.

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 <ats@offog.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 <ats@offog.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 <ats@offog.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 <ats@offog.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.
