AKTUELL: v6.8.4 · ORTSSUCHE MIT KONTEXT · 19.10.2026 ================================================================ Build: 20261019-place-context-v6-8-4. Keine Live-Installation. REPRODUZIERTE URSACHE Die öffentlich abgerufene journey.js entsprach dem v6.8.3-Paket. Bei „Berlin“ lieferte die Transitous-Suche neben Berliner Bahnhöfen gleichnamige Halte in Kolumbien, Spanien und Frankreich. Photon lieferte Berlin/Deutschland und mehrere US-Orte. Die bisherige Namenssortierung stellte exakte Schreibweisen „Berlín“/„BERLIN“ vor „Berlin Hbf“. Einheitliche Untertitel „Haltestelle / Bahnhof“ unterschlugen die Unterscheidung nach Ort und Land. Allgemeines Button-CSS machte die Liste zusätzlich optisch schwer. KORREKTUR - Gemeinsame Aufbereitung in place-results.js für Reiseplanung und Nähe-Suche. Treffer zeigen Art, vorhandenen Ort/PLZ und Land. Originalnamen bleiben erhalten. - Der erste von Photon priorisierte Stadttreffer mit passendem Namen dient als räumlicher Bezug: nahe Bahnhöfe vor weit entfernten Namensvettern. Dies ist eine Sortierheuristik, keine verbindliche Erkennung der beabsichtigten Stadt. Keine automatische Auswahl und kein harter Länder-/Koordinatenfilter. - Gleiche IDs innerhalb einer Ergebnisart werden dedupliziert. Unterschiedliche Haltestellen-IDs und entfernte gleichnamige Orte bleiben erhalten. - stopId wird nur aus tatsächlichen STOP-Treffern bzw. älteren Stop-Datensätzen übernommen; generische PLACE-Treffer werden nicht als Haltestellen ausgegeben. - Flache, zweizeilige Suchliste mit begrenzter Höhe und lesbarem Kontext. Mobile Navigation während offener Vorschläge ausgeblendet; keine überdeckten Suchtreffer. Cache-Versionen der betroffenen Dateien erneuert. - APIs, Zeitberechnung, Kartenpositionen und gespeicherte Reisen unverändert. PRÜFUNG 730 JavaScript-Assertions bestanden: die 703 bisherigen plus 27 neue Fälle zu Berlin/Amsterdam, Namensvettern, Kontext, Koordinaten, IDs und Deduplizierung. 25 JavaScript-Dateien mit Syntax-/Importprüfung. 100 PHP-Assertions bestanden. 419 Browser-Assertions in fünf Viewports und zwei Themes: neue Berlin-Suche, Stadt/Bahnhof-Reihenfolge, Länderangaben, flache Zeilen, Navigation ausgeblendet, richtige toStopId beim Planen, Escape und die bisherigen Karten-/Fahrplanfälle. PHP 8.2.33 WASM, Chromium 153, kontrollierte Netzwerk-/GPS-Testdaten. Keine unbehandelten Browser-Ausnahmen. Testfixture enthält öffentliche Ortsangaben mit synthetischen IDs, keinen persönlichen Standortverlauf. GRENZEN Kein echter Android-/iPhone- oder Strato-Test. Keine Garantie, dass externe Geocoder immer die beabsichtigte Stadt zuerst liefern. Bei Mehrdeutigkeit Land und Ort in den Vorschlägen prüfen oder genauer suchen. Frühere Berichte folgen unverändert. Fehlende Betreiber-Echtzeitdaten bleiben eine separate Grenze. AKTUELL: v6.8.3 · MEHR PLATZ IM HANDYFAHRPLAN · 19.10.2026 ================================================================ Build: 20261019-timetable-space-v6-8-3. Vollständiges Paket, nicht installiert. BEHOBEN Der mobile Fahrplan hatte durch zwei Steuerzeilen, großen Kopf, Statuschips und dauerhaft sichtbare Teilen-Aktionen zu wenig Platz für die Haltestellen. - Höhensteuerung und Schließen in einer 44-px-Bedienzeile; doppelten Schließen-Knopf im mobilen Kopf entfernt. Ziehen/Pfeiltasten bleiben erhalten. - Kopf und Status kompakter, Zähler „Halte“ kürzer. Zeitqualität und Linienfolge bleiben sichtbar. Die Schriftgröße der Haltestellen wurde nicht verkleinert. - Fortschritt und ausführliche Fahrthinweise am Handy aufklappbar. Kurzer Hinweis auf geschätzte Positionen bzw. Planzeiten bleibt sichtbar. Störungsmeldungen und Weiterfahrthinweise am jeweiligen Halt bleiben direkt in der Liste. Desktop zeigt die ausführlichen Inhalte zunächst geöffnet. - Teilen, Live-Teilen, Fahrzeug auf Karte und Abrufinformationen über „Aktionen & Daten“ erreichbar; auch im Querformat. Beim erneuten Öffnen des Fahrplans werden mobile Zusatzbereiche wieder eingeklappt. VERIFIZIERT 703 bestehende JavaScript-Assertions und 100 PHP-Assertions bestanden. 311 Browser-Assertions: fünf Viewports und beide Themes; 22 synthetische Halte, volle/scrollbare Listenfläche, letzte Haltestelle erreichbar, mindestens drei vollständige Halte sofort sichtbar im geprüften Hochformat (einer im Querformat), Fortschritt/Fahrthinweise aufklappbar, Teilen-Aktionen weiterhin erreichbar, Desktop-Aktionen sichtbar. Keine unbehandelten Browserfehler. PHP 8.2.33 WASM, Chromium 153; Daten/GPS kontrollierte Fixtures. Keine echten Handys oder Strato-Laufzeit geprüft. Texte/Schriftvergrößerung und individuelle Browserleisten können die sichtbare Anzahl ändern. Fehlende Betreiberprognosen bleiben eine Datenquellengrenze. Frühere Prüfberichte folgen unverändert. AKTUELL: v6.8.2 · KOMPAKTE HANDYKARTE · 19.10.2026 ================================================================ Build: 20261019-compact-map-v6-8-2. Vollständiges Paket, nicht live installiert. Anlass: Handyaufnahme mit überlagerten Filtern, Zoomhinweis und Vollbildknopf. ÄNDERUNGEN - Favoriten- und Echtzeitfilter hinter aufklappbarem „Filter“-Knopf. Aktive Filter sind an der Anzahl sichtbar; Einstellungen bleiben erhalten. - Vollbild-Schließen bleibt separat und jederzeit erreichbar. - Legende, Zoomhinweis und ausführliche Datenbasis gemeinsam aufklappbar. „Positionen geschätzt · Info“ bleibt auch im Vollbild sichtbar. - Haltestellensymbole am Handy auf 24 bzw. 20 px verkleinert; ihre Position bleibt zentriert. Fahrzeugmarker und PLAN/PROGNOSE-Texte bleiben erhalten. - Escape schließt zuerst ein geöffnetes Kartenmenü, danach das Vollbild. Beim Vollbildwechsel schließen die Menüs; Fokus kehrt passend zurück. - Keine Änderungen an Fahrzeiten, Datenquellen, Liniennetz oder GPS-Logik. PRÜFUNG 703 JavaScript-Assertions bestanden. 100 PHP-Assertions bestanden (PHP 8.2.33 WebAssembly). 213 Chromium-Assertions bestanden: 320/375/768/812/1280 px, hell/grün, Hoch-/Querformat, Filterstatus, Auf-/Zuklappen, Legende und Hinweis, Escape/Fokus und nicht überlappende Vollbild-Bedienelemente. Screenshots intern geprüft. Netzwerkdaten und GPS simuliert, Kartenkacheln im Test ersetzt. Reale Handy-, Server- und Fahrtdatenabnahme bleibt offen. Fehlende Echtzeitdaten und mögliche Überlagerung von Fahrzeugmarkern an identischen Positionen werden hierdurch nicht behoben. Frühere Berichte folgen unverändert. AKTUELL: v6.8.1 · ABSCHLIESSENDE LOKALE PRÜFUNG · 19.10.2026 ================================================================ Build: 20261019-final-review-v6-8-1. Vollständiges Paket, nicht live installiert. BEHOBENE BEFUNDE - live-fahrt.php: falsche Leaflet-CSS-Prüfsumme korrigiert. Die Prüfung erfolgt gegen die tatsächlichen Leaflet-1.9.4-Dateien (CSS und JS). - Mobile Navigation: „Abfahrt“ gekürzt und Spalten/Innenabstand angepasst; alle vier Texte bei 320 px ohne Zeilenumbruch, Schriftgröße bleibt 14 px. - Reiseplanung: ungültige Namen/Labels als Array oder Objekt werden ignoriert; sie verursachten vorher PHP-Warnungen. Gültige Texte bleiben erhalten. - Cache-Versionen für geänderte mobile Dateien und Haupt-Build aktualisiert. PRÜFERGEBNISSE: BESTANDEN - 703 vorhandene JavaScript-Assertions einschließlich Kontrast, Merkliste, GPS-Lebenszyklus, Linienwechsel, Verspätungs-/Haltezeitlogik und Datenbasis. - 100 zusätzliche PHP-Assertions in echter PHP-8.2.33-WebAssembly-Laufzeit: Syntax aller 31 PHP-Dateien, Rendering von 10 Seiten, sichere Vorbelegung, fehlerhafte Eingaben, API-Validierung, R49/R81-Durchbindung und 8 SRI-Abgleiche. - 103 Browser-Assertions in Chromium 153: fünf Viewports (320x740, 375x812, 768x1024, 812x375, 1280x900), jeweils hell und grün. PLAN/PROGNOSE, Kartenfilter, Vollbildhinweis, Standort-/Näheablauf, Navigation und Überbreite. Keine unbehandelten JavaScript-Ausnahmen. Screenshots intern gesichtet. - Geprüfter Mindestkontrast der aktiven Buttonzustände: 7,86:1. GRENZEN / OFFENE ABNAHME Kontrollierte Testdaten und simuliertes GPS; API-Netzwerkgrenze im Test ersetzt. Kein Test des Strato-Servers, kein echter Android-/iPhone-Test, kein Beleg für vollständige Betreiberdaten. Fehlende Verspätungsmeldungen bleiben ungelöst; PLAN-Markierungen sind keine gemessenen Fahrzeugpositionen. Bei identischen Positionen können Marker/Badges überlagern; Fahrtenliste und Detailansicht nutzen. Kein rechtliches Gutachten und keine Garantie der Fahrzeiten oder Anschlüsse. Echte Geräte, Server-Konfiguration, Datenversorgung und praktische Fahrtvergleiche bleiben vor einer allgemeinen Freigabe zu prüfen. Keine neue DB-/RLG-Anbindung. NACHVOLLZIEHBARKEIT Zusätzlicher reproduzierbarer Lauf: tests/runtime-final.cjs und tests/RUNTIME-QA.txt. Keine persönlichen Standortmeldungen, API-Snapshots, Browserbilder, Testlaufzeiten oder node_modules im ausgelieferten Paket. Ältere Berichte und Testaussagen folgen unverändert als Historie. AKTUELL: v6.8 · DATENHERKUNFT UND UNSICHERHEIT · 19.10.2026 ================================================================ Basis: vollständiges v6.7.1-Paket; öffentlich ausgelieferte app.js beim Abruf inhaltlich mit dem Paket verglichen. Kein vollständiger neuer Server-Snapshot. Keine Live-Installation. Build: 20261019-source-confidence-v6-8. BEFUND UND GRENZE Praxisabgleich einer R81-Fahrt zeigte wechselnde Abweichungen gegenüber Planzeiten. Die dazu abgerufene Fahrt lieferte realTime=false, auch im erneuten Abruf. Ein frischer Abruf ist keine neue Betreibermessung und bestätigt keine Pünktlichkeit. Keine feste Zusatzverspätung eingeführt und keine persönlichen Standortmeldungen oder Bewegungsverläufe in dieses öffentliche Paket übernommen. UMGESETZT - Sichtbarer Hinweis direkt oberhalb der Karte: Positionen sind Schätzungen; ohne Echtzeitmeldung können reale Fahrten mehrere Minuten abweichen. - Marker mit PLAN / PROGNOSE / VORSCHAU; durch Text statt nur Farbe erkennbar. PLAN hat zusätzlich einen gestrichelten Rand. Tooltip erklärt Datenbasis. - Hinweis auch im Karten-Vollbild: keine Fahrzeug-GPS-Ortung. - Optionaler lokaler Echtzeit-Kartenfilter: nur Abschnitte mit realTime===true, keine Vorschau-Marker. Liniennetz, Haltestellen, Fahrtenlisten, Routen und Uhrzeiten unverändert. Ausschalten stellt PLAN-Marker wieder her. - Abfahrten, Fahrplanfenster und kompakte Schiebeansichten nennen bei fehlender Meldung „Verspätung unbekannt“. Reiseplanung und geteilte Fahrten weisen auf mögliche Abweichungen hin. Gemeldete Echtzeit bleibt eine Prognose. - Reisehilfe erklärt Datenalter, Plan/Prognose/Vorschau und Betreiberabgleich. - Sachliche Beschreibung in Nutzungsbedingungen angepasst; Haftungsklausel nicht erweitert. Keine Zusicherung juristischer Rechtssicherheit. - Entwicklungsziel transparent erwähnt: zusätzliche freigegebene Schnittstellen und Austausch, etwa mit RLG oder DB. Keine Zusage oder bestehende neue Kooperation behauptet; Wachstum garantiert keinen Datenzugang. - Cache-Versionen betroffener direkter und transitiver JS-/CSS-Dateien erhöht. VALIDIERUNG 703 automatisierte Assertions PASS (672 bestehende + 31 neue Prüfungen). Neue Tests benutzen echte Marker-/Filterfunktionen: Kennzeichnung, strikte Echtzeitprüfung, Ein-/Ausschalten, vollständige Listen und unveränderte Zeiten. 24 JS-Dateien Syntax/Imports PASS; 31 PHP-Dateien PHP-8.2-Parser PASS. ZIP-Integrität und lokale Links geprüft. Kein echter PHP-Laufzeittest und keine visuelle Browser-/Touch-Abnahme. Stand der letzten Geräteabnahme weiter offen. OFFEN - Upload und Android/iPhone: Hinweis im normalen und Karten-Vollbild prüfen, Filter und Favoriten gemeinsam testen, kleine Schrift/Zoom/Markerüberlappung. - PHP-Server und echte Datenquelle testen. Betreiber-Echtzeit kann weiterhin fehlen oder unzutreffend sein; diese Veröffentlichung repariert keine fehlende Quellprognose. Keine GPS-Fahrzeugortung ergänzt. - Rechtliche Prüfung der öffentlichen Texte bleibt separat offen. Technische Hinweise sind kein pauschaler Schutz vor Ansprüchen. - Vollständige Offline-App, Hintergrundalarme und Betreiberfeeds bleiben offen. INSTALLATION: vorhandene Konfiguration, Nutzerdaten, Cache und Live-Shares sichern/erhalten. Nach Upload neu laden. Alle Funktionen aus v6.7.1 enthalten. Historische Abschnitte und Testhistorie bleiben darunter unverändert erhalten. AKTUELL: v6.7.1 · BUTTON-KONTRAST · 14.10.2026 ============================================================ Basis: vollständiges v6.7-Paket. Keine Live-Installation. Build: 20261014-button-contrast-v6-7-1. Befund: Screenshot zeigt aktive „Abfahrten“-Navigation ohne lesbaren Text. Allgemeine Linkfarbe der travel-help-page war spezifischer als die bisherige aktive Dock-Regel; dadurch grüne Schrift auf grünem Hintergrund. Korrektur: spezifische Zustandsregeln mit gepaartem action/action-text für aktive Navigation, einfache Ansicht, Karten-/Verkehrsmittel-/Linientasten und aktive Standortanzeige. Standortfreigabe berücksichtigt bestehende wichtige Hintergrundregel. Kindtexte erben die aktive Schriftfarbe. Cache-Version des mobilen Styles auf allen fünf Hauptseiten angehoben. Keine Änderungen an GPS, Routendaten, Timings oder lokaler Speicherung. VALIDIERUNG: 672 automatisierte Assertions PASS (480 bestehende + 192 neue). Neue Tests lösen tatsächliche CSS-Deklarationen anhand Selektorspezifität, Quellreihenfolge und important auf: beide Themes, 375/1024px, normal/hover, 8 aktive Bedienelemente. Minimaler geprüfter Textkontrast: 7,86:1. Dies ist kein visueller Browser-/Touchtest; reale Handy-Abnahme bleibt offen. 24 JS-Dateien Syntax/Imports und 31 PHP-Dateien PHP-8.2-Parser PASS. ZIP-Integrität geprüft. PHP-Laufprüfung bleibt offen. Testhistorie: erster neuer Prüflauf FAIL (Hover überschreibt Hintergrund), zweiter FAIL (Standortfreigabe überschreibt Textfarbe), nach Korrektur PASS. Vorherige Testfälle und Schwellenwerte wurden nicht abgeschwächt. Nach Upload neu laden; Seiten laden mobile-ux.css?v=20261014-v671. Vorhandene Konfiguration/Nutzerdaten sichern und erhalten. Historische Dokumentation bleibt darunter unverändert. AKTUELL: v6.7 · HANDY / GPS-NAEHE / REISEBEGLEITUNG · 14.10.2026 ================================================================ STATUS: lokal implementiert und logisch geprüft; keine Live-Installation. Basis: vollständiges v6.6-Paket inklusive Haltezeitenkorrektur und UX-Roadmap. BUILD: 20261014-mobile-assist-v6-7 ROADMAP-FORTSCHRITT UX-19 bis UX-36: im Paket, Live-/Geräteabnahme offen. UX-36 teilweise: exportierter Offline-Reiseplan vorhanden; vollständig offline startende App samt sicherem Ressourcen-/Kartenmanagement bleibt offen. UX-37 offen: Hintergrund-/Ausstiegserinnerungen brauchen verlässliche Tests und gegebenenfalls Android-App-Anbindung. Kein Alarmversprechen umgesetzt. UX-38 offen: kein freigegebener Betreiber-Positionsfeed vorhanden. Keine eigene Trackingbox, kein neuer GPS-Fahrzeugfeed und keine Anfrage an Dritte versendet. IMPLEMENTIERT - Drei Einstiege: Nähe-Abfahrten, Reise planen, Merkliste; feste untere Handy- Navigation auf Karte, Nähe, Planung, Unterwegs und Nach-Hause-Seite. - Einfache Ansicht mit größeren Texten/Tasten, lokal wählbar; Navigation bei Dialog/Vollbild/erkannter Bildschirmtastatur verborgen. Echte Geräte offen. - Ungewöhnliche Schul-/E-Wagen-Filter aufklappbar; aktiver Zustand im Summary; Linienfilter zurücksetzbar. Soester Grundnetz und Live-Layer unverändert. - Neue in-der-naehe.php: GPS nur auf Klick oder manuelle Ortswahl. Bis zu drei Halte im 2-km-Suchraum, Abfahrten, berechneter Fußweg und gelieferter Verlauf. Zeitpuffer 2/5/10 Minuten. Keine positive Einschätzung ohne Fußweg, bei alten Abfahrten oder GPS-Genauigkeit schlechter als 100 m. Keine Garantie. - Neue feste Transitous-Aktionen nearby/walk: Koordinaten validiert, kurze Fußwege begrenzt, Rate-Limit; keine dauerhaften Antwortcaches für diese Standortanfragen. Kein beliebiger Ziel-URL-Proxy. - Haltestellen ausdrücklich merken/entfernen (max.12). Letzte Halte nur nach freiwilliger Aktivierung (max.8) lokal speichern und separat löschen. - Reiseplanung: GPS-Start auf Klick; ausgewählte Orte freiwillig lokal merken (GPS-Punkte ausgeschlossen); erhaltene Eingaben und Erneut versuchen nach Fehlern; letzte entfernte Reise rückgängig machen, ohne andere zu ersetzen. - Standort/gewählte Orte per explizitem POST in die Reiseplanung übernehmen; keine Standortkoordinaten in der Übergabe-URL oder persistentem GPS-Handoff. - Unterwegs: nächster Schritt LAUT ZEITPLAN, nicht bestätigter Einstieg. Anschlussprüfung nach aktueller Fahrtprüfung, inklusive geliefertem Fußweg, Reserve, Ausfall und klarer Einschränkung bei fehlendem Umsteigeweg. - Rückfahrt; vom freiwilligen aktuellen GPS zum gespeicherten Ziel neu planen; Zuhause vom eigenen Standort planen; ursprüngliche Reise bleibt erhalten. - Teilen als Text, private Start-/Zielangaben standardmäßig ausgeschlossen; manueller Abschluss mit Rückfahrt/Nähe-Abfahrten, rücknehmbar. - Offline-HTML-Download des gespeicherten Plans: ohne externe Ressourcen oder Skripte lesbar; private Orte enthalten, keine neuen Zeiten oder Kartendaten. - Dokumentation/Datenschutzbeschreibung/Roadmap aktualisiert; lokale Löschfunktion berücksichtigt neue Speicher und stadtspezifische Zuhause- Adressen. Offline-Downloads müssen separat gelöscht werden. VALIDIERUNG 480 automatisierte Assertions PASS: 400 bisherige + 2 Theme-Einbindungen + 45 neue Modell-/Speicherprüfungen + 33 tatsächliche DOM-Klickabläufe mit JSDOM und kontrollierten API-/GPS-Antworten. 24 JS-Dateien Syntax und relative Imports PASS. 31 PHP-Dateien PHP-8.2-Parser PASS, keine echte PHP-Runtime-Prüfung. Direkter Transitous-WALK-Beispielabruf erfolgreich: /api/v6/plan liefert direct mit WALK-Legs, duration und Geometrie. Neuer PHP-Proxy noch nicht live getestet. Browser-Layoutprüfung BLOCKIERT: Chromium-Download lieferte ungültiges/ unvollständiges Archiv. Kein visueller Browser- oder Touch-Test als PASS. ZIP-Integrität und Dateivollständigkeit geprüft. ABNAHME / RESTARBEIT - Lokale Daten und Produktion vor Upload sichern; Konfiguration, Daten/cache und Live-Shares erhalten. Paket nicht zum Überschreiben privater Daten nutzen. - Echte Android-/iPhone-Geräte: 320/375/768 CSS-px, 200 Prozent Schrift, beide Themes, Screenreader, Tastatur, Safe-Area und native Dialoge/Vollbild prüfen. - Produktions-PHP: walk/nearby/POST-Prefill prüfen, Routingausfall, ungenaues oder abgelehntes GPS, Netzunterbrechung, gesperrter/voller Speicher testen. - Vollständige Offline-App weiterhin offen, keine automatische Mitfahrerkennung, Ankunftserkennung, Hintergrundalarme oder sekundengenauen Buspausen versprechen. - Vollständigen aktuellen Server-Snapshot vor weiterer Konsolidierung abgleichen. LOKALE TESTS Entwicklungsabhängigkeiten: npm install --include=dev (Node 22.12+). Bestehende Tests: node tests/.mjs; DOM-Test: node tests/ux-dom.mjs. Tests benutzen feste Fixtures/Mocks; echte Quellen-/Geräteabnahme bleibt separat. package.json enthält nur Entwicklungsabhängigkeiten; produktive PHP/JS-Seiten benötigen keinen Node-Server und kein npm install auf dem Webhosting. Historische Dokumente und PASS/FAIL-Aussagen unverändert darunter erhalten. AKTUELL: v6.6 · HALTEZEITEN / VERSPAETUNGSNACHWEIS · 14.10.2026 ================================================================ BASIS: vollständiges v6.5-Paket. Öffentliche Live-Daten und Positionsmodul geprüft; kein vollständiger frischer Server-Snapshot, keine Live-Installation. BEFUND am 14.10.2026, Abruf 17:09:39 Europe/Berlin: - 245 C2-Kartenabschnitte, davon 24 mit gegenüber Plan verschobener Abfahrt. - 45 C2-Abschnitte mit identischer Abfahrt und Ankunft; sie wurden im bisherigen JS-Adapter durch arr<=dep verworfen. Dies konnte die Haltefolge unterbrechen. - 218 aufeinanderfolgende C2-Abschnitte ohne Zeitlücke, 11 mit positiver Lücke; nur eindeutig namensgleiche Anschlussstellen gezählt. - Vollständiger C2-Fahrtplan ebenfalls minutenweise Zeiten: z.B. Gotlandweg Ankunft=Abfahrt 14:59Z, Plan 14:57Z. Keine sekundengenaue Pause ableitbar. - Bisherige Berechnung nutzt bereits gemeldete Zeiten. Verspätung nochmals zu addieren würde sie doppelt berechnen. Keine pauschale Verzögerung eingeführt. KORREKTUR: - Nullzeit-Abschnitte bleiben im Kartenadapter und der geteilten Live-Fahrt erhalten. Kein Teilen durch null: interpoliert werden nur positive Laufzeiten. - Gelieferte Haltezeit zwischen Ankunft und Folgeabfahrt wird respektiert; Test deckt beide Grenzen und einen verspäteten Halt ab. - Markerhinweis nennt getrennte Abfahrts-/Ankunftsabweichung zur Planzeit. - Nicht zeitlich aufgelöste Abschnitte ausdrücklich als ungenau gekennzeichnet. - Kartenhinweis und Reisehilfe erklären fehlende kurze Pausen. - Quellenzeiten unverändert; keine erfundene Mindestpause, keine neue Quelle, kein GPS-Fahrzeugfeed und keine Änderung des festen Soester Grundnetzes. VALIDIERUNG: 400 automatisierte JS-Assertions PASS (383 bestehende + 17 neue). 18 JS-Dateien Syntax PASS, 30 PHP-Dateien PHP-8.2-Parser PASS. Kein PHP-Runtime-/Touch-End-to-End-Test. ZIP-Integrität geprüft. OFFEN: Upload und echter Handy-/PHP-Server-Test; C2 an gleicher Haltestelle, Fahrtkennung und Uhrzeit mit Betreiberanzeige vergleichen. Eine sekundengenaue Übereinstimmung ist mit den geprüften minutenweisen Daten nicht erreichbar. INSTALLATION: vollständiges Paket; vorhandene Konfiguration und Nutzerdaten sichern/erhalten. Nach Upload Seite neu laden, Build 20261014-stop-timing-v6-6. Historische Dokumentation bleibt unverändert darunter erhalten. AKTUELL: v6.5 · Gemerkte Reisen / mobile Linien · 13.10.2026 ================================================================ - Reise planen: Jede Verbindung kann mit „Reise merken“ lokal gespeichert werden. - Merkliste: Unterwegs öffnen, mit Abfahrt jetzt neu planen oder entfernen. - reise-unterwegs.php: gespeicherter Fahrplan und gelieferte Routengeometrie; fehlende Geometrie wird nicht durch erfundene Buslinien ersetzt. - Optionaler GPS-Punkt samt Genauigkeitskreis; keine gespeicherte Bewegung. Standort wird beim Verlassen/Hintergrund beendet, erneut bewusst aktivieren. - „Fahrzeiten prüfen“ fragt die gespeicherten Fahrtkennungen ab, zeigt getrennte Ergebnisse und gleicht die gespeicherte Einstiegs-/Ausstiegsfolge ab. Dies bestätigt keine Anschlüsse. Für neue Verbindungen neu planen. - Speicher nur im selben Browser/Profil/Gerät, bis entfernt oder Browserdaten gelöscht werden. Maximal 30 Reisen; Speicherfehler werden angezeigt. - Karten und neue Fahrzeiten benötigen Internet. Kein Offline-App-Versprechen. - Index/Handy: Linienkopf und Filter umbrechen, große Tasten und keine intern höhenbegrenzte Linienliste. Sichtbares war im Quelltext nicht vorhanden. - Hilfe, Datenschutzbeschreibung und xroadmap.html ergänzt. PRÜFUNG: 383 JS-Assertions PASS; 18 JS-Dateien Syntax PASS; 30 PHP-Dateien mit PHP-8.2-Parser PASS. Kein PHP-Laufzeittest. OFFEN: Upload/Live-Abnahme; Android/iPhone, beide Themes, 320/375/768 px, Speichern/Neuladen/Löschen, GPS erlauben/ablehnen, Hintergrund, Kartenscrollen, Netzausfall, Speicherblockade und echte Fahrzeit-/Umleitungsfälle prüfen. Vor Upload vorhandene Konfiguration, Cache und Live-Shares sichern/erhalten. Das Paket wurde nicht auf der produktiven Webseite installiert. AKTUELLE QA v6.4 · 13.10.2026 [PASS LOKAL] 342 JS-Assertions; Controller und Eventhandler mit DOM-Testdoubles. [PASS LOKAL] Drei Höhen, Gesten, Abbruch, Tasten/Fokus, Viewport, kompakte Auskunft. [PASS LOKAL] Quelle ausgefallen: kompakte Ansicht zeigt Fehler statt Dauer-Laden. [PASS LOKAL] Escape priorisiert Suche/Share/Dialog vor dem unterliegenden Vollbild. [PASS SYNTAX] 15 JS-Dateien; 29 PHP-Dateien per PHP-8.2-Parser. [OFFEN] Physische Touch-/Browser-Abnahme, Layout auf echten Geräten, PHP-Lauftest. [OFFEN] Neue UI bei echten Daten; Netzunterbrechung, App-Rückkehr, Durchbindung. --- HISTORIE v6.3 --- AKTUELLE QA v6.3 · 13.10.2026 [PASS LOKAL] 269 JS-Assertions (24 neue Fahrplan-/Fallbackchecks). [PASS LOKAL] Tatsächlicher Fallback liefert ISO-Zeiten und berechenbaren Fortschritt. [PASS LOKAL] Ausfälle/Fahrtende: keine falsche nächste-Halt-Markierung. [PASS LOKAL] Ankunft/Abfahrt und voneinander abweichende Verspätungen. [PASS SYNTAX] 14 JS-Dateien; 29 PHP-Dateien per PHP-8.2-Parser. [OFFEN] Echter PHP-Lauftest, neue UI, reale Durchbindung, Smartphone und Live-Abnahme. --- HISTORIE v6.2 --- SO-BusLivePRO · QA v6.2 · 13.10.2026 [PASS LOKAL] 245 JS-Assertions, 13 JS-Dateien syntaxgeprüft. [PASS PARSER] 29 PHP-Dateien per PHP-8.2-Parser, kein echter PHP-Lauftest. [QUELLSTICHPROBE] 3 R49/R81-Trips + 3 Verbindungsergebnisse ohne bestätigte Durchbindung; korrekterweise kein Im-Fahrzeug-bleiben-Hinweis. [OFFEN LIVE] Positive Durchbindung einer konkreten Fahrt und Übergangshalte. [OFFEN] PHP-Laufprüfung, neue UI, Smartphone und Änderungen nach Upload. --- HISTORIE v6.1 --- SO-BusLivePRO · AKTUELLE QA v6.1 · 06.10.2026 ================================================ [PASS LOKAL] 215 JS-Assertions inkl. Zeiträumen für Umleitungen/Veranstaltungen. [PASS LOKAL] 12 JS-Dateien syntaxgeprüft, Roadmap-Filter/Statuszahlen/Links. [PASS PARSER] 28 PHP-Dateien als PHP 8.2 mit php-parser geparst, keine Syntaxfehler. [OFFEN] Tatsächliches php -l / PHP-Laufprüfung / UI-/Live-Abnahme nach Upload. [LIVE AUSGANGSSTAND 19:28] Noch v5; xroadmap.html HTTP 404. Kein v6-Deployment. Testgrenzen: Parserprüfung ist keine echte PHP-Laufprüfung. Keine DB-Gleichheit belegt. Aktuelle Abnahmecheckliste: TODO.txt. --- ARCHIV v6 UND ÄLTER --- SO-BusLivePRO · AKTUELLE QA v6 · 06.10.2026 ========================================= [PASS LOKAL] 206 automatisierte JS-Assertions, alle 12 JS-Dateien syntaxgeprüft. [PASS LOKAL] Reale Detailrefresh-Funktionen: Parallelabrufe, Datenalter, Scrollposition, Fehler/Retry, alte Ortsantwort, Hintergrund, Freigabe der Ladesperre. [PASS LOKAL] Meldungen: HTML-Escaping, Kommunikationszeitraum, Duplikate und Grenzen. [PASS STATISCH] DOM-Referenzen, Roadmap-Filter/Statusanzahl/lokale Links geprüft. [OFFEN] PHP-Syntax/-Laufprüfung; neue UI am Server; echte DB/Mobil-info-Gegenprobe. [OFFEN] Umleitung mit Ersatzhalt, Ausfall und tatsächlich geänderter Feed-Geometrie. [OFFEN] Smartphone/Tablet/Desktop, beide Themes, App-Rückkehr, Ortswechsel, Teilen. [HINWEIS] Alte Prüfungen unten gelten nur für ihren damaligen Stand. Sie bestätigen weder v6-PHP-Lint noch unveränderte aktuelle API-Hashes. 12-Minuten-Marker- Halt, grüner Standard und fehlende eigene Reiseplanung sind überholt. Aktuelle Prüfschritte: TODO.txt. Grenzen und Quellen: REPORT.txt. --- ARCHIV: HISTORISCHE ABNAHMEN --- SO-BusLive Soest · QA / RELEASE-ABNAHME ======================================= Datum: 29.08.2026 Ziel: https://so-portal.de/SO-BusLive-Soest/ ERGEBNIS: TECHNISCHER RELEASE-CHECK BESTANDEN --------------------------------------------- Der Build wurde gegen die verbindlichen Regeln aus REPORT.txt geprüft. Die zwei geschützten Original-Live-APIs sind bytegenau unverändert. 1. GESCHÜTZTE ORIGINALDATEIEN ----------------------------- PASS api/bus-live.php byteidentisch zur funktionierenden Nutzer-Referenz SHA-256: 8a90ebd5d5bf045c871a3c5acb3163e3177d0f62c4fcf1ce01d3438fb9bef161 PASS api/stop-times.php byteidentisch zur funktionierenden Nutzer-Referenz SHA-256: 25799fb7ae6c2004ee5a4269b24453ca3bddb92fa7443d233c0ac7dd96b0657e Referenz-ZIP des Nutzers: 4f5bdb3d9afc3cceb74d08aa145c395423eb13180b7bbf1924d291738c467739 2. PHP / JAVASCRIPT / MANIFEST ------------------------------ PASS alle 16 PHP-Dateien: php -l ohne Syntaxfehler PASS assets/js/app.js: node --check PASS assets/js/home.js: node --check PASS manifest.webmanifest: gültiges JSON 3. DOM-VERKNÜPFUNGEN -------------------- PASS app.js: 47 statische $()-DOM-Referenzen geprüft, 0 fehlende IDs PASS home.js: 11 statische $()-DOM-Referenzen geprüft, 0 fehlende IDs 4. LOKALER HTTP-SMOKE-TEST -------------------------- PASS / HTTP 200 PASS /index.php HTTP 200 PASS /entdecken.php HTTP 200 PASS /nach-hause.php HTTP 200 PASS /datenschutz.php HTTP 200 PASS /manifest.webmanifest HTTP 200 PASS /sitemap.xml HTTP 200 PASS /assets/js/app.js HTTP 200 PASS /assets/css/app.css HTTP 200 PASS /REPORT.txt HTTP 200 PASS /api/trip.php ohne tripId HTTP 400 wie erwartet 5. LINIEN-/REGRESSIONSCHECK --------------------------- PASS dauerhaftes Grundnetz enthält: C1 C2 C3 C4 C5 C7 C8 R36 R47 R49 R51 R54 R81 X51 532 569 583 644 T35 T37 T39 M4 S11 PASS C6 ist nicht künstlich als aktuelle eigenständige Grundlinie enthalten. PASS 32 und 661 sind NICHT Teil des festen Soester Grundnetzes. PASS keine EXCLUDED_DYNAMIC_LINES-Blockliste mehr im Client. PASS zusätzliche Live-Linien können dynamisch hinzukommen, wenn die aktuelle Fahrt einen eindeutigen Soest-Bezug besitzt. PASS Fahrten werden nach tatsächlichem Ziel/Headsign in Richtungsgruppen getrennt. PASS R49 <-> R81 ist als Durchbindung/Linienwechsel hinterlegt. PASS api/trip.php nutzt joinInterlinedLegs=false, damit getrennte interlined Legs und ihre Liniennummern sichtbar bleiben können. 6. ROUTEN --------- PASS bewährte Live-Routenquelle bleibt api/bus-live.php unverändert. PASS api/network.php ist eine additive Netzrouten-Referenz für Zeiten, in denen im kurzen Live-Fenster gerade kein Bus einer Grundlinie fährt. PASS Netzwerk-Referenz hat einen Stale-Cache/Fallback und darf die Hauptseite bei Fehler nicht blockieren. PASS Fremdlinien im breiten Rohdatenfenster werden clientseitig nicht als Soester Grundnetz dargestellt. 7. C2 / RICHTUNGEN ------------------ PASS C2 bleibt Grundlinie. PASS ehemaliger C6-Hermannstraße-Ast ist in Beschreibung als C2-Änderung dokumentiert. PASS Richtungsgruppierung beruht auf tatsächlichem Headsign/Fahrziel und ist nicht auf eine einzige Richtung fest verdrahtet. 8. FAHRT TEILEN / TOKEN ----------------------- PASS "Fahrt teilen" ist im Fahrplan-Overlay vorhanden. PASS Base64url-UTF-8 Token-Roundtrip separat mit Umlauten/Sonderzeichen getestet. PASS Token-Payload enthält nur Version, tripId, Linie, Headsign und Erstellungszeit. PASS keine GPS-, Zuhause- oder Favoritenwerte im Token-Payload. 9. FAVORITEN / NACH HAUSE ------------------------- PASS Favoriten verwenden localStorage und verändern die Live-Daten nicht. PASS nach-hause.php vorhanden. PASS Adress-Typeahead über address-search.php / Photon-Proxy vorhanden. PASS optionale lokale Zuhause-Speicherung nur nach Nutzerentscheidung. 10. WETTER / GPS ---------------- PASS Wetter-Pill auf Hauptseite vorhanden. PASS Standardkoordinaten = Soest. PASS Wetterdaten browserseitig über Open-Meteo. PASS bei freiwillig aktivem GPS kann Wetter auf aktuellen Standort wechseln. PASS Link zu https://jarvis-und-der-erdling.de/wetter/ vorhanden. PASS 180-Tage-Standortpräferenz ist im Client vorhanden. PASS REPORT/Datenschutz dokumentieren: Präferenz != gespeicherter Bewegungsverlauf. 11. MOBILE / APPLE STATIC QA ---------------------------- PASS viewport-fit=cover in Haupt- und Nach-Hause-Seite. PASS Apple-PWA-Meta + apple-touch-icon vorhanden. PASS CSS safe-area-inset-* vorhanden. PASS 100dvh/100svh + VisualViewport-Fallback vorhanden. PASS Safari Input-Autozoom-Schutz: 16px für input/select/textarea. PASS -webkit-overflow-scrolling: touch für relevante Scrollbereiche. PASS Touch-Actions / mobile Bottom-Sheet / iPad 700-900px Regeln vorhanden. 12. ECHTER CHROMIUM-BROWSERTEST: UMGEBUNGS-LIMIT ------------------------------------------------- Chromium 144 ist im Container installiert. Ein echter Playwright/Chromium-Navigations- test wurde versucht (Desktop, Android-ähnlich, iPad-ähnlich). Die Laufzeitumgebung blockiert Browser-Navigation jedoch administrativ bereits vor dem Laden der Seite: net::ERR_BLOCKED_BY_ADMINISTRATOR – sowohl für localhost als auch für file:// und externe URLs. Daher wird NICHT behauptet, dass ein visueller Chrome-/Safari-End-to-End-Test in diesem Container bestanden habe. Stattdessen wurden Syntax, gerendertes HTML, DOM-Verknüpfungen, lokales HTTP, Responsive/iOS-Regeln und Regressionen automatisiert geprüft. Der echte letzte Sicht-/Touch-Test muss nach Upload im normalen Chrome/Safari erfolgen. 13. EXTERNE DATENQUELLEN ------------------------ Die Container-Netzwerkumgebung kann externe Transitous-Aufrufe nicht zuverlässig smoke-testen. Deshalb bleibt die funktionierende Original-Live-API unangetastet. Die aktuellen öffentlichen Referenzen wurden dagegen über Webzugriff geprüft: - RLG Liniennetz Soest 2026, gültig ab 25.05.2026 - RLG X51 Warstein <-> Soest - aktuelle SO-BusLive Haupt-/Anleitungsseite erreichbar - Jarvis WeatherCore erreichbar 14. ZIP-REGEL ------------- Vor Ausgabe wird zusätzlich geprüft: - oberster ZIP-Ordner ausschließlich SO-BusLive-Soest/ - REPORT.txt und SO-BusLive-QA.txt im Paket - geschützte API-Hashes nach Entpacken erneut korrekt - finales ZIP SHA-256 erzeugt OFFENE LIVE-ABNAHME NACH UPLOAD ------------------------------- Diese Punkte müssen direkt auf der echten Website kurz angesehen werden: [ ] C1/C2/C3/C4/C5/C7/C8 bleiben in der Linienauswahl sichtbar, auch wenn nachts inaktiv [ ] R49/R81 sichtbar; eine echte Durchbindung zeigt die Linienfolge, sofern MOTIS sie liefert [ ] mindestens vorhandene Gegenrichtungen werden getrennt dargestellt [ ] fremde 32/661 dominieren nicht das Busnetz Soest [ ] Linienrouten sichtbar; Netzreferenz ergänzt nachts fehlende Live-Polylinien [ ] aktiver Busmarker bewegt sich wie im Original [ ] Fahrt teilen erzeugt/öffnet einen Token-Link [ ] Wetter zeigt Soest ohne GPS; nach freiwilliger GPS-Aktivierung Standortwetter [ ] iPhone/iPad: keine abgeschnittenen Buttons, kein Eingabezoom, Safe Area passt [ ] Android/Chrome: Linien/Fahrten/Karte per Touch erreichbar STANDORT-HOTFIX 29.08.2026 -------------------------- - Ursache Busmarker-Verlust gefunden: activeRows() war an lineVisible() gekoppelt; lineVisible() filtert absichtlich auf Soester Netzlinien. Dadurch konnten vorhandene Live-Fahrten/Marker verschwinden. Behoben: activeRows() nutzt nur lineSelected(). - Netz-/Routenfilter bleibt separat erhalten. - Eigener GPS-Punkt bleibt eigener userLayer. - 180-Tage-Resume für Safari/iOS ohne navigator.permissions.query ergänzt. - Permission-Zustand "prompt" darf bei gespeicherter App-Einwilligung den Geolocation- Versuch nicht verhindern; Browser/OS entscheidet weiterhin über die Freigabe. - pageshow + visibilitychange starten einen gespeicherten Watch nach Rückkehr erneut. - pagehide setzt userWatchId nach clearWatch() korrekt auf null. VERIFIKATION STANDORT-HOTFIX ---------------------------- - node --check assets/js/app.js: OK - node --check assets/js/home.js: OK - PHP-Lint aller PHP-Dateien: OK - manifest.webmanifest JSON: OK - api/bus-live.php SHA-256 unverändert: 8a90ebd5d5bf045c871a3c5acb3163e3177d0f62c4fcf1ce01d3438fb9bef161 - api/stop-times.php SHA-256 unverändert: 25799fb7ae6c2004ee5a4269b24453ca3bddb92fa7443d233c0ac7dd96b0657e - userLayer.clearLayers(): NICHT vorhanden - routeLayer.clearLayers(): nur Routenlayer - activeRows(): nutzt lineSelected(), nicht lineVisible() - GPS-Resume: Permissions-API-Fallback + prompt/granted + pageshow/visibilitychange vorhanden BUSMARKER-HOTFIX 30.08.2026 --------------------------- - Live-Check auf https://so-portal.de/SO-BusLive-Soest/ am 30.08.2026 08:53 CEST: api/bus-live.php lieferte 311 Bussegmente, aber 0 aktuell fahrende/ueberlappende Zeitsegmente. Dadurch zeigte die Karte Linienwege, aber keinen Busmarker. - Behoben in assets/js/app.js: aktive oder haltende Fahrten werden weiter zuerst angezeigt. Wenn dadurch kein Bus sichtbar waere, zeigt der Client bis zu 12 bald startende Fahrten als gestrichelte Vorschau-Marker am Start-/Weiterfahrtpunkt. - Die Vorschau-Marker sind bewusst als "START BALD" bzw. "startet bald" gekennzeichnet und ersetzen keine echten AVL/GPS-Fahrzeugkoordinaten. - Halte-/Uebergangsfenster robuster gemacht: kurze Vorab-Ankunft, Endhalt und Haltestellenaufenthalte verschwinden nicht mehr nach wenigen Sekunden. - Asset-Revision auf 20260830-bus-marker-preview-fix erhoeht, damit Browser nach Upload die neue JS/CSS-Version laden. VERIFIKATION BUSMARKER-HOTFIX ----------------------------- - node --check assets/js/app.js: OK - node --check assets/js/home.js: OK - PHP-Lint aller PHP-Dateien: OK - manifest.webmanifest JSON: OK - Lokaler Chromium-Desktop-Test ueber PHP-Server: 4 Busmarker sichtbar, 4 davon Vorschau-Marker, keine Console-/Page-Errors. - Lokaler Chromium-Mobile-Test 390x844: Karte 376x478 px, 4 Busmarker sichtbar, 4 davon Vorschau-Marker, keine Console-/Page-Errors. MULTI-CITY-/UNNA-HOTFIX 30.08.2026 ---------------------------------- - Stadtprofile in includes/city-profiles.php ergaenzt: Soest bleibt Standard, Unna und weitere vorbereitete Staedte koennen in der UI ausgewaehlt werden. - api/bus-live.php, api/network.php, api/stops.php und api/address-search.php sind stadtfaehig und nutzen pro Stadt eigene Bounding-Boxen, Cache-Dateien, Kartenmitte und Adresssuche. - Soest behaelt das feste Grundnetz. Staedte ohne fest gepflegte Kernlinien bauen ihre Linienauswahl dynamisch aus Live- und Netzreferenzdaten auf. - Favoriten und Nach-Hause-Adresse werden je Stadt separat im Browser gespeichert. - Direktlinks wie ?city=unna oeffnen die gewuenschte Stadt direkt. VERIFIKATION MULTI-CITY-/UNNA-HOTFIX ------------------------------------ - PHP-Lint aller PHP-Dateien: OK - node --check assets/js/app.js: OK - node --check assets/js/home.js: OK - api/cities.php: 10 Stadtprofile, defaultCity=soest, Unna vorhanden. - api/bus-live.php?city=unna: OK, 1601 Segmente, 22 Linienkennungen. - api/network.php?city=unna: OK, 700 Routenreferenzen, 29 Netzlinien. - api/stops.php?city=unna: OK, 948 Haltestellen. - api/address-search.php?q=Massener%20Hellweg&city=unna: OK, Treffer in Unna. PRO-LIVE-REQUEST-HOTFIX 30.08.2026 ---------------------------------- - Live-Check auf https://so-portal.de/SO-BusLive-SoestPRO/?city=unna: Hauptseite, Stadtprofile, Netzreferenz und Haltestellen waren erreichbar, aber api/bus-live.php?city=unna lieferte HTTP 503. - Ursache: Transitous/MOTIS beantwortete die breite Unna-Live-Anfrage zeitweise mit HTTP 422 und {"error":"too many trips"}. Dadurch entstanden keine Live-Segmente und folglich keine Busmarker. - Behoben: Stadtprofile koennen jetzt eine engere liveBbox besitzen. Der Live-Endpunkt probiert automatisch mehrere sichere Box-/Zeitfenster-Varianten, bevor er auf Cache oder Fehler faellt. - Unna nutzt nun fuer Live-Busse eine engere Kernbox, waehrend Netzreferenz, Haltestellen und Adresssuche weiterhin breiter bleiben. VERIFIKATION PRO-LIVE-REQUEST-HOTFIX ------------------------------------ - Lokaler frischer Aufruf api/bus-live.php?city=unna: OK. - Genutzter erster Versuch: liveBbox, 180 Minuten Zukunft, HTTP 200. - Ergebnis: 1600 Segmente, 26 Linienkennungen. PRO SCHUL-/E-WAGEN-FILTER QA 30.08.2026 --------------------------------------- [STATIC] Standardzustand zeigt alle Fahrten; localStorage-Key: so_buslive_hide_school_extra_v1 [STATIC] Kein pauschaler S-Praefix-Filter; S11 bleibt regulaer sichtbar. [STATIC] Filter sitzt nicht in activeRows(); Live-Busmarker bleiben unberuehrt. [STATIC] tripSummaries(), Haltestellen-Abfahrten und "Busse in der Naehe" nutzen den Filter. [STATIC] Stadtwahl/Multi-City, Unna-Live-Fallback und Server-APIs bleiben getrennt. VERIFIKATION PRO SCHUL-/E-WAGEN-FILTER 30.08.2026 ------------------------------------------------- PASS node --check assets/js/app.js PASS node --check assets/js/home.js PASS PHP-Lint aller PHP-Dateien PASS manifest.webmanifest gueltiges JSON PASS 63 statische $()-DOM-Referenzen, 0 fehlende IDs PASS Klassifikation: E, E532, E-Wagen 532, Schulbus, Schuelerverkehr, Verstaerkerfahrt und strukturiertes Schulbus-Flag werden erkannt. PASS Gegenprobe: S11, C2 und R51 werden nicht als Schul-/E-Wagen klassifiziert. PASS Gegenprobe: Text "E-Bus" allein wird nicht als E-Wagen klassifiziert. PASS activeRows() enthaelt keinen Schul-/E-Wagen-Filter; Marker bleiben unabhaengig. PASS PRO-Server-APIs sind gegenueber dem gelieferten Unna-Hotfix bytegenau unveraendert: api/bus-live.php 67b7ead13fe5a5e17284b1eb51441e08241bb34ae665584be6f6903861e2e5be api/stop-times.php 008148a398927e49ce8a6a07ae53731c2d91adcd93d5bf73180cb39f82f76257 api/network.php 690fdf44d6e4a5d6debd24ce11c5554c3880e3289ed177ee2f072faa6f6e2bf8 api/stops.php 840fb4fe0d8895473c202fb473442301cf7321d80874811e7fb3d087568a5094 api/address-search.php 03da7b087c133a86b1922b7cf224dabca619463a4ef95f9ef1412591eaea5376 api/cities.php b67a74bc053e07748fc77a1c309a8490dfe29e5be1b5ece5ae5abdffd979211f PRO UPGRADE QA 30.08.2026 – ORT / MOBILE / VOLLBILD / GPS180 ------------------------------------------------------------ [PASS] 19 PHP-Dateien ohne Syntaxfehler. [PASS] app.js + home.js ohne JS-Syntaxfehler. [PASS] 58 app.js DOM-IDs, 0 fehlend in index.php. [PASS] Dynamisches Berlin-Profil erzeugt valide BBoxen. [PASS] api/bus-live.php SHA-256 = 67b7ead13fe5a5e17284b1eb51441e08241bb34ae665584be6f6903861e2e5be. [PASS] api/stop-times.php SHA-256 = 008148a398927e49ce8a6a07ae53731c2d91adcd93d5bf73180cb39f82f76257. [PASS] Ortssuche-DOM und api/city-search.php vorhanden; citySelect entfernt. [PASS] Schul-/E-Wagen-Neustandard = Listen ausgeblendet; bestehende LocalStorage-Wahl bleibt autoritativ. [PASS] GPS-180-Tage-Praeferenz vorhanden; speichert keine Koordinaten. [PASS] Karten-Vollbild + X und separater Webseiten-Vollbild-Button vorhanden. [PASS] Kartenfavoritenfilter getrennt von Listen. [PASS] PAUSE-Hold nur fuer zuvor gestoppte Busmarker. [PASS] Mobile-Dokument-Scroll und >500px Kartenhoehe per finaler Override-CSS definiert. [PASS] Optionales helles Outdoor-Theme + gruenes Standardtheme + Neon-Scrollbars. [NOTE] Chromium-Localhost-Klicktest durch ERR_BLOCKED_BY_ADMINISTRATOR in der Toolumgebung blockiert; Live-Smoke nach Upload erforderlich. 2026-08-30 · LIVE 503 RESILIENCE - PHP-Syntax api/bus-live.php: OK - PHP-Syntax includes/city-profiles.php: OK - JS-Syntax assets/js/app.js: OK - Simulierter Upstream-Ausfall: erster Versuch -> 503, zweiter unmittelbarer Versuch -> Retry-Cooldown in ~0.01 s: OK - Stale-Cache-Test (10 Minuten alt): 200-JSON / stale=true / Warnhinweis: OK - Client: 503/429 exponentieller Backoff statt 20-Sekunden-Fehlerflut: Codepfad geprüft - Soest: kompakter liveBbox-Erstversuch, breite bbox nur kurzer Fallback: geprüft - Dynamische Orte: Standard-Live-Radius 7 km: geprüft - Schul-/E-Wagen-Filter bleibt Listenfilter: unverändert - GPS / Liniennetz / Marker-Layer bleiben getrennt: unverändert V4 METROPOLEN-503-RESILIENCE · 30.08.2026 ----------------------------------------- [OK] Asset-Revision 20260830-pro-metro503-readability-v5. [OK] Hamburg/Berlin/München: dynamischer network.php-Pfad erzeugt keine zweite Transitous-map/trips-Abfrage. [OK] Dynamische radiusKm=9-Anfrage wird serverseitig auf max. 4 km Live-Radius begrenzt. [OK] Bus-Live-Cooldown liefert HTTP 200 + degraded:true + Retry-After statt HTTP 503. [OK] Network-Fallback liefert bei geo-* HTTP 200 + dynamicLiveFallback:true. [OK] Stops-Cooldown liefert HTTP 200 + degraded:true statt HTTP 503. [OK] app.js verhindert parallele Live-/Netz-/Stops-Abfragen und verwendet Retry-Backoff. [OK] 58 app.js-DOM-Referenzen, 0 fehlende IDs. [OK] 20 PHP-Dateien syntaxgeprüft; 2 JS-Dateien syntaxgeprüft; Manifest JSON gültig. [OFFEN LIVE] Transitous-Erfolgspfad für Hamburg/Berlin/München nach Upload prüfen; lokale Umgebung hatte kein DNS zu api.transitous.org. [OK] V5 Haltestellen-Live Kontrast: helles Theme hat helle stop-departure Karten mit dunklem Text; grünes Theme dunkle Karten mit hellem Text. [OK] Mobile stop dialog: Ziel 16px, Detail 13px, Abfahrtszeit 18px, Close 48x48px. [OK] Doppelmeldungen derselben tripId bzw. Linie/Richtung/Planminute werden zusammengeführt; Echtzeit hat Vorrang. LIVE-FAHRT-TEILEN REGRESSIONSSCHUTZ (30.08.2026) - Öffentlicher Share-Link enthält nur Zufallstoken, NIE GPS-Koordinaten oder Edit-Key. - Standardmodus: nur Bus-Liveposition. Eigener GPS-Punkt nur explizites Opt-in pro Freigabe. - Empfänger: Busposition + Richtung + nächster Halt + Ziel + CA.-Countdown. - Ziel ist aus verbleibenden Haltestellen wählbar; Default letzter verbleibender Halt. - Maximal 4 Stunden; vorzeitiges Beenden muss GPS-Punkt sofort entfernen. - Letzte Busposition darf bei kurzer Datenpause bis 12 Minuten sichtbar bleiben, aber als letzter Stand. - Live-Freigabe darf Schulbus-Listenfilter, Favoriten, Busmarker-Grundlogik, GPS-Layer oder Metropolen-503-Fix nicht vermischen. - data/live-shares gegen direkten Webzugriff sperren; Receiver noindex/noarchive.