April/May in KDE Itinerary
Since the last summary of what happened around KDE Itinerary two month ago we shipped Transitous support, integrated a new import staging area, enabled creating entries from OSM elements and much more.
New Features
Transitous support
The 24.05 releases shipped with Transitous support enabled by default for the first time. Transitous is a community-run free and open public transport routing service.
Since its start at FOSDEM 2024 just a few months ago Transitous is meanwhile consuming almost 800 GTFS feeds with base schedule information and 185 GTFS-RT feeds with realtime updates, covering 37 countries on 5 continents.
To support this a lot of work is happening both by the people taking care of the operational side of this as well as the team developing the MOTIS routing engine to improve the performance and scalability.
Unlike with vendor-operated or otherwise proprietary services Transitous allows us to expand public transport routing coverage ourselves, assuming publicly available GTFS feeds at least. See the Transitous contributor documentation on how to help with that, many major systems in Asia are still missing for example.
New import staging area
When importing from the system calendar Itinerary showed a list of detected elements and allowed to select which ones to actually import. This “staging area” for imported data has been generalized and is now available for all possible import scenarios.
This allows to review what the travel document extractor has found and provides greater control over what to import. It also is an important step towards the longer term plan of associating every element with a trip and providing more manual control over trip grouping.
Import from OSM URLs
Hotels or restaurants can be imported from OSM data, by pasting or dropping the link to the corresponding OSM element into Itinerary. That will result in the corresponding edit page being shown with all data present in OSM already pre-filled so you typically only have to enter dates and times.
With the next version the same will also work for a number of event venue types.
Manual ticket barcode entry
It’s now possible to manually add barcodes to reservations or tickets/passes that don’t have one yet, from within the corresponding edit page. For reservations it’s also possible to associate them with an existing pass or flat-rate ticket.
This can be useful when manually entering data that uses document or barcode formats that Itinerary doesn’t recognize automatically.
Infrastructure Work
CI/CD updates
We updated the build infrastructure for all of KDE’s Android apps to Qt 6.7 and NDK r26. Due to an API and ABI break in Qt’s JNI API (ie. something very central to Android integration) this unfortunately needed a lot more effort and changes than usual.
NDK r26 brings a much newer STL, which unblocked some KDE Framework changes, as well as allowed us to update to newer versions of the Quotient Matrix library.
Accessibility and UI testing
As mentioned in my report of KDE’s accessibility, automation and sustainability sprint the date and time input controls used by Itinerary can now be interacted with using assistive tools such as screen readers.
And that’s not only helpful for users relying on such tools, our UI testing tools use the same interface to control the application under test. Thanks to this Itinerary now has a first set of automated UI tests which are run as part of the automated builds.
Indoor routing
Indoor routing for the train station maps has been moving closer to becoming ready for integration by removing one major obstacle, its memory consumption.
The previous implementation processing an entire train station at once could end up needing 500MB or memory temporarily for creating the navigation mesh. That’s not a big deal on a laptop or desktop, but on a phone that is a bit much.
We now split larger areas into tiles and compute the navigation mesh for each of those separately. That has only minimal impact on the time it takes to do that, but decreases the peak memory consumption by a factor of 10 to 20.
MapCSS eval expressions
Another seemingly small but very powerful change in the indoor map renderer is support for
MapCSS eval() expressions. This allows styling properties to not only be fixed values
or values of OSM tags but can be complex expressions depending on other style properties
or OSM tag values.
Fixes & Improvements
Travel document extractor
- New or improved travel document extractors for CFR, Eurostar, Indico, IRTC, Lufthansa, Motel One, SNCB, SNCF, Ticketportal, Trenitalia, VDV eTicket and VR.
- Initial generic support for railway tickets in IATA BCBP and PkPass formats.
- Fixed invalid departure times for flights from airports with unknown timezones.
- Added support for Base64 encoded ERA SSB ticket barcodes.
- Improved handling of binary barcode content in Apple Wallet passes.
- Fixed start/end time checks for restaurant reservations.
All of this has been made possible thanks to your travel document donations!
Public transport data
- New occupancy indicator that no longer solely relies on color.
- Support per-coach occupancy information on trains (only available in some ÖBB trains so far).
- Support for out-of-service train coaches in the coach layout view.
- Updated public transport coverage metadata from the Transport API repository, which should result in more appropriate results for some regions.
- Fixed filtering of pointlessly short foot paths from journey query results sometimes having no effect.
- Discard non-WGS84 coordinates in EFA responses. This fixes some bizarre and physically impossible routing instructions in Baden-Württemberg.
Indoor map
- Render node-based indoor columns.
- Unified styling for all corridor types.
- Handle one more OSM tagging variant for toilets.
- Improved detection of the current holiday region for interpreting opening hours.
- Handle more OSM tagging variants when doing floor level expansion.
Itinerary app
- Show train coach layout actions also without any seat reservation or ticket.
- Fixed overly long headers of ferry reservations.
- Fixed some mistranslations due to missing translation contexts (in some languages the translation of “departure” depends on the mode of transportation).
- Fixed layout issues for waiting sections on a public transport journey.
- Allow to edit the ticket owner name as well.
- Support for program membership passes and ticket in the Apple Wallet pass format.
How you can help
Feedback and travel document samples are very much welcome, as are all other forms of contributions. Feel free to join us in the KDE Itinerary Matrix channel.