# ChangeLog -- changelog file for galois.
# Copyright (C) 2011-2022 Gerardo Ballabio
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

25 Nov 2011
* started today, plus or minus one day (writing 29 Nov)
* single source file: galois.cc

* set up class grid
* generate blocks made of a specified number of square bricks

27 Nov 2011
* move functions to methods of group

28 Nov 2011
* add hexagonal group

29 Nov 2011
* move to own directory
* start keeping changelog
* add GPL3 notice

* make rotation group elements

30 Nov 2011
* simplify transform method

1 Dec 2011
* add groups with reflections

3 Dec 2011
* use faster algorithm for building blockset
* build sets of equivalent shapes

4 Dec 2011
* compute rotation and reflection groups for blocks

* add (blank) gtkmm window
* new file: makefile

5 Dec 2011
* draw square blocks on gtkmm window

6 Dec 2011
* draw also hexagonal blocks

8 Dec 2011
* add triangular group with and without mirror

9 Dec 2011
* make class grid a template

* split galois.cc into multiple files:
  board.h board.cc grid.h group.h group.cc hexagon.h hexagon.cc
  main.h main.cc square.h square.cc triangle.h triangle.cc

* make some group methods private

* add block motion

* drop blocks onto board

10 Dec 2011
* new file blocks.cc: build block sets

* draw board contours

* remove filled rows

11 Dec 2011
* add timely descent of blocks

* add New menu entry and toolbar

* new files preferences.h, preferences.cc: preferences dialog
* preferences setting: choose game geometry
* preferences setting: choose number of bricks per block

12 Dec 2011
* play with blocks of different sizes

13 Dec 2011
* draw better board contours

14 Dec 2011
* add speed levels
* add level change modes

15 Dec 2011
* make preferences dialog modal
* turn off New and Preferences menu entries while game is running

17 Dec 2011
* adjust minimum bricks range to follow maximum number
* minimum bricks number can increase, decrease or stay fixed

* add changeable board width

18 Dec 2011
* change sequence of block sizes

* set minimum size of board widget

* split BoardArea from board: isolate logic from rendering

19 Dec 2011
* new files area.h, area.cc: split off BoardArea

* show next block
* display level and lines

20 Dec 2011
* add third dimension
* new classes: group_2d, group_3d
* add new moves: front, back

21 Dec 2011
* new files cube.h, cube.cc: add cubic group with and without mirror

22 Dec 2011
* read and write block sets from/to xml files

23 Dec 2011
* try vectors of coords instead of grids: it's slower, throw it away

* read and write all blocksets for a group in a single xml file
* fix badly formed xml files

24 Dec 2011
* speed up blockset generation by reducing the input set
* generate more blocksets during the game

25 Dec 2011
* set maximum blockset size per group

26 Dec 2011
* reduce size of triangular bricks

* add colors

28 Dec 2011
* adjust colors

29 Dec 2011
* check and remove filled lines separately

30 Dec 2011
* draw 3d board with colored layers

* split landing blocks out of down method

31 Dec 2011
* animate removal of filled lines

1 Jan 2012
* draw board for cubic bricks

2 Jan 2012
* move block if rotate or reflect hits a wall

5 Jan 2012
* use coords in place of x, y, z in group and board

6 Jan 2012
* use coords in place of x, y, z in grid

7 Jan 2012
* draw board without outer frame

* limit linear block size to fit within board

* use smaller width range for cubic board

8 Jan 2012
* rescale brick size on board widget dimensions

9 Jan 2012
* rescale brick size, another way

10 Jan 2012
* add score

11 Jan 2012
* draft top view for cubic board

12 Jan 2012
* color by planes in top view

15 Jan 2012
* show where block will land

16 Jan 2012
* add preference option for show land

17 Jan 2012
* forbid blocks to cross filled cells

18 Jan 2012
* increase alpha for cubic board

19 Jan 2012
* use larger vertical offset for cubic board
* improve board size and positioning

20 Jan 2012
* draw plane framing block in cubic board

21 Jan 2012
* draw cubic bricks with thickness

22 Jan 2012
* cleanup of board drawing code
* color next block by layers in cubic board

23 Jan 2012
* draw cubic board open upwards

24 Jan 2012
* discard side view for cubic board
* remove style parameter

25 Jan 2012
* adjust offsets for cubic board

26 Jan 2012
* draw front edge of cubic board above blocks

27 Jan 2012
* adjust offsets for cubic board

28 Jan 2012
* add About dialog

29 Jan 2012
* new files scores.h, scores.cc: (empty) scores dialog

30 Jan 2012
* show something in scores dialog

3 Feb 2012
* set minimum size for scores dialog

4 Feb 2012
* show actual game scores in scores dialog

8 Feb 2012
* adjust score

12 Feb 2012
* add filters to scores dialog

24 Feb 2012
* make player name editable

3 Mar 2012
* add bmax, bmin columns to scores board

4 Mar 2012
* add (non editable) controls tab to preferences window

5 Mar 2012
* make player name editable on a single row

6 Mar 2012
* show scores dialog with player name already selected

9 Mar 2012
* make the right row editable

10 Mar 2012
* make row editable only until dialog is closed or changed

11 Mar 2012
* make edited rows persistent

13 Mar 2012
* make control keys configurable in preferences window

14 Mar 2012
* add pause control

15 Mar 2012
* write pause message on board

16 Mar 2012
* improve pause message, show it conditionally

17 Mar 2012
* save and reload (partially) configuration file

19 Mar 2012
* save configuration file for any preferences changed

20 Mar 2012
* load also control keys from configuration file

21 Mar 2012
* fix loading of configuration file
* save configuration file when dialog is closed

23 Mar 2012
* adjust offsets for cubic board

24 Mar 2012
* add three more colors

* increase rows of cubic board

25 Mar 2012
* adjust some colors

30 Mar 2012
* merge two identical ColumnsModel classes into one

2 Apr 2012
* delete file blocks.cc

* new file manual.xml: documentation file
* new files gpl.dbk, fdl-1.3.xml: GPL and GFDL in DocBook format

3 Apr 2012
* add Contents entry to Help menu
* add html and pdf targets to makefile

7 Apr 2012
* adjust some colors

14 Apr 2012
* new file figure1.png: shows game geometries and brick shapes

17 Apr 2012
* new file figure2.png: shows how to play
* new file figure3.png: annotated screenshot of game window

29 Apr 2012
* new file aclocal.m4: autoconf macros for pkg-config (copy from
  /usr/share/aclocal/pkg.m4 in Debian's pkg-config package)
* new files configure.ac, configure, makefile.in: check requisite
  libraries and create makefile with autoconf
* have "make distclean" remove makefile

1 May 2012
* set help file path at makefile level

2 May 2012
* new file config.h.in: define help file path here

3 May 2012
* add install and uninstall targets to makefile

7 May 2012
* new directory: doc
* move manual.xml, figure1.png, figure2.png, figure3.png, gpl.dbk,
  fdl-1.3.xml to directory doc
* new file: doc/makefile.in

* don't remove manual.html, manual.pdf on make clean; install them

* new directory: src
* mv all source files (*.cc, *.h, config.h.in) to directory src
* new file: src/makefile.in

8 May 2012
* add Stop entry to menubar

18 May 2012
* add GPL notices to configure.ac, ChangeLog

* add autoconf notice to autogenerated files

19 May 2012
* new file: TODO

* set minimum brick size always to 2

28 Jun 2012
* set back maximum min brick size equal to max size

1 Sep 2012
* fix animation for 3d geometries

* add option to remove lines with one or two empty bricks

2 Sep 2012
* save new preference setting

6 Sep 2012
* save current time in scores file

7 Sep 2012
* refine preferences dialog

8 Sep 2012
* save all preferences in scores file

9 Sep 2012
* add option to (not) preview next block

11 Sep 2012
* show current score even if it isn't in the top 10

13 Sep 2012
* reduce board height from 24 to 20, triangular from 20 to 16

14 Sep 2012
* centralize score calculation

15 Sep 2012
* increase game speed

17 Sep 2012
* add filters to scores dialog

18 Sep 2012
* show/hide extra filters in scores dialog

19 Sep 2012
* resize scores dialog when filters box is hidden

20 Sep 2012
* change scores calculation

* add one more filter in scores dialog

23 Sep 2012
* add one more filter in scores dialog

26 Sep 2012
* improve filters layout in scores dialog

* change "clear filters" button to "check/uncheck"

5 Oct 2012
* show also initial speed in scores dialog

* set filters when scores dialog is first shown

6 Oct 2012
* hide check/uncheck button together with filters box

30 Oct 2012
* add copyright and license to figure1.png, figure2.png, figure3.png

5 Nov 2012
* add home page URL and mailing list address to manual.xml

* new file: NEWS

* update version number to 0.1 -- ready for initial release!

9 Nov 2012
* release Galois 0.1

29 Nov 2012
* new file doc/galois-C.omf.in: locate help file properly
* improve paths of installed doc files
* delete file src/config.h.in, no longer needed

1 Dec 2012
* new file doc/galois.6.in: man page

3 Dec 2012
* have "make clean" remove galois executable

4 Dec 2012
* increase alpha of bricks colors

7 Dec 2012
* offset drawing coordinates by half pixel to make sharper edges
* rescale triangular cells to integral horizontal size

8 Dec 2012
* turn off pause message when game is stopped
* clear board when game is stopped

* remember width for 2D and 3D games separately

* improve drawing of shadow bricks

9 Dec 2012
* offset drawing coordinates by half pixel in next_area too

25 Dec 2012
* compress man page with gzip -9

28 Dec 2012
* new directory: misc
* new file: misc/makefile.in
* new file misc/galois.desktop.in: add Galois to applications menu

29 Dec 2012
* new files misc/galois.svg, misc/galois.png: icon for menu item

31 Dec 2012
* install galois to $prefix/games

1 Jan 2013
* remove spurious dependency in makefile.in

3 Jan 2013
* fix all warnings

13 Jan 2013
* support DESTDIR in makefiles
* remove file makefile.in: makefile needs not be autogenerated

* improve paths of installed doc files

17 Jan 2013
* change license of figure*.png to GFDL, consistent with manual

18 Jan 2013
* update version number to 0.2 -- ready for release!

26 Jan 2013
* release Galois 0.2

27 Oct 2013
* remove manual.pdf from distribution

* new game option: enable superblocks
* reorganize preferences dialog

12 Nov 2013
* draw game over message

17 Dec 2013
* increase superblock size only on level change

6 Jan 2014
* drop more frequent superblocks when empty > 0

23 Jan 2014
* change superblocks frequency again

24 Jan 2014
* make sure game over message fits within board

25 Jan 2014
* do not save scores that aren't int the top 10

26 Jan 2014
* change score formula: more points for superblocks

2 Feb 2014
* update aclocal.m4: copy new version from /usr/share/aclocal/pkg.m4

19 Feb 2014
* rename manual.xml to galois.xml
* change installation directory of Galois manual so that the yelp in
  Debian 7 finds it

* double size of galois.png to look better in Gnome 3 overview

26 Feb 2014
* move preferences and scores files to own directories

3 Mar 2014
* fix regression: add new score even if scores list is empty

* remove dead code about inactive toolbar

7 Mar 2014
* use gtk_show_uri to launch help browser

* have "make clean" remove *~ files

11 Mar 2014
* fix all warnings

* update version number to 0.3 -- ready for release!

25 Mar 2014
* release Galois 0.3

23 Dec 2014
* animate drop block

24 Dec 2014
* don't move block while being dropped

2 Jul 2015
* new files doc/galois-it.omf.in, doc/galois-it.xml: Italian manual
* rename doc/galois.xml to doc/galois-C.xml
* install/uninstall Italian manual

* update aclocal.m4: copy new version from /usr/share/aclocal/pkg.m4

5 Jul 2015
* new file doc/galois-it.6.in: Italian man page
* rename back doc/galois-C.xml to doc/galois.xml

8 Jul 2015
* adjust size of scores dialog

12 Jul 2015
* update version number to 0.4 -- ready for release!

14 Jul 2015
* release Galois 0.4

19 Aug 2015
* build with gtkmm 3

22 Aug 2015
* attach dialogs to main window

* add more fields to About dialog

23 Aug 2015
* replace Gdk::Color with Gdk::RGBA

* replace Gtk::Table with Gtk::Grid

24 Aug 2015
* use Gtk::Application

25 Aug 2015
* add Gnome 3-style application menu, drop menubar

26 Aug 2015
* change rule for superblock frequency

27 Aug 2015
* add back keyboard shortcuts to menu items

* restore menubar (at least for now)

28 Aug 2015
* reorganize menubar as in Galois 0.4

13 Sep 2015
* make menu items sensitive/insensitive

25 Sep 2015
* draw logo in About dialog
* revert that

26 Sep 2015
* fall back to html manual if ghelp:galois doesn't work

2 Oct 2015
* remove Alignment objects, use Widget::set_margin_start() instead

24 Oct 2015
* add back keyboard shortcuts for opening menus

15 May 2017
* try fix for non standard compliant construct in grid.h (suggested by
  Marc Espie on galois-list)

16 May 2017
* use simpler fix (older g++ didn't accept it, now does)

30 May 2017
* don't use prefer_app_menu: requires gtkmm 3.14, isn't actually doing
  anything

31 May 2017
* undo previous change, it is actually needed

4 Jul 2017
* fix about dialog crashing in Debian 9.0 (problem was
  Gdk::Pixbuf::create)

30 Aug 2017
* fix bug with three-dimensional gslice

8 Nov 2017
* update aclocal.m4: copy new version from /usr/share/aclocal/pkg.m4

14 Nov 2017
* update version number to 0.5 -- ready for release!

16 Nov 2017
* release Galois 0.5

28 Dec 2017
* remove unused widgets from Gnome 2-style menubar

29 Dec 2017
* replace all HBox and VBox with Box and Gtk::Orientation

* replace gtk_show_uri with gtk_show_uri_on_window

30 Dec 2017
* simplify widget hierarchy using Gtk::Grid

18 Jun 2018
* fix copyright notices in doc/figure*.png

23 Jun 2018
* added Keywords to desktop file

* fix malformed comments in man pages

25 Jun 2018
* fall back to gtk_show_uri for older gtk versions

26 Jun 2018
* update version number to 0.6 -- ready for release!

30 Jun 2018
* release Galois 0.6

7 Jul 2018
* symlink duplicate files in localized help directories

23 Feb 2020
* start refactoring blockset generation

25 Feb 2020
* continue refactoring blockset generation

2 Mar 2020
* continue refactoring blockset generation

3 Mar 2020
* make group::size() unsigned

4 Mar 2020
* make other variables and methods unsigned

5 Mar 2020
* make more variables and methods unsigned

14 Mar 2020
* continue refactoring blockset generation

15 Mar 2020
* offload blockset generation to a separate thread
* require at least C++11 (std::thread)
* depend on pthreads (Linux only?)

26 Mar 2020
* store a copy of current block instead of reading from vector

27 Mar 2020
* use std::mutex to fix race condition

28 Mar 2020
* adjust blockset_max() values
* ensure worker is stopped on exit

31 Mar 2020
* fix case where depth wasn't preserved correctly on restart

* improved blockset generation

4 Apr 2020
* further improved blockset generation

23 Aug 2020
* update version number to 0.7 -- ready for release!

29 Aug 2020
* release Galois 0.7

21 May 2021
* remove application menu (deprecated by Gnome)

6 Aug 2022
* new file galois.appdata.xml: AppStream file

* update aclocal.m4: copy new version from /usr/share/aclocal/pkg.m4

8 Oct 2022
* fix various FLAGS in makefile.in

* fix AppStream file (pass appstreamcli validate)

9 Oct 2022
* move html documentation to ${prefix}/share/doc/galois

31 Oct 2022
* update version number to 0.8 -- ready for release!

5 Nov 2022
* release Galois 0.8
