Since the last report about KDE Itinerary there has been work on Thunderbird integration, a presentation at FOSDEM, a major update to the Android build environment and many more changes. We also entered the finishing line towards the 20.04 releases, and got hit by the fallout of the COVID-19 countermeasures.


With most travel being suspended for the foreseeable future, we wont be able to field-test KDE Itinerary or collect sample data either obviously. The current situation is however highlighting a few areas we could improve.

The probably most obvious one is supporting the trip cancellation workflow. The data model has that covered, but we hadn’t implemented this yet, due to cancellations being rare, and manual deletion of reservations being already possible. Technically this requires that we can process “minimal” elements that only carry the information that a booking with a certain number has been cancelled. For meaningfully displaying this, we need to find the corresponding booking in the app database or the calendar, and update that. By now this has been implemented in the data model, the extraction engine and the KMail plugin, full support in the app itself is still ongoing.

Another aspect worth investigating is displaying official advises/warnings about imminent risks/disaster situations for the locations along your trip. A global pandemic is certainly the once in a century extreme case for this, more likely are severe weather, flooding, fire, evacuations for defusing WW2 bombs (yes, that’s still a thing here), terrorist attacks, etc. While you might be subscribed to such warnings for your home locations, it’s far less likely you’d get this in a timely manner (and in your language) for a country you only visit for a few days.

In Germany there are dedicated apps for local disaster warnings, such as Katwarn or NINA, and you don’t need to dig long to find the content for this as JSON. Travel advises on the other hand I haven’t found as machine readable data yet. How does this look in other countries? If such information is available in enough places it might be worth implementing support for this in KDE Itinerary.

New Features

The biggest and most requested feature is probably Kai’s work on the Thunderbird integration, even if not released yet.

Thunderbird showing flight details for a boarding pass email.
Thunderbird itinerary extraction plugin.

The newly added transfer feature from the last report received a number of extensions:

  • You can now configure multiple favorite locations, rather than just a single home location. This is typically useful if your travel starts or ends at different places, say your home and your work place.
  • There is now an option in the settings to have transfers suggested fully automatically, including picking a suitable public transport route. As this involves online access, it’s off by default.
  • Inserting transfers manually is now possible in more places in the timeline.
  • Transfers and favorite locations are now also covered when importing or exporting the app’s data.

More work on this is still expected, based on real-world feedback, once we can all travel again.

The location information in the timeline so far showing power plug incompatibilities or driving side changes are now also displayed for timezone changes.

KDE Itinerary timeline showing a timezone transition information.
Timezone transition information in the KDE Itinerary timeline.

The statistics page added earlier this year was also extended by a few more information:

  • The number of trips is now also shown. Technically this is the number of trip groups in the timeline, which is closest to what one would perceive as a “trip”.
  • Visited countries in the selected time range are shown. While interesting, this is something occasionally also needed for e.g. visa applications or medical forms.
KDE Itinerary statistics page showing trip count and visited countries for the selected year.
Trip count and visited countries shown in the KDE Itinerary statistics page.

We now also have a basic address editor for hotel or restaurant reservations that allows picking a geo coordinate on the map. This is mostly a temporary measure until we have found a good way for geo coding, so that you get better results for e.g. transfer elements until then.

KDE Itinerary hotel location editor.
Basic location editor for a hotel in KDE Itinerary.
  • And last but not least, KDE Itinerary has a proper icon now, thanks to the work of Mathis Brüchert during the Plasma Mobile Sprint!
New KDE Itinerary icon by Mathis Brüchert.
KDE Itinerary icon.


Data extraction:

  • We got new extractors for Accor,, and Indigo bookings as well as Ouigo tickets, and improved the extractors for Vueling, Thalys, Trenitalia and SNCF.
  • PDFs with rotated pages are now handled better during extraction.
  • We made some progress in decoding the (newer?) QR codes on SBB tickets. There’s still one important open question though, we haven’t figured out how to decode date/time values.
  • For the Plasma Browser Integration the JSON-LD processing can now handle multi-type and @graph structures, as found on some websites.
  • Flights with different but not conflicting IATA BCBP data are now merged correctly, and so are unbound train reservations.
  • The generic Apple Wallet pass extractor doesn’t choke anymore when fed with a file which contains a barcode that isn’t an IATA BCBP code.

Static data:

  • For the upcoming 20.04 release the static airport and train station databases got their routine updates from Wikidata. This time this was a rather big update though, bringing in the result of about 3.5k changes in Wikidata over the past weeks that added missing train station identifiers, particularly improving station lookups for Renfe and Trenitalia tickets.
  • Finnish station codes (which we can decode from VR ticket barcodes now), are included in the train station database as well.
  • We started to investigate how to add line metadata to KPublicTransport. That is, information about the proper names, colors and logos for public transport lines. Those aren’t reliably provided by the online services usually, but the necessary data can be found spread out through OpenStreetMap and Wikidata. This is still work in progress, I’ll write a separate post about that at some point, but the following screenshot shows what this will enable already.
KDE Itinerary timeline showing a transfer element with official subway/rapid-transit line icons.
Transfer element showing official public transport line icons.

Android build infrastructure:

  • A lot of work went into upgrading our Android builds to Qt 5.14, see the separate post about this.
  • With the upgrade to Qt 5.14.0 done we unfortunately hit a severe regression in the timezone handling of Qt 5.14.1, and fixed that for Qt 5.14.2.
  • For KDE Itinerary users all this is visible for example in the now properly styled controls, correctly rendered Unicode emojis, and the app automatically opening when sending itinerary data via KDE Connect.

Fixes & Improvements

As usual, there’s also a number of smaller but still noteworthy changes all over the place.

KDE Frameworks:

  • Kirigami was hitting a race with ECM’s translation catalog loading, this is now handled correctly and even early qsTr calls show up correctly translated now.
  • Barcode scaling on high DPI phone screens has been improved in KF5::Prison.


  • Notes and disruption messages are now retrieved in the current language, if the corresponding backend service supports this.
  • Warning messages that imply service cancellation in Hafas responses are now handled correctly.
  • Disruption messages from Navita backends are now supported as well.
  • If there is no booked seat reservation, coaches with the booked class are highlighted in the vehicle layout view instead.
  • Cached results can now have an explicit validity time, enabling sensible caching of vehicle layout data.
  • New backend service configurations were added for all Delfi state-level services in Germany.

KMail itinerary plugin:

  • Fixed translation of messages from Grantlee templates.

KDE Itinerary:

  • Various translation issues got fixed here as well.
  • There is now a new welcome page when first starting the app, with information how to load data into your timeline.
  • The timeline now groups starting/trailing transfers correctly into the corresponding trip groups.
  • For flights the passenger sequence number is now shown on the details page, which can be useful for manual boarding checks.
  • For train trips, real-time disruption notes are now shown on the details page.
  • Layouting issues in the Apple Wallet pass view and the settings page were fixed.
  • The timeline is position on the current day more reliably.
  • Exporting data no longer crashes the app.

Development Tooling

The main development tool for data extraction, KItinerary Workbench received a number of improvements as well:

  • The result display is now broken down further into post-processed and validated results, allowing you to better inspect how extracted results are augmented or filtered out.
  • The DOM view for HTML input content now has a search line for easier navigation.
  • And most importantly, it’s now also possible to edit extractor meta-data for those extractor meta-data files grouping multiple extractors for different types of input documents.


This work continues to rely on donated data samples, thanks to everyone who has helped with this so far!

If you want to help in other ways than donating test samples too, see our Phabricator workboard for what’s on the todo list, for coordinating work and for collecting ideas. For questions and suggestions, please feel free to join us on the KDE PIM mailing list or in the #kontact channel on Matrix or Freenode.