# ChangeLog for x11-misc/i3status
# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/x11-misc/i3status/ChangeLog,v 1.22 2015/03/22 18:25:24 xarthisius Exp $

*i3status-2.9 (22 Mar 2015)

  22 Mar 2015; Kacper Kowalik <xarthisius@gentoo.org> +i3status-2.9.ebuild:
  Version bump

*i3status-2.8 (05 Jan 2014)

  05 Jan 2014; Kacper Kowalik <xarthisius@gentoo.org> +i3status-2.8.ebuild:
  Version bump

  18 Aug 2013; Kacper Kowalik <xarthisius@gentoo.org> -i3status-2.6.ebuild:
  drop old

  18 Aug 2013; Agostino Sarubbo <ago@gentoo.org> i3status-2.7.ebuild:
  Stable for x86, wrt bug #480338

  10 Aug 2013; Agostino Sarubbo <ago@gentoo.org> i3status-2.7.ebuild:
  Stable for amd64, wrt bug #480338

  14 Mar 2013; Kacper Kowalik <xarthisius@gentoo.org> i3status-2.6.ebuild,
  i3status-2.7.ebuild:
  Enhance pkg_posinst message. Thanks to Eduardo Suarez-Santana
  <e.suarezsantana@gmail.com>

*i3status-2.7 (27 Feb 2013)

  27 Feb 2013; Kacper Kowalik <xarthisius@gentoo.org> +i3status-2.7.ebuild:
  Version bump

  27 Jan 2013; Kacper Kowalik <xarthisius@gentoo.org> -i3status-2.5.1.ebuild,
  i3status-2.6.ebuild, metadata.xml:
  Drop old. Use new fcaps.eclass

  16 Dec 2012; Agostino Sarubbo <ago@gentoo.org> i3status-2.6.ebuild:
  Stable for x86, wrt bug #446950

  16 Dec 2012; Agostino Sarubbo <ago@gentoo.org> i3status-2.6.ebuild:
  Stable for amd64, wrt bug #446950

*i3status-2.6 (03 Oct 2012)

  03 Oct 2012; Kacper Kowalik <xarthisius@gentoo.org> +i3status-2.6.ebuild:
  Version bump

  21 Aug 2012; Kacper Kowalik <xarthisius@gentoo.org> -i3status-2.4.ebuild,
  -i3status-2.5.ebuild:
  Drop old

  26 Jun 2012; Jeff Horelick <jdhore@gentoo.org> i3status-2.5.1.ebuild:
  marked x86 per bug 422373

  20 Jun 2012; Agostino Sarubbo <ago@gentoo.org> i3status-2.5.1.ebuild:
  Stable for amd64, wrt bug #422373

*i3status-2.5.1 (11 May 2012)

  11 May 2012; Kacper Kowalik <xarthisius@gentoo.org> +i3status-2.5.1.ebuild:
  Version bump

*i3status-2.5 (03 May 2012)

  03 May 2012; Kacper Kowalik <xarthisius@gentoo.org> +i3status-2.5.ebuild:
  Version bump

  24 Mar 2012; Pawel Hajdan jr <phajdan.jr@gentoo.org> i3status-2.4.ebuild:
  x86 stable wrt bug #407897

  13 Mar 2012; Kacper Kowalik <xarthisius@gentoo.org> i3status-2.4.ebuild:
  Drop -g flag

  13 Mar 2012; Agostino Sarubbo <ago@gentoo.org> i3status-2.4.ebuild:
  Stable for amd64, wrt bug #407897

*i3status-2.4 (27 Dec 2011)

  27 Dec 2011; Kacper Kowalik <xarthisius@gentoo.org> +i3status-2.4.ebuild,
  -i3status-2.3.ebuild:
  Version bump, drop old

  18 Nov 2011; Alexandre Rostovtsev <tetromino@gentoo.org> i3status-2.3.ebuild:
  Update fcaps() error message for recent kernels (bug #390903). Acked by
  xarthisius.

*i3status-2.3 (22 Jul 2011)

  22 Jul 2011; Kacper Kowalik <xarthisius@gentoo.org> +i3status-2.3.ebuild,
  +metadata.xml:
  Initial import. Fixes bug 296434. Thanks to Simeon Maryasin <marsoft@ya.ru>
  and Oleg Akimov <akimov.shop@gmail.com> for their work
