# ChangeLog for dev-java/juel
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/dev-java/juel/ChangeLog,v 1.5 2009/12/29 07:37:01 josejx Exp $

  29 Dec 2009; Joseph Jezak <josejx@gentoo.org> juel-2.1.0.ebuild:
  Marked ppc stable for bug #284328.

  11 Sep 2009; Markus Meier <maekke@gentoo.org> juel-2.1.0.ebuild:
  amd64/x86 stable, bug #284328

  13 Sep 2008; Tobias Scherbaum <dertobi123@gentoo.org> juel-2.1.0.ebuild:
  Added ~ppc, bug #236549

  03 Sep 2008; Alistair Bush <ali_bush@gentoo.org> juel-2.1.0.ebuild:
  Reduced description length and keyword ~x86.

*juel-2.1.0 (03 Sep 2008)

  03 Sep 2008; Miroslav Šulc <fordfrog@gentoo.org> +metadata.xml,
  +juel-2.1.0.ebuild:
  juel ebuild from java-overlay created by <alistair@gentoo.org> added to
  the main tree

