
2003-04-16:
  * Don't waitpid() in the SIGCHLD handler but in the main loop after
    this handler has been called. For some reason Lua's io.popen()
    didn't like the old behaviour.
  * Added man-page completion to QueryLib.
  * WFloatWS placement code should now handle shaded frames
    correctly.
  * Include correct version of libtu. Old version could cause
    crashes.

2003-04-13:
  * FloatWS module honours window positions when starting up the WM.

2003-04-12:
  * Added collect_errors(fn, params) for Lua code to be able to e.g.
    display encountered errors with query_fwarn.
  * Full error log is displayed with xmessage after startup whether
    it is possible to continue or not.
  * The standard modules no longer fail on partially broken
    configuration files unless no bindings have been configured
    before the error occured.
  * Prefer _NET_WM_NAME, if it exists, over WM_NAME as apps no longer
    seem to use WM_NAME for UTF-8 titles.
  * Yet another attempt at perfecting focus handling (before
    resorting to separate displayed and actual activity states and
    update delays or similar another kludge in counteracting X's lame
    key grab focus policy).
  * Include stdarg.h in luaextl.c
  * Added the flag -std=c99 to options to compile luaextl.c as it
    needs va_copy from C99 and some versions of GCC seem to disable
    this macro otherwise.
  * Old upvalue syntax removed from Lua code as the just-released Lua
    5.0 does not support it anymore by default.
  * Some transient handling fixes.
  * region_do_add_managed wasn't passing enough parameters which
    could cause a crash.

2003-04-11:
  * complete_function fixed.
  * WFloatFrames can now be shaded.
  * If UTF8 support is enabled, Ion will attempt to load
    CF_FALLBACK_FONT ("fixed" by default) at startup. If this fails
    (or XSupporsLocale() fails, which it seldom seems to do), it will
    reset locale back to "POSIX" so that there's a better chance that
    some fonts can be loaded although non-ASCII (7-bit) characters
    will be crippled. (If UTF8 support is disabled, 8-bit character
    sets should usually work.)
  * Client windows are unmapped when frames are unmapped. This was an
    overlooked (but lame and redundant) requirement of the ICCCM and
    fullfilling it might fix some apps. (Ion probably still is far
    from ICCCM-compliant, but so are most of the badly behaving
    apps.)
  * Added placement calculation code to the floatws module. Placement
    method can be configured with
    'set_floatws_placement_method("method")'. Available methods are
    udlr, lrud and random. (Maybe placement methods should be
    implemented in Lua?)
  * The line editor's copy-paste features should now at least attempt
    to support UTF8.
  * Inconsistently named 'goto_viewport_id' renamed to
    goto_nth_viewport.

2003-04-10:
  * complete_function implemented in Lua.
  * QueryLib.query_yesno fixed.
  * Remaining "goto_*_name" functions were removed as Lua code will
    probably mostly use "reg=lookup_*() ... region_goto(reg)"
  * Transient_mode winprop fixed.

2003-04-09:
  * Added functions to add entries into Lua tables (for completion
    handlers).
  * A number of bugs in the Lua interface were fixed.
  * A lot of the query code was converted to Lua.
  * QueryLib.query_ssh query was added. This will tab-complete hosts
    from the table "query_ssh_hosts" and run the script "ion-ssh" on
    the entered host.

2003-04-08:
  * Use libtool and libltdl for module support.
  * Code to create ~/.ion-devel/saves/ if it didn't exist had been
    lost at some point.

2003-04-07:
  * Added extl_dostring and better extl_dofile
  * Focusing code: iteration n.
  * Removed out-of-date documentation
  * Function renames. Most functions that can be considered member
    functions of some WObj are now rather consistently (although
    unnaturally) named.
  * Added quite useless stack trace displayed when C function called
    from Lua calls warn().
  * Added obj_is and obj_typename exports.

2003-04-06:
  * Use Lua as extension language.

2003-04-05:
  * MODULE_CFLAGS fixed.

2003-04-02:
  * Some code cleanup.

2003-03-30:
  * Some simplifications to the object model: WThing removed and
    functionality split between WObj (watches) and WRegion
    (child<->parent linking).
  * Some minor cleanup.

2003-03-28:
  * Scripts are build using ETCDIR and LIBDIR instead of just PREFIX.
  * Modules are removed by 'make realclean'.
  * Possible key binding setup bug fixed.
  * The region_add_managed mechanism was simplified and generalised.

2003-03-27:
  * Renamed the main binary 'ioncore'.
  * Added 'ion' shell script to run 'ioncore' with correct
    configuration and module file directory parameters. A 'pwm'
    script to run ioncore in PWM mode was also added but this is not
    installed by 'make install' at the moment.
  * A minor nested WS fix.
  * Minor fix in clientwin_deinit.

2003-03-22:
  * Applied the toggle_tab patch.

2003-03-20:
  * Frames save their saveable contents
  * EnterWindow event handling changed so that embedded workspaces
    work as expected.

2003-03-17:
  * Client window (esp. transient) resize request fixes.
  * Double-click fixed.

2003-03-15:
  * The functions region_add_bindmap* no longer have the grab
    argument but instead REGION_BINDINGS_ARE_GRABBED flag is to be
    set.
  * CF_PLACEMENT_GEOM check added in find_suitable_viewport.
  * ASCII control characters (ch&0x7f<32) are now presented as
    escaped octals in saved region name strings.

2003-03-11:
  * Function lookup order changed from region->parent to
    region->manager.
  * Fixed a stupid mistake in creating an initial workspace when
    there is no workspaces.conf.

2003-03-10:
  * Added the compile time option CF_UNDERSCORED_MODULE_SYMBOLS for
    some strange systems whose libdl insists on the calling program
    prefixing module symbol names with an underscore.
  * Tabs can now be dropped on WFloatWS workspaces to create a new
    frames containing the region corresponding to the dragged tab.

2003-03-09:
  * Updated default configuration files. Binding configuration is now
    divided into multiple module-specific files with some common
    bindings in common-frame-bindins.conf. Some look configuration
    files were added and the rest were also changed to reflect
    changes in the order frame border colours and sizes are
    specified.
  * Very preliminary and experimental (a lot is still missing)
    support for PWM-like workspaces and frames: the floatws module.
  * Renamed wmcore ioncore.
  * Main configuration file name changed to 'ioncore.conf'.
  * Added to ioncore generic workspace and frame classes (WGenWS,
    WGenFrame) on which modules' implementations are to be based.
  * Module initialization and deinitialization functions are now
    named modulename_module_init and -deinit.
  * Added module version checking. Modules are now supposed to
    contain the variable 'char
    modulename_module_ion_version[]=ION_VERSION;', where ION_VERSION
    can be found in the top-level directory version.h. Ioncore will
    refuse to load modules which have not set this variable or the
    version is incorrect.
  * Resize size calculation should be fixed now.
  * The 'region_register_load_create_fn' interface was removed and
    replaced with 'region_register_class'.
  * Region create and reparent functions now have parent type WWindow
    because everything expected that anyway.
  * Workspace setups are now saved in ~/.ion-devel/saves/ to remove
    clutter from ~/.ion-devel.
  * Some minor bugs were fixed.
  * Tiled workspace and frame code (WIonWS, WIonFrame) modularised
    (ionws.so) and generic frame and worksapce code moved to Ioncore.
    Dependencies on the query module were also removed.
  * The query module was removed of dependencies to WIonFrame code
    and is now a loadable module (query.so).
  * The 'query_workspace' command by default creates workspaces of
    the first registered (module loaded) kind. Other kinds of
    workspaces can be created by prefixing workspace name with the
    class name (WIonWS, WFloatWS) and a colon, e.g. 'WFloatWS:foo'.
  * Support for compiling modules statically in the Ion core binary
  * Resize size hint handling properly (?) implemented.

2003-03-08:
  * 'make install' code moved from the toplevel Makefile to Makefiles
    in subdirectories (etc, man, scripts)
  * 'make install' code moved from the toplevel Makefile to Makefiles
    in subdirectories (etc, man, scripts).

2003-03-06:
  * Don't grab buttons that are only bound to an area (border, tab)
    of the frame instead of the whole frame.
  * Fixed a bug in do_fit_clientwin

2003-03-02:
  * Some clean-up
  * Some renamings that will break configuration files again.

2003-03-01:
  * Use iconv instead of libunicode
  * Added some locale checks

2003-02-28:
  * Maybe focusing would work this time...
  * Preliminary support for UTF8. XFree86 (4.x) and libunicode are
    required.
  * The 'transparent_background' draw.conf option now only applies to
    empty frames. For client windows with a transparent background
    the 'transparent' winprop should be set to true for transparent
    frame background.

2003-02-26:
  * do_fit_clientwin fixed

2003-02-25:
  * Support for optional autoconf-generated system-ac.inc. (The
    configure script is not finished or included.)
  * More kludges in an attempt to fix focus handling

2003-02-24:
  * Fixed focus and grab handling when warping is not enabled
  * Xft support fixed

2003-02-23:
  * Some changes and (hopefully) fixes to focusing policy
  * Preliminary support for workspace switching while dragging tabs.
  * Added the compile-time option CF_SECOND_RATE_OS_FS to change
    colons to underscores in display name part of configuration file
    names.
  * The command clientwin_toggle_fullscreen now works in both
    directions. However, it should be noted that this toggle does not
    work well along with client programs' full screen mode toggles.
    Some means of communication should be devised.
  * Nested submaps are now fully implemented.
  * Fixed frame_close
  * Implemented "close" command for queries.
  * Added the command frame_close_if_empty and bound close command
    for frames to this.

2003-02-22:
  * Resize size display should now be properly positioned on Xinerama
    screens.
  * Removed clientwin_bindings and viewport_bindings sections.
  * More consistent and descriptive command names.
  * Key binding setup changed.
  * X window -less regions no longer contain children. Instead the
    regions "manage" these objects that share the parent object with
    the managing object.
  * New workspace layout saving and loading code that supports
    arbitrary objects instead of just frames and workspaces..
  * Active client window commands can be accessed from other bindings
    with the command 'commands_at_leaf'.
  * Tab width calculation fixed

2003-02-20:
  * Xft default compilation options changed in system.mk
  * load_module searches the directories $LIBDIR and ~/.ion-devel/lib
    for the module if the name contains no slashes.

2003-02-17:
  * Fixed region_do_find_new_home

2003-02-16:
  * Fixed alloc_defer

2003-02-09:
  * Changed broken_app_resize_kludge a bit. Should work a little
    better now.
  * Support re-reading draw.conf (reread_draw_config) without restart

2003-01-31:
  * Changed hook linking order

2003-01-26:
  * Changed -pedantic-errors to -pedantic in system.mk to get around
    broken glibc headers

2003-01-17:
  * Transient mapping fix

2003-01-09:
  * Xft font names are now to be prefixed with 'xft:', otherwise
    normal clear fonts are used. Xft support still is not compiled in
    by default.

2003-01-04:
  * Submap handling fix

2002-12-30:
  * Send more ConfigureNotify events to fix slow startup times of
    some programs

2002-12-29:
  * Configurable regular expression based window title shortening
    rules

2002-12-18:
  * Winprop matching improvements: WM_WINDOW_ROLE support and
    configuration format changed to 'winprop "class", "role",
    "instance" { ... }'.

2002-12-14:
  * quote_next returns

2002-12-03:
  * Applied Xft support patch
  * Some extra abstraction to Xft support code

2002-11-14:
  * Transient window height restrictions lifted

2002-11-08:
  * Fixed pointer warping on workspace change when warps are disabled

2002-11-04:
  * Fixed a segfault problem with symlists

2002-11-03:
  * Added broken_app_resize_kludge function
  * Added transparent_background (TRUE/FALSE) draw.conf configuration
    option
  * Fixed a drawing problem with ion_bar_inside_frame FALSE

2002-11-02:
  * Added handle_event_alt "alternative hook" for modules that want
    to handle X events directly.
  * Fixed a problem concerning resizing of frames containing hidden
    "acrobatic" windows
  * Fullscreen windows on separate Xinerama screens should be focused
    properly now.
  * Default (black&white) colour scheme changes
  * Line editor history scrolling fixed
  * Other minor fixes

2002-10-27:
  * Screen-based configuration file selection fixed

2002-10-15:
  * Fixed a problem with query boxes and wheel mice

2002-09-25:
  * Fixed pointer warping on workspace change
  * Added manual tab-ordering functions
    frame_move_current_tab_left/right
  * Added the function goto_named_region (replaces missing
    goto_client_name)

2002-09-15:
  * Added a few missing characters to workspace configuration loading
    code

2002-08-22:
  * Self-pointing transient_for hint problem fixed

2002-08-18:
  * Tagging restored (frame functions: toggle_sub_tag, attach_tagged
    and global function clear_tags)

2002-07-06:
  * Function completion in query_function restored

2002-06-14:
  * Tab drag assertion fixed

2002-06-05:
  * Old window_press restored: mouse actions directed to the client
    window associated with a tab should work now.
  * Split bugfix
  * Target ID table bugfix
  * "Watches" added in pointing device code

2002-06-03:
  * Another key binding related segfault fix
  * Preliminary Xinerama support

2002-05-31:
  * Fixed lockup when a window's title ends in its only colon (and
    spaces) but even just the three dots and instance number are too
    long to fit in the tab.

2002-05-30:
  * Fixed 'switch_tab'
  * Fixed segfault when unbound key was pressed in submap mode

2002-05-29:
  * Fixed wscurrent callback handlers
  * Fixed query_function error reporting

2002-05-28:
  * New binding configuration file
  * Lifted restriction on nested command sequences (now max 32)
  * More fixes and temporary kludges

2002-05-27:
  * Resize problem fixed

2002-05-26:
  * Key binding management revised: all X server key grabs are made
    on the root window and the innermost window with an internal grab
    gets to receive the events.
  * Key binding configuration changed: clientwin, screen and frame
    sections added.
  * Preliminary full screen client window support:
    'clientwin_enter_fullscreen' function (no toggle yet) and auto
    detection (MWM decoration hints set to none when a configure
    request with width and height set to those of the screen is
    received).
  * Binding callbacks are now entirely command sequence based

2002-05-21:
  * Fixed split_empty
  * Fixed workspace switching on restart

2002-05-19:
  * Maximize fixed
  * Title updating fixed

2002-05-10:
  * transient_mode winprop returns

2002-04-20:
  * Main loop select() support for multiple file descriptors.

2002-04-12:
  * The function query_renameframe was added and names of frames are
    saved now.

2002-04-11:
  * Added the region_ws_attach_clientwin/region_ws_attach_transient
    interface that workspace-like objects should implement.
  * 'target' winprop for specifying named workspaces (or any named
    object with region_attach_sub) as attachment targets for client
    windows.
  * Command sequence stuff moved to wmcore/
  * Some minor glitches like missing includes fixed -- strict
    compiler warning flags enabled by default again.

2002-04-04:
  * Resolved some problems with resize/workspace_request_sub_geom

2002-03-27:
  * Applied an input handling and resize mode patch.

2002-03-17:
  * Added 'split_top "dir"' command to create a new frame
    above/below/left of/right of all other frames
    (dir=top/bottom/left/right, respectively). Removed
    split_vert/horiz and replaced them with 'split "dir"'.  Also
    added 'split_empty "dir"' that will not attach current client to
    the newly created frame.

2002-03-16:
  * Added set_width/height/widthq/heightq commands. The versions with
    the q postfix take a value in [0,1] and the others take an
    integer value. The behaviour is obvious.

2002-02-06:
  * Fixed region_move_subregions so that destroy_frame should work
    now.

2002-01-30:
  * Transients fixed (at least partially).
  * Some focusing fixes.

2002-01-27:
  * Fixed some resize stuff. Simultaneous vertical and horizontal
    resize is now possible. Keyboard resize is not working yet:
    better "resize mode" binding handling wanted.
  * look-*.conf:s updated. 'frame_colors *, *, bg, *' and
    'background_color bg' have changed places. That is, the
    'background_color' option now sets the client area background
    while frame_colors sets the colours of the frame's border.
  * Some frame drawing changes.

2002-01-26:
  * Command sequences based on the query_function patch.
  * Support for deferred actions, deferred destroy particularly,
    called when the program returns to the main loop.
  * Added information about the 'warp_enabled' configuration file
    option to config.txt. The old CF_WARP and CF_WARP_WS compile-time
    options are gone. This option has the same effect as those two
    combined and _is enabled by default_.
  * Split stuff from config.txt and functions.txt to draw.txt and
    query.txt.
  * look-dusky.conf is now default.
  * Updated the LICENSE file to the clarified version of the artistic
    license. (The license used to be the original artistic license.)

2002-01-19:
  * Applied a patch to have query_function finally support functions
    with arguments.
  * Fixed a possible problem with missing configuration files.
  * Complain and refuse to start if configuration files are missing
    or bindings are inadequate (not the above fix :-). Also attempt
    to view this complaint with xmessage.

2002-01-12:
  * Installation prefix now (temporarily) defaults to
    /usr/local/ion-devel and configuration files will be expected to
    be found in this directory under etc/ion-devel or in
    ~/.ion-devel.

2001-12-29:
  * query_renameworkspace is back

2001-12-28:
  * Old confws.c updated to compile as a temporary (incomplete)
    implementation of workspace saving features

2001-08-28:
  * fit_clientwin changes

2001-08-19:
  * query/ compiles.

2001-08-12:
  * Added generic resize code

2001-08-08:
  * The generic window management library part, 'wmcore' is finally
    in compilable state again after having been fit to use abstract
    WRegions instead of specific frames, client windows, etc. where
    possible. It still needs much work, though.

2001-06-27:
  * Function list changes

2001-06-23:
  * look-*.confs updated
  * Makefile updates
  * sample.conf updates

2001-06-19:
  * Configuration file changes

2001-05-28:
  * Attach current client of a frame to the new frame when splitting.

2001-05-27:
  * New registration-based hooks and function list extensions.

2001-05-26:
  * Initial commit with wmcore/. Much more work still needed, though.

2001-04-25:
  * Added missing functions to documentation

2001-04-19:
  * switch_ws_next/prev wrap around
  * Fixed a problem with some programs' popups

2001-04-01:
  * Unmap;map race condition fix.

2001-03-12:
  * Added CALL_ALT and the 'add_clientwin_alt' alternative hook.
  * Hook changes

2001-03-05:
  * transient_mode winprop

2001-03-04:
  * Changes for easier completion support in modules

2001-03-03:
  * system.mk options to disable module support on systems without
    dynamic linking support and/or dlopen and friends.
  * Added read_config_for

2001-03-02:
  * Enhanced timer support
  * Added goto_client_name
  * Experimental module support

2001-02-26:
  * Completion fix (for the case where all possible completions are
    duplicates).

2001-02-24:
  * Added rename_workspace patch.
  * Oops kind of fix in key.c

2001-02-16:
  * complete_file_with_path fix and complete normally if no
    completions found in $PATH.

2001-02-15:
  * Some ICCCM and other fixes to make some programs not break as
    badly.
  * Call setpgid(0, 0) before running a program.
  * Oops. A few missing lines were causing bad things to happen when
    trying to resize only frame on a workspace.

2001-02-13:
  * Applied patch to allow command completion (using $PATH) with
    query_exec.

2001-02-12:
  * Destroying the first workspace on a screen could cause a
    segfault.

2001-01-21:
  * Added 'stubborn' winprop --- ignore coordinates --- for use with
    badly behaving windows when CF_PLACEMENT_GEOM is enabled.

2001-01-20:
  * Frame ID management fixes for multiple screens/broken workspace
    configuration files.
  * The functions 'goto_*_frame' changed to 'goto_*' --- check your
    bindings.

2001-01-16:
  * goto_previous fix
  * Other previous active window clean-up

2001-01-15:
  * Added CF_PLACEMENT_GEOM kludge --- Place new windows that have
    position specified in the frame under that coordinate.

2001-01-05:
  * 'query_runwith' runs the program without arguments if the user
    inputs an empty string.
  * 'query_workspace_with' didn't work after multihead update.
  * Trailing and leading whitespace of user input to queries are
    stripped.
  * Strip trailing and leading whitespace from window names.

2001-01-02:
  * Preliminary support for multiple screens within single process.
  * The command 'switch_ws_nth <num>' switches between workspaces of
    current screen. 'switch_ws_nth2 <scr>, <num>' can be used to go
    to specific, numbered workspace. Setting <num> to -1 will go to
    active workspace on <scr>. 'query_workspace' works as before (new
    workspace is, of course, created on the active screen).
  * Fixed a typo in same_screen

2001-01-01:
  * Some extra code removed

2000-12-30:
  * Focus newly splitted frame instead of the old one
  * Added CF_WARP_WS for perhaps nicer focusing on workspace switch
    when CF_WARP is enabled.
  * Don't map tabdrag window before moving
  * Default config: Button 1 click instead of press to switch client

2000-12-28:
  * Added a few missing 'void's
  * Makefile/path setting changes

2000-12-21:
  * Better focus handling for CF_WARP (pointer should always stay
    within boundaries of the active frame)
  * Added a word on (mouse) button bindings to the manual page.

2000-12-20:
  * Added 'close_main' for closing client main window, not possible
    transients first.
  * Colormap changing fixes

2000-12-02:
  * Resize fix

2000-11-12:
  * Added bindings-sun.conf where exit and restart are bound to
    SunF36/SunF37.
  * Correctly indicate active client with multiple screens (better
    multihead support still to be written...)

2000-11-07:
  * Automatically create ~/.ion if it does not exist when trying to
    save workspaces.

2000-11-05:
  * Added CF_WARP for warping the pointer to active frame, enable
    from config.h.

2000-11-04:
  * 'query_workspace_with' now attaches client to current frame on a
    workspace if the workspace already exists.
  * Line editor cursor positioning fix

2000-10-29:
  * Added 'switch_ws_next' and 'switch_ws_prev'

2000-10-27:
  * The functions 'scrollup_compl' and 'scrolldown_compl' are now
    just 'scrollup' and 'scrolldown' (used to scroll messages as
    well).
  * Changed 'edln_bindings' section of the config file to
    'input_bindings' as 'cancel' and the scroll functions affect
    messages as well.
  * Changed warnings in query.c be displayed on screen instead of
    stderr.
  * Added 'query_function' for calling ion functions. Only simple
    functions that have no arguments from FUNTAB_MAIN are supported.
    'query_function' is bound to Mod1+F3 in the default
    configuration.
  * Included snprintf_2.2 for implementations of asprintf and
    vasprintf on platforms that don't have them.

2000-10-24:
  * Completion list wrapping
  * Added WMessage for displaying messages

2000-10-22:
  * Do not ignore base size hint to display xterm size correctly
  * Move size information window in the middle of the frame being
    resized

2000-10-16:
  * Minor pointer focusing change

2000-10-07:
  * Fixed problem with transients not getting resized

2000-10-04:
  * Fixed problems with some programs' expectations

2000-09-09:
  * Line editor cosmetic fix

2000-09-03:
  * Added goto_previous

2000-08-31:
  * Client numbering fix

2000-08-30:
  * Initial public release

2000-08-29:
  * Added keybindings to the manual page
  * Added doc/config.txt
  * Added doc/functions.txt

2000-08-28:
  * Added kpress_waitrel-kludge to prevent accidental multiple-window
    closes
  * Current frame is remembered over workspace switch now
  * Added query_workspace_with
  * Fixes and a small diet
  * Portability fixes
