======================
PEEKABOT RELEASE NOTES
======================

Copyright (C) 2006-2011 Staffan Gimker
See the end for copying conditions.

Please report bugs on Launchpad or through our mailing list, 
see http://www.peekabot.org.


peekabot 0.8.4 2011-01-27
=========================

  BUG FIXES:

   * Work around mysterious crashes on Intel cards (Fedora 14 drivers), related
     to OpenGL. Fixes problems with crashing when resizing frames and
     screenshots partially covered with black rectangles. (Staffan Gimker).

   * Change the way in which we obtain a OpenGL context to a method that,
     hopefully, works on OS X (XQuartz) as well on GNU/Linux (Staffan Gimker).

   * Fix the "Top view" (and bottom) toolbar action in scene views to actually
     give you a top view, rather than a bottom view (Staffan Gimker).

   * Workaround a freeze when changing the tool. Changing tools still appears
     to be fairly broken, probably due to a bug in the GTK stack. It appears to
     affect only newer GTK/gtkmm version (2.22.0) (Staffan Gimker).

  CHANGES:

   * Remove an unnecessary resource fork on OS X (Staffan Gimker).

   * Don't explicitly link GL/GLU, since it's pulled in through gtkglextmm's
     pkg-config dependencies (Staffan Gimker).


peekabot 0.8.3 2010-11-28
=========================

  BUG FIXES:

   * Work around a bug in Eigen which causes link errors with certain
     compilers, and GCC 4.5 in particular (Staffan Gimker).

   * Fix crash bug present on start-up with an existing configuration file.
     Only seems to occur when using newer versions of Boost (Staffan Gimker).

   * Fix OpenGL-related crashes and graphical glithces on some drivers.
     Some drivers, especially older versions, are still problematic
     (Staffan Gimker).


peekabot 0.8.2 2010-10-26
=========================

  BUG FIXES:

   * Using a non-multiple of three number of vertices for (uncolored)
     polygons triggered a bogus assertion failure (Staffan Gimker).

   * Fixed a bug where text labels were not rendered (Staffan Gimker,
     reported by Alper Aydemir).

   * Removed unused layer buttons in the screenshot dialog (Staffan Gimker).

   * Fixed a bug where repeatedly adding and removing scene views in the GUI
     caused crashes or erroneous behaviour (Staffan Gimker).

  CHANGES:

   * The error messages produced when failing to add or assign an object
     should now be more intelligible, mentioning the name of the path that
     was not found (Staffan Gimker).


peekabot 0.8.1 2010-09-29
=========================

  BUG FIXES:

   * Fixed an erroneous typedef that caused compilation errors when using
     results. Vector3f is now a proper alias for Vector3 (Staffan Gimker).


peekabot 0.8.0 2010-09-10
=========================

  There were no changes made since rc1.

  NOTES WHEN UPGRADING:

    There have been a few significant API breaks that will require old code
    to be updated slightly, although the impact should be small in general.
    Below is a short guide on how to deal with the relevant changes. The
    complete list of API breaks and changes can be found below as well.

    The handling of object paths have changed in 0.8.0. Forward slashes
    are now used as the path separator, instead of dots used
    previously. The root node has also been made implicit in the new
    scheme.

    Paths should be changed according to:

      root.absolute.path --> absolute/path
      relative.path --> relative/path

    The impact on this should be small, since typically it only
    involves changing the single or few calls that add top level
    objects in the scene hierarchy.

    Vector3f and Matrix4f have been replaced by the classes Vector3 and
    Transformation respectively. For user convenience the (deprecated)
    name Vector3f is typedef'd to Vector3. Both the new classes can be
    accessed and manipulated in the same fashion as their old
    counterparts, through operator(). They do, however, not support the
    full API of the old types. This only affects clients making use of
    get_position() and friends.

    Only 10 layers are supported in 0.8.0, as opposed to 16 in previous
    releases. If you need more than the 10 layers provided please
    contact us on the mailing list and we will add support for more
    layers.


peekabot 0.8.0-rc1 2010-09-08
=============================

  LICENSE:

   * peekabot 0.8 changes the license of all GPL 2 licensed files to GPL 
     version 3, or at your option, any later version. The peekabot client
     library is still licensed under the Boost Software License
     (Staffan Gimker).

  DEPRECATED:

   * VertexBasedProxyBase::add_vertex() and LineBasedProxyBase::add_line()
     have been deprecated since they are inefficient when used to add more
     than a few vertices or lines. Users should move to the generally better
     performing technique of using VertexSet in conjunction with
     add_vertices() (Staffan Gimker).

  REMOVED:

   * ObjectProxyBase::set_transformation(), deprecated in 0.7, has been
     removed (Staffan Gimker).

   * Support for the "meta name" object property was removed (Staffan Gimker).

   * Support for absolute opacities was removed (Staffan Gimker).

   * PeekabotClient::waiting_actions() was removed (Staffan Gimker).

   * Support for low latency mode was removed, but is likely to make a
     reappearance with a different API in a future release (Staffan Gimker).

  API BREAKS:

   * The return type of get_position(), get_orientation() and
     get_transformation() has changed (Staffan Gimker).

   * PeekabotClient::disconnect() now always discards unsent actions
     (Staffan Gimker).

   * Throw specifications for all the methods in the public API were removed,
     due to their deprecation in the upcoming C++0x standard (Staffan Gimker).

  FEATURES:

   * Bundles are now thread local, i.e. each thread has its own bundle. This
     means that you can use bundles safely even in a multi-threaded setup
     (Staffan Gimker).

   * An option to specify configuration option overrides at the command line
     has been added (-D, --override) (Staffan Gimker).

   * A new tri-mesh object has been added that allows the user to create
     arbitary triangle meshes from the client. It can also be used to
     efficiently draw many smaller objects that otherwise used, for example,
     many polygons.

     Tri-mesh does not yet support textures or per-vertex colors, but we
     expect to add those features in the future (Staffan Gimker).

   * A new polyline object has been added. It makes it easier, and more 
     efficient to visualize, piecewise linear curves, such as paths
     (Staffan Gimker).

   * The GUI was rewritten from scratch using gtkmm. It retain almost all
     functionality from the old one, whilst adding plenty new ones. For
     example, action recordings can now be replayed using the graphical
     interface, commonly changes configuration values can be changed in the
     Preferences dialog instead of editing the configuration file being edited
     directly, and more (Staffan Gimker).

   * Per-vertex colors are now supported for all vertex-based objects, such
     as line and point clouds. To use per-vertex colors, use ColoredVertexSet
     instead of VertexSet when specifying your vertices (Staffan Gimker).

   * Experimental support for visualizing 3D occupancy grids efficiently was
     added, in the form of OccupancyGrid3DProxy (Staffan Gimker).

  CHANGES:

   * The -p/--port command line option has been removed in favour of the
     general override mechanism. Use -D network.listen_port=<port> instead
     (Staffan Gimker).

   * Forward slash (/) delimited paths are now used instead of point delimited
     paths. The old-styled path "root.foo.bar" is now referred to as "foo/bar",
     note that the root is implied from the context in the new scheme
     (Staffan Gimker).

   * Only 10 layers are supported, as opposed to the 16 layers supported
     before. If there is need for more layers, make a request to the mailing
     list; it's not hard to add more (Staffan Gimker).

  BUG FIXES:

   * Self-intersection polygons are now rendered correctly (Staffan Gimker).

  INTERNALS:

   * The custom linear algebra classes have been replaced by Eigen (Staffan 
     Gimker).

   * The serialization has been refactored to, among other things, support
     class versioning. This should help us be better at making e.g. action 
     recordings forward compatible (Staffan Gimker).

   * Uploaded files are now available only to the uploading client. If two
     different clients upload a file of the same name they will no longer
     clash (Staffan Gimker).


peekabot 0.7.3 2010-09-08
=========================

  BUG FIXES:

   * Fixed a faulty configure check that caused configuration to fail when 
     using FLTK 1.3.x or later (Staffan Gimker, reported by Alper A.).

   * Fixed bug 531832. set_orientation() didn't correctly handle the situation
     where the desired orientation equaled the negated current orientation,
     triggering an assertion in the renderer. The fact that setting the
     orientation in this particular case is ambiguous is now documented,
     including how we resolve the ambiguity (Staffan Gimker, Reported by
     Kristoffer Sj).

   * Make the copy constructor of PointCloudProxy const. Fixes bug 561795
     (Staffan Gimker, Reported by Neil Dantam).


peekabot 0.7.2 2009-10-27
=========================

  BUG FIXES:

   * Fixed a problem with paths in the configuration file containing 
     whitespaces (Staffan Gimker, reported by Daniel Stonier).

   * Fixed a culling bug that incorrectly culled objects for perspective 
     cameras with larger vertical than horizontal field of views
     (Staffan Gimker).

   * The "data" directory of the share_path wasn't searched for resources,
     resulting in, among other things, peekabot not being able to find the
     default scene when its share data was put at a location other than
     the pkgdatadir (Staffan Gimker).

   * Fixed an error where the configured share path was ignored when searching
     for icons (Staffan Gimker).

   * Fixed a OpenGL-related bug that caused peekabot to crash during start up
     on Windows (Staffan Gimker).


peekabot 0.7.1 2009-09-07
=========================

  BUG FIXES:

   * Fixed a compile error when using Boost 1.40 (Staffan Gimker, reported by
     Frank Dellaert).


peekabot 0.7.0 2009-08-21
=========================

  No changes since 0.7.0-rc1.


peekabot 0.7.0-rc1 2009-08-20
=============================

  NOTES WHEN UPGRADING:

   * A longstanding and fundamental bug with hinges was fixed in this release.
     All uses of hinges are affected and requires a code chnage on the client
     side, see below for more details.

  DEPRECATED:

   * set_transformation(const Matrix4f, CoordinateSystem) has been deprecated
     in favour of two sibling set_transformation() methods that do not expose
     any peekabot internal types. The old method will be removed in 0.8
     (Staffan Gimker).

  REMOVED:

   * The sensor concept, deprecated in 0.6, has been removed (Staffan Gimker).

   * The DOFProxy alias deprecated in 0.6 was removed, in favour of the newer
     JointProxy name (Staffan Gimker).

   * The set_cells(const std::vector<...> &) and set_cell(...) methods 
     of OccupancyGrid2DProxy deprecated in 0.6 have been removed in this 
     release (Staffan Gimker).

   * The possibility of using <joint> and <track> markup, deprecated in 0.6,
     in scene files has been removed. Use <hinge> and <slider> instead (Staffan
     Gimker).

  API CHANGES:

   * The order of the roll and pitch parameters to set_rotation() changed from
     previous versions (Staffan Gimker).

  FEATURES:

   * Expose a rotate() method for all object proxies. It's the relative variant
     of set_rotation() and can work with axis and pivots in either parent,
     local and world coordinates (Staffan Gimker).

   * Expose a translate() method for all object proxies. Similar to rotate(),
     it's the relative variant of set_position() (Staffan Gimker).

  IMPROVEMENTS:

   * Don't export internal symbols in shared version of the peekabot client 
     library, decreasing library size and load times (Staffan Gimker).

   * Instead of "silently" failing when the server's configured port can't be
     bound exit with an error dialog (Staffan Gimker).

   * Major overhauls to the rendering backend, making the code easier to
     maintain as well as more efficient. Both memory and CPU usage has
     been lowered in general (Staffan Gimker).

   * Improved checks for NaN and inf values -- vertices etc. are now checked
     for non-finite values to avoid assertion failures further down in the
     pipeline (Staffan Gimker).

  BUG FIXES:

   * Fixed a bug where all hinges rotated in the opposite direction. I.e. they
     rotation clockwise instead of counter-clockwise as they should. If you
     use hinges, you will have to modify your code by flipping all rotational
     axes, e.g. (-1,0,0) -> (1,0,0). The cause of the bug also effects 
     rotations done through the GUI, which have been reversed. All rotations
     now behave as they ought to in a proper right-handed coordinate
     system (Staffan Gimker).

   * Fixed the order of rotations when using Euler angles. The order is now
     Yaw, Pitch then Roll, previously it was Pitch, Roll then Yaw (Staffan
     Gimker).

   * Fix bug where peekabot would quit with a fatal renderer error when 
     resizing the window, changing between external/laptop display etc.
     (Staffan Gimker).

   * A bug causing the "data_paths" configuration option to be completely 
     ignored has been fixed (Staffan Gimker).


peekabot 0.6 2009-06-17
==========================

  BUG FIXES:

   * Fixed a bunch of compilation errors occuring with the newest version
     of GCC (4.4) et al on Fedora 11 (Staffan Gimker).


peekabot 0.6rc1 2009-06-10
==========================

  This release is not ABI compatible with previous release, and also has
  minor API incompatibilities. There has also been major changes in where
  models and scenes are installed and the models installed with peekabot,
  read below for more information.

  FEATURES:

   * Added a clear() method to client object proxies, which, as the name 
     implies, removes all of the object's children (Staffan Gimker).

   * The VertexSet now has an empty() method (Staffan Gimker).

   * All client proxies now expose an is_assigned() method that can be used
     to determine if a proxy has been assigned (Staffan Gimker).

   * Hinge and slider joints can now be added and configured through the 
     client API. They are exposed as HingeProxy and SliderProxy, respectively
     (Staffan Gimker).

   * Everything that's done from a client can now be recorded for later 
     playback (post-mortems, step-by-step replay, "3D video", etc.). Playback
     features include stepping, time-stepping and variable playback speed.
     See the documentation for e.g. start_recording() and open_recording() for
     more information (Staffan Gimker).

   * All data transmitted over the wire from clients is now transparently
     compressed whenever it makes sense. The compression algorithm used is 
     very efficient and should have no noticable impact on CPU utlization 
     in the majority of cases (Staffan Gimker).

   * Added support for loading client-side files, through the use of the
     PeekabotClient::upload_file() API (Staffan Gimker).

  IMPROVEMENTS:

   * The peekabot client library is now fully thread-safe, including the 
     PeekabotClient class and all individual proxy classes (Staffan Gimker).

   * The doxygen documentation now covers only the public API by default, 
     making it a lot more accessible. The complete documentation can still be
     generated by configuring with --enable-internal-docs (Staffan Gimker).

  CHANGES:

   * Joint nomenclature has been changed to match widespread usage. Rotational 
     joints (previously joints) are now called hinges and prismatic joints
     (previously tracks) are now called sliders (Staffan Gimker).

   * Leading/trailing whitespace are now trimmed of names specified in scene 
     files (Staffan Gimker).

   * The definition of the VertexSet class was moved from the VertexBasedProxy
     class to the peekabot namespace. The old VertexBasedProxy::VertexSet 
     remains as an alias for backwards compatibility (Staffan Gimker).

   * Some of the models have been reorganized (e.g. sick_lms200.pbmf -> 
     sick_lms200/sick_lms200.pbmf), which means you have to change paths if 
     you use any of our models (Staffan Gimker).

   * Operations committed before connecting to a server will be discarded, 
     rather than queued up for later transmission as they were prior to 0.6
     (Staffan Gimker).

   * The behavior of calling PeekabotClient::connect() when already connected 
     has changed from being a no-op to throwing an AlreadyConnected exception
     (Staffan Gimker).

   * The peekabot configuration file changed from using XML markup to using 
     INI-style formatting. The name of the file also changed, to peekabot.conf,
     to reflect this change (Staffan Gimker).

   * PeekabotProxyBase::get_client() now returns a PeekabotClient object, 
     rather than a reference of the same type (Staffan Gimker).

   * The scenes/ and models/ directories have been merged into one directory,
     data/ (Staffan Gimker).

  DEPRECATED:

   * The DOFProxy has been deprecated in favour of JointProxy. The DOFProxy
     class will be removed in a future version (Staffan Gimker).

   * The <joint> and <track> elements have been deprecated in favour of <hinge> 
     and <slider> respectively. The old elements can still be used but will 
     be removed in a future version (Staffan Gimker).

   * The special utilities for sensor visualization has been deprecated. To
     visualize laser scanner measurements use e.g. a point cloud instead.
     This affects the <sensor> element and the SensorProxy class.
     Support for sensors will be removed in peekabot 0.7 (Staffan Gimker).

   * The API for updating occupancy grids changed to using a small middle-man
     class to pass data, much like VertexSet is used for vertex based objects.
     The set_cells(const std::vector<...> &) and set_cell(...) methods were
     deprecated in favour of the new API and will be removed in 0.7
     (Staffan Gimker).

  REMOVED:

   * Support for robot files was deprecated in 0.5 and has been removed in this
     version. The interface for loading robots from the GUI has been removed, 
     along with client methods for loading robot files (Staffan Gimker).

   * VertexBasedProxy::set_vertices(const std::vector<Vector3f> &) and
     VertexBasedProxy::add_vertices(const std::vector<Vector3f> &) were replaced
     and deprecated by similar methods operating on VertexSets in peekabot 0.5,
     and support dropped in this release (Staffan Gimker).

   * The following DOF scene file elements deprecated in 0.5 were removed:
     <min_angle>, <max_angle>, <initial_angle>, <min_offset>, <max_offset> and
     <inital_offset> (Staffan Gimker).

   * All model files previously shipped with peekabot has been removed to keep
     the package slim. The models can now be found at:
     https://apps.sourceforge.net/mediawiki/peekabot/index.php?title=Model_repository
     (Staffan Gimker).

  BUG FIXES:

   * Fixed object assignment operators, which means that object proxies (of 
     any kind) can now be stored in STL containers (Staffan Gimker).

   * Fixed a build error present with Boost versions later than 1.35, 
     where Boost.Filesystem depends on Boost.System. Reported by Nick Hawes
     (Staffan Gimker).

   * Fixed a rendering bug where the size of axis tripods (for selected objects)
     was not rendered correctly when the near plane was set to anything but 1 m,
     which happens when you zoom in too much (Staffan Gimker).

   * Attempts to use inf and NaN values for positions, rotations and similar 
     is now properly detected and dealt with (raises an exception), instead of
     resulting in an assertion failure (Staffan Gimker).

   * Fixed a bug where lists of paths (e.g. scene_dirs) in the configuration 
     file were always silently ignored (Staffan Gimker).

   * Fixes (unverified) bug #298010, where peekabot crashes on random at 
     start up (Staffan Gimker).

   * Fixed a bug where clients would randomly hang on disconnect (either when
     explicitly calling PeekabotClient::disconnect(), or implicitly by it 
     going out of scope) (Staffan Gimker).

   * Fixed a bug where a client would crash when the lifetime of a proxy object
     was longer than the associated PeekabotClient. Clients are now internally
     reference counted, which fixes this issue (Staffan Gimker).

   * A deadlock in the client library occurring when the server was shut down
     with the client still connected was fixed (Staffan Gimker).


peekabot 0.5.2 2008-08-15
=========================

  BUG FIXES:

   * peekabot now compiles with Xerces-C++ 2.8 (Staffan Gimker).

   * Added a bunch of workarounds for Mac OS X - peekabot now configures, 
     compiles and links correctly. Among other things, a workaround for a bug 
     in the GCC version used in OS X and a linker problem new in OS X 10.5 was
     fixed. Thanks to Patric Jensfelt for help with reporting, diagnosing and
     testing the fixes! (Staffan Gimker)


peekabot 0.5.1 2008-08-07
=========================

  BUG FIXES:

   * Fixed a bug where model loading failed at random with the error message 
     "Unsupported PBMF file format version (version 2292480)" or similar 
     (Staffan Gimker).


peekabot 0.5 2008-08-04
=======================

  No significant changes were made since 0.5rc1.


peekabot 0.5rc1 2008-07-30
==========================

  FEATURES:

   * A new text label primitive was added, useful for annotation of maps etc.
     (Staffan Gimker).

   * Scene and robot definition files are now allowed to contain <external>
     elements, that can be used to store non-peekabot data. The contents 
     contained in the external-block will be ignored by peekabot, but must
     be well-formed (Staffan Gimker).

   * Scene files can now include other scene files using the <include> element.
     Furthermore, objects can be injected in the included subtrees. The new
     include capability in combination with the possibility of object injection
     allows scene files to be used in a very modular fashion (Staffan Gimker).

   * Objects in the scene-tree can now be rearranged from clients, using a new 
     rearrange() method (Staffan Gimker).

   * A set_rotation() method was added to all object proxy classes, which sets
     the yaw, roll and pitch of an object (without moving it, unlike set_pose())
     (#320, Staffan Gimker).

   * obj2pbmf now has a --no-colors option that will discard any color 
     information in the input file and output an uncolored pbmf 
     (Staffan Gimker).

   * peekabot now includes a model of the MobileRobots PowerBot, Peoplebot,
     a (customized) 6-DOF PowerCube arm, a Directed Perception PTU-D46 pan-tilt
     unit, a Videre Design STH-DCSG-VAR stero camera and a Neuronics Katana 6M
     180 donated by the Centre for Autonomous Systems at KTH. Thanks!

   * DOF definitions can now contain an <offset> element that specifies the 
     zero configuration relative the configuration in the definition file. The
     new offset-element allows DOFs/manipulators to function correctly even if 
     the configuration specified in the definition file is not the zero 
     configuration (Staffan Gimker).

   * Scene and robot definitions files have been unified. Scene files can now
     contain all the mark-up previously reserved for robot files, i.e. mark-up 
     for defining DOFs, sensors and robots. Robot files are deprecated and will
     be removed in peekabot 0.6 (Staffan Gimker).

   * Paths can now be given relative an arbitrary object when assigning proxy
     objects from a client (Staffan Gimker).

   * SensorData now has a clear() method for clearing the stored sensor data, 
     allowing instances to be reused (#330, Staffan Gimker).

   * A camera's near and far planes are now adapted for the current zoom 
     distance. Zooming in on an object will move the far and near planes closer
     to the viewer, and vice versa (Staffan Gimker).

  IMPROVEMENTS:

   * The error message reported when loading of a scene file fails has been 
     improved. For example, now the offending file, line and column is always 
     printed, regardless of how the error came about (Staffan Gimker).

  CHANGES:

   * The peekabot client library was re-licensed under the Boost Software 
     License (BSL) version 1.0. The BSL is a permissive, GPL-compatible license.
     The peekabot server, utilities and test cases remain licensed exclusively
     under the GNU GPL (Staffan Gimker).

   * The element names for the min, max and initial values for DOFs has been
     restored to pre-0.4 syntax (Staffan Gimker).

   * The original Blender files for the models are no longer included in the
     package (Staffan Gimker).

   * When loading resources referenced by another resource (e.g. a scene file),
     peekabot now first searches for the referenced resource in (or relative) 
     the directory in which the resource which triggered the request resides 
     in. This applies to models and textures as well as included files 
     (Staffan Gimker).

  DEPRECATED:

   * The use of <min_angle>, <max_angle>, <initial_angle>, <min_offset>, 
     <max_offset> and <inital_offset> is deprecated and will not be supported 
     in 0.6 and later (Staffan Gimker).

   * VertexBasedProxyBase::set_vertices(const std::vector<peekabot::Vector3f>&),
     and VertexBasedProxyBase::add_vertices(const 
     std::vector<peekabot::Vector3f>&) have been superceeded by methods 
     accepting data in a format that doesn't expose our internal Vector3f type
     to the user. Support for the old flavours of set- and add_vertices will be
     removed in peekabot 0.6 (Staffan Gimker).

   * With the arrival of unified definition files, robot files have been 
     deprecated. All supporting methods will be removed in peekabot 0.6. More 
     specifically, RobotProxy::add() methods will be changed/removed 
     (Staffan Gimker).

  BUG FIXES:

   * CircleProxy now derive from LineBasedProxyBase as it should, exposing 
     methods to change line width and style of the assigned circle
     (#321, Staffan Gimker).

   * FreeType should now be properly linked on Mac OS X (#324, Staffan Gimker).

   * The __BYTE_ORDER macro which was previously undefined on some flavours of
     Mac OS X should no longer be a problem (#325, Staffan Gimker).

   * GroupProxy no longer erroneously has set_scale() methods (Staffan Gimker).

   * Corrected the XML schema for track-DOFs so that they can contain an axis 
     element (#326, Staffan Gimker).

   * <initial>-elements in DOF definitions are now properly handled when parsing
     robot definition files (Staffan Gimker).

   * Fixed a bug where <color> tags in definition files were ignored for objects
     with special default colors, e.g. models and cameras (Staffan Gimker).

   * Fixed a bug where specifying DOF min-max ranges that didn't contain zero
     caused errors in the pose of the DOF's children (Staffan Gimker).

   * Grid mark-up in definition file is no longer allowed to contain invalid 
     elements (#317, Staffan Gimker).

   * Fixed various rendering bugs where objects were incorrectly culled
     (including but not limited to #261, Staffan Gimker).

   * Fixed a rendering bug where scaled models (and potentially other MeshBased
     primitives) were incorrectly culled due to erroneous bounding volumes
     (Staffan Gimker).


peekabot 0.4 2008-05-14
=======================

  BUG FIXES:

   * Fixed a GUI-related crash bug triggered by switching a Property 
     Inspector-frame to any other frame when one or more objects were selected 
     (#315, Staffan Gimker).

peekabot 0.4rc1 2008-05-07
==========================

  NOTES WHEN UPGRADING:

   * The client API has been completely revamped. As usual, old clients are
     not binary nor source compatible with the new API. The new interface takes
     a more object-oriented approach, is less intrusive (imposes our data
     structures on the user to a lesser extent) and should be generally easier
     and more pleasant to work with (Staffan Gimker).

  API BREAKS:

    * All client API methods.

  DEPRECATED/REMOVED:

   * The line and point primitives has been deprecated and removed, since 
     they're no longer needed with the advent of their respective cloud 
     variants (Staffan Gimker).

   * The plane primitive has been removed, since they provided no extra 
     functionality over polygons (Staffan Gimker).

  CHANGES:

   * Layers are now specified in the range [1,16], rather than [0,16), from 
     clients (Staffan Gimker).

   * The polygon primitive now supports concave and self-intersecting polygons
     (Staffan Gimker).

   * The scene and robot definition file schemas have been changed. Elements
     may now appear in arbitrary order. Also, the element names for the min,
     max and initial values for DOFs have been changed. See the documentation
     (Anders Boberg).

  BUG FIXES:

    * Various crashes and assertion failures involving selecting objects that 
      are then deleted (#300, #303, Staffan Gimker).

    * Fixed a bug in the 2D occupancy grid where cells sometimes were 
      incorrectly merged (Staffan Gimker).

    * peekabot segfaults when a client tries to delete the root node (#293,
      Staffan Gimker).

    * Deregistering of pseudonyms no longer bypass bundles (#295, 
      Staffan Gimker).

    * Fixed a bug in the client API where calling disconnect() or destroying
      the client object hangs the application (#298, Staffan Gimker).

    * Clients should now detect server disconnects properly (#259, Staffan 
      Gimker).

    * Fixed a bug where the approximate bounding sphere calculation algorithm
      would return bogus values in the special cases of zero vertices
      (#304, Staffan Gimker).


peekabot 0.3 2008-03-14
=======================

  BUG FIXES:

    * Fixed a bunch of bug causing segfault on shutdown, reported by Nathan 
      Michael (#288, #289, #290, Staffan Gimker, Anders Boberg).


peekabot 0.3rc1 2008-03-10
==========================

  CHANGES:

    * rlm2xml was removed from peekabot and made available separetely in our 
      wiki instead: http://trac.peekabot.org/wiki/rlm2xml (Staffan Gimker).

    * To be consistent, circles now have unit radius when unscaled, rather than
      unit diameter as they did previously (Staffan Gimker).

    * The syntax of the camera <fov> elements in definition files changed
      from <fov>degrees</fov> to 
      <fov><degrees>deg</degrees> | <radians>rad</radians></fov> 
      (Staffan Gimker).

  FEATURES:

    * A new grid primitive was added. Among other things, it replaces the old 
      hard-coded grid.

      It supports three different grid types: regular, radial and angular.
      Properties like layer and color are manipulable just like they are for 
      any other object type (Staffan Gimker).

    * On start-up, peekabot now loads a default scene file (default_scene.xml)
      containing a grid - you can override the default scene with one of your 
      liking by putting a file of the same name in ~/.peekabot/scenes/
      (Staffan Gimker).

    * Line segment-based objects (circles, grids, lines, etc.) now have 
      configurable line width and pattern (Staffan Gimker).

    * Which port the peekabot server listens on and scene files to be load at 
      startup can now be specified at the command line (Staffan Gimker).

    * Added point and line cloud primitives (Staffan Gimker).

    * A new primitive for visualizing occupancy grids was introduced. It 
      features efficient rendering and sparse storage - space complexity is 
      linear (or better) in the number of cells actually used (Staffan Gimker).

    * peekabot now ships with a model of the Hokuyo URG rangefinder (Staffan 
      Gimker).

  IMPROVEMENTS:

    * Added LODs for circles (Staffan Gimker).

  BUG FIXES:

    * Test suite fails to link (Staffan Gimker, #247).

    * The LOD coverage calculation is broken when using orthographic cameras
      (Staffan Gimker, #180).

    * Error in bounding sphere approximation algorithm (Staffan Gimker, #267).

    * Opacity controls aren't correctly updated (Staffan Gimker, #135).

    * peekabot crash or hangs under heavy load (Staffan Gimker, #273).

    * Auto-enumeration broken for objects loaded from scene files (Staffan 
      Gimker, #278).

  DOCUMENTATION:

    * Added scene file syntax documentation for grids (Staffan Gimker).

  INTERNALS:

    * ObjectTrigger was replaced by Boost.Signals throughout the entire 
      application (Staffan Gimker).


peekabot 0.2 2007-11-26
=======================

  BUG FIXES:

    * Client API broken on Windows - winsock not initialized 
      (Staffan Gimker, #246).

    * Client API broken when using static lib (Staffan Gimker, #258).

    * peekabot crashes when OpenGL 1.4 nor ARB_imaging is available
      (Staffan Gimker, #256).


peekabot 0.2rc1 2007-11-19
==========================

  NOTES WHEN UPGRADING:

    Clients written for peekabot 0.1 are not binary nor source compatible with
    peekabot 0.2 due to a number of changes. Please read the CHANGES section 
    below and adapt your clients accordingly.

  CHANGES:

    * Laser and sonar rangefinders have been unified and merged into one single
      sensor type (rangefinder).

    * Sensor parameters are now configured in the robot definition files, rather
      than from the client application. As a consequence, the input of sonar and
      laser rangefinders has changed, refer to the manual for more information.

    * The way cameras are modelled has been changed -- cameras are now defined
      by a focus point (the camera's origin) and a zoom distance to said focus
      point.

    * The <name> element in robot and scene definition files is no longer 
      required. If not present, a name will automatically be generated.

  GUI CHANGES:

    * Holding 'm' and dragging the mouse no longer moves the current selection.
      This functionality has been superceded by the new Move tool.

    * The result of mouse actions in the viewports now depend on which tool is
      currently active. Right-clicking or pressing Esc cancels the current tool
      and enables the Navigate tool.

    * A dashed line drawn from the viewer's position to the focus point was 
      added to the visual representation of cameras.

    * 'f' now toggles fullscreen, rather than just enabling it.

  FEATURES:

    * peekabot now ships with models of the SICK LMS200, Pioneer 3-DX and 
      Pioneer 3-AT. The original Blender files are distributed but not 
      installed.

    * New snapshot button available in view frames for taking screenshots. 
      Snapshots are saved in PNG format in a user configurable directory.

    * A feature for saving all rendered frames as PNG files was added.

    * A status bar has been added, showing the number of selected objects and
      the latest user info/warning/error message.

    * New Move tool for moving the current selection using the mouse in the 
      viewport. The Move tool can be toggled using the appropriate tool bar 
      button or using a keyboard shortcut ('m' by default).
      
      In which coordinate system and what axes the objects are moved along
      is controlled by a menu button and three toggle buttons in the status bar.

    * New Rotate tool for rotating the current selection using the mouse in the 
      viewport. The Rotate tool can be toggled using the appropriate tool bar 
      button or using a keyboard shortcut ('r' by default).
      
      The axis and pivot used to rotate the objects is controlled by two menu 
      buttons and three radio buttons in the status bar.

    * Transformation guides showing the current translational and rotational
      axes when the Move and Rotate tools are used have been added.

    * Each selected object now has an axis tripods rendered showing its local 
      coordinate system.

    * New alias-on-conflict name conflict policy added.

  IMPROVEMENTS:

    * config.h is no longer distributed and the configure script has been fixed 
      to detect Boost more reliably.

    * Proxy::set_vertices() et al. now accept input as a pair of forward 
      iterators.

    * Better error reporting: Error messages generated by the user of the 
      server are now shown in message boxes as well as in the Console.

    * Due to a fixed, previously erroneous calculation, frustum culling is now 
      tighter, yielding a potential performance boost.

    * All filesystem code is now portable.

    * peekabot no longer requires OpenGL 1.5 or better to run.

    * peekabot, including examples, now compiles without modifications on 
      mingw/msys.

    * The test suite now compiles on recent versions of GCC (note that it still
      doesn't link properly).

    * The code calculating bounding spheres has been fixed. Bounding spheres for
      vertex-based objects now fit much better.

  DOCUMENTATION:

    * A user manual covering many aspects of peekabot has been added. Topics 
      covered include installation, getting started, writing clients, 
      scene file documentation, robot file documentation, configuration options,
      model conversion and documentation for rangefinder and bumper sensors.

    * The generated doxygen documentation is now customized to have the same 
      style as our website.

  BUG FIXES:

    * Window drawn badly (#222).

    * Default naming broken (#163).

    * Orthographic cameras broken (#120).

    * Towards Windows support: fix unportable filesystem code and broken 
      server-side network code (#206).

    * Select and move doesn't work in fullscreen mode (#193).

    * World coordinates doesn't update for selected objects... (#78).

    * Crash in renderer when rendering actions are forcefully executed (#203).

    * ... and probably more.



peekabot 0.1 2007-08-10
=======================

Our first release!



-------------------------------------------------------
Copying information:

   Permission is granted to anyone to make or distribute verbatim copies
   of this document as received, in any medium, provided that the
   copyright notice and this permission notice are preserved,
   thus giving the recipient permission to redistribute in turn.

   Permission is granted to distribute modified versions
   of this document, or of portions of it,
   under the above conditions, provided also that they
   carry prominent notices stating who last changed them.

