# ChangeLog -- changelog file for gwaves.
# Copyright (C) 2024-2026 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/>.

13 Dec 2024
* started today
* start keeping changelog
* starting point: gltest program from gerbi, keep only cubic frame

14 Dec 2024
* add documentation files: gwaves.xml (copy and adapt from gerbi),
  gpl.dbk, fdl-1.3.xml

15 Dec 2024
* add Cartesian axes

16 Dec 2024
* add diagonal planes

17 Dec 2024
* add color (and alpha) to planes

21 Dec 2024
* build (non-diagonal) planes programmatically

25 Dec 2024
* draw planes facing the point of view

* define color scale, negative: cyan/blue, positive: yellow/red, zero: alpha=0

27 Dec 2024
* move color scale computation into vertex shader

* draw a few actual orbitals

28 Dec 2024
* draw all orbitals up to 7p
* cycle orbital by keyboard commands

* split gwaves.cc into three files: main.cc, orbital.cc, orbital.h

29 Dec 2024
* add g orbitals

30 Dec 2024
* add orbital labels
* add h orbitals and n=8

31 Dec 2024
* add i orbitals and n=9 (I think I'm stopping here!)

1 Jan 2025
* a little refactoring of orbital

* start refactoring OpenGL code

* improve performance by drawing less planes

2 Jan 2025
* new files grid.h, grid.cc: new class grid
* more refactoring of OpenGL code

3 Jan 2025
* more refactoring of OpenGL code

* improve performance by drawing less points per plane (and more planes)

4 Jan 2025
* new files frame.h, frame.cc: new class frame
* more refactoring of OpenGL code

8 Jan 2025
* compute size of orbitals

9 Jan 2025
* compute size of orbitals

10 Jan 2025
* make grid not depend on orbital

* rename frame, grid as gl_frame, gl_grid

* move cycle* methods from Area to MainWindow

* new files area.h, area.cc, main.h: move Area to separate files

11 Jan 2025
* reduce sets of indices from 6 to 3

* add zoom

* remove menu, add sidebar
* add (nonfunctional) spinbuttons to set quantum numbers
* add close button
* display orbital label

12 Jan 2025
* pass orbital wavefunction using std::function, thanks to Luigi
  (requires C++11)

* preserve zoom on orbital change

* update spinbuttons when orbital is changed by key press

13 Jan 2025
* move orb from Area to MainWindow

16 Jan 2025
* remove members n, l, m from MainWindow

19 Jan 2025
* try running set_values in a separate thread (requires C++11)
* couldn't get it to work, revert

* make key presses for n, l, m act on spinbuttons

20 Jan 2025
* display fps (frames per second) counter on sidebar

21 Jan 2025
* enhance color scale for s orbitals

22 Jan 2025
* try again running set_values in a separate thread (requires C++11):
  keep OpenGL commands in the main thread, as it looks like
  Gtk::GLArea doesn't support multithreading

24 Jan 2025
* delay scale change when values are actually updated

25 Jan 2025
* use timeout instead of idle

* adjust transparency for orientation

26 Jan 2025
* add change of grid dimensions (doesn't work)

31 Jan 2025
* make change of step work
* make change of grid work by changing how data are packed

* store data as float instead of double: reduce memory usage by half

1 Feb 2025
* compute new grid in a separate thread (doesn't work)

3 Feb 2025
* move back compute new indices to the main thread

4 Feb 2025
* try fixing change of grid; not quite there

5 Feb 2025
* fix change of grid

6 Feb 2025
* compute new indices in a separate thread

7 Feb 2025
* refactor multithreading code

8 Feb 2025
* fix multithreading code

10 Feb 2025
* terminate worker thread properly
* do not need mutex any more

11 Feb 2025
* clean up multithreading code

14 Feb 2025
* clean up code

* use single index buffer instead of three

15 Feb 2025
* add working label

18 Feb 2025
* replace working label with progress bar

22 Feb 2025
* compute grid, values, indices in parallel

* improve sidebar

23 Feb 2025
* add control for step2

25 Feb 2025
* draw isosurfaces (as a fixed triangle per cell; doesn't recalculate)

28 Feb 2025
* refine sidebar widget hierarchy

* draw isosurfaces by planes

1 Mar 2025
* draw isosurface planes facing the point of view

3 Mar 2025
* recalculate isosurfaces

4 Mar 2025
* rescale isosurfaces levels

5 Mar 2025
* try setting vertices and surfaces at the same time, doesn't work

6 Mar 2025
* draw both vertices and surfaces at the same time

7 Mar 2025
* test drawing code

10 Mar 2025
* delay indices change when they are actually updated

* add check buttons to show/hide volume and isosurfaces

11 Mar 2025
* set up mask for drawing isosurfaces

12 Mar 2025
* draw isosurfaces as triangle fans

21 Mar 2025
* new files plot.h, plot.cc: program for displaying generic plots

22 Mar 2025
* fix race condition with grid dimensions in compute_surfaces

* compute values externally in gplot

23 Mar 2025
* set consistent numbering of cube vertices in compute_surfaces

* compute surface element for several values of mask

24 Mar 2025
* compute surface element for more values of mask

6 Apr 2025
* review surface elements

8 Apr 2025
* review more surface elements

9 Apr 2025
* review more surface elements

10 Apr 2025
* review more surface elements

13 Apr 2025
* review more surface elements

14 Apr 2025
* finish reviewing surface elements

16 Apr 2025
* don't decrease alpha near zero for isosurfaces

* fix bug with drawing planes and surfaces in the correct order

18 Apr 2025
* add keyboard controls for display modes

* add (nonfunctional) control for number of surfaces

24 Apr 2025
* make change of number of surfaces work

30 Apr 2025
* add configure script: new files aclocal.m4 (copy from
  /usr/share/aclocal/pkg.m4 in Debian's pkgconf package),
  configure.ac, makefile.in; remove makefile

1 Jun 2025
* start working on parallelizing isosurfaces calculation

2 Jun 2025
* continue working on parallelizing isosurfaces calculation

3 Jun 2025
* continue working on parallelizing isosurfaces calculation

4 Jun 2025
* finish parallelizing isosurfaces calculation

5 Jun 2025
* free some memory earlier during isosurfaces calculation

3 Jul 2025
* start working on different grid dimensions

4 Jul 2025
* continue working on different grid dimensions

5 Jul 2025
* continue working on different grid dimensions

6 Jul 2025
* continue working on different grid dimensions

7 Jul 2025
* continue working on different grid dimensions

8 Jul 2025
* continue working on different grid dimensions

11 Jul 2025
* finish working on different grid dimensions

14 Jul 2025
* create directories src, doc
* move source files to src
* move documentation files to doc
* move makefile.in to makefile
* new files src/makefile.in, doc/makefile.in

28 Jul 2025
* start drawing axis labels with textures

29 Jul 2025
* draw axis labels always parallel to the screen and unscaled

31 Jul 2025
* draw labels on all three axes

* add (autogenerated) file doc/gwaves.html to source tarball

1 Aug 2025
* refactor code for drawing textures

4 Aug 2025
* draw arrow heads always the same size

5 Aug 2025
* add controls to display/hide axes and cube

6 Aug 2025
* add install target to makefile (only src)
* make default target all

7 Aug 2025
* add install target to doc/makefile.in

12 Aug 2025
* draw (fixed) ticks on axes

13 Aug 2025
* roll back drawing ticks on axes
* draw (fixed) ticks on cube

* modify perspective projection

14 Aug 2025
* compute ticks coordinates

15 Aug 2025
* compute ticks coordinates as vectors

* draw big and small ticks
* draw tick labels

17 Aug 2025
* fix drawing tick labels (set maximum texture size)

* modify perspective projection

18 Sep 2025
* draw all text on the same texture

19 Sep 2025
* refactor texture code

21 Sep 2025
* draw tick labels as sequences of characters

* add (nonfunctional) Help and About buttons

22 Sep 2025
* make Help and About buttons work

27 Sep 2025
* add Help and About buttons to gplot too

3 Oct 2025
* rename orbital.h, orbital.cc to wavefunction.h, wavefunction.cc
* rename class orbital to wavefunction
* new files orbital.h, orbital.cc: new class OrbitalArea

* add more keyboard controls

4 Oct 2025
* new class gl_orbital
* draw an electron at fixed position

5 Oct 2025
* scale electron position

* add control to display/hide electron

6 Oct 2025
* animate electrons

7 Oct 2025
* move wavefunction into gl_orbital

8 Oct 2025
* set up vectors for generating electron positions

10 Oct 2025
* fix calculation of radial wavefunction
* generate electron positions from probability density

12 Oct 2025
* fix generation of electron positions

24 Oct 2025
* adjust default scale

25 Oct 2025
* adjust default vscale

26 Oct 2025
* on grid recompute, update scale only when it's done
* on orbital change, reset electron animation only when it's done

31 Oct 2025
* use precomputed values for vmax of orbitals

1 Nov 2025
* more exact values for vmax

2 Nov 2025
* more exact values for vmax

5 Nov 2025
* more exact values for vmax

6 Nov 2025
* more exact values for vmax

7 Nov 2025
* add controls to change atomic number

8 Nov 2025
* more exact values for vmax

11 Nov 2025
* more exact values for vmax

* adjust default scale

14 Nov 2025
* more exact values for vmax

16 Nov 2025
* all remaining exact values for vmax

18 Nov 2025
* fix formula for radial wavefunction

19 Nov 2025
* add controls to change number of points in animation
* improve point textures

20 Nov 2025
* improve point textures

21 Nov 2025
* adjust transparency levels

27 Nov 2025
* adjust default scale

2 Dec 2025
* manage keyboard events either in area or in sidebar

3 Dec 2025
* new files sidebar.h, sidebar.cc: custom widgets

* align sidebar buttons on a single row

5 Dec 2025
* remove eventbox from sidebar

8 Dec 2025
* enlarge vectors for generating electron positions

17 Dec 2025
* clip rendering to viewing cube

19 Dec 2025
* add controls to toggle clip in gplot

23 Dec 2025
* add mouse control for zoom
* allow rescaling while recomputing

24 Dec 2025
* reset scale when orbital is changed

2 Jan 2026
* resize vector for generating electron positions

4 Jan 2026
* create directory misc
* new files gwaves.svg, gwaves.png: icon for GWaves

5 Jan 2026
* resize gwaves.svg to 96x96

19 Jan 2026
* new files misc/makefile.in, gwaves.desktop.in, gwaves.appdata.xml
* new file figure1.png: GWaves screenshot

20 Jan 2026
* new files gwaves.1.in, gwaves-C.omf.in

20 Apr 2026
* draw ticks on different sides of the cube

22 Apr 2026
* improve choosing sides of the cube

23 Apr 2026
* improve choosing sides of the cube

24 Apr 2026
* improve choosing sides of the cube

25 Apr 2026
* improve choosing sides of the cube

27 Apr 2026
* rescale cube

28 Apr 2026
* move cube off center to make room for scale bar
* draw scale bar outline

29 Apr 2026
* draw scale bar (doesn't work)

30 Apr 2026
* draw scale bar (still doesn't work)

3 May 2026
* draw scale bar (works)

4 May 2026
* code cleanup

5 May 2026
* draw ticks on scale bar

6 May 2026
* draw labels on scale bar

7 May 2026
* draw scale bar at correct scale (almost)

8 May 2026
* fix initialization issues

9 May 2026
* reorder data vectors in grid

11 May 2026
* add method that (doesn't) read values from file

12 May 2026
* move computation of gplot test function into read_values

* reorder grid data, x axis first (values and indices)

13 May 2026
* reorder grid data, x axis first (surfaces)

15 May 2026
* make read_values actually read values

17 May 2026
* set scale_margin to 0 in gplot

* add command line arguments to gplot

18 May 2026
* fix calculation of vscale in gplot

* fix undefined behavior in draw_bar_labels

22 May 2026
* new files: doc/README, misc/README

26 May 2026
* new file: doc/gpl-3.0.txt
* update files: doc/gpl.dbk, doc/fdl-1.3.dbk (was fdl-1.3.xml)

27 May 2026
* rename gpl.dbk to gpl-3.0.dbk

29 May 2026
* decruft code

2 Jun 2026
* remove OpenGL calls that were previously commented

4 Jun 2026
* change license of doc/figure1.png from GPL to GFDL

8 Jun 2026
* update version number to 0.1 -- ready for release!

14 Jun 2026
* release GWaves 0.1
