Travel is slowly returning, and that shows in many improvements of KDE Itinerary being driven by real-world testing and feedback again in the past two month since the last summary.

New Features

KDE Itinerary can now display navigation instructions for walking and transfer sections of public transport elements, if the corresponding service provided such information.

Screenshot showing a list of navigation instructions for a transfer to a connecting train.
Transfer navigation instructions.

This is still far from where we’d like to get with indoor navigation eventually, but it’s another small move into the right direction. A next step could be to try to match the navigation path segments to the OSM data and display it on a map. That’s not trivial though when it comes to finding the right floor levels.

Barcode scan mode

The barcode scan mode in which the screen brightness is set to maximum and the screen look is temporarily disabled to prevent you from being that unpopular person who slows down the check-in queue so far has been rather hidden behind a double tap on the barcode.

It now has a more prominent context action on all pages with a barcode, and automatically disables itself again once you navigate away from that page.

Screenshot showing the barcode scan mode action.
More prominent access to the barcode scan mode.

Rental vehicle information

The train station map in KDE Itinerary can optionally show realtime positions of available rental vehicles since some time already. Now it’s also possible to distinguish different vehicle types (bikes, kick scooters, mopeds, cars, etc), those are now shown with different icons.

Screenshot of KDE Itinerary's train station map showing rental kick scooter locations and marking those with limited remaining battery range.
Train station map showing rental kick scooters and marking those with limited remaining range.

Where available we also show additional information, such as the types of bike available at a rental station (electrical- or human-powered), or the estimated remaining range for battery-powered vehicles. The latter is also used to color the icon differently for small remaining ranges.

Infrastructure Work

Travel document extractor engine

There’s a number of substantial changes in the data extraction engine as well. The first one is that extractor scripts now also can properly inspect binary barcode content, as that’s now exposed as JS ArrayBuffer objects rather than opaque QByteArray objects that JS cannot deal with beyond passing it to a C++ API again.

This was driven by the needs of the extractor for Hungary’s national railway (MÁV) tickets. A contributor from Hungary had rallied people in a local forum to collect sample tickets to support reverse engineering MÀV’s binary barcode, thanks a lot for that!

There’s now also a considerably extended generic PDF boarding pass extractor. So far this was restricted to the limited information found in IATA barcodes, now it also can determine full airport names and boarding/departure/arrival times in a large number of cases, replacing a couple of airline-specific extractor scripts.

And finally the extractor development tool KItinerary Workbench got extended to show every little detail of a number of data formats that aren’t exactly human readable (VDV e-ticket, UIC 918.3, ERA SSB, IATA BCBP).


KPublicTransport’s GBFS code also saw significant extension. GBFS stands for General Bikeshare Feed Specification, and is a data format for access Open Data about availability and locations of rental vehicles. As the name suggests it was initially mainly designed for shared bikes, but meanwhile got extended to all kinds of other vehicle types as well.

We now support many more versions and format variations of that standard, which together with increased availability increased the number of GBFS feeds accessed by KPublicTransport from about 200 to more than 600.

Animation showing the increase in GBFS coverage between 2020 and 2021.
Increased GBFS coverage between 2020 and 2021.

Looking at the coverage map, there’s an obvious gap in east Asia, despite countries like China, Japan or Korea certainly having vehicle sharing services. Do those systems provide GBFS feeds and we simply don’t know their URLs? Do they use different formats/protocols to provide the data? Or are those systems completely closed? I’d be very interested in information on this :)

Fixes & Improvements

Travel document extractor

  • Conflicting text codec information in HTML parts of a MIME message are now handled correctly, fixing extraction from some Japanese documents.
  • Deadlocks and infinite loops in extractor scripts are now caught and terminated after at most one second.
  • There’s now also a basic boat/ferry data model, as that has been added to upstream meanwhile.
  • New extractor scripts for Airdo, Baeder Suite, eki-net, Feratel, OnePageBooking and Regionado.
  • Improvements to extractor scripts for Accor, Flixbus, Ryanair and SNCF.
  • Information about bonus/discount programs such as BahnCard and CartaFRECCIA are now extracted.
  • Barcodes representing a DB BahnCard can now be extracted as well.

Public transport data

  • The OpenJourneyPlanner and TRIAS protocols are now supported. This allowed replacing the previously used proprietary SSB and VVO endpoints that have been discontinued, bringing back coverage for Swiss national railway and local transport in Saxony, Germany. While publicly documented, these protocols unfortunately don’t provide some of the features the old system offered, such as coach and platform layouts or occupancy data.
  • Caching for location results does now consider all possible location query parameters and thus allows more control over short-lived (e.g. a position of a rental vehicle) and long-lived information (e.g. a the location of a train station).
  • Previous/next journey and previous/next departure queries are now also supported by the EFA backend.
  • Vienna’s local transport provider “Wiener Linien” has been added.
  • UIC operator company codes have been added to the coverage metadata. This is useful for picking the right provider given an existing ticket (which often contains that code).

Indoor maps

The train station map now uses the “pole of inaccessibility” algorithm for label placements. This is particularly noticeable when labels or icons are to be placed inside a complex polygon, such as “L” or “U” shaped building.

There also have been a number of upstream fixes for floor level topology issues in train stations upstream in OSM.

Itinerary app

  • The breadcrumb navigation header now shows correct titles again on secondary pages.
  • The missed connection warning is no longer wrongly triggered when there is no previous arrival time.
  • Rich text and non left-aligned Apple Wallet pass back fields are now rendered correctly.
  • The number of attached documents for a reservation is now shown correctly in multi-traveler scenarios, and long document names are displayed properly.
  • Importing data from mail attachments received via FairEmail’s sharing feature on Android has been fixed.
  • Importing travel documents, health certificates and backups has been unified and now provides more detailed user feedback.
  • Bonus/discount program information is displayed on the details page of train or flight reservations if present.

Nextcloud integration

The itinerary integration in Nextcloud Mail has received a few fixes for timezone-related issues. More changes for improving the interoperability with the Itinerary app are being worked on.

Health certificates

KHealthCertificate, our library for decoding digital vaccination certificate and powering the health certificate manager in the Itinerary app, got initial support for SMART Health Certificates (SHC), a format in use in a few places in Canada and the US.

We don’t have the public keys for all deployments yet though, so if that’s a system used in your area and you get shown an unknown signature state please get in touch :)

KDE’s Prison Framework for rendering barcodes also needed a small fix to display SHC QR codes correctly, due to the special way those are encoded.


With people starting to travel again we’d of course be very interested in feedback and document samples, but there’s plenty of other things that can be done as well of course. The KDE Itinerary workboard or the more specialized indoor map workboard show what’s on the todo list, and are a good place for collecting new ideas. For questions and suggestions, please feel free to join us on the KDE PIM mailing list or in the #kontact channel on Matrix.