0.4.0 (???)
- Added an "interface plugin" system that allows swapping in and out
  different GUI libraries without needing to recompile, and split out SDL_gui
  specific code into an interface plugin
- Added integer and boolean literals, variables, integer arithmetic, boolean
  operators, and comparison expressions to scripting language
- Added default XML file ~/.eboxy/system.xml - see documentation
- Added configuration file ~/.eboxy/eboxy.conf - see documentation
- Added execwaitcapture script command to capture output of executed program
- Can now change the background of a page in a script
- Added visible property to all widgets
- Item previous/next actions now go to previous/next widget when on a button
  or a togglebutton
- Default keyboard layout is now more sensible (tab/shift+tab for next/
  previous widget, up/down and left/right are now the same)
- Added system.gotopage()
- Added more user actions
- Added minimum version check attribute to XML
- Added configure option --with-plugin-path to specify the path to load
  plugins from (default is $prefix/lib/eboxy/plugins). Generic plugins are
  now loaded from $pluginpath/generic.
- Removed automatic initialisation of audio - this should now be handled by
  plugins that need it
- Fixed bug: uncertain return convention resulted in memory leaks and
  possible crashes with plugins. Note that this means existing third party
  plugin code will need to be fixed to conform with the new convention (see
  documentation)
- Fixed bug: dynamically created pages were not persistent over file changes
- Fixed bug: characters not used by the scripting language (eg. semicolon)
  were printed out if found
- Fixed bug: fatal script parsing error would cause eboxy to exit
- Fixed bug: action property missing on togglebutton
- Many code tidy-ups and internal changes
- Documentation has been expanded, updated, and converted to DocBook format

0.3.9 (2 February 2004)
- Added validchars property to textfield (see release notes)
- Fixed bug: now compiles against SDL_gui library without having to link it
  against libstdc++ manually
- Fixed bug: eboxy sometimes froze if an error occurred during starting
- Fixed bug: plugin load failure caused eboxy to segfault
- Fixed bug: memory leak in filebrowser plugin when using pattern
- Fixed bug: default textfield.maxlength was 10 instead of 255

0.3.8 (4 December 2003)
- Fixed bug: textfields were not taking borderx into account when clicking to
  set cursor position
- Fixed bug: using keyboard/LIRC to press a button with no caption caused a
  crash
- Should now compile properly with gcc 3.3

0.3.7 (25 June 2003)
- Improved "dynamic" property, method and event system (mostly internal, but
  has enabled other features in this release, and exposed bugs that have been
  fixed)
- Plugins can now create and add widgets to the page at runtime, as well as
  enumerate all pages, widgets on a page, and properties, methods and events
  of an object
- fontsize property now available at runtime on all font-using widgets
- Added width and height to templates
- Added property system.version to report eboxy version
- Can now refer to widgets on other pages in scripts
- Plugins can now execute arbitrary blocks of script code
- Added alternative syntax to execwait script command to get back return code
- Fixed bug: can now refer to pages by name in scripts
- Fixed bug: setting button font colours to "" now causes them to be ignored
- Fixed bug: colour property values are now returned correctly
- Fixed bug: fragments of reserved words and methods/properties were
  erroneously disallowed as names
- Fixed bug: label.textalign was not working correctly
- Fixed bug: setting button caption to "" caused a crash on exit
- Fixed bug: buttons with no caption initially could never have a caption
- Fixed bug: default keyboard key bindings didn't work on first run
- Fixed bug: eboxy still ran with errors in key config file
- Fixed bug: listbox did not respect bordery when drawing last visible item
- Internal type names have been changed (again) to lower case, to match XML
- Massive code tidy-up

0.3.6 (22 April 2003)
- Added togglebutton widget
- Added setfocus method to all widgets
- Added itemheight, itemborderx, itembordery, selitembackgroundfocus
  properties to listbox
- Added sorting to file browser plugin (thanks to Kimble Young)
- Buttons can now be disabled (added enabled property)
- Added fontfocusedcolor, fontdisabledcolor, fontpressedcolor properties to
  buttons
- Added text digit input (use number keys on a remote to enter alphanumeric
  text)
- Added --nokeyrepeat command line option to disable keyboard key repeat
- Added scriptable method system.performaction() for performing actions from
  scripts
- Key bindings can now include modifiers (eg. alt+q, ctrl+enter etc)
- Fixed bug: filebrowser broke if invalid path specified as root
- Fixed bug: changing interval of a timer while enabled didn't take effect
  until the timer was restarted
- Fixed bug: no error was reported if you tried to call a nonexistent method
  on an object
- Fixed bug: some attributes were missing from listbox templates
- Fixed bug: certain versions of autoconf failed to configure eboxy
- Fixed bug: large file support now enabled at build time (fixes files 2GB
  or larger not showing up in filebrowser)
- Fixed bug: segfault on exit after reload of a page with plugins loaded
- Fixed bug: segfault with no widgets
- Fixed bug: buttons with only an image attribute specified now do not blank
  out when focused or pressed
- Fixed bug: segfault on pluginobject with missing file and attached events

0.3.5 (5 January 2003)
- Keyboard key bindings are now customisable (~/.eboxy/keys)
- Keyboard repeat now enabled
- Added user-bindable actions (allows binding LIRC remote buttons or keyboard
  keys to button widgets)
- New action system for LIRC buttons and keyboard keys
- New plugin loading method allows attaching scripts to plugin object events
- Added scrollbar widget
- Added textfield widget
- Added FileBrowser plugin
- Added reloadimage method to picture widget
- Added --showkeys command line option for testing keyboard keys
- Buttons now have optional width/height attributes
- Fixed bug: buttons can now have no images (text only)
- Fixed libxml2 version in documentation and build being too old to use with
  eboxy (now requires 2.4.19 or later)
- Fixed build to check for SDL_mixer, and if not installed, compilation of
  the simplemusic plugin is disabled
- Fixed bug: crash with no focusable widgets
- Fixed bug: single-line labels were not drawn with proper clipping
- Window now has proper title in windowed mode
- Added plugin API functions performAction, unregisterObject, and
  unregisterEventHandlerDL
- Made more widget properties available to scripts
- Fixed one more compilation error with gcc 3.2
- Many documentation updates

0.3.4 (24 November 2002)
- Fixed compilation problems with gcc 3.2.
- Added timers
- Added listbox widgets
- Methods can now have arguments, and return values to scripts. Note that
  this breaks compatibility with existing plugins - see the release notes.
- Added delay script command
- Minor improvements to documentation
- Added minimal man page
- Fixed bug: crashes/odd behaviour with fonts and images in some situations
- Fixed bug: only the first event handler for an event would be called
- Fixed bug: eboxy ran out of threads after lots of events had fired
- Fixed bug: crash with labels that had a blank caption
- Fixed bug: crash with labels that had a single word caption and wordwrap
- Tidied up some compiler warnings

0.3.3 (31 October 2002)
- Major reduction in CPU usage
- Fixed bug: exec/execwait commands swapped, threaded version was broken
- Fixed bug: crash with threaded event scripts that changed the page/file
- Added plugin API functions for changing the page/file
- Added plugin API function for firing events on custom objects
- Plugins are now not unloaded on page/file change or app hide
- Fixed bug: page objects had no internal type defined
- Fixed bug: event cleanup on plugin unload flawed
- Fixed bug: crash on blank first line in a label

0.3.2 (27 October 2002)
- Added first sample plugin: SimpleMusic, which provides basic background
  music capabilities
- eboxy now initialises the audio device, for audio plugins that use SDL
  audio functions (can be disabled with --noaudio).
- Scripts are now run in a separate thread by default (optional)
- Added execwait script command
- LIRC events are now only processed when eboxy has input focus
- Added plugin client library to make plugin development much easier
- Added functions to enable plugins to find what other plugins are loaded
- Added HTML and text documentation in eboxy/docs/en
- Added system events: OnLoad, OnShow, OnHide, OnQuit
- Fixed bug: if button was focused just before a page change, button would
  not appear to re-focus the first time you came back to the page (introduced
  in 0.3.1)
- Fixed bug: using remote buttons could screw up the focus
- Changed order of events: plugins get first after-page-change message before
  OnShow events are executed
- Plugins are no longer allowed to register properties and methods on objects
  which they didn't create themselves
- Changed widget type names
- Added system method: printpluginlist
- Script errors now print out the line number again
- Paths (to the plugin directory, the data directory where the DTD is stored)
  are now always set from the build process instead of being hardcoded as
  being under /usr/local.
- Plugin development headers are now installed

0.3.1 (29 September 2002)
- Scripting (multiple commands as actions, access to widget properties etc.)
- Optional page load, show and unload event scripts
- Preliminary plugin system
- Plugins may expose custom objects that scripts can access
- Widget names may no longer start with an underscore. Reserved words as
  used in the scripting language are now disallowed also
- Now requires flex to compile (or at least access to FlexLexer.h). Note that
  the lexer/parser are NOT rebuilt when eboxy is compiled (so you don't
  actually need the flex/bison executables)
- Fixed bug which may have resulted in spurious errors accessing files
- Fixed possible crash bug with label drawing
- Added XML line numbers to XML file related errors

0.3.0 (31 August 2002)
- Mouse handling perfected
- Label templates
- Speed improvement
- New button action exechide: hides GUI, executes command, reshows GUI when
  command finishes
- Multi-line labels with justification, optional automatic word wrapping,
  optional auto-sizing. Note that label area clipping is much stricter than
  before, so you may find that your existing labels don't look right anymore.
  You should specify the width and height or use autosizing.
- Now expands environment variables and user home directories in paths
- Button labels now drop down when the button is pressed (adjustable, default
  2 pixels down and 2 pixels right)
- Added check for access denied to a file
- Added fontcolor to buttontemplate in DTD (oops)
- Used valgrind to tidy up a number of nasty bugs

0.2.0 (11th August 2002)
- Added static label widgets
- Added static picture widgets
- Improved mouse handling
- Added fontcolor attribute (buttons, labels)
- Can now load other XML skin files from button actions
- Command line options tidied up, added some options
- Now looks for images and fonts in the same location as the XML file
- Can now specify the font size alone in a button using a template
- Better error checking, more strict conditions on naming of widgets
- Fixed incorrect paths being used for libxml2

0.1.0 (2nd August 2002)
- First public release
