<h1>Changelog</h1>

<div class="row">
	<div class="col s12 m1 l1">
		2.5
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Verbesserung">star</i>
			Übersichtlichere Abfahrstafel mit Kennzeichnung der verschiedenen
			Arten von Verkehrsmitteln. Patch von Cass Dingenskirchen, vielen
			Dank!
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		2.4
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Verbesserung">star</i>
			Berücksichtigung verwandter Stationen (d.h. Stationen, die zwar
			gleich heißen, aber intern unterschiedliche IDs haben) bei
			Checkin-Vorschlägen für Nahverkehrsfahrten. Vorschläge für
			Zugverbindungen gibt es aus dem Nahverkehrsmenü in vielen Fällen
			ebenfalls, andersherum meist noch nicht. Die restlichen Feinheiten
			dieses Themenkomplexes werden im Laufe der Zeit ausgebügelt.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		2.3
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Checkin-Vorschläge für Nahverkehrsfahrten. Die manuelle Angabe von
			Nahverkehrszielen für Anschlusshinweise entfällt damit.  Bei
			größeren oder aus anderen Gründen im Backend komplexen Stationen
			werden derzeit teilweise nicht alle möglichen Verbindungen
			angegeben – dieser Aspekt wird in einem späteren Release
			verbessert. Eine von der Auswahl von Nah- vs. Fernverkehr
			unabhängige Liste mit Verbindungsvorschlägen folgt ebenfalls
			später.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		2.2
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Hinweis für fehlende Echtzeitdaten (→ nur Fahrplandaten verfügbar)
			bei der aktuellen Reise.
		</p>
		<p>
			<i class="material-icons left" aria-label="Bugfix">build</i>
			Korrekte Angabe der Unterwegshalte auch bei fehlenden Echtzeitdaten.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		2.1
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Vorschlag geeigneter Stationen bei Eingabe eines uneindeutigen
			Namens auf der Startseite.
		</p>
		<p>
			<i class="material-icons left" aria-label="Bugfix">build</i>
			Fahrten, die vor Mitternacht begannen, zeigen nun auch nach
			Mitternacht korrekte Echtzeitdaten an und gehen nicht fälschlich
			von 24 Stunden Verspätung aus.
		</p>
		<p>
			<i class="material-icons left" aria-label="Bugfix">build</i>
			Vergangene Fahrten und letzte Fahrtziele werden nun anhand der
			Abfahrtszeit und nicht anhand der Nummer des Eintrags ausgewählt.
			Somit können manuelle Einträge für weit in der Vergangenheit
			liegende Fahrten keine vor kurzem geloggten Fahrten mehr verdecken.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		2.0
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Checkins in Nahverkehrsmittel (Bus und Bahn) und Züge außerhalb
			des DB-Netzes per HAFAS-Backend. Die verfügbaren Backends werden
			per Icon Identifiziert: <i class="material-icons">train</i> IRIS
			und <i class="material-icons">directions</i> HAFAS.
		</p>
		<p>
			<i class="material-icons left" aria-label="Ankündigung">announcement</i>
			Aktuell beschränkt die HAFAS-Anbindung auf Stationssuche, Checkins
			und Träwelling-Synchronisierung.
			Eine Einbindung in die Verbindungssuche und das manuelle Nachtragen
			von HAFAS-Fahrten folgen zu einem späteren Zeitpunkt.
		</p>
		<p>
			<i class="material-icons left" aria-label="Nicht Rückwärtskompatibel">warning</i>
			Stationsangaben (z.B. auf der Hauptseite, beim Import oder in der
			API) müssen nun genau mit der gewünschten Station übereinstimmen.
			Unbekannte Stationen werden an das HAFAS weitergereicht, welches
			meist weniger Details bereitstellt als das IRIS.
			Fuzzy Matching wird nicht mehr in der bisherigen Form unterstützt.
			Sofern eine Station sowohl via IRIS als auch via HAFAS bekannt ist,
			wird die IRIS-Version bevorzugt.
		</p>
		<p>
			<i class="material-icons left" aria-label="Ankündigung">warning</i>
			Das ds100-Feld in API und Web Hook ist nun optional und bei
			HAFAS-Checkins null.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.34
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Änderung">build</i>
			Die Verknüpfung von travelynx zu Träwelling nutzt nun OAuth2
			anstelle eines passwortbasierten Logins. Einerseits ist OAuth2 eine
			bedeutend elegantere Lösung; andererseits wird die Träwelling-API
			für Passwortlogin bald abgeschaltet.  Für bestehende
			Träwelling-Verknüpfungen ergeben sich keine Veränderungen.
			Neue Verknüpfungen sind weiterhin möglich und benötigen nun keine
			Angabe von E-Mail und Passwort mehr. Selbst
			gehostete travelynx-Instanzen, die die Träwelling-Verknüpfung
			anbieten möchten, müssen ab soforn bei Träwelling eine eigene <a
			href="https://traewelling.de/settings/applications">Anwendung
			anlegen</a> und in travelynx konfigurieren. Bitte auch die neue
			Dependency Mojolicious::Plugin::OAuth2 im cpanfile beachten.
		</p>
		<p>
			<i class="material-icons left" aria-label="Ankündigung">announcement</i>
			Derzeit unterstützt travelynx neben Bahnhofsnamen auch EVA-IDs und
			DS100/Ril100-Codes. In Zukunft werden in einzelnen Fällen nur noch
			Bahnhofsnamen und EVA-IDs unterstützt.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.33
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Synchronisierung der Checkin-Sichtbarkeit von travelynx zu
			Träwelling (Patch von networkException).
		</p>
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			<a href="/timeline/in-transit">Timeline-Ansicht</a> mit aktuellen
			Checkins gefolgter Accounts. Die Timeline wird von der Homepage
			verlinkt, wenn passende Checkins vorliegen.
		</p>
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Angabe von passenden Checkins gefolgter Accounts in der
			Abfahrtstafel (im Sinne von: „der folgende Account ist mit auch mit
			diesem Zug unterwegs“).
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.32
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Angabe von Kommentaren und Sichtbarkeit in der JSON-API
		</p>
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Editierbare Beschreibung und optionale Links auf der Profilseite.
			Hier können beispielsweise Träwelling oder andere Social
			Media-Accounts eingetragen werden.
		</p>
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Optional: folgen von Accounts. Die Sichtbarkeit von Checkins und vergangenen
			Fahrten kann somit auf Follower eingeschränkt werden. Eine
			Übersichtsseite mit aktuellen Checkins gefolgter Accounts (ähnlich
			zur Timeline im Fediverse) folgt in einem späteren Release.<br/>
			Für jeden Account kann individuell eingestellt werden, ob Accounts
			ihm folgen können, ob Folge-Anfragen zunächst angenommen werden
			müssen oder ob Folgen grundszätzlich nicht möglich ist.
			Standardmäßig ist dieses Feature inaktiv: Folge(anfrage)n müssen
			zunächst in den Einstellung aktiviert werden.  Falls notwendig,
			können einzelne Accounts blockiert und dadurch am Folgen
			und am Stellen von Folge-Anfragen gehindert werden.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.31
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Vorhalten der Echtzeitdaten von Unterwegshalten.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.30
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Individuelle Sichtbarkeit für jede Fahrt. Optional können Fahrten
			und Check-Ins nur mit einem explizit geteilten Link für andere
			Personen sichtbar sein.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.29
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Jahresrückblick mit erweiterten Statistiken.
			Der Rückblick ist jeweils ab dem 31.12. verfügbar.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.28
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Bugfix">build</i>
			Behandlung von nicht mehr im IRIS eingepflegten Stationen bei vergangenen Reisen.
			Bislang hatten diese zu unvollständigen Reisestatistiken geführt.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.27
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Angabe von „Kein Zustieg“ (Abfahrtstafel) bzw. „Kein Ausstieg“ (Route) durch eingeklammerte Uhrzeiten „(HH:MM)“.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.26
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Angabe der erwarteten Zugauslastung bei Unterwegshalten und Anschlussvorschlägen, sofern verfügbar.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.25
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Interne Änderungen">star</i>
			Umstellung der Träwelling-Anbindung auf Träwelling-API v1, da v0
			sukzessive abgeschaltet wird.  API v1 ist noch nicht stabil.
		</p>
		<p>
			<i class="material-icons left" aria-label="Interne Änderungen">star</i>
			Nutzung eines internen HAFAS-mgate.exe-Clients anstelle von transport.rest.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.24
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Angabe der geschätzten Ankunft am Ziel bei Checkinvorschlägen.
		</p>
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Anzeige von Anschlussmöglichkeiten an den Nahverkehr (Bus und
			Stadtbahn) unterhalb der Anschlusszüge. Da travelynx derzeit keine
			Checkins in Nahverkehrsmittel unterstützt, muss die Liste relevanter
			Ziele händisch unter Account → Verbindungen gepflegt werden. Sofern
			eine zukünftige travelynx-Version Nahverkehrs-Checkins unterstützt,
			entfällt diese Liste.
		</p>
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Optionale Verlinkung externer Dienste (z.B. DBF oder bahn.expert)
			in der eigenen Checkin-Ansicht. Somit können von dort aus alle
			Abfahrten an einer Ziel- oder Unterwegsstation eingesehen werden.
			Dieses Feature ist standardmäßig deaktiviert und kann über
			Account → Externe Dienste konfiguriert werden.
		</p>
		<p>
			<i class="material-icons left" aria-label="Verbesserung">star</i>
			Checkinvorschläge für Anschlussverbindungen schauen weiter in die
			Zukunft und enthalten weniger nutzlose Vorschläge (z.B. Rückfahrt zur
			Ursprungsstation oder Weiterfahrt zu einem späteren Ziel mit dem
			Folgetakt).
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.23
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Optionale Links zu externen Abfahrtsmonitoren in der Halteliste des
			aktuell ausgewählten Zugs. Die Abfahrtstafelseite kann bei den
			Account-Einstellungen konfiguriert werden.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.22
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Verbesserung">star</i>
			Verbesserte Verknüpfung und Synchronisierung mit
			<a href="https://traewelling.de">Träwelling</a>.
		</p>
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Inaktive Accounts erhalten nach einem Jahr eine E-Mail, die auf die
			in vier Wochen folgende Löschung hinweist. Betreiber:innen einer
			selbstgehosteten travelynx-Instanz müssen hierzu <i>base_url</i>
			in travelynx.conf setzen (siehe examples/travelynx.conf).
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.21
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Annotation von Fahrten mit fehlenden Echtzeitdaten in der
			Abfahrtstafel. Derzeit wird das Vorhandensein von Echtzeitdaten
			noch nicht im Fahrtenbuch gespeichert.
		</p>
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Unterstützung von Maßnahmen zum Schutz vor E-Mail-Spam über das
			Registrierungsformular.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.20
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Accountnamen können jetzt in den Einstellungen geändert werden.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.19
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Hinweis bei knapper Umstiegszeit zu Anschlussverbindungen.
		</p>
		<p>
			<i class="material-icons left" aria-label="Verbesserung">star</i>
			Übersichtlichere Navigation in der Fahrtenliste / Statistikansicht.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.18
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Autmatische Checkin-Synchronisierung mit
			<a href="https://traewelling.de">Träwelling</a>. Checkins können
			entweder von Träwelling zu travelynx oder von travelynx zu Träwelling
			übernommen werden. Das Feature läuft vorerst als Public Beta.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.17
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Öffentliches Profil. Hier können auf Wunsch der aktuelle Status
			sowie die letzten zehn Zugfahrten angezeigt werden. Diese sind
			wahlweise gar nicht, nur mit Anmeldung oder öffentlich sichtbar.
			Zugfahrten, die älter als vier Wochen sind, können komplett verborgen
			werden.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.16
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			Auswertung von Zugfahrten von/nach bestimmten Stationen
			aufgeschlüsselt nach Jahr und Monat. Diese Daten können für die
			Angaben zur Pendlerpauschale bei der Steuererklärung nützlich sein.
		</p>
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i>
			CSV-Export aller Fahrten.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.15
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left" aria-label="Neues Feature">add</i> Die
			über „Teilen“ verfügbare Reisestatus-Seite kann nun auch Details
			beendeter Zugfahrten anzeigen, wenn die entsprechende Option in den <a
			href="/account/privacy">Privatsphäre-Einstellungen</a> aktiv ist.
		</p>
		<p>
			<i class="material-icons left" aria-label="Bugfix">build</i>
			Behandlung von Haltausfällen während der Reise bzw. nach dem Checkin.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.14
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> API-Endpunkt zum Import
			nicht in travelynx getrackter Zugfahrten.
		</p>
		<p>
			<i class="material-icons left">add</i> Status-API: Angabe der
			Unterwegshalte zwischen Start und Ziel.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.13
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> API-Endpunkt zum Einchecken in
			Züge, aktualisieren der Zielwahl und Zurücknehmen des letzten
			Checkins.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.12
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> Unterstützung der im
			Fahrplanjahr 2020 hinzugekommenen und geänderten Stationen. Start
			und Ziel von mit travelynx geloggten Fahrten sind nun vom
			Stationsnamen unabhängig (d.h. Namensänderungen werden automatisch
			übernommen).
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.11
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> Optionale Kommentare für
			Zugfahrten. Der Eintrag zur aktuellen Zugfahrt kann im öffentlichen
			Nutzerstatus angezeigt werden, wenn die entsprechende Option in
			den <a href="/account/privacy">Privatsphäre-Einstellungen</a>
			aktiv ist.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.10
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> Kartographische Darstellung
			vergangener Zugfahrten auf der History-Seite.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.9
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> Generierung vorausgefüllter
			Fahrgastrechteformulare bei Zugausfällen und Verspätungen ab 60
			Minuten.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.8
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> Angabe der Ausstiegsseite für
			einzelne Züge und Zielbahnhöfe.
		</p>
		<p>
			<i class="material-icons left">add</i> Angabe der Wagenreihung vor der
			Abfahrt. Derzeit sind Wagenreihungen nur für Fernverkehrszüge
			verfügbar.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.7
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> Ankunft am nächtsten
			Unterwegshalt im Reisestatus.
		</p>
		<p>
			<i class="material-icons left">star</i> Die Ankunftszeit am Ziel ist
			jetzt auch bei langen Fahrten sofort bekannt.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.6
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> Anzeige von häufig genutzten
			Verbindungen in der Abfahrtstafel. Wie bei den Anschlusszügen kann
			darüber direkt (inkl. Vorauswahl des Ziels) eingecheckt werden.
		</p>
		<p>
			<i class="material-icons left">add</i> Konfigurationsseite, um die
			Heuristik für Anschlusszüge und häufige Verbindungen zu deaktivieren.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.5
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> Anzeige von Anschlusszügen kurz
			vor Erreichen der aktuellen Zielstation. Nach Ankunft kann darüber
			direkt (inkl. Vorauswahl des neuen Ziels) eingecheckt werden. Die
			Heuristik berücksichtigt derzeit alle Stationen, die in den letzten
			sechs Wochen mehr als zweimal vom jeweiligen Bahnhof aus angefahren
			wurden.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.4
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> Dark Mode (Patch von
			<a href="https://twitter.com/marudor">@marudor</a>).
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.3
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> Teilen der aktuellen Zugfahrt.
				Wird derzeit nur auf Chrome (Android), Opera (Android) und
				Safari (iOS / macOS) unterstützt.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.2
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> <a href="/account/hooks">Web Hooks</a>
				an eine konfigurierbare URL bei Checkin und Checkout.
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.1
	</div>
	<div class="col s12 m11 l11">
		<p>
			<i class="material-icons left">add</i> Öffentlicher Status unter „/status/<i>name</i>“ (opt-in, muss unter <a href="/account/privacy">account/privacy</a> aktiviert werden)
		</p>
	</div>
</div>

<div class="row">
	<div class="col s12 m1 l1">
		1.0
	</div>
	<div class="col s12 m11 l11">
		<ul>
			<li>Stationswahl per Geokoordinaten</li>
			<li>Manueller Checkin und automatischer Checkout</li>
			<li>History und Statistiken</li>
			<li>API zur Statusabfrage</li>
		</ul>
	</div>
</div>
