Skip to content

Releases: HSLdevcom/OpenTripPlanner

25.8.2026

Choose a tag to compare

@VillePihlava VillePihlava released this 25 Aug 13:00

Digitransit OTP Release Summary

Changelog 20260609 vs 20260825

Added PRs

  • Critical fixes to the via and pass-through search #7593
  • Clarify error codes of SIRI fuzzy trip matcher #7644
  • Fix ArrayIndexOutOfBoundsException in RaptorPathToItineraryMapper #7639
  • Move ElevationProfile to street, reduce StreetPath API surface #7628
  • Aggregate elevation lookup failures for points outside DEM coverage #7603
  • Preserve real slope on edges steeper than 35% #7616
  • Early pruning transfer relaxation #7665
  • Refetch an itinerary #7649
  • Graph Build Cache — Redesign Configuration and File Layout #7636
  • Add dark mode toggle; standardize navbar item titles #7673
  • Refactor and optimize geometry encoding/decoding #7668
  • Make FLEX behave like a car in routing #7674
  • Remove safety normalizer #7634
  • Build scheduled transit leg geometry lazily #7685
  • Sort trip's active dates in GTFS API #7672
  • Implement on-board access in Transmodel trip API #7429
  • Use edge endpoint instead of splitting very close to the end of an edge #7708
  • Add boardCost and reluctance for all types of flex legs #7658
  • State-based geofencing zone enforcement for vehicle rental routing #7544
  • Add query for fetching number of canceled trips grouped by routes and patterns to GTFS API #7703
  • Make TransitGroupPriority an official feature #7738
  • Deprecate serviceJourneys filter in Transmodel #7712
  • Grouping Trip calendar logic into a single service #7731
  • Flex transfers in debug UI #7661
  • Add canceledTrips query to Pattern type and patternsByIds query to the GTFS API #7714
  • Add walk safety to OsmTagMapper #6944
  • Allow http protocol for remote sources #7758
  • Correctly handle missing realtime time updates via SIRI #7754
  • Use prepared geometries for walkable area building #7333
  • Add transactional repository and snapshot framework #7745
  • Remove vehicle routing optimization and deprecate its API #7741
  • Make StdTransferEarlyPruning.updateArrival O(1) Replace the per… #7682
  • Add handling of no_exit/no_entry turn restrictions #7767
  • Add canceledCalls to Stop type in the GTFS API #7768
  • Remove computation of artifical P+R intersection nodes #7753
  • Explicitly check out base branch in post-merge workflow #7812
  • Curate CLAUDE.md for AI-agent usefulness and fix factual drift #7766
  • Do not re-enable boarding at a cancelled SIRI call #7797
  • Markdown prettier formatting #7815
  • Report invalid line ref as DataImportIssue in NeTEx TripMapper #7790
  • Fix ArrayIndexOutOfBoundsException in pass-through via chaining #7747
  • Snapshot framework #7689
  • Add vehicle id via real-time updates #7814
  • Map GTFS notice assignments on trip segments to individual stop times #7809
  • Parallelize and deduplicate way property computation #7823
  • Penalize cycling on streets with embedded tram tracks #7816
  • fix(transmodel): skip flex-window stops in intermediate estimated calls #7850
  • Expose TripOnServiceDate on trips and patterns, add notices #7813
  • Add pickup/drop off filter to canceledCalls #7858

9.6.2026

Choose a tag to compare

@VillePihlava VillePihlava released this 09 Jun 11:22

Digitransit OTP Release Summary

Changelog 20260512 vs 20260609

Custom changes

  • Fix to egresses in via point search
  • Fix bug where edge is split 0/100 and dividing 0 by 0 causes a NaN in elevation data #390

Added PRs

  • Expose that a SIRI added journey has an ExtraJourney alteration in Transmodel #7385
  • Fix wrong context cast in Transmodel QuayAtDistanceType #7582
  • Improve OTP warm-up #7576
  • Raptor McRaptor cleanup (part 2) #7568
  • Make elevation tile cache size configurable #7589
  • Fix negative costs for steep bicycle and walk edges #7579
  • Fix board stop for pass-through connections #7592
  • Add Preparing DEM Data documentation page #7606
  • Fix thread-safety bug in DefaultDataImportIssueStore #7608
  • Reuse regex Matcher in transit-group priority lookup #7596
  • Speed up OSM processing some more #7583

12.5.2026

Choose a tag to compare

@VillePihlava VillePihlava released this 12 May 11:42
4272eb5

Digitransit OTP Release Summary

Changelog 20260428 vs 20260512

Custom changes

  • Fix to egresses in via point search
  • Fix bug where edge is split 0/100 and dividing 0 by 0 causes a NaN in elevation data #390

Added PRs

  • Add NO_DIRECT_MODE_CONNECTION routing error code for direct-only searches #7494
  • De-duplicate boardinglocations on areas #7508
  • Speed up tag lookup during OSM processing #7536
  • Include entrances that are part of a stop area relation, change build config field includeOsmSubwayEntrances to includeOsmStationEntrances #7170
  • Add application warmup feature to run routing queries during startup #7509
  • Add startupRetryPeriod to GBFS feed configuration #7525
  • Add support for transit group priority in the GTFS API #7451
  • Set default fares to #7545
  • Reduce memory consumption when parsing very large NeTEx files #7563
  • Remove relation route name application #7539
  • Skip transit search when no access or egress mode is set #7547
  • Skip leg rebuild when fare/alert decoration would be a no-op #7546
  • Replace C2-based pass-through with via-connection chaining #7496
  • Improve Secret redaction for config File Logging #7560
  • Always generate hop geometries in the GTFS graph builder #7571
  • Coarsen speed and reluctance values at the request level #7569
  • Fix RAPTOR path building for flex patterns with duplicated stops #7554
  • Precompute cumulative pattern distance for O(1) leg distance lookup #7559

28.4.2026

Choose a tag to compare

@VillePihlava VillePihlava released this 28 Apr 13:09

Digitransit OTP Release Summary

Changelog 20260414 vs 20260428

Custom changes

  • Fix to egresses in via point search
  • startupRetryPeriod for GBFS updaters

Added PRs

  • Fix NullPointerException when loading availableUntil for a rental bike #7388
  • Add replacement mode filter to the GTFS API's planConnection query #7437
  • Fix default boarding/alighting rules for SIRI ET ExtraJourneys (opentripplanner#7506) #7510
  • Reduce allocations when building linestrings #7516
  • Improve SpeedTest warm-up #7534
  • Remove GraphVisualizer and inefficient methods in ShortestPathTree #7526
  • Fix cost mismatch by anchoring pattern-ride pareto cost to last stop #7504

14.4.2026

Choose a tag to compare

@VillePihlava VillePihlava released this 14 Apr 13:01

Digitransit OTP Release Summary

Changelog 20260311 vs 20260414

Custom changes

  • Support for coordinate visit via locations in access, egress and direct routing

Added PRs

  • Add select/not filters to estimatedCalls in Transmodel #7305
  • Cleanup regular transfer build parameters #7425
  • Add CostlyAssertions feature that should be turned off in production and improve performance of via routing with coordinates #7301
  • Added carpooling as an access/egress mode #7341
  • Cache TransferIndexGenerator results to skip redundant regeneration #7355
  • Improve compatibility with Swiss NeTEx data #7427
  • fix: Introduce stable order for fareZones (tariffZones) #7434
  • Prevent long routes mistakenly getting grouped across service-date #7452
  • Migrate away from deprecated FeedScopedId.parse() #7457
  • Expose GTFS feed version in the GTFS GraphQL API #7445
  • Fix MC Raptor Pareto comparator performance regression #7440
  • Use A* traversal distance for flex access/egress #7490
  • Update to Java 25 #7246
  • Add distance for stop-to-stop shapes, PointsOnLink in Transmodel API #6982
  • Support DestinationDisplay for SIRI RecordedCall #7007
  • Add transit service validity dates and CPU cores to GraphQL ServerInfo and transitInfo #6996
  • Fix missing transfers #7042
  • Add Transmodel carpool street mode #7084
  • Add native scooter preference parameters to TransModel GraphQL API #7035
  • Support gml:LineString format with list of gml:pos elements #7135
  • Add Route/Trip/TripOnServiceDate replacement to query APIs #7126
  • Allow missing arrival time on the first stop in a GTFS-RT TripUpdate #7245
  • Support for SIRI ArrivalStatus.ARRIVED on EstimatedCalls #7299
  • Mark RecordedCall without ActualDepartureTime as not departed #7336
  • Reject SIRI messages with missing Order attribute on calls #7324
  • Add running days to flex routing #7281
  • Fix booking time calculation for multi-day flex trip searches #7255
  • Fix empty string handling for banned.routes and banned.agencies in GTFS API #7340
  • Improve stop connectivity check #7375
  • Infer vehicle position's service date for ADDED trip #7179
  • Fix walk steps for escalators leading directly to a station entrance #7361
  • Reduce Raptor on-board optimal set by using strict less-than for tripSortIndex #7417
  • fix: Return NO_TRANSIT_CONNECTION_IN_SEARCH_WINDOW when transit search finds no trips #7398
  • Fix findTripTimesOnDate filters using wrong route mode and applying filters after limit #7408

11.3.2026

Choose a tag to compare

@VillePihlava VillePihlava released this 11 Mar 09:15

Digitransit OTP Release Summary

Changelog 20251106 vs 20260311

Custom changes

  • Fix for subway entrance not showing up

Added PRs

  • Multiplicative stairs and turn reluctance #6783
  • Update contribution guidelines #6869
  • Add estimated calls on same service and day in Transmodel API #6930
  • Debug UI: Fix/enforce up to date package lock #6959
  • Debug client itinerary compare #6882
  • doc: add CLAUDE.md file #6939
  • Correctly parse GTFS-Flex priorNoticePeriod #6941
  • Reduce graph size when processing turn restrictions #6908
  • Allow refetching legs for trips with changed calling pattern #6902
  • Use GBFS 3 manifest for feed discovery in rental service directory #6900
  • Gracefully handle exceptions during GBFS updater setup #6954
  • Fix RAPTOR data generation for additional search days in the past #6958
  • Fix strange detours when street leg starts from the boundary of an area #6970
  • Add bikesAllowedStopMaxTransferDuration to build config to limit bike transfers #6787
  • Crosswalk naming #6918
  • Add distance for stop-to-stop shapes, PointsOnLink in Transmodel API #6982
  • Support DestinationDisplay for SIRI RecordedCall #7007
  • Fix duplicates in paging due to cost truncation in token #6973
  • Added transit service validity dates and CPU cores to GraphQL ServerInfo and transitInfo #6996
  • SIRI-ET updater via MQTT #6851
  • Support for ETag and If-Not-Modified in GBFS updater #6963
  • Visualize elevator edges and vertices in Debug UI #6885
  • Check for NO_VALUE when mapping GTFS booking rules #7029
  • Make railway=platform_edge a boarding location #7037
  • Upgrade to GraphiQL 5 #7025
  • Add paging departure-time window fields to Transmodel API metadata #6975
  • Fix duplicate labels for elevator vertices #7048
  • Add a map popup to select from multiple features if they are overlapping #6928
  • Don't fail the whole search if direct, flex or transit search generates a routing validation exception #7051
  • Fix missing transfers #7042
  • Fix coordinate fallback when linking locations in the street graph #7056
  • Handle barrier entrances correctly #7067
  • Fix default via vertex name translation mapping #7046
  • To fix arriveBy searches always set arriveBy property to false in transfer requests #7089
  • Improve handling of realtime updated StopPatterns #6909
  • Refactor ElevatorProcessor and add tests for elevators #7079
  • Add Transmodel carpool streetMode #7084
  • Add information to GraphQL schemas about if a place in an itinerary is a via location #7090
  • Fix NeTEx graph builder crash on duplicate StopPointInJourneyPattern #7092
  • Propulsion type aware bike and scooter routing #7098
  • Add support for the snow and ice NeTEx transport mode #7114
  • Improve GTFS-RT backwards earliness propagation when update starts with NO_DATA #7106
  • Add native scooter preference parameters to TransModel GraphQL API #7035
  • Normalize ServiceJourney/DatedServiceJourney ID prefixes in SIRI updates #7128
  • Add information about the use of elevators, escalators, and stairs to queries with steps in the GTFS GraphQL API #6897
  • Support gml:LineString format with list of gml:pos elements #7135
  • Add Entur specific link on Emission type in transmodel API #7148
  • Simplify handling of safety values #6767
  • Change elevator cost calculation, add reluctance for elevators, and deprecate elevatorHopCost #7111
  • Fix elevator ways with multiple intersection nodes #7181
  • Improve indoor routing information in debug UI #7174
  • Clear timetables after withdrawn NEW trips #6280
  • Undeprecate car/bikepark nearest filters which were deprecated by accident #7209
  • Fix SIRI-SX affects resolver #7210
  • Add support for via-location visits in Raptor access and egress paths #7101
  • Fix car routing using stations or multi-modal stations as locations #7151
  • Add modes filter and totalCount to the canceled trips query in the GTFS API #7200
  • Make sure flex transfers are indexed exactly once #7218
  • Fix SIRI ET ExtraJourney trips not appearing in departure/arrival boards #7052
  • Add CarRequest to cache key in RaptorRequestTransferCache #7194
  • Add booking time parameter to the GTFS API #7221
  • Add HTTP response time metric #7133
  • Add second criteria to the Raptor heuristics #7165
  • Add Route/Trip/TripOnServiceDate replacement to query apis #7126
  • Make filters for the canceled trips query in the GTFS API a list #7235
  • Allow setting maxThreads lower than MIN_THREADS when using parameter #7224
  • Allow missing arrival time on the first stop in a GTFS RT Trip Update #7245
  • Direct transit search #7145
  • Add ability to start a Raptor search from on-board a trip in MC range raptor #7241
  • Change @timingData annotations in GTFS GraphQL API #7261
  • Account for DST and multi-day trips in departure boards #7250
  • Add publiccode.yml for OpenTripPlanner #7212
  • Expose boolean extraCall field on EstimatedCall in Transmodel API #7272
  • Fix mapping of banned.trip in GTFS API #7288
  • Add trip's carsAllowed property to GTFS GraphQL API #7282
  • Use only the closest vertices for each mode when linking with multiple street modes to improve performance [opentripplanner#7309](https://gith...
Read more

9.12.2025

Choose a tag to compare

@vesameskanen vesameskanen released this 09 Dec 11:33
  • Pull from upstream
  • Bug fix: entrances correctly allow barrier pass through

6.11.2025

Choose a tag to compare

@vesameskanen vesameskanen released this 06 Nov 10:37
8147ddb
  • New changes pulled from upstream
  • Bug fix: indoor car routing is no longer allowed by default

30.9.2025

Choose a tag to compare

@vesameskanen vesameskanen released this 30 Sep 14:55
  • New changes pulled from upstream
  • Fix incorrect speed tram icon and color in HSL routing

31.8.2025

Choose a tag to compare

@vesameskanen vesameskanen released this 31 Aug 17:30

OTP features required by digitransit UI release 1.9.2025 (new filter API, map layer update)