2005-01-13:

  * Fixed clientwin_unmapped_hook.

2005-01-04:

  * Added experimental dock (drag&)drop support. It must be enabled
    by defining CF_EXPERIMENTAL_DOCK_DROP.

2004-12-18:

  * Made ext_statusbar into a partially C-side module containing a
    WStatusBar class that can have a bindmap.

2004-12-11:

  * Added mod_mgmtmode management mode module.

2004-12-07:

  * Fixed (?) tabdrag focus.

2004-11-26:

  * PWM bindings setup script now simply loads Ion bindings and
    unbinds stuff that would use mod_query.
  * Do not show activity/urgency notification for docked and other
    client windows that can not be easily focused.

2004-11-25:

  * Control modifier now is required for N/P in menus to not
    interfere with typeahead.

2004-11-12:

  * Fixed floatws reparent.

2004-11-10:

  * Added support for workspace-specific working directories. These
    can be changed and viewed with the internally overridden commands
    'cd' and 'pwd' in the F3 execution query.

2004-11-05:

  * ion-statusd parameters are now automatically deduced by
    ext_statusbar from the template.
  * %% works in statusbar template.

2004-11-04:

  * Added type of menus that grab input and allow cycling through the
    menu with a given key until all modifiers are released.
  * Fixed winprop name matching.
  * Load cfg_user.lua at end of cfg_ion.lua.

2004-11-03:

  * Moved potentially blocking statusbar meters to ion-statusd.

2004-10-30:

  * Added WIonWS.split for splitting at a node instead of just frame/
    root.

2004-10-23:

  * Added exports to access window properties from Lua side.
  * Removed _ION_KLUDGES property support as the Lua side now has
    direct access to window properties.
  * Arbitrary winprop matching criteria can now be used by setting
    the 'match' field to a matching function with parameters:
    (winprop, cwin) and a boolean return value.

2004-10-19:

  * Added raise delay to help with an occasional slight annoyance of
    floating splits.

2004-10-11:

  * Floating splits can now be had on WIonWSs as well.
  * Added new ionws context menu entries for splitting.

2004-10-09:

  * Added history search to line editor. (Scrolling through history
    entries the beginnings of which match bol-point.)

2004-10-06:

  * Fixed floatws restack.
  * Don't complain if no charset is given in LC_CTYPE if it is "C" or
    "POSIX".
  * ion-completeman now understands manual sections.
  * Fixed line editor display update on history selection.

2004-10-05:

  * Minor goto_previous fix. (It had been broken at some point.)
  * Opening a new window on a panews focuses it if an unused area had
    the focus.
  * Added _NET_ACTIVE_WINDOW (request and property) support.

2004-10-03:

  * Warp propagation improvements.

2004-10-02:

  * Added WSplitSplit.flip.
  * WSplitFloat should properly transpose now.
  * Added split and transpose bindings to WIonWS context menu.

2004-09-30:

  * Added context-specific query histories.

2004-09-28:

  * Improved support for context menus.
  * Binding changes: Mod1+K comma/period moves tab left/right.
    Mod1+comma/period switches to previous/next workspace.
    Corresponding bindings for Left/Right keys were removed.
  * Added ioncore.set_selection and ioncore.request_selection (with a
    continuation function as parameter to the latter) to deal with
    selections from Lua code.

2004-09-17:

  * Improved handling of small unused spaces in panews.
  * Replaced frame_activated_hook (and frame_inactivated_hook) with
    region_activated_hook (region_inactivated_hook) called when the
    region is get focus (loses focus).
  * Renamed clientwin_added_hook to clientwin_mapped_hook and added
    clientwin_unmapped_hook with the X window id as parameter.

2004-09-16:

  * WSplitPane should now update markers on transpose.
  * Added mod_panews.set/get
  * Some minor clean-up.

2004-09-07:

  * Oops, warp setting was no longer used.

2004-09-06:

  * Some focusing code simplifications/fixes/new bugs.
  * Renamed autows to panews.
  * WPaneWS:s can be closed now.

2004-09-05:

  * Added frame_managed_changed_hook (improved from
    frame_content_switched_hook).
  * Added 'save' option for dock.

2004-09-01:

  * AutoWS now supports dropping stuff on unused areas.

2004-08-29:

  * Autoconf should work again. (Applied patch to move from libtool/
    libltdl to plain libdl.)

2004-08-23:

  * WAutoWS layout is now initialised when the workspace is created
    instead of when the first frame is created.

2004-08-21:

  * Added Czech translations of Ion messages.

2004-08-18:

  * AutoWS pane window handling improvements.
  * Changes in frame style names.

2004-08-17:

  * Changed stdisp adaptation code to be more destructive on the
    split tree to preserve special nodes for autows.

2004-08-10:

  * Simplified regexp for 'uptime' load average method as some
    locales show it differently.
  * Added beginnings of a Czech translation (by Miroslav Kure).

2004-08-03:

  * Added routine to drawing engine to draw just a borderline and not
    a full border.

2004-08-02:

  * Improved the 'basic concepts' section of the manual page.
  * Added a Finnish translation of the manual page and welcome
    message. (Correct version of the welcome message is not yet
    used.)
  * Some more binding documentation and translation improvements.
  * Use proper welcome.lang.txt.
  * Submaps now default to AnyModifier.

2004-08-01:

  * Binding documentation is now included in the configuration files
    and the documentation for manual pages is generated from there.

2004-07-31:

  * Added basic framework for localisation/language translations.
  * Removed some redundant error reporting that is of no help to the
    user.
  * s/corner/pos/g in statusbar creation code.
  * Added Finnish translation.

2004-07-30:

  * Changes in default installation paths and binary names: ion->
    ion3, etc.

2004-07-29:

  * Removed generic stacking code; stacking is now handled fully by
    managers, making it simpler and better-working.
  * Added WWindow.xid export.
  * Removed WIonWS.resize_tree and added WSplit.rqgeom.
  * All savefiles are now also prefixed with "saved_".
  * Changed WFloatWS.circulate and backcirculate to be stacking
    based.
  * Added styles for status displays.
  * Drawing engine configuration files now also use the underscored
    "look_" prefix instead of "look-".
  * Added old release notes to the package.

2004-07-28:

  * Changes in functions to set some basic settings of ioncore and
    some modules: for the most part, a single 'set' function now.
    Also added the 'get' counterpart.
  * The status display is now skipped by WIonWS navigational
    routines.
  * Changes in WMPlex passive layer 2 object focus policy.

2004-07-27:

  * Fixed a sed vomit in ion-completeman (around sed's brain-damaged
    refusal to support escaping of square brackets) after GNU sed
    stopped accepting the previous vomit.
  * Status display removal is now properly notified by the screen to
    workspaces over restarts.
  * Added ext_statusbar statusbar script.
  * Better cfg_dock.lua; moved code to mod_dock.
  * Status display is now _not_ saved to layout savefile, for easier
    switching between different status displays.

2004-07-26:

  * Exported timers to Lua side and some other changes in timer code.
  * Added stub loaders for modules, so users only need a single
    command to load scripts or modules.
  * Renamed 'include' 'dopath' (to look similar to Lua's 'dofile'
    that expects complete file name).

2004-07-24:

  * Added still incomplete support for partial floating of
    WSplitPanes on WAutoWS:s.

2004-07-23:

  * Moved WSplitUnused code to mod_autows from mod_ionws.
  * Added initial version of WSplitPane split tree node for better
    organisation of different application classes in WAutoWS split
    tree.
  * Fixed problem allocating names that already contain something
    that looks like an instance number.
  * Some more name allocation improvements and simplifications.

2004-07-18:

  * Some dock changes+fixes.
  * The split tree now uses inheritance within the Ion object system,
    so it is easier to add special inner nodes to it.

2004-07-17:

  * Autows classification heuristics improvements.
  * Autows template code is now aware of stdisp.

2004-07-15:

  * Removed stdisp from lists of normal managed objects on
    workspaces.

2004-07-13:

  * Changes in split tree resize code to better handle SPLIT_UNUSED.

2004-07-12:

  * Beginnings of a new template-based autows implementation.

2004-07-08:

  * Possibly fixed scratchpad focusing (again).

2004-07-03:

  * Implemented WRegion.rqclose for WDock (and removed
    WDock.destroy), so that empty docks can now be closed in a
    consistent manner.
  * Added code in dock.lua to create dock of either flavour.

2004-06-27:

  * WDock.set can now properly request changes when working as WMPlex
    stdisp.
  * Dock supports bindings now.

2004-06-26:

  * Added support for passive mplex layer 2 objects.
  * Unified generic stdisp and floating dock position
    parametrisation.
  * Removed generic stacking exports. Raise/lower is only available
    through WFloatWS.raise/lower now.

2004-06-22:

  * Added XID to querylib.show_clientwin.

2004-06-21:

  * Support dragging tab of current window by clicking anywhere in a
    frame.
  * Fixed drawing engine style loading code when neither font nor
    based_on was set.

2004-06-20:

  * Initial conversion of mod_dock to work with WMPlex sticky
    auto-sizing status display mechanisms.

2004-06-19:

  * Export WScreen.set_managed_offset.
  * Improved support for auto-sizing status display/dock.

2004-06-17:

  * Added some split-tree manipulation algorithms needed to
    eventually support an automagically properly sized dock.
  * Fixed handling of requested geometry in floatws_attach_clientwin.

2004-06-12:

  * Fixed querylib.query_exit and renamed it to
    querylib.query_shutdown.
  * Added WRegion.size_hints to exports
  * Moved autows penalty calculation code to Lua side for easier
    customisation.

2004-06-11:

  * Session saving is no longer disabled on exit if there was an
    error loading layout. Instead a backup of the layout savefile is
    made.
  * The behaviour of ioncore.resign was changed not to save session,
    but instead just quit and, when running under a session manager,
    instruct the session manager to not restart the WM again.

2004-06-10:

  * Changes in the set of exported WSplit methods and
    WIonWS:split_tree().

2004-06-09:

  * Removed WIonFrame and WAutoFrame. There's just WFrame and
    WFloatFrame (also to be unified?) now.

2004-06-08:

  * Binding to nil should again remove the binding.
  * Moved p_move from WFloatFrame to WFrame.

2004-06-06:

  * Moved Fx queries to WMPlex level so they're available on empty
    workspaces and full screen client windows as well.
  * Added querylib.query_menu that can be used to create a query of a
    menu.
  * Added querylib.show_clientwin to display information on a client
    window and put it in the context menu.

2004-06-05:

  * Added Xinerama sanity check.

2004-06-04:

  * Fixed WMPlex.l2_show focus.

2004-06-03:

  * Code that creates regions from tables now supports a 'reference'
    to use existing regions.
  * Added very preliminary WAutoWS layout code.

2004-05-30:

  * Fixed a serious brainfart in region name allocation. (Temporary
    hack; need to do this more efficiently.)

2004-05-29:

  * Bindmap binding count was not maintained correctly if a key/
    button was re-bound.
  * Fixed dec/inc_index bindings.
  * Added -noerrorlog startup option.

2004-05-26:

  * WMPlex layer2 object hide improved.
  * Unified WMPlex layer list access functions.
  * Libtool is no longer used: problems with one module depending on
    another.
  * Unified module and script search paths. There's only one search
    path now.
  * querylib.query_renameworkspace had been broken at some point.

2004-05-22:

  * Removed 'exec' from /bin/sh call to execute command so that more
    complex commands can be entered.

2004-05-21:

  * Added mod_sm.request_save.
  * Removed support for whatever (older?) session management system
    defines the macro "XSM".
  * Improved integration of exit/restart/save state with session
    management.
  * Removed ioncore.exit(); in most cases use ioncore.shutdown()
    instead (and ioncore.resign() in others).
  * SSH host completion now understands usernames. (Code taken from
    the Ion Wiki.)
  * Improved querylib.query_exec completion to break at spaces.
  * Removed os.execute block.

2004-05-20:

  * Split resizing code now first tries to use any unused space
    before shrinking a region.
  * Improved WAutoFrame "lazy" move/resize behaviour.
  * Added WClientWin.xid export to get X window id.
  * Automatically load mod_sm of the SESSION_MANAGER environment
    variable is set.
  * Moved session directory setup code to mod_sm.

2004-05-19:

  * Do not clear client window activity status when receiving focus
    if the urgency hint is still set.
  * Exported WRegion.notify_activity and WRegion.clear_activity.

2004-05-18:

  * Merged dock kde systray support patch and fixes from stable
    branch.
  * Changes in save directory under a session manager; use ~/.ion3/
    gnome-session-$GNOME_DESKTOP_SESSION_ID (with potentially
    unallowed characters replaced) if this environment variable is
    set.
  * Fixed exec bindings to correctly set the root window and changed
    ioncore.exec_on to accept any region as parameter.

2004-05-15:

  * Fixed attempt to free memory at middle of allocated area in menu
    typeahead find.
  * Converted ionws_placement_method to ionws_placement_alt hook.
    Removed the hook from WAutoWS code temporarily.

2004-05-14:

  * Fixed shade on WIonWS.
  * WMPlex contents are unmapped when either width or height of
    client managed area becomes at most 1 instead of resizing them.
    Previously this was only done vertically for frames (shade).
  * Changed mplex l2 hide/show to warp (if enabled) to new active
    region.
  * Some other focus handling fixes/changes.

2004-05-12:

  * New hook system. Both Lua and C-side now have the same hooks
    except for ioncore_handle_event_alt.
  * Oops. There was a typo that was causing region flags to be
    cleared when children were being rescued.

2004-05-09:

  * WM_COLORMAP_WINDOWS handling fixes. (Does something still use
    this/bother supporting indexed colour models at all?)

2004-05-03:

  * Fixed stippled tab font when -i18n was not set.

2004-05-02:

  * Added some basic framework for autows. No functionality
    essentially different from ionws yet.

2004-05-01:

  * Transparency configuration reading fix.

2004-04-30:

  * Minor session management support improvements; should work with
    gnome-session now.

2004-04-28:

  * Only kill active grab when esc is pressed, not released.

2004-04-17:

  * Slightly improved splitting code.
  * Added code to transpose splits.

2004-04-11:

  * Oops, there was an off-by-one bug in _NET_VIRTUAL_ROOTS setting.

2004-04-05:

  * Added a kludge to deal with waitrelease when the modifiers has
    already been released.

2004-04-02:

  * Changed compiled .lc files' path to LIBDIR/ion/lc.
  * WMPlex is now a proper non-virtual class and objects of this type
    can be created and nested like any others.

2004-03-27:

  * Removed object abstraction from drawing engine brushes to help
    creating drawing engines with other font routines.
  * Fixed floatframe client window size issue when shaded.

2004-03-24:

  * Don't put input method failure complaints in startup error log.

2004-03-23:

  * Client window unmap handling fixes (?).
  * querylib.query_restart and query_exit were not yet converted to
    the Ion3 scheme of things.

2004-03-21:

  * Fixed a colourmap update crash.

2004-03-20:

  * Moved activity notification window code from scratchpad to
    screen; also works for normal workspaces now.
  * Added very preliminary (and partially broken) session management
    support based on the 'sm' module for Ion1.

2004-03-18:

  * Made drawing engine objects inheritable and initialisation code
    reusable.
  * Improvements and fixes in keyboard mapping changes handling.

2004-03-17:

  * Some scratchpad activity notification window changes/fixes.

2004-03-15:

  * Made some more minor changes to binding configuration and added
    ioncore.getbindings and ioncorelib.getbindings that can be used
    to get a table of made bindings for all contexts.
  * Added scratchpad activity notification bubble.

2004-03-14:

  * Multiplexers now save layer2 objects in layout savefile.

2004-03-13:

  * Added tentative mod_sp scratchpad module.

2004-03-12:

  * Exported functions can now accept nil objects as parameters
    except for the first parameter. (Most exported functions have
    just that first object parameter.)
  * Region closing method unifications.
  * Added functions to hide/show mplex layer 2 objects.

2004-03-10:

  * Use red-black trees added to libtu instead of a Lua tables to
    store split_of pointers of frames on WIonWS:s to avoid problems
    with object cache clean-up on frame deletion.
  * Also handle name allocation using red-black trees instead of Lua
    tables now that such are available in libtu.
  * Handle bindmaps using red-black trees for simpler code (before
    bindings were in arrays sorted and searched with qsort and
    bsearch).
  * Slightly reduce flicker with apps that update title too often by
    removing a redundant change notify call.
  * Slightly simpler and faster Lua object cache.

2004-03-07:

  * Stacking code relies on XQueryTree instead of maintaining our
    internal state that might not agree with X.
  * WMPlex now supports a full "second layer" of objects in addition
    to a single input.
  * A lot of WIonFrame code was removed and moved to WFrame.
  * New rescue and initial management handling code.
  * Merged recent changes from the stable branch (WFloatWS.attach,
    better gravity handling, goto_* routines return target).
  * All modules are now 'mod_something'.
  * Removed completion functions from ioncore, moving them to
    querylib and replacing with listing functions
    (ioncore.clientwin_list, ioncore.region_list).
  * Menus now support typeahead find.
  * Bound backspace in menus to clear typeahead buffer.

2004-02-18:

  * Merged tab drag&drop fixes and size guard additions from the
    stable branch.

2004-02-17:

  * Changed layout save mechanism to construct configuration tables
    instead of directly writing data to files.
  * Merged fixes from the stable branch.

2004-02-16:

  * Major namespace clean-up, both C and Lua-side.
  * Yet another binding configuration scheme.
  * Moved SunOS F11->SunF36, F12->SunF37 kludge to build time.

2004-02-15:

  * Removed delib.lua and moved the stuff on the C side.
  * Merged floatframe tab toggle and man page fixes from the stable
    branch.
  * Removed gr_get_brush_values and the possibility obtain brush
    parameters before creating a window.
  * Added "above" and "below" as supported directions with some ionws
    functions.
  * Added function to return line editor "mark".

2004-02-12:

  * Removed superfluous navigation functions from WIonWS.

2004-02-11:

  * New binding configuration scheme based on strings instead of
    direct passing of Lua functions.
  * Some WMPlex managed object indexing function changes.
  * Completion display wasn't being refreshed, if its size didn't
    change between completions.
  * Man-page completion is now implemented with the external script
    'ion-completeman'. The script supports cacheng names of known
    manual pages (as a cronjob) for much faster completion. It can
    also use the 'manpath' program in addition to the MANPATH or
    ION_MC_MANPATH environment variables to figure out the paths
    containing man pages.
  * Merged fixes from the "stable" Ion2 branch.
  * Querylib tries to waste a little less memory when reading
    completions from a pipe.
  * Portability fixes merged from stable branch.
  * Lua interface improvements.

2004-02-10:

  * Changed default installation path to /usr/local/ion-3 and user
    configuration file path to ~/.ion3.
  * Renamed WGenFrame to WFrame.
  * Move/resize mode is common to all types of frames.

2004-02-06:

  * Implemented a kludge to track "awaiting focus" state. This will
    allow, for example, windows changing to full screen mode
    immediately after mapping (instead of doing it right and setting
    the properties before mapping) to be switched to.

2004-02-05:

  * WIonWS.newframe wasn't adjusting sizes of existing frames nicely.
  * Added extra include for dock.

2004-02-03:

  * Minor memory leak removed: drawing engine colour group name.
  * Some extra safety checks added in line editor.

2004-02-02:

  * Changed the autoconf script not to use \" that not all shells
    apparently support.

2004-02-01:

  * Man page fixes.
  * Fixed line breaking in really narrow listings.

2004-01-30:

  * Unblock signals at startup as GDM in its great wisdom initially
    blocks the window manager from receiving SIGCHLD resulting in
    zombies.
  * More changes to (floatws) stacking policy.

2004-01-29:

  * Transient size calculation fixed.
  * Creating frame for a transient on a floatws will raise the frame
    containing the transient_for window.

2004-01-28:

  * Documentation comment for ioncore_userdir was broken.
  * Changed libtool minimum version requirement back to safe 1.4.3.
  * Minor man page improvements.

2004-01-27:

  * Install documentation and manual pages under $PREFIX/share as per
    the FHS.

2004-01-26:

  * Trap signals at an earlier stage so that processes forked at
    startup don't become temporarily defunct.

2004-01-25:

  * Typo and spelling fixes.

2004-01-24:

  * Added dummy multibyte/widechar routines for retarded platforms
    without even such dummy support.

2004-01-21:

  * Moved session directory creation to a proper place, so that the
    directory will exist for the style menu save feature.
  * Fill _NET_SUPPORTED root window property with the supported
    features (_NET_WM_FULLSCREEN, _NET_WM_NAME, _NET_VIRTUAL_ROOTS).
  * Some more polish on floatws focus policy.

2004-01-20:

  * Binaries are now again stripped when installed.
  * Module preloading support was broken.

2004-01-19:

  * Autoconf script Xinerama check fixed.
  * Old submaps were ignored when new entries were added.
  * Fixed tab drop on a floatws.

2004-01-16:

  * Fixed goto_previous after switching between windows in the same
    frame with a query.
  * The dock no longer gets focused when the pointer enters it.
  * Minor client window management set up fixes.
  * Pass _ION_KLUDGES (XA_STRING) property in WClientwin.get_ident as
    .kludges.
  * There were still some references to frame-tab (how tab-frame),
    causing initial frame sizes on floatws:s to be miscalculated.

2004-01-15:

  * Style selection saving wasn't working.
  * A couple manual page and README bugs were fixed.
  * Removed Mod1+K T rebinding in ionframe_bindings to
    toggle_transients_pos (it is supposed to be clear_tags).
  * Changed order of mplex old/new selected object map/unmap to
    reduce flicker.

2004-01-14:

  * Added optional autoconf script.
  * Floating workspace now give focus to highest-stacked frame when
    the active one is destroyed.
  * Mod1+N/P were bound to raise/lower on floating workspaces.

2004-01-13:

  * Keyboard move/resize warps (if enabled) pointer back to
    manipulated frame after finishing.
  * Frame maximize takes active client window size limits into
    account.

2004-01-09:

  * Changed winprop selection by title to longest match.

2004-01-08:

  * Support changes in X keyboard map.

2004-01-06:

  * Minor man page fixes.

2003-12-29:

  * Previous frame geometry (for maximize and shade) is saved in the
    workspaces save file.
  * Workspace query asks for type of workspace when creating new.
  * Some default menu configuration changes. PWM no longer uses the
    same menu configuration file.

2003-12-23:

  * Included the dock module with Ion.
  * PWM stock configuration files load the dock module by default.

2003-12-18:

  * Fixed winprop lookup when window name is nil.
  * Added some object destroy safety checks.
  * Class lookup is now case-insensitive.
  * Message line counting fix.
  * Better error message in querylib.query_workspace.
  * WScreens no longer accept tab drag&drop.
  * look-clean "bigmenu" font changed.

2003-12-14:

  * Fixed (?) grab release focusing when warping is disabled.

2003-12-12:

  * Man pages still had references to old user configuration file
    directory.

2003-12-11:

  * Fixed a potential segfault when window disappears while being set
    up to be managed.
  * Fixed .welcome_msg_displayed permissions.
  * Fixed querylib.query_man default value.

2003-12-09:

  * Removed '-devel' from path names.
  * Changed user configuration file directories to ~/.ion2/ and ~
    /.pwm2/.
  * Renamed all ioncore*.lua configuration files to ion*.lua.
  * The main configuration file for Ion is ion.lua and for PWM
    pwm.lua.
  * Removed configuration file conversion utilities; people following
    the development branch should already have converted their files.
  * Module compatibility is checked against ION_API_VERSION (2)
    instead of ION_VERSION.
  * Removed compat.lua

2003-12-06:

  * Added "stylemenu" that displays all look-*.lua files on search
    path.
  * Bound WClientWin.toggle_transients_pos to DEFAULT_MOD+K T.
  * Added WClientWin.toggle_transients_pos export and
    transients_at_top winprop.

2003-12-05:

  * Submenus can now be generated by functions when needed.
  * Added "windowlist" and "workspacelist" default menus.

2003-12-04:

  * Closing a frame initially contaning transient window will switch
    focus to the frame that contained the transient_for window.

2003-12-03:

  * Display a welcome message and manual page to new users.
  * Display a welcome message and manual page to new users.
  * etc/ make install changes; ioncore.lua is now always overwritten
    and draw.lua link restored to a working file.
  * Script search path changes; calling file's directly is now only
    considered if explicitly indicated in the file name. (So now
    normally "included" files in user's directories will always be
    preferred over those in system directories.)
  * The ion and pwm scripts were removed and are instead now binaries
    linked against ioncore.a.
  * The 'ion' binary uses ~/.ion (no longer ~/.ion-devel) for user's
    configuration files and the 'pwm' binary uses ~/.pwm for user's
    configuration files.
  * Removed mentions of ion-devel in the release tarball; default
    installation target is now /usr/local with configuration files in
    /usr/local/etc/ion and ~/.ion. (CVS snapshots will still use /usr
    /local/ion-devel.)

2003-12-02:

  * Fixed message display line copying bug.
  * Added a "basic concepts" section in the manual page.

2003-12-01:

  * The line editor and region_set_name strip white space from the
    beginning and end of strings.
  * Ignore unknown bits in keypress event state.

2003-11-30:

  * Only redraw menu entries that need redrawing when selected entry
    is changed.
  * Implemented sticky frames on WFloatWS:s.
  * Implemented move/resize edge snapping.
  * Smoother square root based move/resize acceleration curve.

2003-11-29:

  * Fixed selection request when multibyte support is not enabled.
  * "Close" key and menu binding changes.
  * Some focus handling changes, fixes and clean-up.

2003-11-28:

  * Keyboard is no longer grabbed in submap mode if normal bindmap is
    not grabed.

2003-11-25:

  * Added WIonWS.farthest, next_to and goto_dir exports.

2003-11-24:

  * Added 'jumpto' winprop and 'clientwin_added' hook.
  * Fonts are chosen more consistently in provided look-* style
    files.

2003-11-23:

  * Completable hosts for SSH query are parsed from ~/.ssh/
    known_hosts (instead of requiring the user to a list of them).
  * String shortening rules can now be specified always-on so that
    the rule is applied even when no shortening is necessary.
  * Look configuration files properly ported the drawing engine model
    and proper menu styles added to those styles that need it.
  * 'pmenu' entry index could be too big by one. Fixed.
  * Added new style look-cleanios.
  * Added WIonWS.resize_tree function that can be used to resize
    whole subtrees of the workspace split hierarchy.
  * Changes in stipple pattern usage in drawing a dragged tab.

2003-11-21:

  * New string shortening code could segfault. Fixed it.
  * Listing (completions, messages) line breaking wasn't yet
    multibyte-aware.
  * Invalid multibyte strings could cause the line editor to go to an
    endless loop.
  * Title shortening rules are now used always even if the title
    would fit in the available space without modification.
  * Modified the default drawing engine to be more usable as a basis
    for alternative drawing engines that need per-window data.

2003-11-19:

  * Replaced UTF-8 support with (almost) general multibyte encoding
    support.

2003-11-16:

  * Added font caching/ref.counting so that font loading would take
    little less time when pattern guessing is required to fullfill
    locale's requirements.
  * UTF8 is not used if locale is C/POSIX (or broken) even if Ion was
    compiled with UTF8 support.
  * Updated the man page.
  * Bindings can now be removed on the fly by passing nil as callback
    function.
  * Added support for _NET_WM_STATE_FULLSCREEN request.

2003-11-14:

  * Added FontSet guessing code that should be able to figure out
    enough fonts for XCreateFontSet to fullfill locales' requirements
    so font loading shouldn't fail so often when UTF8 support is
    enabled.
  * The functions to create binding wrappers to operate on WMPlexs'
    children were extended and given better names, although the old
    ones are still available.

2003-11-13:

  * Call XClearWindow when toggling tab to avoid clutter.
  * Changes in default configuration files to make them more legible
    and to add menu configuration.
  * 'ioncore-startup.lua' kludge was removed and replaced by the
    loading of 'ioncore-efbb.lua' in case of empty bindmaps from the
    C side.
  * Lua files in share/ (but not etc/) are precompiled.

2003-11-12:

  * C-side module configuration file loading function also look for
    compiled .lc files.
  * Lua-side include() automatically also looks for .lc and .lua
    files if neither extension nor path component is given.

2003-11-09:

  * Added WRegion.is_active and is_mapped exports.

2003-11-06:

  * Stack management fixes.
  * Some mplex_managed_changed calls were wrong, causing trouble with
    transparency.

2003-10-30:

  * Removed CURRENT_FILE kludge for include handling; use the Lua
    debug interface instead to get the file the calling function was
    defined in.

2003-10-27:

  * Updated the look-* files.
  * Some style name changes.
  * Changed styles are automatically translated (and complained of).

2003-10-25:

  * Check fallback font at startup with XCreateFontSet instead of
    XLoadQueryFont.

2003-10-24:

  * Moved list of modules to build from system.mk to modulelist.mk

2003-10-04:

  * Added genframe_(in)activated hooks.
  * va_list usage changes due to problems on some architechtures.

2003-09-15:

  * Some fixes to client window rescuing.
  * Some target and fullscreen winprop handling fixes.

2003-09-09:

  * Fixed an event-missing problem.

2003-08-31:

  * Added a note on .xinitrc/.xsession to README.

2003-08-28:

  * Some border drawing fixes.

2003-08-24:

  * Added ''pmenu'' off-screen scrolling support as in PWM.

2003-08-22:

  * Fixed a crash problem in case of invalid use of
    WGenFrame.p_tabdrag.

2003-08-21:

  * Added a brush that handles submenu entries in menus specially.
  * Enhanced menu support.

2003-08-20:

  * Don't strip white space from query results.

2003-08-19:

  * Fixed tab drop on floatws:s (was putting clients to full screen
    mode on occasion).

2003-08-14:

  * Added ioncore_version export.
  * Added very preliminary and primitive menu support (only
    query-like embedded-in-an-mplex menus).

2003-08-13:

  * Dragging a tab with no title could cause a segfault.

2003-08-12:

  * There was an indexing bug in rootwin.c that caused stack
    corruption and crash when Xinerama was enabled.

2003-08-11:

  * Winprop lookup had been broken.

2003-08-10:

  * Added some more functions to manipulate object indices within a
    WMPlex.
  * Changes in tab reordering were not being updated to screen
    correctly.
  * make_exec_fn was broken when the parameter to created function
    was a frame.

2003-08-08:

  * Modified the winprop patch to use the numerical zero field
    instead of " ! " to store winprops with no name regexp specified.
  * close_sub_or_self is now WRegion.close_sub_or_self.

2003-08-07:

  * Applied a patch to add title matching field 'name' (Lua regexp)
    in winprops.

2003-08-06:

  * Backslash wasn't being escaped in saved strings.
  * Implemented 'activity' display cue that is set when a newly
    created client window is not displayed or when the urgency hint
    is set by the client application.
  * Updated style configuration files to draw tabs with the
    'activity' attribute set in white on red. 'lookconv.lua' uses
    these same colours in converted files.
  * Wrote a conversion script from older .lua workspaces savefiles.
  * Changed where get_winprop is called to a later time where the
    client window's name has been set.
  * Fixed a typo in UTF8 font code.

2003-08-04:

  * Ionframe shade fixed.

2003-08-03:

  * Added options to set floatframe bar width limits and tab bar
    location for ionframes(fields floatframe_bar_max_w_q/
    floatframe_tab_min_w and ionframe_bar_inside_borderin frame style
    config).

2003-08-01:

  * Added ignore_cfgrq winprop.
  * Added some line editing and history exports.

2003-07-31:

  * Bound Control+G to end a query and Control+K G to clear mark in
    queries.
  * Fixed some problems with selections in queries and added
    wedln_clear_mark function.

2003-07-30:

  * Removed support for screen-specific configuration files.
  * Added "deinit" hook.
  * Implemented keyboard resize acceleration.

2003-07-28:

  * Fixed a bug in the new split resizing algorithm that caused
    bottom/right regions in a split to be misplaced if both bottom
    and top or left and right border were moved of another region.

2003-07-27:

  * Fixed transient_mode = "current" in full-screen mode.
  * Added keys for manipulating tags and attaching tagged objects
    (Mod+T: toggle tag, Mod+K T: clear tags, Mod+K A: attach tagged).
  * Fixed a problem with the split resizing algorithm and keyboard
    resize by almost completely rewriting the algorithm.

2003-07-25:

  * Colour scheme configuration files were converted to the new
    format.
  * Ion now supports drawing engines as loadable modules!

2003-07-22:

  * Added a script (etc/lookconv.lua) to convert the old .lua colour
    schemes to the upcoming format.
  * The prospective default drawing engine was added.

2003-07-21:

  * Added a note on *BSD libtool version brain-damagedness.

2003-07-19:

  * Some va_list passing changes.

2003-07-18:

  * The fact that there is a configuration manual was made much
    better visible in the README.

2003-07-16:

  * Nested workspace handling had been broken by the add managed/
    attach interface change. Fixed.

2003-07-14:

  * Lua function binding for classes put into class-tables thus
    making the bindings more object-oriented in spirit.
  * The function 'exec_on_wm_display' was renamed 'exec'.

2003-07-11:

  * AnyModifier handling fixes; Xlib was crashing when lock ignore
    kludge was applied on AnyModifier grabs.

2003-07-08:

  * The 'have region A manage region B' interface was heavily
    revamped. The generic region_manage(_new) functions are gone and
    only WMPlexes now export the equivalent interfaces mplex_attach
    (_new). Only client windows' are now set up with a generic
    interface that is a lot simpler than the old.

2003-06-28:

  * Implemented region_close on WFloatWS:s and renamed
    floatws_destroy to floatws_relocate_and_close to be consistent
    with the naming of similar functions on WIonFrames.
  * Fixed a crash when the same key was bound as both submap and
    normal action on an object.

2003-06-27:

  * The Mod1+F1 Ion man page display binding was broken.
  * The function exec_in_frame was renamed exec_in.
  * The '-or' flag to find apparently was a GNU extension; '-o' seems
    to work.
  * The CF_LT_DL_ANCIENT option was removed as much more extra code
    would have been needed to support ancient versions of libtool.
    Version 1.4.3 or newer is now required.

2003-06-26:

  * XOR resize rubberand had been broken by previous changes.
  * FloatWS:s don't warp to new frames.

2003-06-25:

  * Tabs' grab area extended to include frame's top border when the
    frame's y coordinate is zero.
  * The default bindings for the F-keys now use the modifier from
    SECOND_MOD (defaults to the empty string i.e. no modifier).

2003-06-23:

  * Fixed pointer warping on screen change.
  * A bug in grab handler calling code could crash Ion when leaving
    keyboard resize mode manually.
  * Resize display was showing incorrect values for keyboard resize.

2003-06-21:

  * Client window last height request bookkeeping code had been lost
    when configure request policy was changed. This caused transient
    sizes to be calculated incorrectly.
  * Return from full screen mode to floatws had been broken.
  * As the number of dynamic functions has been getting bigger, the
    functions are now sorted on first use and then binary-searched
    instead of naive linear searching.
  * Screen lookup had been broken for windows that are not properly
    on any screen.

2003-06-20:

  * Split recalculation on WS resize fixed and made proportional.
  * Put new client windows in innermost/deepest nested active
    workspace, if any, instead of limiting to those attached directly
    to screens.
  * The split functions now return the newly created frame.
  * Some initial focus policy changes.

2003-06-19:

  * Tab-bar state wasn't being applied correctly from savefiles.
  * New windows weren't being placed on correct screen in Xinerama
    mode.
  * Changes to client window move request handling on WFloatWS:s;
    while the current behaviour may not be correct, a greater number
    of apps' requests should work almost as expected even in nested
    workspaces.

2003-06-18:

  * Use libtool for make clean.
  * Some title shortening rules were defined in wrong order in
    ioncore-example.lua and the rules App: doc -> doc... and App: doc
    -> doc... were missing.
  * Added min_size winprop.
  * Transients weren't properly unattached when the managing client
    window died. This could cause segfault e.g. at exit.

2003-06-17:

  * Scripts in share/ still weren't being built.
  * Added some Cygwin installation notes to system.mk.
  * Added a note to system.mk about the Xlib UTF8 bug.
  * Added commented-out options to system.mk for compiling Ion with
    the Debian Lua package as the paths and file names differ greatly
    from the official distribution.
  * Added workaround to the XFree86 textprop bug that caused starting
    Opera to crash Ion when UTF8 support was enabled.
  * The Mod1+C binding had been broken by the removal if
    make_active_leaf_fn: The function close_sub_or_self (not same as
    make_active_leaf_fn(region_close)) was added and the key bound to
    this function.
  * The function region_get_active_leaf was removed and the export
    region_active_sub added.
  * Added Galeon find dialog randomly missing transient_for hint
    workaround winprop to kludges.lua.

2003-06-15:

  * make_active_leaf_fn in compat.lua was broken.
  * Stack traces are ordered better when there are nested calls with
    errors and calls to C functions for which no name is known are
    compressed in the output.

2003-06-14:

  * Focus was being incorrectly changed when an inactive full screen
    client window was destroyed.
  * The man page query completor also looks for symbolic links.

2003-06-13:

  * Some changes to grab and drag handler setup functions.
  * Escape key was harcoded to kill any active grab (so that
    misconfigured resize modes and such can't do harm).

2003-06-12:

  * Error log should be somewhat easier to read now.
  * Resize timeout timer was being set up only after some resize
    action had been performed, not when entering the mode.

2003-06-10:

  * The Lua interfacing code now uses a unique (cached in a weak
    table) WWatch for Ion's objects instead of creating a new
    userdata/watch every time an object is passed to Lua. This allows
    using the objects as indexes in tables.
  * Warping on workspace switch had been broken by addition of
    multiplexes.
  * The functions extl_dofile/string' were removed and extl_loadfile/
    string added.
  * Binding configuration (hopefully) simplified: bindings previously
    defined in common-frame-bindings.lua were moved to
    ioncore-bindings.lua and functions for defining bindings common
    to all WMPlexes and WGenFrames were added.

2003-06-09:

  * Don't complain of disappeared windows at startup phase.
  * WRegions (except WClientWins) are now given names of the form
    'ClassName' by default.
  * 'QueryLib.query_workspace' new creates workspaces of the type set
    in the variable 'default_ws_type' if no type is otherwise
    specified and Mod1+F9 was bound to create workspaces of this type
    without asking for a name. (The default name of default_ws_type
    is used.)
  * Some client window initial focus policy unification.

2003-06-08:

  * Workspace swithing while dragging tabs had been broken by the
    mplex change.
  * Added mplex_managed_count, mplex_managed_index and
    mplex_current_index functions. The latter two are in
    ioncore-mplexfns.lua that must specifically be loaded if the
    functions are needed.
  * Added -noxinerama command line option.

2003-06-06:

  * Added 'screen_set_managed_offset' function that statusbars and
    such should use to allocate space.

2003-06-04:

  * WScreen and WGenFrame now have a common WMPlex base class.

2003-06-03:

  * Ion-ssh and ion-man scripts were updated to use $SHAREDIR/
    ion-runinxterm.

2003-06-02:

  * Some libltdl search path setting changes.
  * Ugly-font support was broken.
  * Changed $SHAREDIR before $ETCDIR on configuration file/script
    search path because people weren't removing their old *lib.lua
    files.
  * Most of module management code removed as libltdl can handle it.
  * Remaining sprintf calls replaced with snprintf.
  * Added -DCF_LTLD_ANCIENT kludge so that it might be possible to
    use some systems' ancient libltdl.
  * CF_NO_XINERAMA had been broken at some point.

2003-06-01:

  * An off-by-one error in extl_l1_finalize caused references to some
    Lua tables (including large completions) never to be released.

2003-05-31:

  * The *DIR settings in system.mk are now more detailed.
  * Changes in installation directories: The ion-* shell scripts are
    installed in $SHAREDIR and are ioncorelib.lua, querylib.lua and
    compat.lua. 'ion-completefile' is installed in $EXTRABINDIR (=
    $MODULEDIR) being a binary.
  * Changes in installation directories: The ion-* shell scripts are
    installed in $SHAREDIR and are ioncorelib.lua, querylib.lua and
    compat.lua. 'ion-completefile' is installed in $EXTRABINDIR (=
    $MODULEDIR) being a binary.
  * More changes in move/resize mode bindings to be more consistent
    and predictable: Left/Right/Up/Down and F/B/P/N grow the frame in
    the specific direction, Shift+keys shrink and in case of floating
    frames, DEFAULT_MOD+keys move.
  * The functions *frame_do_resize were changed to receive four
    parameters, one for each border/direction.
  * Manual page updated.
  * License changed: LGPL.

2003-05-29:

  * All object destroys should now be handled safely.

2003-05-28:

  * Examples of query_man_path and query_ssh_hosts were added to the
    default ioncore.lua main configuration file.

2003-05-27:

  * Some client window resize/move request handling changes.
  * New name allocation code: client windows are now in a separate
    namespace from other objects and "short names" without appended
    instance number are gone.
  * WClientWins now save the last height request of transients (and
    other managed objects) so a decent size should always be restored
    when the window is in a big enough frame.

2003-05-25:

  * QueryLib should now remember last directory for file view and
    edit queries.
  * Added the boolean 'fullscreen' winprop.

2003-05-23:

  * Grab handling code simplified.
  * Xinerama screens now always have a virtual root window for better
    separation.

2003-05-21:

  * The exported function specification generation script was
    extended with EXTL_EXPORT_AS(...).
  * The exports region_set_w/h were replaced with
    region_request_geom.

2003-05-20:

  * Some more mouse resize tuning.
  * The exports generation script was ignoring constness of string
    and could therefore cause Ion to crash or corrupt strings.
  * Simpler implementation of 'goto_previous' using watches.
  * Better (?) frame shading and maximizing code that should also
    eventually work on tiled workspaces (only partially implemented;
    better region_request_geom neeeded).

2003-05-19:

  * The functions lookup/complete_region now expect a string class
    parameter (or null for "WRegion") and the functions complete/
    lookup_workspace/clientwin were moved to ioncorelib.lua as they
    are not needed on the C side.
  * Kludges and bloat to a proper (but not necessarily correct) X
    server time in WM_TAKE_FOCUS messages to get around problems with
    some programs.

2003-05-18:

  * Fix around problems with macros with some (possibly broken?)
    versions of gcc.
  * Some more focusing policy changes/fixes.

2003-05-17:

  * Fixed FloatWS initial focus.
  * Default configuration uses XOR-rubberband move/resize (instead of
    opaque) to be nicer on slower systems.
  * Changes in object and function names to be closer to what users
    see and think: what previously were screens (WScreen) are now
    called root windows (WRootWin) and viewport (WViewport) have
    become screens (WScreen). These changes are

2003-05-16:

  * Enchancements in client window "rescueing" and some unifications
    with return from full screen mode.
  * Added the extl_globals function for accessing globals.

2003-05-15:

  * Fixed a problem with bsearch() and Solaris.

2003-05-14:

  * Mouse resize changed to only resize along one coordinate axis
    when the window is grabbed far enough from borders.
  * 'ionws_do_clientwin' now calls the Lua function
    'ionws_placement_method' with parameters (ws, cwin,
    pos_given_by_user) to determine in which frame to place a window.
    This can be used to e.g. experiment with placement heuristics.
  * Return from full screen mode should work with floatws:s now.
  * Changes in how parameters are passed to Lua code loaded as string
    or from a file.
  * Client window management setup code simplified by attaching
    transients the their transient_for by default and having
    floatws:s override this behaviour by hooking to
    add_clientwin_alt.

2003-05-13:

  * Fixed a minor resize glitch.
  * Keyboard resize should not "cumulate" size increments that do not
    affect the frame size.
  * Vertical keyboard resize binding swapped.
  * Transient resizing when the managing WClientWin was resized had
    been broken at some point.
  * The new Lua calling code allowed removing dependency on C99
    va_copy a little more easily than the old so Ion no longer
    depends on it and should be easier to compile on older systems
    (apparently including gcc 2.9x.x).
  * There was a problem getting return values from Lua functions.
  * The 'include' function didn't handle absolute paths.

2003-05-12:

  * Added new exports to get information on splits on WIonWs:s. This
    should help writing alternative navigation functions.
  * The exports region_get_(x|y|w|h) were replaced with region_geom.
  * Region name instances are saved in the workspace savefiles.
    (However, client windows do not use the saved title because it
    may have changed so client windows' instance numbers may change
    over restarts.)

2003-05-11:

  * Documentation was missing for exports in screen.c.
  * The rest of the queries (goto/create workspace, attach client)
    are now finally implemented in Lua as the function region_manage
    (_new) are available.
  * 'ionws_load' no longer requires 'split_tree' to be specified so
    that new workspaces can be created with region_manage_new without
    specifying the contents.
  * Added checks in region_add_managed to prevent from attachinging
    parent's or manager's to their (grand)children or managed
    regions.

2003-05-10:

  * Viewport names are now saved and other changes in savefile
    format. Old 'add_to_viewport' function was kept for compatibility
    but will be removed eventually.
  * 'extl_dofile' and 'extl_dostring' now pass arguments in the local
    instead of global variable 'arg'.
  * The Lua interface code now uses lua_cpcall extensively to make it
    more tolerant to Lua's longjmp error handling.

2003-05-09:

  * Query module listings could hang Ion if there was not enough
    space for a single visible row.
  * Fixed a bug in extl_table_get that caused it to succeed for NULL
    WObjs.
  * Added the exports 'region_manage' and 'region_manage_new'.
  * Updated the README.
  * Fixed transient size/position problems and split the
    REGION_ATTACH_GEOMRQ flag into separate POSRQ and SIZERQ.

2003-05-08:

  * Fixed a va_arg problem with luaextl.c and strange architechtures.
  * Some bindings were still using Mod1 instead of DEFAULT_MOD.

2003-05-07:

  * 'viewport_display_managed' was calling just 'set_focus' instead
    of 'warp' as it should.
  * Client window size hints were not used when Ion was restarted.
    Fixed that.
  * The completion handler for QueryLib.query_lua can now descend
    into tables and complete subexpressions.
  * QueryLib.query_lua sets the variable '_' in the local environment
    of the string to be called to point to the frame the query was
    opened in. The variable 'arg' is also now set in the local
    environment instead of global.
  * The functions 'ionws_split', 'ionws_split_empty' and
    'ionws_split_top' were renamed to the more consistent
    'ionframe_split', 'ionframe_split_empty' and 'ionws_newframe'. As
    usual, 'compat.lua' has wrappers to the old functions.
  * Added documentation to querylib.lua.
  * 'mkexports.lua' can now parse documentation from Lua code.
  * Added documentation to ioncorelib.lua.
  * Removed make_screen_switch_nth_fn.

2003-05-06:

  * Line editor history is now saved when Ion exits.
  * Fixed a bug in the new transient management setup code.
  * Fixed a bug in the title shortening routine.

2003-05-05:

  * Removed target_id code.
  * Client windows are now saved over restarts in saves/
    workspaces-*.lua instead of using target_ids. A special check
    code property is added to each window so that we don't
    incorrectly reparent windows when initially starting Ion.
  * Fixed extl_stack_get 'double' code.

2003-05-04:

  * 'mkexports.lua' now parses for documentation of the form /
    *EXTL_DOC ... */.
  * Documentation was added to the source for exported functions.
  * Sort functions in documentation alphabetically.
  * Added hyperlinks in the exported function documentation.

2003-05-03:

  * The 'mkexports' script was rewritten in Lua (was an
    unmaintainable vomit of Perl).

2003-05-02:

  * Fixed (floatws) focus problem that reoccured after previous
    attempt at fixing other focus problems.
  * Added support for hooks Lua code can hook on to with add_to_hook
    (hook, fn).
  * Added the Lua-side hooks genframe_managed_switched and
    viewport_workspace_switched.
  * IonFrame keyboard resize mode changed to allow resizing in both
    directions without leaving and re-entering resize mode.
    Compatibility functions for the old mode are provided in
    compat.lua.
  * The compatibility functions in compat.lua now complain of
    obsoleteness to stderr.
  * IonFrame keyboard resize mode changed to allow resizing in both
    directions without leaving and re-entering resize mode.
    Compatibility functions for the old mode are provided in
    compat.lua.
  * WFloatFrames can now be resized from the keyboard.

2003-05-01:

  * Some unifications in add_clientwin/region_add_managed interface.
  * Added new exports that should e.g. enable writing workspace
    navigation functions that can also be used to move between
    viewports or other workspaces instead of just wrapping around.
  * Added 'eq' metamethod for WObj:s.

2003-04-29:

  * Fixed CURRENT_FILE maintenance in include().

2003-04-28:

  * QueryLib.query_exec fixed to use the correct handler.
  * Fixed the region destroy focus fix.
  * The innermost window grabbing on a mouse button should now get to
    handle the event as is the case with key grabs.

2003-04-27:

  * Added 'popen_bgread(cmd, lua_fn)' to open read mode pipes that
    are selected() in the main event loop and the given function
    called with received data.
  * Moved file completetion code from the query module into a
    separate external program ('ion-completefile').
  * QueryLib file and man page completors use 'popen_bgread' so the
    queries can not block the WM from processing other events (or
    even hang it).
  * ion-completefile Makefile fixed.

2003-04-25:

  * Fixed extl_verify_wobj.
  * Some changes on how region close/destroy is handled and how focus
    is handled when an active region with non-window manager is
    destroyed.
  * Fixed do_complete_region.
  * Most Ion functions should be null-string safe now except for some
    low-level functions and functions that also receive string length
    as an argument. This allows Lua scripts to pass nil to functions
    that have special meaning for NULL strings.

2003-04-24:

  * Some minor TODOs completed and some minor fixes.

2003-04-23:

  * The floatws module is now aware of window gravities.

2003-04-22:

  * The (exported) functions floatframe_raise/lower are obsolete and
    replaced with region_raise/lower. The file 'compat.lua' can be
    included to define these functions.
  * Added window stacking management code.
  * Added window stacking management code.
  * Fixed region_notify_subregions_move.

2003-04-20:

  * No longer complain of missing workspace savefiles.

2003-04-19:

  * Winprop management is now implemented in Lua.
  * Extl_init enables Lua loadlib.
  * 'ioncore-lib.lua' renamed 'ioncorelib.lua' to be consistent with
    'querylib.lua'.

2003-04-17:

  * QueryLib.mancache fixed to contain weak references.

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:

  * Transient_mode winprop fixed.
  * 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:

  * 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.
  * 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)"

2003-04-09:

  * Added functions to add entries into Lua tables (for completion
    handlers).

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:

  * Double-click fixed.
  * Client window (esp. transient) resize request fixes.

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.
  * The functions region_add_bindmap* no longer have the grab
    argument but instead REGION_BINDINGS_ARE_GRABBED flag is to be
    set.
  * ASCII control characters (ch&0x7f<32) are now presented as
    escaped octals in saved region name strings.

2003-03-11:

  * Tabs can now be dropped on WFloatWS workspaces to create a new
    frames containing the region corresponding to the dragged tab.
  * 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:

  * Resize size hint handling properly (?) implemented.
  * 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.

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.
  * 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

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-27:

  * 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.
  * Key binding setup changed.
  * 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-27:

  * 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-05:

  * Submap handling fix

2002-12-31:

  * 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-19:

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

2002-12-14:

  * quote_next returns

2002-12-04:

  * Applied Xft support patch
  * Some extra abstraction to Xft support code

2002-11-15:

  * 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:

  * 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
  * 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.

2002-10-28:

  * Screen-based configuration file selection fixed

2002-10-15:

  * Fixed a problem with query boxes and wheel mice

2002-09-26:

  * Added the function goto_named_region (replaces missing
    goto_client_name)

2002-09-25:

  * Fixed pointer warping on workspace change
  * Added manual tab-ordering functions frame_move_current_tab_left/
    right

2002-09-15:

  * Added a few missing characters to workspace configuration loading
    code

2002-08-23:

  * 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-07:

  * Function completion in query_function restored

2002-06-15:

  * Tab drag assertion fixed

2002-06-06:

  * "Watches" added in pointing device code

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

2002-06-04:

  * Preliminary Xinerama support

2002-06-03:

  * Another key binding related segfault fix

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:

  * Lifted restriction on nested command sequences (now max 32)
  * More fixes and temporary kludges
  * Fixed wscurrent callback handlers
  * Fixed query_function error reporting

2002-05-28:

  * Resize problem fixed
  * New binding configuration file

2002-05-27:

  * Binding callbacks are now entirely command sequence based

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

2002-05-21:

  * Fixed split_empty
  * Fixed workspace switching on restart

2002-05-20:

  * 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:

  * Some minor glitches like missing includes fixed -- strict
    compiler warning flags enabled by default again.
  * 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/

