v2_0 - 20040302

  * Speedup improvements by Heldge Tesdal

  * Fixed ZMI overview refreshing bug

  * GroupsTool method createGrouparea now calls the GroupSpace
    method setInitialGroup with the group that it is created for.
    In case this method does not exists, the default behaviour
    is employed. This is done so that the GroupSpace can decide on its
    own what the policy should be regarding the group that it is 
    initially created for.
    See the implementation of GrufSpaces for an example of how this
    can be used in order to give the initial group the role GroupMember.
    2004/02/25 Maik Röder

  * Removed GroupSpace code, which can now be found in 
    http://ingeniweb.sourceforge.net/Products/GrufSpaces 
    2004/02/25 Maik Röder

v2_0Beta3 - 20040224

  * Improved performance on LDAP Directories

  * Fixed various Plone UI bugs (password & roles changing)

v2_0Beta2 - 20031222

  * Added GroupSpace object for Plone websites (see website/GroupSpaceDesign_xx.stx)

  * Fixed __getattr__-related bug

  * Fixed inituser-related bug
 
  * Cosmetic fixes and minor bugs

v2_0Beta1 - 20031026

  * Include support for multi-sources

v1_32 - 20030923

  * Pass __getitem__ access onto user objects (XUF compatibility)

  * Allow ZMI configuration of group workspaces (CMF Tool)

  * Added security declarations to CMF tools

  * new getPureUserNames() and getPurseUsers() methods to get user
    objects without group objects

v1_31 - 20030731

  * Many performance improvements (tree and audit views)

  * Fixed a recursion pb. on the left pane tree (!)

  * Added a batch view for "overview" page when there's more than
    100 users registered in the system

v1_3 - 20030723

  * GRUF NOW SUPPORTS NESTED GROUPS - Transparently, of course.

  * Updated website information & screenshots

  * Major ZMI improving, including everywhere-to-everywhere links,
    edition of a single user or group, and minor cosmetic fixes

  * The tree view in ZMI now show groups and user (if there's no more
    than 50, to avoid having server outage)

  * Improved performance

  * Improved test plan

  * Fixed a bug in password generation algorythm with non-iso Python installs

  * Fixed a minor bug in group acquisition stack (it apparently had no side-effect)

v1_21 - 20030710

  * ZMI cosmetic fixes

  * Fixed the bug that prevented LDAP-defined attributes to be acquired by GRUFUser.
    This bug showed-up with LDAPUserFolder.

v1_2 - 20030709

  * HTML documentation

  * Add a management tab on GRUF to allow users and groups to be created
    at this top-level management interface.

v1_1 - 20030702

  * Security improvements

  * Added an 'audit' tab to check what's going on

  * GroupsTool and GroupDataTool added for Plone

  * Improved Plone skins

  * Improved Plone installation

  * GRUF Users now 'inherit' from their underlying user object

v1_0RC1 - 20030514

  * Code cleaning

  * Documentation improving

  * API improving (added a few utility methods)

  * UI improving (see skins changes)

  * getId() bug fixing (see ChangeLog)

v0_2 - 20030331

  * Users are now acquired correctly, which prevents you from hotfixing anything !!! :-)

  * This fixed Zope 2.5 w/ Plone bug

  * Better log reporting

  * Validated with LDAPUserFolder and SimpleUserFolder

v0_1 - 20021126

  * User creation is now supported

  * Fixed a bug (with an axe) that prevented Zope module Owner.py code to work.
    The Owner.py calls aq_inner and aq_parent methods on a User object to get its
    security context. So it found the underlying User object instead of the GRUF 
    itself. So we fixed this by setting dummy UserFolder-context methods on the
    GRUFUser objects. This is ugly and should be fixed later by acquiring the 
    underlying User object from a better context.

  * Fixed getUserName in GRUFUser that returned group names without "group_"
  
  * Fixed various "cosmetic" bugs

  * Documented the whole stuff

v0_0 - 20021126

  Started to work on this wonderful product.

