Since KDE Itinerary was first presented to a wider audience at Akademy 2018 a lot has happened. Here are the most important changes from the past two month, in KDE Itinerary and the underlying frameworks.

New Features

The data model got extended to support restaurant reservations, event tickets and rental car bookings. Data from services in these fields using structured annotations (such as OpenTable, Eventbrite, Meetup, Europcar, etc) is automatically extracted and displayed now. This has been mostly done by Benjamin and Laurent.

Apple Wallet event tickets are now rendered in KMail and KDE Itinerary. KF5::Prison got support for Code 128 barcodes for this.

KMail can now send booking data and tickets directly to KDE Itinerary on the phone via KDE Connect, thanks to Nicolas’ work on opening files in remote apps.

KDE Itinerary can now important IATA boarding passes from the clipboard, for scanning paper passes with the phone barcode scanner.

Infrastructure Work

The HTML extractor infrastructure was changed to use the libxml2 HTML parser rather than our previous crude regular expression hacks. This not only allows for higher accuracy when extracting structured annotations, but also provides custom extractors with a DOM and XPath APIs, next to the existing text-centered access. For certain providers this significantly simplifies the corresponding custom extractors. KItinerary Workbench supports this with a new DOM browser.

Custom extractors can now also consume iCal files. KCalCore data types are extended by a Qt property interface for that.

Timezone lookup can now consider the country, which helps to disambiguate locations close to a border. Location-based timezone lookup was off by about 10 kilometers due to over-simplified coordinate math, fixing that resolved another set of timezone lookup failures.

The country to ISO 3166-1 code mapping tables in KContacts were updated to reflect reality and are now much more complete, at the same time fixing a significant performance issue caused by parsing the old mapping file.

Initial work on parsing RCT2 train tickets. That’s the standardized format for international train tickets in Europe and also used by a few operators for domestic trips (e.g. ÖBB, SBB). The information we can get out of this is limited, but it’s a useful foundation for operator-specific extractors.

Custom extractors can now also be selected based on barcode data in PDF files, rather than just by the email context. This will enable importing PDF tickets directly into the app, without going through an email client.

Important Fixes

Identifying the same person in two different data elements (e.g. a flight booking confirmation and the corresponding boarding pass) got improved by handling Unicode diacritic marks and other special characters correctly (which IATA boarding passes cannot represent).

We fixed handling of non-UTF-8 encoded input which enabled support for Korean railway tickets, thanks to Shinjo’s help.

Thanks to Aleix’s work binary factory is now producing working nightly APKs of KDE Itinerary again.

The KMail extraction plug-in is now properly handling content in attached mails.

With a number of encoding and rendering issues fixed, Deutsche Bahn ticket barcodes are now displayed correctly in the app and can be validated successfully.

Performance Improvements

PDF parsing can now load images directly, without doing another output pass. That’s thanks to Albert helping me with this during Akademy. For this to work you need a Poppler fix though, that has meanwhile been released with Poppler 0.69. Albert also explained me what needs to be done to remove our current dependency on internal Poppler API (something rather unpopular with distributors).

KItinerary and KPkPass now also work when built statically. That’s the first steps towards significantly shrinking the KDE Itinerary app.

UI Improvements

The app is now using Kirigami’s FormLayout for most pages, which should help with layout issues particularly when editing on small screens. Thanks to Marco for fixing the FormLayout glitches we encountered.

Another Kirigami fix from Marco easily visible in the app on Android is that the weather forecast icons are no longer erroneously shown as a monochrome mask.

Most (ab)use of Unicode emojis was replaced in favor of real icons. While this used to work fine on Linux with working monochrome emojis, we always got the colored variant on Android, which doesn’t go well together with the Kirigami style.

Contribute

A big thanks to everyone who donated test data, this helps immensely, please keep it coming!