OpenTripPlanner 2
../assets/images/favicon.png
Changelog

The changelog lists most feature changes between each release. The list is automatically created based on merged pull requests. Search GitHub issues and pull requests for smaller issues.

2.5.0 (under development)

2.4.0 (2023-09-13)

Notable Changes

Improved support for Fares V2 #4917 #5227

Improved error and timeout handling #5047 #5092 #5121 #5114 #5133 #5130 #5192

Enable GTFS GraphQL API by default, remove the word "legacy" from its name and documentation #5202

Access and egress penalty on time and cost #5180

Improve support for GBFS geofencing zones #5201

Reduce memory consumption by 5-8% #5223

Stop count limit for access/egress routing and new accessEgress configuration object #5214

Detailed changes by Pull Request

Generate static documentation for GTFS GraphQL API #5069

Create a valid area even when it has too many vertices #5019

Constant speed street routing #5057

Remove dead build configuration parameter (extraEdgesStopPlatformLink) #5080

Configure HTTP WebServer Transaction timeouts #5047

Improve Graph updaters shutdown #5092

Fix flex timeshift #5063

Merge norway traversal calculator into default #5106

Use correct GTFS sequence number in vehicle position matcher #5090

OSM: Break out of processing a malformed level map #5096

Handle JsonParseException #5121

Do not enforce API processing timeout for parallel routing #5114

Rename bikeRental options to vehicleRental #5089

Fare sandbox cleanup, remove MultipleFareService #5100

Add validation of NeTEx timetabled passing times #5081

Return WALKING_BETTER_THAN_TRANSIT only on a fully walking leg #5091

Handle CoercingParseValueException #5133

Remove broken Jersey tracing configuration #5142

Graceful timeout error handling #5130

Log http request headers - like correlationId #5131

Fix vertex removal race condition #5141

Comment out replacing DSJ-ID from planned data with ID from realtime-data #5140

Remove San Francisco and vehicle rental fare calculators #5145

Remove batch query from Transmodel API #5147

Fix nullable absolute direction in GTFS GraphQL API #5159

Fix error in flex validation #5161

Check service dates instead of service ids for block id transfers #5162

Add support for mapping NeTEx operating day in operating period #5167

Validate to/from in routing request #5164

Changing default value for earlyStartSec #5165

Add GTFS stop sequence to GTFS GraphQL API #5153

Remove walk leg in a stay seated transfer #5135

Validate distinct from/to temporary vertices #5181

Add support for NeTEx taxi mode #5183

Fix bike triangle in Transmodel API #5179

Bug fixes in stop area relation processing #5166

Allow underscores in GTFS feed IDs #5191

Area vertex linking improvements #5209

Allow multiple FlexibleAreas in a FlexibleStopPlace #4922

Prevent NPE in vehicle position matching #5212

Empty stop_headsign will fall back to trip_headsign #5205

Treat escalator differently from stairs, add escalator reluctance #5046

Flex build time and memory optimization for large zones #5233

Fix pathway traversal time calculation when none is supplied #5242

Add check for null value of serviceCodesRunning in TripPatternForDateMapper #5239

Improve error handling in TransmodelGraph #5192

Fix filtering by submode #5261

Add leg.headsign to GTFS GraphQL API #5290

Return client error for invalid Transmodel query JSON format #5277

Validate missing intermediate location in via requests #5253

Support Fares v2 FareMedium and update spec implementation #5227

Improve walk step narrative for entering/exiting stations and signposted pathways #5285

Fix walk board cost comparison and add escalatorReluctance to hash #5310

Remove pathway id from REST API #5303

Remove Winkki street note updater #5305

Extend stop area relation linking to include bus stop and platform nodes #5319

Add access/egress penalty transmodel api #5268

2.3.0 (2023-04-24)

Notable Changes

The performance for trip search of large networks (> 100k stops) is improved

Run only a single heuristics request (instead of two) #4537

Parse NeTEx fare zones from a FareFrame #4563

Initial implementation of via search #4554

Relaunched documentation theme #4575

Add carpool and taxi modes #4641

New filter API #4657

Adaptive street graph island pruning #4688

Experimental support for GBFS geofencing zones #4741

Update GBFS support to v2.3 #4809

Improve support for EPIP NeTex profile #4863

Uber ride hailing #4979

Detailed changes by Pull Request

Refactoring SIRI StopConditions from TransitAlert to EntitySelector #4196

Add cost of egress leg to the cost of the last transit leg if transit leg arrives at destination #4547

Add fallback for missing operator name #4588

Add performance test for Switzerland #4576

Fix interchange generation when identical consecutive stops are filtered #4586

Add alerts to leg when reading in a leg reference #4595

Remove KML bike parking updater #4602

Add stationTransferPreference option for GTFS feeds #4599

Fix osmDefaults so they are used if something is not set in source #4635

Add demDefaults #4637

Add vector tile layer in debug client for AreaStops #4565

Prevent bicycles from using stairs #4614

Bugfix for interchanges that start and end from the same stop #4597

Add option to define gtfsDefaults and move some parameters from root to gtfs config #4624

Fix: forBoarding and forAlighting on cancelled calls in transmodel api #4639

Make maxFlexTripDuration configurable #4642

Extract separate conditions for "and", "greater than", "less than" during OSM tag mapping, add Portland tag mapping #4593

Better fallback in shape geometry processing #4617

Fix batch queries in HSL graphql API #4663

Add filter for minimum bike parking distance #4626

Add limits for flex access/egress walking #4655

Make Prometheus endpoint take Accept header into account #4674

Add entrances to parking lots that are unconnected in OSM #4666

Include crossing=traffic_signals and use it for walking/cycling penalty on crossings #4574

Replace surface=cobblestone:flattened with surface=set as a mixin spec in default OsmTagMapper #4683

Remove NYC fare service #4694

Upgrade dependencies to take new spelling of GTFS Flex's 'drop off' into account #4693

Configuration of additional HTTP headers for GTFS-RT updaters #4684

Automatic Java dependency upgrades #4704

GTFS-RT extension to add completely new routes #4667

Add validation on NeTEx flexible area import #4765

Do not return a leg from a leg reference, if trip does not exist on date #4758

Fix direct transfer analyzer #4767

Refactor data import issue reporting #4777

Add support for deleted trips & including real-time cancellations in trip search #4759

Fix TPoint generation for real-time generated patterns #4787

Improve resiliency of the Transmodel API #4806

Use TripPatterns for filtering #4820

Remove all edges from stop vertex in island pruning #4846

Filter functionality for GroupOfLines/GroupOfRoutes in TransmodelAPI #4812

Mapping for maxAccessEgressDurationPerMode in Transmodel API #4829

Use headsign from the original pattern in a realtime added pattern if the stop sequence is unchanged #4845

Remove RouteMatcher #4821

Improve boarding location linking on platforms #4852

Always check allowed modes in VehicleRentalEdge #4810

Include cancelled stops when including cancelled trips in trip search #4851

Unpreferred vehicle parking tags #4873

Ignore UnrestrictedPublicTransportAreas that do not contain regular stops #4919

Validate missing transit data before building transit graph #4930

Use durations for Raptor search window configuration #4926

Add graph build issue statistics to metrics endpoint #4869

Add documentation about system requirements and suggestions #4937

Fix initial A* state of car rental #4934

Remove check for (now optional) ENV-variable for GCP Authentication #4966

Improved walking routes when walking starts or ends in an area #4936

Remove unconnected walking areas from graph #4981

Filter out duplicate-like legs in alternative legs #4868

Fix timeshifting of Flex ~ Walk ~ Flex paths in Raptor #4952

Validate the number of service links mapped to a JourneyPattern #4963

Make sure the default streetRoutingTimeout is used #4998

Validate service date for SCHEDULED updates #4861

Fix quay duplicates overwriting stop index #4964

Allow OTP to start when unexpected enum values are encountered in config #4983

Add filename to graph report #4984

Support for second criteria in McRaptor #4996

Initialize RAPTOR stop-to-stop transfers on server startup #4977

Fix bugs related to DST and service date #5004

Fix validation of running period for NeTEx flexible lines #5007

JSON logging #5023

Add allowOverloading parameter to GBFS updaters and fix use of it in routing #5024

Fix precedence rules for NeTEx flexible line booking information #5021

Fix transferCacheRequests when custom streetRoutingTimeout is set #5039

2.2.0 (2022-11-01)

Notable Changes

The performance for trip search is improved by ~20-30%

Support for GTFS-RT Vehicle Positions #3981

Support for NeTex DatedServiceJourneys #3889

Cost-based wheelchair-accessible routing #4045

Improve stop linking by taking OSM platform polygons into account #4116

Provide an OCI container image on DockerHub #4168

Re-add block-based interlining #4264

Add walk safety to street routing #4328

Experimental support for GTFS Fares V2 #4338

Document JVM configuration options #4492

Support for HTTPS datasource for Graph Building #4482

Metrics for realtime trip updaters #4471

Configuration Documentation generated programmatically #4478

Detailed changes by Pull Request

NeTEx mapping for WheelChairBoarding #3945

OTP support for NeTEx GroupOfLines #3928

Implement trip banning #3953

Improve performance of Park+Ride, Bike+Ride and Bike+Transit #3906

Re-add GraphCoherencyCheckerModule #3985

Modify TripPattern logic for updating stop-to-stop geometry #3988

Read translations from GTFS and Netex sources for stop names #3808

Update to Java 17 and Kryo 5 #3994

Remove optimize=TRANSFERS #4004

Enable GBFS floating vehicles by default #4012

Don't try to repair trips with negative dwell or driving times, drop them instead #4019

Add support for SKIPPED stop time updates in SCHEDULED update handling #3960

Elevation handling improvements #4033

NeTEx mapping of WheelchairBoarding from ServiceJourney to Trip #4043

Add GBFS form factors to GraphQL API #4062

Add Geocoder API for debug client searches #4068

Consider Wheelchair boarding/alightning when routing from or to directly to a stop #4046

Add an implementation for fetching alternative legs #4071

Allow single SIRI-situations to fail without affecting others #4083

Fix problem with submode filter #4093

Make maxWheelchairSlope not a hard cut-off, but apply a cost instead #4088

Expose Leg.serviceDate in trip end-point #4096

Enable overriding maxDirectStreetDuration per mode #4104

Preserve language in SIRI/GTFS-RT alert messages #4117

Use board/alight cost only for transits #4079

Improve SIRI realtime performance by reducing stopPattern duplicates #4038

Siri updaters for Azure ServiceBus #4106

Fallback to recorded/expected arrival/departure time if other one is missing in SIRI-ET #4055

Allow overriding GBFS system_id with configuration #4147

Fix error with transfer-slack and GTFS minTransferTime #4120

Use actual distance for walk distance in StreetEdge #4125

Don't indicate stop has been updated when NO_DATA is defined #3962

Implement nearby searches for car and bicycle parking #4165

Do not link cars to stop vertices in routing #4166

Add Siri realtime occupancy info #4180

Add gtfs stop description translations #4158

Add option to discard min transfer times #4195

Use negative delay from first stop in a GTFS RT update in previous stop times when required #4035

OTP2 no longer crashes on invalid GTFS stop time sequences #4205

Cost-based wheelchair accessibility routing for streets #4163

Expose SIRI ET PredictionInaccurate in Transmodel-API #4217

Do not apply walkable area processing to open platform geometries #4225

Add field 'routingErrors' to GTFS GraphQLAPI #4253

Configure idempotent upload to Google Cloud Storage #4269

Add support to unprefer certain routes #4238

Fix inconsistent mapping of NeTEx quay publicCode #4282

Take street legs into account when applying the similar legs filter #4280

Make graph time zone configurable #4281

Support real-time updated wheelchair accessibility for trips #4255

Include waiting time at beginning and end in TransitGeneralizedCostFilter #4188

Allow filtering out of time-shifted itineraries with same routes and stops #4298

Remove unmaintained custom fare calculators for NYC, Seattle, SF Bay Area, Netherlands #4273

Return meaningful error if origin and destination are the same #4364

Allow configuring maxAccessEgressDuration, searchWindow, timetableView #4377

Add custom bike rental data updater (vilkku) as an extension #4381

Flex: when optimizing paths preserve egress transfers #4378

Skip opening hours if no time-zone configured #4372

Digitransit stop vector layer updates #4404

Re-enable copying of submode to trip from route #4407

Configure each transit feed properties individually #4399

Account for boarding restrictions when calculating direct transfers #4421

Configure the import of OSM extracts individually #4419

Configure the import of elevation data individually #4423

Return typed errors from realtime updates, prepare for realtime statistics #4424

Add feature switch for matching ET messages on stops #4347

Make safety defaults customizable for walking and cycling #4438

Fix block-based interlining when importing several GTFS feeds #4468

Do not remove patterns with non-running DatedServiceJourneys #4474

Discard direct walking results if direct mode is flex #4476

Implement free transfers in GTFS Fares V2 #4460

Read and expose time zone in NeTEx/Transmodel API #4480

Remove filtering of flex patterns in NeTEX import #4493

Make walk and bicycle safety defaults adjustable based on speed limits on ways #4484

Enable fuzzyTripMatching in other SIRI-ET updaters #4495

Add support for importing zip datasets containing large entries #4508

Add feature toggle for turning off the debug client #4512

Add 'exact match' specifier for way property sets #4505

Remove unnecessary sourceType attribute from GTFS-RT configuration #4525

Do not allow boarding/alighting at GroupStops in RAPTOR #4534

Read the feed id from the agency when storing agencies #4536

2.1.0 (2022-03-17)

Notable Changes

GBFS 2.2 is supported including "form factors" (bike, scooter, car) and floating vehicles (with no fixed station)

Constrained Transfers (Netex interchanges / GTFS transfers.txt)

Transfers for bicycle and wheelchair users distinct from walking paths

Support for GTFS-Flex v2

Support for frequency-based trips (GTFS frequencies.txt, does not exist in Netex)

Many 1.5 features not fully implemented in 2.0 have been reintroduced

Improved result quality relative to both 1.5 and 2.0: filtering of itineraries and selection of transfer points between routes

Car and bicycle parking has been combined into vehicle parking (enhanced with real-time details like remaining parking spaces)

New system for paging of routing results via cursor token

Response times should be roughly stable since 2.0. Performance much improved over OTP1 for long searches, may be somewhat slower for short searches. Extremely depdendent on data set used, so test on your specific data.

System integration tests for ongoing performance measurement

Detailed changes by Pull Request

Fix NullPointerException when a RealTime update do not match an existing TripPattern #3284

Support for versioning the configuration files #3282

Prioritize "direct" routes over transfers in group-filters #3309

Remove poor transit results for short trips, when walking is better #3331

GTFS Trips will by default not allow bikes if no explicit value is set #3359.

Improve the dynamic search window calculation. The configuration parameters minTransitTimeCoefficient and minWaitTimeCoefficient replace the old minTripTimeCoefficient parameter. #3366

Allow loops caused by turn restriction in street routes #3399

Apply turn restrictions when splitting edges. #3414

Add separate no-thru handling for bicycles #3410

Add German way property set #3359

Process OSM bicycle routes correctly #3359

Avoid turns across traffic on bicycles #3359

Remove request parameter driveOnRight and derive information from way property set #3359

Add basic support for routing using floating bikes #3370

Optimize which stops are used for transfers, using generalized-cost, wait-time and transfer priority. Partially implements #2788

Support for stay-seated and guaranteed transfers #3193

Fix reading of cached elevation files #3455

Added BikeRentalWithMostlyWalking filter #3446

Import GTFS-Flex v2 Flexible trips #3453

Add support for arriving at the destination with rented bicycles #3459

Allow IntersectionTraversalCostModel to be specified in the WayPropertySet #3472

Fix for traveling back in time when optimize transfers #3491

Transit reluctance per transit mode #3440

Allow the removal of P+R results consisting only of driving of walking #3515

Allow http headers to be specified for bike rental updaters #3533

Per-mode reluctance parameters are added so that itineraries with multiple modes may have varying reluctances. #3501

Add maxAreaNodes configuration parameter for changing an area visibility calculation limit (https://github.com/opentripplanner/OpenTripPlanner/issues/3534)

Add maxAccessEgressDurationSecondsForMode to RoutingRequest #3560

Add bicycle safety report to report API #3563

Optimize Transfers performance issue #3513

Don't allow bicycle loops in A* #3574

Cancel individual stop on StopPattern instead of TripTimes #3575

Do not allow bicycle traversal on ways tagged with mtb:scale #3578

Changes to the StopTimes call #3576

Fix bug in optimize transfer service decorating path #3587

Remove non-GBFS bicycle rental updaters #3562

Remove possibility to import vehicle rental stations from OSM, make vehicle rental stations feed scoped #3601

When importing Netex, allow bicycles on ferries by default #3596

Safely catch some elevation interpolation exceptions #3412

Route not found in some conditions with boarding/alighting restrictions #3621

Load additional data from GBFS and expose it #3610

Allow transfers to use customizable request options #3324

Check boarding and alighting permissions in TransferGenerator #3641

Stoptimes should return tripId on the REST API. #3589

Handle non-symmetric transfers in RAPTOR #3634.

Order RAPTOR input data so that plans are deterministic #3580

Cost on transfer in Raptor #3617

Allow for combined NeTEx and GTFS data sources #3650

Generalized graph connectivity pruning #3426

Stop linking to area/platform edges obeys area boundaries and traverse modes #3201

Add service day mapping to REST API #3659

Generalized cost on transfer in Raptor #3629

Add two new filters for use within grouping filter #3638

Correct usage of boardSlackForMode / alightSlackForMode #3693

Do not parse pass-through information in GBFS mappers #3709

Vehicle rental updates #3632

add trolleybus & monorail support #3658

Do not create zero length StreetEdges #3716

Add pickup and dropoff booking info to REST API #3710

Use the whole duration of the filtered transit data for the raptor heuristic search #3664

Performance improvement for flex access/egress searches #3661

Add new routing errors for cases where all itineraries were filtered by post-processing #3628

Fix combination of flex access and constrained transfer #3726

Merge B+R and P+R functionality into vehicle parking #3480

Add cost to maximize wait-time and avoid back-travel in optimize transfers #3654

Calculate fares from itineraries not Raptor paths, calculate flex fares #3743

Logging first time instance reports it is ready to use #3733

Allow limiting the used vehicle rentals and parkings #3746

Add support for car and scooter rental modes #3706

Extra stop priority cost in optimized transfer service #3731

Remove old visibility graph library from walkable area builder #3753

Update GtfsRealtime and include severity, effect and cause from GTFS RT #3747

Handle miscellaneous service as BUS instead of crashing build #3755

Update all timers to micrometer instances #3744

Bugfix: ClassCastException when planning flex routes #3762

Add mode from parent StopPlace for Quays in Netex mapper #3751

Minor performance improvements #3767

Parallelise computing of trip pattern geometries #3766

Add flex stop to TripTimes, return geometries in GraphQL API #3757

Fix checking allowed boarding/alighting for unscheduled flex trips #3782

Calculating number of days to use in StopTimes-request #3742

Walkable area builder improvements #3765

Remove hardcoded alighting/boarding on first/last stop #3784

Add support for include-file-directive in config files. #3771

Remove build parameter 'useTransfersTxt' #3791

Add cursor-based paging #3759

Data overlay sandbox feature #3760

Add support for sandboxed realtime vehicle parking updaters #3796

Add reading and exposing of Netex submodes #3793

Fix: Account for wait-time in no-wait Raptor strategy #3798

Read in flex window from Netex feeds #3800

Fix NPE when routing on a graph without transit data. #3804

Read leg mode from trip, instead of route #3819

Use API mapping in snapshot tests #3823

Store stop indices in leg and use them to simplify logic in TripTimeShortHelper #3820

Include all trips in stopTimesForStop #3817

Store all alerts and add support for route_type and direction_id selectors #3780

Remove outdated realtime-update from TimetableSnapshot #3770

Contributing Guide #3769

OTP support for NeTEx branding #3829

Not allowed transfers and support for GTFS transfer points #3792

Simple implementation of horizontally moving elevators (Elevator way) #3750

fix: Avoid mixed path separators on Windows in Park API test #3845

Filter out elevator ways that are also implicit areas #3850

Dynamically compute additional search days #3824

Mode & submode filter for NeTEx Service Journeys #3844

Return correct heuristic values, when constrained transfers is turned on #3841

Adjust search window dynamically to fit the number of itineraries #3828

Implement minimum transfer time from GTFS transfers.txt #3830

Fix number format exception for elevator duration parsing OSM data #3871

Include generalizedCost in the optimized transfers wait-time cost #3864

Expose maxStopToShapeSnapDistance as build-config.json parameter #3874

Implement in-seat transfers per GTFS draft #3831

Add stairsTimeFactor to StreetEdge #3832

Make sure we keep the itinerary with the least number of transfers when grouping the itineraries #3833

Don't expect every pattern in a route to have the specified stop with constrained transfers #3868

Add support for creating constrained transfers from real-time generated patterns #3878

Account for stay seated transfers when calculating the number of transfers #3888

Add Hungarian translation #3861

Add support for "via" in NeTEx headsigns #3883

NeTEx mapping to StopTime.timepoint #3898

Optimize RAPTOR trip search by pre-calculating arrival/departure time arrays #3919

Make turn restrictions faster and thread-safe by moving them into StreetEdge #3899

Add routing using frequency trips #3916

Remove ET realtime override code #3912

Allow traversal of pathways without traversal time, distance or steps #3910

2.0.0 (2020-11-27)

Sandbox for experimental features #2745

Bugfix for Missing platforms for stops in GTFS import causes a NPE #2804

Remove extra Djikstra implementations

Remove redundant LineStrings in order to save memory #2795

NeTEx import support #2769

New Transit search algorithm, Raptor, replaces the AStar for all transit searches.

Added NeTEx notices #2824

Make transfers and access/egress use effectiveWalkDistance to take slopes into account #2857

Add MultiModalStation and GroupOfStations to OTP model and added these to the NeTEx import #2813

Combined OSM loaders, removing several rarely used ones #2878

New Java Code Style (part of #2755)

Cleanup and rename Graph Builder Annotations, now Data Import Issues #2871

Bugfix for graph building crashing on unsupported modes #2899

Add command line parameter for building partial graphs #2583

Refactor GenericLocation/AStar/RoutingContext to allow multiple start vertices #2887

New Transit search algorithm, Raptor, replaces the AStar for all transit searches.

Update only the relevant parts of the TransitLayer each time an update is applied #2918

Ability to switch off the fare service#2912.

Limit the transit service period#2925.

Removed unwanted cost added for wait time between access and transit with RangeRaptor #2927

Dynamic search parameters, calculate raptor search-window when needed. #2931

Support for next/previous paging trip search results #2941

Fix mismatch in duration for walk legs, resulting in negative wait times #2955

NeTEx import now supports ServiceLinks #2951

Also check TripPatterns added by realtime when showing stoptimes for stop #2954

Copy geometries from previous TripPattern when realtime updates result in a TripPattern being replaced #2987

Support for the Norwegian language.

Update pathways support to official GTFS specification #2923

Support for XML (de-)serialization is REMOVED from the REST API #3031

Refactor how to specify access/egress/direct/transit modes in the internal model and the Transmodel API #3011

Make agency id feed scoped #3035

Refactor kiss and ride to a more general car pickup mode #3063

Map NeTEx publicCode to OTP tripShortName and NeTEx private code to OTP internalPlanningCode #3088

Add MQTT transport for the GTFS-RT trip update updater #3094

Add FinlandWayPropertySetSource #3096

Map NeTEx publicCode to OTP tripShortName and NeTEx private code to OTP internalPlanningCode #3088

Reading and writing files(CONFIG, GRAPH, DEM, OSM, GTFS, NETEX, DATA_IMPORT_ISSUES) is changed. All files, except configuration files, are read from a data source. We support Google Cloud Storage and the local file system data sources for now, but plan to add at least support for AWS S3 #2891

Remove AlertPatcher #3134

Update DebugOutput to match new routing phases of OTP2 #3109

Filter transit itineraries with relative high cost #3157

Fix issue with colliding TripPattern ids after modifications form real-time updaters #3202

Fix: The updater config type is unknown: gtfs-http #3195

Fix: Problem building and loading the GTFS file in San Fransisco Bay Area #3195

Fix: The BusRouteStreetMatcher and TransitToTaggedStopsModule graph builder modules are not run if the graph is build in two steps, and add progress tracker to BusRouteStreetMatcher. #3195

Improvement: Insert project information like Maven version number into configuration files. #3254

Added pathway FeedScopedId as the route text to trip plan responses. #3287

Ported over from 1.4 and 1.5

Add application/x-protobuf to accepted protobuf content-types #2839

Make OTP run on Java 11 #2812

Fixes surefire test failure during build #2816

Disable linking from already linked stops #2372

Add Way Property Set for the UK #2818

Remove Open Traffic prototype code #2698

Docs: improve configuration documentation

Update onebusaway-gtfs to latest version from OBA project #2636

Remove the coupling to OneBusAway GTFS within OTP's internal model by creating new classes replacing the external classes #2494

Allow itineraries in response to be sorted by duration #2593

Fix reverse optimization bug #2653, #2411

increase GTFS-realtime feeds size limit from 64MB to 2G #2738

Fix XML response serialization #2685

Refactor InterleavedBidirectionalHeuristic #2671

Add "Accept" headers to GTFS-RT HTTP requests #2796

Fix minor test failure against BANO geocoder #2798

Fix frequency bounds checking #2540

Remove dependency on Conveyal jackson2-geojson

Changed calculation of slope costs #2579

Replace Java built in serialization with faster Kryo #2681

Support OSM highway=razed tag #2660

Add bicimad bike rental updater #2503

Add Smoove citybikes updater #2515

Allow big GTFS-realtime feeds by increasing protobuf size limit to 2G #2739

Cannot transfer between stops at exactly the same location #2371

Improve documentation for mode routing parameter #2809

Switched to single license file, removing all OTP and OBA file license headers

1.3 (2018-08-03)

Fix stop linking to only one edge of platform #2472

Log and allow changing number of HTTP handler threads

Update Dutch base fare from 89 to 90 cents #2608

Add Dutch fare service #2571

Revise unit tests to use less memory

Run all graph updater setup methods sequentially #2545

Allow vehicle rental systems with cars (stopgap parameter on bike rental)

Bump R5 version to get newer gtfs-lib and FST serialization

Move stopClusterMode parameter from routing config to build config #2558

Update encrypted Maven artifact signing key (it expired)

Clean up logging

Remove/update deprecated HTTPClient, add missing SSL ciphers #2451

Make maxTransfer options configurable through scripting API #2507

Fix scripts when entity IDs contain colons #2474

Add HTML report for stops more than 20m from linked road #2460

Update fares in NycFareServiceImpl #2466

Compact legs NPE fix #2449 #2490

Docs: elevation data configuration, USGS DEM files

Docs: Update list of deployments

Docs: API, list of deployments, usage stats and tutorials

Docs: Update leadership committee listing following Boston Summit

Docs: Update OTP logo (Thanks Kate Chanba!)

1.2 (2017-09-18)

Add support for consuming GBFS bike-rental availability feeds. #2458

Add GBFS configuration example

Add flag for including requested start/end time in maxHours in planner API. #2457

Add maxTransferDistance graph builder parameter

Add option for filtering non-pickup stops in TransitIndex stop times functions. #2377

Support foot/bicycle=discouraged OSM tag. #2415

Improve linking of transit platforms to connecting access ways. #2422 / #2428

Fix bug when building graph with parent station transfers. #2404 / #2410

Fix bugs in park and ride search. #2424

Support different stop ID formats in field trip module

Update URL in BANO geocoding module. #2438 / #2439

Add more debug information related to trips matching using GTFS-RT feed. #2432

Update default PATH_NOT_FOUND message to new wording developed w/ TriMet. #2355

Update Travis build configuration to not attempt GPG operations. #2441

Fix javadoc URL in scripting documentation. #2437

Automatically link to GitHub issues in Changelog. #2426

Expose FeedInfo objects in the Index API #2456

Changes to Puget Sound region fare calculation #2484

Fix coordinatates when clustering by parent station #2447

Allow setting OSM Way Properties from build-config.json #2389

Optionally compact ("reverse-optimize") results with complete reverse search #2449

Add updater for urbaninfrastructure city bikes #2448

Miscellaneous documentation updates

1.1 (2017-03-16)

Deploy to Sonatype OSSRH and Maven Central

Documentation updates including repo links

New router-config stopClusterMode: clustering by parent station or geography #2364

Spanish and Portuguese UI Translations

In TimeSurface API, serialize travel times to every point when detail=true

Make OSM highway=corridor pedestrian routable

Fix GraphIndex.stopTimesForStop to search on the request day rather than now

Update GraphQL to latest version and improve support for complex arguments #2367

Add support for operationName to the graphql endpoint

Fix findClosestStopsByWalking, properly set RoutingContext

Fixed major routing problem where dead-end SimpleTransfers blocked walking paths #2414

Created Github issue template

Avoid negative elevation figures: Compute ellipsoid-geoid offset and optionally apply to elevation calculations #2301

Fix VCub bike share updater using new API variable names.

Fix spurious different-day warning #2399

Shutdown hook to gracefully shut down Grizzly #2384

Added headsign attribute for stoptimes in GraphQL #2224

Allow Cars on highway=*;bicycle=designated #2374

Expose PruneFloatingIslands parameters in build-config.json

Lazy initialization of stop clusters where needed

Include Agency/Route branding in responses

Include turn-by-turn walking directions for transfer legs #1707

Output error when edge lengths are negative, and set them to 1mm

Add disableAlertFiltering API flag #2351

Do not show arrival times at terminal stops in stop time viewer #2357

Index API now returns stop information URL, enabling hyperlinks in trip viewer #2352

Remove all unused model classes for index API #1301

Apply an interlining fix from 0.10 branch

Allow quoted search phrases in the Lucene search #2279

Re-implement maxHours filter #2332

Properly set wheelchairAccessible on area edges

Fixed file URL in test #2339

Add details field to fares, listing which legs each fare applies to #1699

1.0 (2016-09-09)

Fix problem with missing embedded router-configs.

Check whether trips have been banned when applying in-seat transfers (interlining).

Load embedded config for existing graphs on disk.

Apply max walk distance to transfers, not just initial and final walk.

Remove Conveyal tiles from client (which was getting expensive), add free Carto/MapZen tiles.

Fixed headsigns: in itineraries, headsign for a leg used to always be the last stop.

Updated default map tile sets in the client because Mapquest is no longer gratis.

Fix problem with empty list ??? #1873

Rewrite of intermediate places handling in GraphPathFinder. Original request is cloned for each intermediate path.

Routes in GraphQL API Change "type" to "mode" and add "type" as route type to Route for GraphQL

Add effective end date to alerts (from HSL).

Rutebanken Citybike bike share.

Correct TPEG transport modes TPEG 401 and 402 to be "subway".

Ignore exceptions caused by errors in OSM linear rings.

Updated to version 2.18 of Jersey to fix hanging threads in Grizzly.

Removed confusing "Busish" and "Trainish" pseudo-modes.

FareService for Seattle: allow specifying fares in GTFS instead of hard-coding them in Java. Senior/youth fare prices are given in an extra column in fare attributes. Per-trip fares are taken into consideration when calculating fares in this region.

Update new linker to link to transitStops if no streets are found.

Show the name supplied in the request for the origin/destination points in the response.

Throw a trivialPath exception if start/end point are on the same edge.

Switch to only use the new SimpleStreetLinker, even for search start and end points. Completely removed old linker classes. Changes for proper handling of wheelchairs and bicycles at start and end points.

Properly handle null timetableSnapshots when there is no real-time data.

0.20 (2016-06-10)

Re-enabled Enunciate, which works properly with OTP now. This means we have auto-generated API docs.

Make headsign and block ID visible in the Stop Viewer.

NYC fare service: filter out non-NYC agencies.

Optionally log all requests to a file.

Make max distance for in-seat transfers (interlining) configurable. Previously it was hardcoded at 200m.

Polish translation for web client.

Introduced bikeShareId in trip plans (separate from stopIds).

Support for ShareBike bike rental system in Oslo, Drammen, Trondheim, Milan, Barcelona and Mexico City among others.

Changed default waitAtBeginningFactor and timeouts.

Show alert in client when itinerary departure date differs from search date.

Exposed realtimeState in GraphQL responses.

Fixed a routerConfig NullPointerException.

Support for San Francisco bike share from leoromanovsky.

GraphQL API for most transit data from hannesj.

Disallow shortcuts through multiple StationStopEdges.

Add support for airplanes (from HSL)

Major simplification and correction of the longDistance heuristic, removed obsolete runState.options.heuristicWeight.

Return default OSM level for ways that are not found.

Profile routing: use earliest arrival objective function on-street, properly handle TrivialPathExceptions.

Fixed ID matching when applying AlertPatches.

Fixed banning of agencies in multi agency feeds.

More coherent handling of feed IDs as scope for GTFS IDs.

Added transit service start and end timestamps to BuildInfo.

Handle embeded router configuration for POSTed graphs and zips for building.

Simplified router-config handling.

Properly lazy-initialize profile routing stopClusters. Added stop clusters to the Index API.

Completely removed the ill-advised path parser system, which was too clever for its own good.

Sort itineraries by total travel time rather than in-transit time.

Rental bikes: allow loading generic KML.

Removed the experimental TransportNetwork classes, which shared no code with the rest of OTP and were duplicated in the R5 project. There are still some elements that can be cleaned out when only R5 is used by Conveyal's analysis system. The broker code in OTP is now able to start up R5 workers for Analyst.

Use the Conveyal fork of the OBA GTFS loader, so that we can add our own extensions to GTFS.

Updated docs to offer Conveyal Maven repo as a place to get prebuilt OTP.

0.19.0 (2016-05-25)

0.18.0 (2015-05-29)

Ability to load elevation from projected GeoTIFF

Clarified axis order for unprojected GeoTIFFs

Stop viewer and car distance fixed in client

Server-side localization improvements

Proper names for intersections

JSON config for loading bikeshare and park and ride lots from OSM

More ways to fetch isochrones

Fixed frequency-based routing in repeated RAPTOR

Calculate graph envelope at build time not runtime

Fixed slow excessive HashGrid search

Readthedocs documentation updates

0.17.0 (2015-05-14)

Allow fetching arrivals/departures over a particular time window

Completely new spatial analysis implementation: repeated RAPTOR search at every minute in a departure time window

More reproducible spatial analysis results across similar graphs, thanks to more consistent splitting of streets etc.

Sigmoidal accessibility metric rolloff (rather than hard-edged cutoff)

Correction of equirectangular projection used in spatial analysis

Improved, simplified, deterministic linking of stops into the street network

0.16.0 (2015-05-07)

Several improvements to OSM tag based traversal permissions

Scripting documentation

Accept TIFF files whose names end in .tiff not .tif

Store distances (not times) in Analyst Samples to allow variable walk speed

Fixed bug in graph auto-scanning

Fixed client-side bug in first and last itinerary buttons

OTP startup scripts no longer use wildcards

Transit, bike rental, and parking linking done in one module

Elevation tiles for the US can be fetched from Amazon S3

Bumped language level to Java 8 (lambda functions, method references, collection streams)

0.15.0 (2015-04-14)

Fare module for Seattle

JSON fare module and OSM street naming configuration

Significant improvements to speed and result quality of Profile Routing

Support for added and modified GTFS-RT trips (thanks Jaap Koelewijn of DAT Mobility and Plannerstack)

Detailed edge lists in profile routing responses (for Transitive.js)

Support for multiple access modes including bike rental in profile routing

Fixes to graph reloading via web API

Improved comments in code and documentation of PointSets

Pulled MapDB GTFS loader out into a separate repo

Working artifact version was 0.15.0-SNAPSHOT instead of 1.0.0-SNAPSHOT (anticipating frequent point releases)

0.14.0 (2015-03-28)

JSON configuration of graph building and routers

Began moving documentation (including this changelog) into the OTP repo and rewriting it page by page. It is built statically from Markdown using mkdocs and published on readthedocs.

Street edge lists and bike rental station IDs in profile routing results (allows better rendering)

Improved correctness of profile routing

Qualified modes including rented bikes work in profile routing

Simplification of qualified mode sets

Elevation models are loaded from TIFFs in graph directory

Tiles for differences between TimeSurfaces

Restructured relationship between Routers and Graphs

Various changes enabling use of Analyst features in a cluster computing environment.

Removed several single-implementation interfaces, factories, services and other superfluous abstractions

Various client fixes related to the transit index API

Revised nearby stops logic and transfer generation to eliminate useless transfer edges

New Index API endpoints for geometries, transfers etc.

Isochrone generation fixes

Default mode of operation is now “long distance mode”

Process for finding alternative routes is now based on banning trips and retrying, while reusing the heuristic

Optimization objective functions are swappable, and have been simplified and corrected

All client Javascript librariess are now pulled from a CDN

Dutch BAG and French BANO geocoders

Bus to street matching improvements

Complete MapDB based GTFS and OSM loader libraries (will become separate projects, not yet connected to OTP graph builder)

API documentation generation working again

Disable some time consuming graph building steps by default

Finnish and Swedish translations

Subway-specific JSON configuration options (street to platform time)

Realtime fetch / streaming configurable via JSON

Stairs reluctance is much higher when carrying a bike

Graph visualizer routing progress animates when a search is triggered via the web API

Assume WGS84 (spherical distance calculations) everywhere

Removed custom motor vehicle (which was unmaintained and not documented)

Ability to poll for bike rental locations only once at startup

Stoptimes are fetched for a specific service day in index API

Bicycle triangle support in profile routing

Proper handling of multiple access modes with different speeds in profile routing

Command line option to output OTP's version

0.13.0 (2014-12-05)

Detect apparent errors in GTFS interlining

Long distance mode: use a pure weight-based state comparison, and use trip-banning retrying logic to get multiple paths. This compromises correctness somewhat but brings search times back within reason for large regional graphs. Also, we create significantly less SimpleTransfers.

Progress on GTFS reading and writing library (not yet used by OTP).

Bug fixes for tiny street edges, time zones.

Deployment of artifacts to maven.conveyal.com via S3.

Handle park and ride lots that have roads running through them, but don't share nodes with those roads.

0.12.1 (2014-11-17)

Fixed threading problem caused by graph visualization instrumentation #1611

Fixed 'unconnected areas' infinite loop #1605

0.12.0 (2014-11-11)

Graph building from zipball of data sent over the wire

OTP-specific GTFS loader library with error checking and recovery

Bike and car park and ride improvements

Stable hash codes for stop patterns and trips

Bicycle safety and wheelchair access tile generators

Newer versions of Grizzly, Jackson, and Enunciate (documentation generation now works)

Redesigned HashGrid spatial index

Significant reduction in graph size in memory and on disk

Improved internationalization

Ability to pause and step search in graph visualizer

Additional graph visualizer modes for spotting overbranching

Movement toward 1.0 web services API

Kiss and Ride

Complete removal of Spring

Complete removal of Lombok

CORS replaces JSONP

Pointset classes for dealing with one-to-many calculations and accessibility calculations

Experimental "Profile routing" which enumerates reasonable route combinations over a time range rather than exact itineraries

Single-module Maven build (complete elimination of submodules)

Alternate Gradle build script

full internationalization of the map-based web client

basic Lucene-based built-in geocoder

0.11.0 (2014-03-24)

Built-in HTTP server layer, making it possible to distribute OTP as a standalone JAR

"Long-distance" mode for large graphs, including bidirectional goal direction heuristic.

Simplified Maven project structure with less submodules

GTFS-RT trip update support, including streaming incremental data, which directly affects route optimization

0.10.0 (2014-03-18)

This release was made to consolidate all the development that had occurred with a 0.9.x-SNAPSHOT Maven version. The changes were very significant and it was not appropriate to tag them as a minor bugfix release after the 0.9 tag. Though this release was performed at the same time as 0.11.0, it represents a much earlier stage in the development of OTP.

0.7.0 (2012-04-29)

Bike rental support (thanks Laurent Grégoire)

Realtime bike rental availability feed support

Updated to new version of One Bus Away GTFS/CSV, fixing timezone and string interning issues (thanks Brian Ferris)

Bugfixes in area routing, OSM loading, nonexistant NED tiles, route short names

Dutch and French language updates

Catch negative edge weights due to broken GTFS

Significant (10-20%) speedup by moving a field into StateData (thanks Laurent Grégoire)

0.6.0 (2012-04-25)

area routing

more lenient parsing of times

new directions icon set with SVG sources (thanks Laurent G)

0.5.4 (2012-04-06)

catch 0 divisors in NED builder, preventing NaN propagation to edge lengths

avoid repeated insertion of edges into edge lists, which are now threadsafe edge sets

identity equality for edges

bounding box check in UnifiedCoverage (speed up NED loading)

Dutch API messages

elevation override fix

less verbose graph builder (be sure to check graphbuilder annotation summary)

replacement streets given names

geocoder bug fix (thanks Laurent Gregoire)

git commit IDs included in MavenVersion, allowing clearer OTP/Graph version mismatch warnings

fix problems with immediate reboarding and unexpected edges in itinerary builder

favicon (thanks Joel Haasnoot)

Legs in API response have TripId (for realtime information)

Polish locale (thanks Łukasz Witkowski)

transfers.txt can define station paths, entry costs for stations

allow loading a base graph into graphbuilder instead of starting from scratch

0.5.3 (2012-03-23)

GTFS loader now loads feeds one-at-a-time, allowing per-feed configuration

half-written graph files are now deleted on graph build error

DST issue OTP-side fixes, tests adjusted to use timezones

updated French translation

fixed problem with loop ways in OSM

graph coherency checking

improved OSM floor number handling

handle units in ele tags

ferry icons (thanks Joel Haasnoot)

mapbox streets tile layer is now the default

complete Dutch translation

0.5.2 (2012-03-20)

hop speed/distance checks, duplicate shape point filtering, etc.

0.5.1 (2012-03-16)

more transit index features

default agencyIDs now determined on a per-feed basis

fixed fare overflow problem

fixed bug in loop road turn conversion

additional graphbuilder warnings and annotations

fixed a batch of bugs found by fixbugs

0.5.0 (2012-03-09)

stop codes, zones, and agency names in planner responses

encapsulation of edge list modifications

expanded edge and vertex type hierarchy

use mapquest OSM server by default

Turkish locale (thanks Hasan Tayyar Beşik)

German and Italian locales (thanks Gerardo Carrieri)

bookmarkable trip URLs (thanks Matt Conway)

elevator and OSM level support (thanks Matt Conway)

BART/Muni fare service

release and javadoc/apidoc publishing automation

graph versioning based on Maven artifact version

API for browsing graph internals

improved stop linking

optional island removal graphbuilder step

and of course, lots of bugfixes

0.4.4 (2012-02-06)

Release in anticipation of upcoming merges.