Travel::Status::DE::IRIS 1.93 - Fri Dec 22 2023

    * Update stations list

Travel::Status::DE::IRIS 1.92 - Tue Dec 12 2023

    * Update meta database (accidentally omitted in 1.91)

Travel::Status::DE::IRIS 1.91 - Sun Dec 10 2023

    * Update stations list. Frohes neues Fahrplanjahr.

Travel::Status::DE::IRIS 1.90 - Sun Sep 17 2023

    * Update stations list
    * Result: weaken (circular) wing references
    * Result: include arrival_wings departure_wings replaced_by replacement_for
      in TO_JSON

Travel::Status::DE::IRIS 1.89 - Sat Aug 19 2023

    * Update stations list

Travel::Status::DE::IRIS 1.88 - Sat Aug 05 2023

    * Update stations list

Travel::Status::DE::IRIS 1.87 - Sun Jul 09 2023

    * Update stations list

Travel::Status::DE::IRIS 1.86 - Sun Jun 04 2023

    * Update stations list

Travel::Status::DE::IRIS 1.85 - Mon May 29 2023

    * Update stations list

Travel::Status::DE::IRIS 1.84 - Sun Apr 30 2023

    * Update stations list
    * Add QoS code 78

Travel::Status::DE::IRIS 1.83 - Thu Apr 13 2023

    * Update stations list

Travel::Status::DE::IRIS 1.82 - Mon Mar 13 2023

    * Add delay code 81

Travel::Status::DE::IRIS 1.81 - Thu Jan 05 2023

    * Update stations list

Travel::Status::DE::IRIS 1.80 - Wed Dec 26 2022

    * Update stations list
    * Fix MANIFEST (broken in 1.79)

Travel::Status::DE::IRIS 1.79 - Wed Dec 26 2022

    * Stations: Further geoocordinate fixes for Dutch stations.

Travel::Status::DE::IRIS 1.78 - Wed Dec 21 2022

    * Stations: Fix geocoordinates for a variety of Dutch stations.
      In some cases, they were off by several hundred kilometers.

Travel::Status::DE::IRIS 1.77 - Mon Dec 12 2022

    * Handle "Betriebsstelle nicht bekannt" in routes.
    * Update station list

Travel::Status::DE::IRIS 1.76 - Sun Dec 11 2022

    * Improve handling of stations that are not yet present in IRIS
      ("Betriebsstelle nicht bekannt 1234567")
    * Update station list

Travel::Status::DE::IRIS 1.75 - Sun Dec 04 2022

    * Update station list
    * Note that station names are no longer considered unique.
      get_stations() and the get_station_by_... set of functions may return
      multiple entries with the same name, but different DS100 and EVA IDs.
      For now, get_station_by_name() retains its behaviour of only returning a
      single match if the name matches exactly -- for multiple stations with
      the same name, it returns the one with the lowest EVA number.
      get_station_by_name() return value and semantics may change in a future
      major release.

Travel::Status::DE::IRIS 1.74 - Tue Nov 22 2022

    * Stations: Use GIS::Distance, as documented. Release 1.73 accidentally
      used Geo::Distance in the bundled Stations.pm file instead.

Travel::Status::DE::IRIS 1.73 - Sat Nov 19 2022

    * Result: Add arrival_hidden and departure_hidden accessors

Travel::Status::DE::IRIS 1.72 - Mon Oct 03 2022

    * Update IRIS station list

Travel::Status::DE::IRIS 1.71 - Sun Oct 02 2022

    * Update IRIS station list

Travel::Status::DE::IRIS 1.70 - Sat Sep 03 2022

    * Update IRIS station list

Travel::Status::DE::IRIS 1.69 - Tue Aug 02 2022

    * Repair Travel::Status::DE::IRIS::Stations module
      (broken in Release 1.68)

Travel::Status::DE::IRIS 1.68 - Mon Aug 01 2022

    * Update IRIS station list

Travel::Status::DE::IRIS 1.67 - Tue Jul 26 2022

    * IRIS->new_p: Fix bug in related_stations accessor
    * Update IRIS station list

Travel::Status::DE::IRIS 1.66 - Sun Jun 26 2022

    * Treat Essen-Dellwig and Essen-Dellwig Ost as separate stations.
      Although they are grouped in the IRIS backend, they are distinct
      stations. Both have platforms 1 & 2, so grouping them leads to confusion.
    * Update IRIS station list

Travel::Status::DE::IRIS 1.65 - Sun Apr 03 2022

    * Update IRIS station list

Travel::Status::DE::IRIS 1.64 - Sun Jan 30 2022

    * Add experimental "new_p" constructor for non-blocking operation with
      Mojo::Promise and Mojo::UserAgent.

Travel::Status::DE::IRIS 1.63 - Mon Jan 24 2022

    * update station database

Travel::Status::DE::IRIS 1.62 - Sun Dec 12 2021

    * import station name changes and removals from Winterfahrplan 2022

Travel::Status::DE::IRIS 1.61 - Sat Oct 23 2021

    * Switch to GIS::Distance(::Fast), as Geo::Distance is deprecated and
      Geo::Distance::XS is no longer available

Travel::Status::DE::IRIS 1.60 - Sun Sep 12 2021

    * Update IRIS station list; remove stations which no longer receive train
      services

Travel::Status::DE::IRIS 1.59 - Sat Aug 14 2021

    * Stations: get_station, get_station_by_name: Return immediately if
      requested station is undef or empty
    * Add stations Menningen-Leitishofen, Meßkirch, Sauldorf, Alvesta station,
      Lund Central, and Stockholm Central

Travel::Status::DE::IRIS 1.58 - Mon Jul 19 2021

    * Result->has_realtime: Fix cancellations not being reported as realtime
    * db-iris: Annotate arrival/departure times which should have realtime
      data, but don't, with a question mark.

Travel::Status::DE::IRIS 1.57 - Sun Jul 18 2021

    * Result: Add arrival_has_realtime, departure_has_realtime, has_realtime
      accessors
    * Result->delay_messages: Leave out superseded messages (right now, the
      only case is "Defekt am Zug" -> "Behobener Defekt am Zug")
    * Stations: Add swiss and austrian stations reachable from Waldshut and
      Lindau

Travel::Status::DE::IRIS 1.56 - Sun Jun 20 2021

    * Update IRIS station list. Adds support for lots of
      Albtal-Verkehrs-Gesellschaft stations around Karlsruhe
    * Update some delay/qos messages ahead of a DB-wide change planned for
      October 2021

Travel::Status::DE::IRIS 1.55 - Tue May 04 2021

    * Fix transfer trains getting lost when requested from a related station.
      Notable offender: "Berlin Südkreuz" lacked S 41 / S42 (ring line
      from Südkreuz (S) to Südkreuz (S) with transfer to/from the next/previous
      incarnation), as it referenced "Berlin Südkreuz (S)". "Berlin Südkreuz (S)"
      itself worked fine.


Travel::Status::DE::IRIS 1.54 - Sat Jan 09 2021

    * Add stations DKP, DRBS, DSBG, KWHD, NCBD, TENS, XLHW

Travel::Status::DE::IRIS 1.53 - Sun Dec 13 2020

    * import station name changes and station removals from Winterfahrplan
      2021

Travel::Status::DE::IRIS 1.52 - Sun Nov 22 2020

    * get_station_by_name: Fix crash (unhandled exception) when the station
      name is an invalid regular expression

Travel::Status::DE::IRIS 1.51 - Thu Oct 22 2020

    * Add BER airport stations
    * Rename Schönefeld airport to BER Terminal 5

Travel::Status::DE::IRIS 1.50 - Thu Oct 15 2020

    * Add station Brunnen(Oberbay)
    * Incorporate station name and eva number changes from DB IRIS
      (affects nine stations)
    * Add geocoordinates to 17 stations previously lacking those

Travel::Status::DE::IRIS 1.49 - Sat Oct 03 2020

    * Add station Jaderberg

Travel::Status::DE::IRIS 1.48 - Sat Aug 22 2020

    * Add stations Neuruppin Seedamm (temporary, teardown expected Dec 2020),
      Amriswil, and Baar(CH)

Travel::Status::DE::IRIS 1.47 - Sat Jun 06 2020

    * Work around (probably incorrect) IRIS coupling of
      Norddeich and Norddeich Mole stations

Travel::Status::DE::IRIS 1.46 - Mon May 04 2020

    * Document LWP::Protocol::https dependency
    * Discourage building with Geo::Distance 0.21.
      Geo::Distance 0.21, released on 7 Mar 2019, is the only release using
      GIS::Distance's distance_km method -- which was removed on 9 Mar 2019
      in GIS::Distance 0.14

Travel::Status::DE::IRIS 1.45 - Wed Mar 18 2020

    * Provide properly versioned Stations.pm file

Travel::Status::DE::IRIS 1.44 - Wed Mar 18 2020

    * Add delay code 67 (Behördliche Anordnung). Patch by @marudor

Travel::Status::DE::IRIS 1.43 - Tue Jan 21 2020

    * db-iris: Correctly set cache expiry. In 1.42, backend replies were cached
      indefinitely due to a typo

Travel::Status::DE::IRIS 1.42 - Wed Jan 15 2020

    * Result: Fix TO_JSON method
    * db-iris: Cache backend results by default
    * db-iris: New options: --json and --no-cache

Travel::Status::DE::IRIS 1.41 - Sun Dec 29 2019

    * Result: Add "wing_of" accessor
    * Follow name and DS100 change of Freiburg West (RFW) to
      Freiburg-Landwasser (RFLW)
    * Add more stations

Travel::Status::DE::IRIS 1.40 - Tue Dec 25 2019

    * Incorporate the last few years' worth of station name changes

Travel::Status::DE::IRIS 1.39 - Tue Dec 17 2019

    * Add missing geocoordinates to nearly all remaining stations
      (thanks to @marudor)
    * Add stations opened this year (thanks to @marudor)

Travel::Status::DE::IRIS 1.38 - Sun Dec 15 2019

    * Add geocoordinates for belgian stations
      (patch by https://github.com/Knuspel)
    * New IRIS option: "keep_transfers"

Travel::Status::DE::IRIS 1.37 - Sat Dec 07 2019

    * Add geocoordinates for french stations served by Thalys/TGV
      (patch by Florian Wurzel)

Travel::Status::DE::IRIS 1.36 - Fri Nov 22 2019

    * Update stations list, prune duplicates and outdated entries
      (251 additions, 155 deletions). Incorporates patches by Moritz Schlarb
      and https://github.com/Knuspel -- Thanks!
    * Update documentation to reflect that EVA IDs used by DB IRIS are not
      the same as UIC station IDs (they just happen to be identical in 99% of
      cases)
    * Stations are now stored in share/stations.json. See README.md for
      station management hints.

Travel::Status::DE::IRIS 1.35 - Sun Nov 17 2019

    * Add additional dutch and austrian stations
      (thanks to https://github.com/Knuspel)
    * Add geocoordinates for several of those
      (thanks to https://github.com/Knuspel)

Travel::Status::DE::IRIS 1.34 - Sat Oct 19 2019

    * Improve request speed when using with_related by ignoring
      subway stations which do not have results anyways (e.g. in Hannover Hbf)
    * Do not forward unexpected IRIS message codes (ID ≥ 100) to the user
    * IRIS: Add ->related_stations accessor

Travel::Status::DE::IRIS 1.33 - Sat Oct 05 2019

    * Fix $result->route_pre / route_post accessors providing bogus data
      when all previous/following stops are cancelled. They used to return
      sched_route_pre / sched_route_post instead of an empty list in this case.

Travel::Status::DE::IRIS 1.32 - Thu Aug 22 2019

    * Travel::Status::DE::IRIS::Stations: Add geocoordinates fo some swiss
      and austrian stations

Travel::Status::DE::IRIS 1.31 - Thu Aug 08 2019

    * Travel::Status::DE::IRIS::Stations: Add EVA/UIC station numbers and use
      full names for non-german stations.

Travel::Status::DE::IRIS 1.30 - Wed Jul 17 2019

    * Result: Add ->station and ->station_uic accessors. These are useful to
      determine which station an individual train belongs to when requesting
      departures of multiple stations at once using the "with_related" option.

Travel::Status::DE::IRIS 1.29 - Tue Jul 09 2019

    * Add QoS code 72 (no info/entertainment system available)
    * Fix erroneous QoS codes 83, 91, 92

Travel::Status::DE::IRIS 1.28 - Sun Jun 23 2019

    * Add 234 stations missing from regular DB Open Data station list
    * Add delay code 14 (Technische Störung am Bahnhof)

Travel::Status::DE::IRIS 1.27 - Wed Jun 05 2019

    * Add station Berlin Zoologischer Garten (S)

Travel::Status::DE::IRIS 1.26 - Fri May 31 2019

    * Fix DS100 code for Berlin Westkreuz
    * Add station Bonn UN Campus

Travel::Status::DE::IRIS 1.25 - Mon Apr 29 2019

    * Do not ignore trains with arrival < lookahead, even if departure >=
      lookahead.
    * Add delay code 66 (flooded area)

Travel::Status::DE::IRIS 1.24 - Sat Mar 02 2019

    * Remove erroneous double entry for Düsseldorf-Bilk
    * Fix a warning when encountering unusual train types

Travel::Status::DE::IRIS 1.23 - Sat Dec 29 2018

    * Ignore apparently useless "ZOB" (central omnibus station) links at most
      main stations. This decreases the average runtime and also fixes
      some S-Bahn trains being reported twice in München Hbf.
    * Result->qos_messages: Skip superseded messages. They're still present in
      ->messages.
    * Result->route_interesting: Filter Hbf suffixes (not just "Hbf"); include
      .hl.n (czech main station).

Travel::Status::DE::IRIS 1.22 - Sun Dec 16 2018

    * Add delay code 4 (unforeseen staff shortage, thanks to Fabian Schwarz)
    * Add delay code 37 (technical failure in carriage, thanks to @marudor)

Travel::Status::DE::IRIS 1.21 - Sun Sep 09 2018

    * Fix crash when receiving invalid XML due to network issues

Travel::Status::DE::IRIS 1.20 - Mon Aug 06 2018

    * Use schedule instead of realtime data when determining whether a train
      falls within the lookahead time frame. This fixes severely delayed
      trains being ignored even if their scheduled arrival/departure is very
      soon or has already passed.

Travel::Status::DE::IRIS 1.19 - Wed Aug 01 2018

    * db-iris: Fix "-ot" ignoring arrival delay if departure is on time
    * Add delay code 12 (waiting for passengers in a ship)
    * Result->route_interesting: Include dutch and swiss central station names
    * Result: New accessors arrival_delay and departure_delay

Travel::Status::DE::IRIS 1.18 - Mon Apr 23 2018

    * Update station dataset to Open Data Haltestellenliste 2017-09

Travel::Status::DE::IRIS 1.17 - Sat Apr 14 2018

    * Fix DS100 codes for Dülmen, Stuttgart Hbf (tief), and Wolfenbüttel
    * db-iris: Support -d/--date "tomorrow"

Travel::Status::DE::IRIS 1.16 - Sat Jul 08 2017

    * Fix miscalculated delays of prematurely terminating trains
    * Lookahead and lookbehind are now interpreted with 1-minute granularity.
      Note that this also affects the default lookahead.
    * Fix floating point-related test failures on some architectures
    * New "./Build test" dependency: Test::Number::Delta

Travel::Status::DE::IRIS 1.15 - Tue Jun 06 2017

    * Performance improvements
    * Distinguish between cancelled/additional arrivals and departures
    * Travel::Status::DE::IRIS::Result: New accessors arrival_is_additional,
      arrival_is_cancelled, departure_is_additional, departure_is_cancelled
      and is_additional.
    * Travel::Status::DE::IRIS::Result: is_cancelled now only returns true
      if both arrival and departure have been cancelled.

Travel::Status::DE::IRIS 1.14 - Mon Feb 06 2017

    * IRIS->new: Add optional argument lookbehind
    * db-iris: Remove a useless HTTP request, resulting in slightly faster
               responses
    * db-iris -V / --track-via: Improve support for faraway stations

Travel::Status::DE::IRIS 1.13 - Thu Jan 26 2017

    * Fix support for line numbers, remove manual line map workaround

Travel::Status::DE::IRIS 1.12 - Fri Dec 30 2016

    * Unfortunately, line numbers are not available at the moment due to IRIS
      backend changes. Some lines in NRW have been provided with a manual line
      number mapping to remedy this.
    * Fix DS100 code for "Bielefeld Hbf"
    * Travel::Status::DE::IRIS::Stations::get_station_by_location: Fix bug in
      num_matches (parameter was silently ignored)

Travel::Status::DE::IRIS 1.11 - Tue Oct 11 2016

    * IRIS->new: Fix partially broken cache handling when using
      "with_related => 1"
    * Improve parser performance

Travel::Status::DE::IRIS 1.10 - Sat Oct 01 2016

    * Add qos code 71 ("WLAN in einzelnen Wagen nicht verfügbar")
    * Fix DS100 codes for "Geilenkirchen" and "Montabaur"
    * Travel::Status::DE::IRIS::Stations::get_station: Add support for
      UIC / EVA numbers

Travel::Status::DE::IRIS 1.09 - Mon Jun 27 2016

    * Travel::Status::DE::IRIS::Result: Fix ->classes accessor
      (returned a string instead of a list)
    * Fix DS100 codes for "Stuttgart Hbf (tief)" and "Stuttgart-Feuerbach"


Travel::Status::DE::IRIS 1.08 - Thu Jun 09 2016

    * New dependency: Geo::Distance
    * Update DS100 code list. Station names are now unabbreviated, e.g.
      "Dortmund Univeristät" instead of "Do Universität". Also, stations
      without train service are no longer included. Note that this list might
      contain errors. If you get "Request error: Station ... has no associated
      timetable" for a station which worked with previous versions, please
      submit a bug report.
    * Travel::Status::DE::IRIS::Stations now also returns international
      station number, longitude and latitutde for most stations
    * New method Travel::Status::DE::IRIS::Stations::get_station_by_location
      allows station lookup by geolocation

Travel::Status::DE::IRIS 1.07 - Sun May 01 2016

    * Fix inefficient requests for stations with with heavily cross-referenced
      related-station tags (most notable example: München Hbf)

Travel::Status::DE::IRIS 1.06 - Mon Feb 29 2016

    * Partially fix slow response time and excessive network requests for
      stations with heavily cross-referenced related-station tags (most notable
      example: München Hbf). The implementation is still slightly inefficient
      in these cases, but far better than before -- A complete fix will follow
      in the next release. Note that db-iris calls using
      -x/--exact/--no-related are not affected by this issue.

Travel::Status::DE::IRIS 1.05 - Sun Dec 20 2015

    * Update station list. It now uses data supplied by the Deutsche Bahn
      Open Data portal.
    * db-iris: New option -x / --exact / --no-related
    * IRIS->new: New options main_cache, realtime_cache and with_related
    * IRIS: Add ->station and ->related_stations accessors
    * db-iris: Include related stations in query output (for instance,
      "Köln Messe Deutz" will include "Köln Messe Deutz (tief)" and
      "Köln Messe Deutz Gl. 9-10"). Use --exact / --no-related to disable this.
    * IRIS: Same. Also, IRIS->new can now be passed Cache objects to cache
      HTTP requests for a user-defined time. This is most useful when
      building infoscreens and similar, since the scheduled and station data
      never changes and can therefore be cached to decrease network load and
      increase response time.

Travel::Status::DE::IRIS 1.04 - Thu Nov 12 2015

    * Result: Add qos code 79 ("Ohne Mehrzweckabteil")
    * db-iris: Accept UIC station codes
    * Fix warnings with recent DateTime::Format::Strptime releases
    * Improve parser speed

Travel::Status::DE::IRIS 1.03 - Tue Sep 15 2015

    * Result: Add info key 900
    * Station: Improve get_station matching quality by using the Levenshtein
      edit distance in addition to simple substring matching
    * new dependency: Text::LevenshteinXS (see README for notes about
      drop-in replacements)
    * new dependency: List::UtilsBy

Travel::Status::DE::IRIS 1.02 - Tue May 26 2015

    * Added github repo to dist metadata and the doc
    * Result: distinguish between overcrowded trains (q97) and very overcrowded
      trains (q96)
    * Result: Verify delay key 60 ("delays because of storm")
    * Result: Add qos key 70 ("no wifi" -- not entirely sure yet)

Travel::Status::DE::IRIS 1.01 - Fri May 15 2015

    * IRIS->new: Fix default lwp_options value (was documented, but not used)
    * Result->route_interesting: Also consider airports
    * Stations: Update DS100 code list. Fixes 9 stations in Köln, Düsseldorf
      and Wuppertal which had a wrong code/name combination assigned due to
      a parser error

Travel::Status::DE::IRIS 1.00 - Fri May 01 2015

    * IRIS->new: Use lwp_options to explicitly pass arguments to the
      LWP::UserAgent constructor. Unknown arguments are now longer
      implicitly passed on
    * db-iris: Improve output format for wing trains

Travel::Status::DE::IRIS 0.10 - Tue Apr 30 2015

    * Result: Fix deep recursion error in TO_JSON

Travel::Status::DE::IRIS 0.09 - Tue Apr 28 2015

    * Result: Add arrival_wings, departure_wings and is_wing accessors
      (a wing train is coupled to the respective departure, but has its own ID)
    * db-iris: Indicate wings in output
    * Result: Remove train_no_transfer accessor (was based on erroneous
      assumptions)
    * Result: Add is_unscheduled, replaced_by and replacement_for accessors
    * db-iris: Add -oR to show replacement information

Travel::Status::DE::IRIS 0.08 - Thu Mar 12 2015

    * Clarify Result->train_id documentation
    * Add IRIS delay/qos keys 13, 60, 75, 76

Travel::Status::DE::IRIS 0.07 - Fri Jan 09 2015

    * Fix a crash related to unscheduled additional stops in a train's route
    * Improve Travel::Status::DE::IRIS::Stations matching
    * Add IRIS delay/qos keys 56, 59, 61, 65, 73, 74, 77

Travel::Status::DE::IRIS 0.06 - Mon Nov 03 2014

    * New non-core module dependency: List::Compare
    * Add support for canceled and additional stops
    * db-iris: Add options -oa and -oc
    * Result: Add accessors additional_stops and canceled_stops
    * Improve support for delayed trains
    * Support additional IRIS delay messages

Travel::Status::DE::IRIS 0.05 - Thu Oct 16 2014

    * Support additional IRIS delay messages

Travel::Status::DE::IRIS 0.04 - Sat Jun 28 2014

    * Fix --track-via <stop> not matching trains changing their ID at <stop>
    * Add new (not entirely verified) IRIS delay and qos messages
    * IRIS: add serializable option. Use this if you intend to serialize
      the list returned by ->results
    * Do not errour out if only partial data is available, show partial data
      and a warning instead (closes #4)
    * Add several qos and delay messages

Travel::Status::DE::IRIS 0.03 - Fri Feb 14 2014

    * IRIS / db-iris: Add lookahead option
    * db-iris: Fix --via not matching destination of trains with incomplete
      route data
    * Detect and merge duplicate results caused by train ID changes
    * Result: Provide realtime data in ->platform, add ->sched_platform
      accessor
    * db-iris: indicate platform changes with an exclamation mark

Travel::Status::DE::IRIS 0.02 - Mon Feb 03 2014

    * Fix warnings when encountering unplanned (fchg-only) trains without
      arrival or departure platform
    * db-iris: add -V / --track-via option to display departure at start
      and expected arrival at a destination station
    * db-iris: Add -r / --realtime option to compute times using delay
      data
    * Result: Remove duplicates in qos_messages and delay_messages,
      return all messages in reverse order (newest first)

Travel::Status::DE::IRIS 0.01 - Fri Jan 24 2014

    * Initial release. Experimental, API may change without notice