More releases!

I just realized I forgot to announce the releases I made at the beginning of the month! Oops. This poor, neglected blog.

I updated all of my projects, and for the most part it was a very minor release that fixed an installation bug in Linux or updated the translations. Of course, FocusWriter had a few more fixes than the rest, but that is to be expected as it is a much more complicated program. And Tanglet actually had a feature release, thanks to Markus Enzenberger. If you have not yet updated, enjoy!


Tiny, but important, Kapow release

I have made a very small bugfix release of Kapow, version 1.5.2. The only change is that reports now properly handle commas in the totals, so for all non-English speakers it should now report the correct values. Enjoy!

Releases galore!

Over the past week and a half, I have made releases for all of my projects. Most of them were pretty minor, and just amounted to updating the translations (and fixing an issue where the Qt-supplied translations were not being properly loaded). Packagers will now need to depend on lrelease, because I no longer include the precompiled binary .qm files.

The projects with actual feature releases were CuteMaze, Hexalate, Tanglet, and Tetzle. For the most part, the features added will not be obvious unless you have a 4K monitor, because the biggest thing I added was support for high-DPI displays. I did also finish moving my projects to be Qt 5 only, and to use C++11.

As usual, report any issues you have. Enjoy!

A new Kapow release!

And another project rises from the ashes like a phoenix: I have finally made a new feature release of Kapow, version 1.5.0! There are not a whole lot of user-visible changes, but some very important code cleanup happened. The most noticeable changes are that you can now start, stop, or cancel sessions by right-clicking on the sidebar. It also prevents you from removing a project that has a timer running in a subproject. Enjoy!

Some minor releases


I have released a minor update to Kapow, version 1.4.4. This release is mostly to add an automatic backup system for the time data that I have been working on. A few users have experienced data loss, and this will hopefully prevent anybody else suffering that. Kapow now makes logarithmic backups (one backup a day for a week, then one backup a week for a month, then one backup a month for a year, and finally one backup a year after that) as well as a temporary backup that gets overwritten with each save. This release also adds support for building with Qt 5, although it is still released with Qt 4 as that is the primary development platform for now.

Longer term I am planning on making it easier for users to store the data file and backups in a location of their choosing, which will default to their documents folder. I have not settled on how I want to expose it in the interface (although you can already do this by using passing an XML file to the program).

Hexalate, Peg-E, and Simsu

I have also made a few other minor releases (Hexalate 1.0.2, Peg-E 1.1.2, and Simsu 1.2.3) over the past two weeks that I have not felt justify a blog post on their own. These releases mainly just add translations and support for building with Qt 5. I plan on making minor releases of the rest of my programs over the next few weeks to also update their translations, and to add support for building with Qt 5.

Minor Kapow release

I just made a bugfix release of Kapow, version 1.4.3, that fixes some minor bugs. The timer is no longer restarted when you press enter in the task line edit. I also fixed the broken command-line arguments, and you can now specify the settings INI file. This release also includes a Greek translation by

New Kapow release!

I have finally finished a feature release of Kapow, version 1.4.1. This release includes an improved user interface as well as faster file loading. You can read about the features in more detail here. Enjoy!

Update: I just discovered that the brand new totals rows are broken, so I recommend turning on the report column until I get it fixed. Ideally that will be later tonight. Sorry!

Update 2: And the fixed version is now released!

Improvements to Kapow

I have made some changes to the development version of Kapow while I have worked on FocusWriter, but I haven’t blogged about what I have been up to. I figured that I should remedy that!

First and foremost I have been working on making the user interface more comfortable. A small change, but larger difference in actual use, is that you can now set (and even change) the task of a session before it is finished. The task field starts focused, so all you have to do is type in a task and press enter to start a session.

I have never been too happy with the “Billed” column, so I have renamed and hidden it for new installs. To make the report concept more clear I have added a row below the last row of each report that contains its totals. I have also added a menu action called “Create Report…” that is the same thing as checking the billed box for a row.

A common request has been to be able to export reports. I have added support for exporting a report as an HTML file, as well as exporting the time data of a report as either an iCalendar file or a file of comma separate values.

I have made a variety of other, smaller changes. For instance, you can now specify the data file on the command-line. I have also dramatically sped up loading the data file, which helps reduce program start time quite a bit. On my computer a large test file went from taking around 1 second to a mere 15 milliseconds, and on my slowest test computer it went from 3 and a half seconds to only 120 milliseconds.

What would the point of a post about visual changes be without showing them? Without further ado, here is the improved interface of Kapow:

Improved Kapow

Development version numbers

Now that I am switching to release branches I am finally going to also tackle something that has always bothered me but I’ve never taken the time to solve: the development source code has the same version number as the most recent release. I have always wanted it to be some sort of automated number, but I wasn’t sure what I wanted it to be. And I didn’t want to have to update it myself with every single commit.

At first I had wondered about a number that gets incremented every time you compile the project, but I quickly realized that was a pointless thing to track. I may build a project 5,000 times and have a huge build number, but someone else might download the source and compile it only twice. Same source code, different version number. That’s frankly pretty silly.

Instead, I got inspired by the idea of using the git revision ID. It is obviously unique for each commit, and it identifies the specific source code for everyone. Of course, you can’t embed the revision ID because it is a hash that is created of the source code that you’re trying to embed it in. A hash that contains itself? Impossible! Of course, all you have to do instead is simply ask git for the revision ID, and pass that as a definition to the compiler:

VERSION = $$system(git rev-parse --short HEAD)

The source code also needs to make use of the new compiler definition:


This means that I finally have an automated version number for the development source code. I’ve only updated Kapow so far, but I am going to make this change to all of my projects.

Minor Kapow release

I just made a bugfix release of Kapow, version 1.3.5, that fixes some minor bugs as well as a potentially serious data loss bug: it was not fully checking to make sure that it could actually read or write its data file. I have thankfully only heard of a single user that this bug may have affected. A Danish translation was also added by Rasmus Blomqvist.

With this release I am moving to a new release process for all of my projects that is similar to how larger projects work. From now on patch releases (1.3.5, 1.3.6, etc) will only contain bug fixes or translation updates, and no new features. I was not doing this before because of the overhead of maintaining more than one branch, but I think that it is better way to do things despite the headaches it may cause me. For the sake of my sanity I will only be maintaining a single stable release line at a time for each project.