Release Notes - 2021. 11. 21.

The weeks since the October release have been calmer than usual in terms of feature requests and support workload, so – in addition to implementing a couple of smaller features – we have finally had time to work on various non user-facing issues and do some high-level project and feature planning for 2022.

New features

Improved error handling

The most significant user-facing feature in this release is something we hope users will never actually, well, face: improved error handling and feedback. Infrastructure or severe network issues may be rare, but they happen. In such cases it is very important not to give users the false impression that their actions were successful, and after certain interactions it is also necessary to explicitly notify the user that something went wrong.

As an example, let’s say a user lost her password and asked the administrator to send her a password reset email. If the email server is down, the admin must immediately see that Horizon Planner failed to send the email, so he can start investigating the issue right away.

The improved error handling that arrives in this release is just one step on the road towards a more sophisticated system. Further improvements are already in the pipeline and are scheduled to arrive in the next release.

Usability improvements

The most important usability improvement in this release is easier assignment creation in Assignment Planner. Until now, it was necessary to first create an empty assignment using the chart’s context menu actions, then assign the desired resource using drag and drop from the table below. We’ve now made it possible to drop resources directly onto the chart to create new assignments. Naturally, the chart checks whether the dropped resource has all the necessary capabilities for the role and prevents assignment creation if this is not the case.

We’ve also added an “Add Capability to Resources” action to the “Resources” card of capabilities in Structure view to make it easy to add a given capability to several resources at the same time.

In Timeline view, projects – the top level items in the tree – in the Gantt chart also received a new, “Open” action that opens not only the project, but all of its activities as well, basically making all details of the project immediately visible to the user.

Technical changes

As mentioned in the intro, we’ve spent most of our time on issues that are invisible to users but very important for the project. This section is going to be brief, but somewhat technical, feel free to stop reading here. The TL;DR version is: we are ready for a productive 2022.

Upgrades

We started off by upgrading the fundamentals – Python, TypeScript, and the related tooling – to their latest available versions in our development setup. Together, these changes provided us means for code quality and performance improvements.

We followed this up by upgrading all the software libraries Horizon Planner depends on both on the server (Python) and client (TypeScript/JavaScript) sides. Python library APIs tend to be very stable, but TypeScript/JavaScript libraries often have breaking changes so upgrades can require a significant amount of refactoring. We’ve also used these upgrades as an opportunity to remove some of our dependencies and replace them with our own implementations (for example the card component that we use to display data on most views of Horizon Planner). The new language and library versions also allowed us to improve code quality and even performance in several places.

Finally, we’ve also upgraded and tested every component in our deployment infrastructure, from the database to the web server. All in all, we’re really happy that we’ve finally had the time to do all this – it sets Horizon Planner up well for the next year.

Other improvements

We have refactored a large part of our authentication APIs in an effort to make them more modularized. Horizon Planner currently supports two authentication methods: password and header (allowed only when the server is behind a secure authentication proxy). We’re also preparing to implement single sign-on. Different customers have different authentication preferences. With this work our aim was to make authentication options finely adaptable to customer requirements.

We worked on performance improvements as well. We have optimized our querying system for our most complex and time-consuming queries so that they don’t occupy server threads for an excessive amount of time, improving both server and, as a result, client responsiveness. We have also optimized client state updates after queries to reduce the number of render cycles the browser must run, again improving responsiveness.

Last, but not least, we’ve also worked on improving our migration scripts. Besides the main business data (projects, resources, assignments, etc.) we also import file attachments, and that comes with its own set of challenges. Improvements on this front will make sure that we can switch legacy Horizon Planner users to the new system basically overnight with all their relevant data being readily available in the new system the next morning.