# ChangeLog for app-xemacs/cookie
# Copyright 2002-2008 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/app-xemacs/cookie/ChangeLog,v 1.13 2008/03/19 19:20:40 graaff Exp $

  19 Mar 2008; Hans de Graaff <graaff@gentoo.org> metadata.xml:
  A herd should not be listed as maintainer

  21 Oct 2007; Hans de Graaff <graaff@gentoo.org> -cookie-1.14.ebuild:
  Remove old version

  03 Jun 2007; Hans de Graaff <graaff@gentoo.org> cookie-1.15.ebuild:
  Stable on amd64, ppc, ppc64, sparc, x86 as per #175560

  29 May 2007; Raúl Porcel <armin76@gentoo.org> cookie-1.15.ebuild:
  alpha stable wrt #175560

*cookie-1.15 (11 Nov 2006)

  11 Nov 2006; Hans de Graaff <graaff@gentoo.org> +metadata.xml,
  +cookie-1.15.ebuild:
  Version bump; add metadata.xml.

  24 Apr 2005; Michael Hanselmann <hansmi@gentoo.org> cookie-1.14.ebuild:
  Stable on ppc.

  09 Aug 2004; Tom Gall <tgall@gentoo.org> cookie-1.14.ebuild:
  stable on ppc64, bug #57174

  02 Oct 2003; Aron Griffis <agriffis@gentoo.org> cookie-1.14.ebuild:
  Stable on alpha

*cookie-1.14 (16 Dec 2002)

  22 Feb 2003;  <rendhalver@gentoo.org> cookie-1.14.ebuild :
  Add ~alpha to KEYWORDS

  16 Dec 2002; Rendhalver [Peter Brown] <rendhalver@gentoo.org> :
  Initial import.
