December/January in KDE Itinerary
Since the last update two month ago KDE Itinerary got UI redesigns in a few areas and a number of important improvements for accessing public transport information.
New Features
New timeline layout
The most visible change this time is the redesign of the timeline and public transport search result views done by Carl. This improves having all relevant information available in the limited screen space. And it looks a lot better too.

The compact horizontal bar display for getting a quick overview over public transport search results was also updated to match the same style and now features bar sizes proportional to travel time (as long as there’s enough screen space for that).

My Data page
Another very visible change is the new “My Data” page that replaces the old “Passes & Programs” page on the prominent third bottom bar tab.
The My Data page gives you quick access to several of the “secondary” functionalities in Itinerary:
- Program memberships
- Reservation-independent tickets
- Favorite locations
- Health certificates
- Statistics

Events

There’s a number of upcoming conferences featuring Itinerary-adjacent talks and the opportunity to meet people working on Itinerary, Transitous and other related topics:
- FOSDEM 2025, February 1-2, Brussels, Belgium (dedicated blog post).
- Wikidata Data Reuse Days 2025, February 18-27, online.
- FOSSGIS-Konferenz, March 27-29, Münster, Germany.
Infrastructure Work
Transitous update to MOTIS v2
Transitous has completed the migration to MOTIS v2 and along with it to new hardware. Besides better performance and higher quality first/last mile routing this also allows us to benefit from all the improvements and newly added features in MOTIS again, which in the past couple of months had only gone into the new version.
Besides increasing the data coverage there’s also a lot of effort going into improving the data quality. Where that’s not possible at the source additional processing steps or safeguards are added. Examples include:
- Using a “de-incrementing” proxy on the DELFI GTFS-RT feed to avoid the “memory loss” caused by frequent restarts/crashes of the service producing that feed, resulting in increased realtime data coverage in Germany.
- Sanity checks against “time travel”, ie. erroneous negative travel times in realtime feeds. The router will happily make use of those otherwise and loop you through those connections to get you to your destination earlier.
- Improved selection of line names, matching closer what is expected and/or used in public communication usually.
Replacement for DB’s Hafas
Deutsche Bahn’s Hafas API has been shut down earlier this year. That has been the backbone for many FOSS public transport tools due to its very wide coverage in Europe, Itinerary and KTrip also heavily relied on it.
As there had been rumors of this happening in December already it didn’t hit us entirely unprepared fortunately, and within less than 48h we had updated APKs in KDE’s F-Droid repositories that use DB’s new custom replacement API instead.
The new API doesn’t have all the details we used to get previously and our client code is still brand new and not benefiting from many other operators using the same API, so some disruptions caused by this are still to be expected.
Once more this shows why Transitous is so important, we don’t want to be dependent on semi-official proprietary APIs that can disappear at any time without notice.
KPublicTransport trip query support
KPublicTransport so far provided three basic operations: Searching for locations, querying arrivals or departures at a given stop and querying connections between two locations. We now added a fourth one, querying trips. That is, one specific run of a vehicle along a route/line.
Besides generally showing more information this has one main use-case in Itinerary, efficiently querying delays for booked trains/busses. That is currently done with a mix of routing (full level of detail, but very expensive) and departure/arrival queries at the start/destination (cheap, but only gives us information about delays at that one location). Trip queries combine the best of both approaches, giving us the full level of detail while avoiding expensive routing.
Native support for trip queries currently exist in the MOTIS, OpenTripPlanner, Hafas and Deutsche Bahn backends, for all other backends trip queries are transparently emulated using routing.
Fixes & Improvements
Travel document extractor
- Added or improved travel document extractors for American Airlines, Bilkom, booking.com, Brightline, Coloseum Tickets, Deutsche Bahn, Dimedis Fairmate, Droplabs, European Sleeper, Eurostar, Flixbus, goout, Koleo, Leo Express, Lufthansa, PKP, Polregio, SBB, SlovakLines, SNCF, Southwest, Trenitalia and Universe.
- New generic extractors for ERA SSB v3 GRT and FCB v3 ticket barcodes.
All of this has been made possible thanks to your travel document donations!
Public transport data
- Fixed access to public transport APIs of Digitransit (Finnland), Entur (Norway), Rolph (Germany), VRS (Germany) and ZVV (Switzerland).
- Improve realtime arrival/departure time parsing for intermediate stops for EFA-based backends.
- Improve merging of vehicle features with conditional/limited availability.
Indoor maps
The indoor map renderer got a few new features for use in MapCSS styles:
- Support for (directional) textured line fills.
- Limiting label visibility to a bounding polygon.
- Better differentiation between closed lines and areas (which is syntactically ambiguous in the OSM data model and needs considering tagging semantics).
The work on textured lines also uncovered a bug in the OSM raw data tile server where cliff lines where erroneously treated as closed lines.

Itinerary app
The new per-trip timeline view introduced with 24.12 received a number of improvements:
- Add weather forecasts from start of day to end of day of the trip.
- Ignore canceled elements when determining weather forecast length.
- Fix adding daylight saving time change information.
- Improve detection of timezone transitions based on location changes.
- Initially position the trip groups list so that the current or next trip is in view.
- Ignore changes to trip groups not currently displayed. This fixes random elements from adjacent trips that received an update sometimes appearing in the timeline of another trip.
That’s not all though:
- Fixed importing passes or other things without an attached trip group.
- Fixed deleting generic Apple Wallet passes.
- Optimized editor loading performance.
- Fixed notifications on Android 15.
- Fixed displaying of positive timezone change offsets.
- Reload settings when importing a backup containing changed settings.
- Set a default file name for backup files.
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.