Changelog
---------

0.12.0 (2024-04-03)
~~~~~~~~~~~~~~~~~~~

- This version talks to an SMTP server instead of relying on /usr/sbin/sendmail
  for email sending.  This should work even in flatpaks.

- New command line options: --prefs, --email-prefs.

- Use libsecret instead of gnome-keyring.

- GTK 3.18 or newer is now required (GH: #131).

- Soap 3.0 is now required (GH: #238).

- Fixed an AttributeError in the undocumented remote task list feature
  (GH: #153).

- Make the undocumented remote task list feature validate TLS certificates (GH:
  #214).

- Add Python 3.8, 3.9, 3.10, 3.11, and 3.12 support.

- Drop Python 2.7, 3.5, and 3.6 support.

- Add support for positive time offset syntax in entries.

- Focus the task entry on Ctrl+L (GH: #213).

- Change entry search to be fuzzy. It is now only required to enter characters
  of the entry in the correct order to find an entry.

- Enforce minimum and maximum size for the task pane (GH: #219).

- Task pane now preserves the order of task groups to match the order in
  tasks.txt (GH: #224).

- Grouped task entries can now be sorted by start date, name, duration or
  according to tasks.txt order (GH: #228).

- Add the ability to change the last entry using Ctrl+Shift+BackSpace (GH: #247).


0.11.3 (2019-04-23)
~~~~~~~~~~~~~~~~~~~

- Use a better workaround for window.present() not working on Wayland.

- Fix a rare AssertionError on quit.

- Fix problem with "Edit log" and "Edit tasks" menu entries on Windows
  (GH: #133).

- Do not include ``***`` entries in slacking total (GH: #138).

- Show average time per day spent on filtered tasks (GH: #146).

- Drop Python 3.4 support.


0.11.2 (2018-11-03)
~~~~~~~~~~~~~~~~~~~

- Window menu now includes items previously shown only in the app menu:
  Preferences, About (GH: #126).

- Keyboard shortcuts window (press Ctrl+Shift+?).

- Dropped the help page (there was only one and it was only listing keyboard
  shortcuts, and it was also incomplete and had no translations).

- Bugfix: if timelog.txt was a symlink, changes to the symlink target would
  not get noticed automatically (GH: #128).


0.11.1 (2018-07-18)
~~~~~~~~~~~~~~~~~~~

* The undocmented remote task list over HTTP(S) feature is now able to ask
  for basic HTTP authentication credentials and store them in gnome-keyring
  (GH: #109).

* Bugfix: entries with just a category and no task that did not have
  a trailing space after the ':' were considered to be uncategorised
  (GH: #117).

* Add Python 3.7 support.

* Drop Python 3.3 support.


0.11 (2017-12-16)
~~~~~~~~~~~~~~~~~

* A complete rewrite of the user interface, to better fit GNOME 3 (GH: #31).
  Requires GTK+ 3.10, but newer versions are better.

* History browsing can show you weeks/months, not just days.

* You can filter the displayed tasks, with a total shown at the bottom
  (GH: #88).

* There's now a preferences dialog (GH: #47).

* Window size and task pane size/visibility are remembered across
  restarts (GH: #30).

* Settings are stored in GSettings.  The old config file will be imported
  on first startup.

* Work hours and office hours are separate settings now (GH: #46).

* Native support for emailing reports.  Requires a configured MTA on the
  local machine (i.e. /usr/sbin/sendmail).

* There's a help page listing all the keyboard shortcuts.

* The user interface can be translated (and is translated into Lithuanian).
  Reports are an exception (GH: #45).

* More efficient file change watching (GH: #11).

* Dropped features:

  - No more tray icons.
  - Dropped --tray, --toggle, --quit, --sample-config command
    line options.
  - The "Reload" menu option and hot key are gone -- reloading is automatic now.
  - Report for a custom date range is gone.
  - "Complete report in spreadsheet" is gone.
  - "Work/slacking stats in spreadsheet" is gone.
  - Setting for editor is gone: the default file association for text
    files will be used.
  - Settings for mailer is gone: mail sending is internal now.
  - Setting for spreadsheet is gone.
  - Separate setting to show remaining office hours is gone (set office hours
    to 0 to hide the estimate).


0.10.0 (2015-09-29)
~~~~~~~~~~~~~~~~~~~

* Use Tango colors in the main text buffer (GH: #13).

* Allow tagging entries (GH: #19)

  - The syntax is ``category: text -- tag1 tag2``
  - Per-tag summaries show up in reports

* Use GtkApplication instead of own DBus server for enforcing single-instance.

  - Drop --replace, --ignore-dbus command-line options because of this.
  - Require glib and gio to be version 2.40 or newer for sane
    GtkApplication-based command line parsing
    (check with ``pkg-config --modversion glib-2.0 gio-2.0``).

* Remove obsolete code:

  - Drop support for Python 2.6 (PyGObject dropped support for it long ago).
  - Drop PyGtk/Gtk+ 2 support code (it didn't work since 0.9.1 anyway).
  - Drop EggTrayIcon support (it was for Gtk+ 2 only anyway).
  - Drop the --prefer-pygtk command-line option.

* Disable tray icon by default for new users (existing gtimelogrc files will be
  untouched).

* Improve tray icon selection logic for best contrast (GH: #29).


0.9.3 (2015-09-29)
~~~~~~~~~~~~~~~~~~

* Adding new entries didn't update total weekly numbers (GH: #28).


0.9.2 (2014-09-28)
~~~~~~~~~~~~~~~~~~
* Note that Gtk+ 2.x is no longer supported (this regressed somewhere between
  0.9.0 and 0.9.1, but I didn't notice because I have no access to a system
  that has Gtk+ 2.x).
* Fix setup.py to work on Python 3 when your locale is not UTF-8 (LP: #1263772).
* Fix two Gtk-CRITICAL warnings on startup (GH: #14).
* Fix Unicode warning when adding entries (GH: #20).
* Speed up entry addition (GH: #21).
* Fix Unicode error when navigating history with PageUp/PageDown (GH: #22).
* Update current task time when autoreloading (GH: #23).
* Fix 'LocaleError: unknown encoding:' on Mac OS X (GH: #25).
* Fix 'TypeError: unorderable types: NoneType() < str()' in summary view
  on Python 3 (GH: #26).


0.9.1 (2013-12-23)
~~~~~~~~~~~~~~~~~~
* Manual pages for gtimelog(1) and gtimelogrc(5).


0.9.0 (2013-12-04)
~~~~~~~~~~~~~~~~~~
* New custom date range report by Rohan Mitchell.
* Moved to GitHub.
* HACKING.txt renamed to CONTRIBUTING.rst.
* Tests no longer require PyGTK/PyGObject.
* Add back Python 2.6 support (not 100% guaranteed, I don't have
  PyGObject for 2.6).
* Add Python 3.3 support.


0.8.1 (2013-02-10)
~~~~~~~~~~~~~~~~~~
* Fix strftime problem on Windows (LP: #1096489).
* Fix gtimelog.desktop validation (LP: #1051226).
* Use gtimelog icon instead of gnome-week.png.
* Use XDG Base Directory Specification for config and data files
  (~/.config/gtimelog and ~/.local/share/gtimelog).  There's no automatic
  migration: if ~/.gtimelog exists, it will continue to be used.
* Fix Unicode errors when user's name is non-ASCII (LP: #1117109).
* Dropped Python 2.6 support (by accident).


0.8.0 (2012-08-24)
~~~~~~~~~~~~~~~~~~
* History browsing (LP: #220778).
* New setting to hide the tasks pane on startup (LP: #767096).
* Reload timelog.txt automatically when it changes (LP: #220775).
* Fix segfault on startup (LP: #1016212).
* Summary view (Alt-3) that shows total work in each category.
* Fix popup menu on the task pane (LP: #1040031).
* New command-line option: --prefer-pygtk.  Only useful for testing against the
  deprecated PyGtk bindings instead of the modern pygobject-introspection.
* New command-line option: --quit.
* Fix popup menu of the tray icon (LP: #1039977).
* Fix crash on exit when using Gtk+ 2 (LP: #1040088).
* New command-line option: --debug.
* New command-line option: --version.


0.7.1 (2012-02-01)
~~~~~~~~~~~~~~~~~~
* Fix reporting problems with non-ASCII characters when using
  gobject-introspection (LP: #785578).
* Fix ^C not exiting the app when using gobject-introspection.
* Implement panel icon color autodetection logic that was missing in the
  gobject-introspection case (LP: #924390).
* New command-line option: --help.
* New command-line option: --replace.  Requires that the running version
  support the new DBus method 'Quit', which was also added in this version.
* Messages printed to stdout are prefixed by "gtimelog" (GUI app output often
  ends up in ~/.xsession-errors, it's polite to identify yourself when writing
  there).
* DBus errors do not pass silently.


0.7.0 (2011-09-21)
~~~~~~~~~~~~~~~~~~
* Use gobject-introspection by default, using pygtk only as a fallback.  This
  will require a newer gir1.2-pango-1.0 than what's in Ubuntu Oneiric
  (LP: #855076) and still suffers from key presses being ignored
  (LP: #849732).  Unset the environment variable UBUNTU_MENUPROXY to work
  around the latter bug.
* Rework the gi/pygtk imports so that only the minimum is wrapped in a
  try-except.
* Use /usr/bin/env python in #! line, though this should be hard-coded to the
  installed version of Python in the Debian package.
* Other code cleanup (e.g. use new-style classes via __metaclass__, remove
  ancient workaround for missing `set` built-in).


0.6.1 (2011-09-20)
~~~~~~~~~~~~~~~~~~
* Fix two crashes when using GI.  Given by Martin Pitt.


0.6.0 (2011-08-23)
~~~~~~~~~~~~~~~~~~
* Ctrl-Q now quits.  (LP: #750092)
* Fixed UnboundLocalError.  (LP: #778285)  Given by Jeroen Langeveld.
* Ported from PyGTK to GI. This supports GTK 2 and GTK 3 with GI now, but still
  works with PyGTK.
  Contributed by Martin Pitt <martin.pitt@ubuntu.com>.

  Packager's note: If you want to use GI, you need to change the package's
  dependencies from pygtk to the package that provides the GTK and Pango
  typelibs (e. g. gir1.2-gtk-2.0 and gir1.2-pango-1.0 on Debian/Ubuntu). It
  also requires pygobject >= 2.27.1.

* Hide the main window on Esc.  Fixes LP: #716257.
  Contributed by Vladislav Naumov (https://launchpad.net/~vnaum).


0.5.0 (2011-01-28)
~~~~~~~~~~~~~~~~~~
* Switched from Glade to GtkBuilder.  This fixes those strange theme problems
  GTimeLog had with Ubuntu's Radiance and especially Ambiance. (LP: #644393)

  Packagers note: src/gtimelog/gtimelog.glade is gone, it was replaced by
  src/gtimelog/gtimelog.ui.  It needs to be installed into
  /usr/share/gtimelog/.

* GTimeLog now supports Ubuntu's application indicators.  There's a new
  configuration option, ``prefer_app_indicator``, defaulting to true.
  Fixes LP: #523461.
* GTimeLog tries to detect your theme color and make the tray icon dark or
  bright, for good contrast.  This is a hack that doesn't work reliably, but
  is better than nothing.  Fixes LP: #700428.

  Packagers note: there's a new icon file,
  src/gtimelog/gtimelog-small-bright.png.  It needs to be installed into
  /usr/share/gtimelog/.

* Made GTimeLog a single instance application.  Requires python-dbus.
  The following command line options are supported::

    gtimelog --ignore-dbus
        Always launch a new application instance, do not start the DBus
        service.

    gtimelog --toggle
        If GtimeLog already running, show or hide the GTimeLog window,
        otherwise launch a new application instance.

    gtimelog
        If GtimeLog already running, bring the GTimeLog window to the front,
        otherwise launch a new application instance.

  Contributed by Bruce van der Kooij (https://launchpad.net/~brucevdk),
  Fixes LP: #356495.

* New option: start_in_tray.  Defaults to false.  Contributed by Bruce van der
  Kooij (https://launchpad.net/~brucevdk), as part of his patch for LP:
  #356495.
* New command-line option: --tray.  Makes GTimeLog start minimized, or exit
  without doing anything if it's already running.
* Added some documentation for contributors: HACKING.txt.
* Daily reports include totals by category.  Contributed by Laurynas Speičys
  <laurynas@pov.lt>.
* The tasks pane can be toggled by pressing F9 and has a close button.
* Alternative weekly and monthly report style, can be chosen by adding
  ``report_style = categorized`` to ~/.gtimelog/gtimelogrc.
  Contributed by Laurynas Speičys <laurynas@pov.lt>.
* Bugfix: always preserve the order of entries, even when they have the same
  timestamp (LP: #708825).


0.4.0 (2010-09-03)
~~~~~~~~~~~~~~~~~~
* Added configuration variable 'chronological' to control initial view of
  either Chronological (True) or Grouped (False).  Contributed by Barry Warsaw
  <barry@python.org> (LP: #628876)
* Recognize $GTIMELOG_HOME environment variable to use something other than
  ~/.gtimelog as the configuration directory.  Contributed by Barry Warsaw
  <barry@python.org> (LP: #628873)
* Changed application name to 'GTimeLog Time Tracker' in the desktop file
  (Debian #595280)


0.3.2 (2010-07-22)
~~~~~~~~~~~~~~~~~~
* Double-clicking a category in task list tries hard to focus the input box
  (fixes: https://bugs.launchpad.net/gtimelog/+bug/608734).
* Change default mailer to quote the command passed to x-terminal-emulator -e;
  this makes it work with Terminator (also tested with xterm and
  gnome-terminal).  Fixes https://bugs.launchpad.net/gtimelog/+bug/592552.

  Note: if you've used gtimelog before, you'll have to manually edit
  ~/.gtimelog/gtimelogrc and change the mailer line from

    mailer = x-terminal-emulator -e mutt -H %s

  to

    mailer = x-terminal-emulator -e "mutt -H %s"

* Use xdg-open by default for editing timelog.txt and opening spreadsheets.
  Fixes https://bugs.launchpad.net/gtimelog/+bug/592560.

  Note: if you've used gtimelog before, you'll have to manually edit
  ~/.gtimelog/gtimelogrc and change

    editor = gvim
    spreadhsheet = oocalc %s

  to

    editor = xdg-open
    spreadsheet = xdg-open %s


0.3.1 (2009-12-18)
~~~~~~~~~~~~~~~~~~
* Fixed broken sdist (by adding MANIFEST.in, since setuptools doesn't
  understand bzr by default).
* Added Makefile for convenience (make distcheck, make release).


0.3 (2009-12-17)
~~~~~~~~~~~~~~~~
* Fix DeprecationWarning: the sets module is deprecated.
* Use gtk.StatusIcon if egg.trayicon is not available
  (https://bugs.launchpad.net/gtimelog/+bug/209798).
* Option to select between old-style and new-style the tray icons:
  'prefer_old_tray_icon' in ~/.gtimelog/gtimelogrc
* Option to disable the tray icon altogether by adding 'show_tray_icon = no' to
  ~/.gtimelog/gtimelogrc (https://bugs.launchpad.net/gtimelog/+bug/255618).
* Handle directory names with spaces
  (https://bugs.launchpad.net/gtimelog/+bug/328118).
* Show version number in the About dialog
  (https://bugs.launchpad.net/gtimelog/+bug/308750).

Packagers take note: the main module was renamed from gtimelog.gtimelog to
gtimelog.main.  If you have wrapper scripts that used to import 'main'
from gtimelog.gtimelog, you'll have to change them.


0.2.5
~~~~~
* Don't open a console window on Windows.
* Moved the primary GTimeLog source repository to Bazaar hosted on Launchpad.


0.2.4
~~~~~
* Show time spent at the office
  (https://bugs.launchpad.net/gtimelog/+bug/238515).
* Closing the main window minimizes GTimeLog to the system tray
  (https://bugs.launchpad.net/gtimelog/+bug/239271)
* Ability to time-offset new log item
  (https://bugs.launchpad.net/bugs/291356)


0.2.3
~~~~~
* Fix duplicates in the completion popup after you reload the log file
  (https://bugs.launchpad.net/gtimelog/+bug/238505).
* Change status to Beta in setup.py -- while I still consider it to be
  less polished than it should, there are people who find it useful already.


0.2.2
~~~~~
* Tweak setup.py to get a sane page at https://pypi.python.org/pypi/gtimelog/


0.2.1
~~~~~
* Entries with `***` are skipped from reports (bug 209750)
* Help -> Online Documentation opens a browser with some help (bug 209754)
* View -> Tasks allows you to hide the Tasks pane (bug 220773)


0.2.0
~~~~~
* Reorganize the source tree properly.
* Bump intermediate revision number to celebrate.


0.0.85
~~~~~~
* First setuptools-based release (`easy_install gtimelog` now works).


Changes in older versions
~~~~~~~~~~~~~~~~~~~~~~~~~

You'll have to dig through Git logs to discover those, if you're really
that interested: https://github.com/gtimelog/gtimelog/commits
