FAQ & Glossar

Changelog

Alle nennenswerten Änderungen an diesem Projekt werden hier dokumentiert.

Format orientiert sich an Keep a Changelog; das Projekt folgt Semantic Versioning.

Was hier steht: was Du merkst — neue Funktionen, geändertes Verhalten, behobene Fehler, Sicherheitslücken und alles, was nach einem Update zu tun ist. Interne Umbauten ohne sichtbare Wirkung stehen bewusst nicht drin.

Nach jedem Update: Steht unter der Version ein Update-Hinweis, führ ihn aus. Fehlt er, ist nichts zu tun.


[4.9.5] — 2026-09-11

Nachgereicht am Tag der Auslieferung

Diese Punkte kamen aus Michaels Erprobung am Gerät und aus einem Durchgang durch das Handbuch, beides am 11.09.2026 — nach dem ersten Schnitt dieser Version und vor ihrer Auslieferung.

Handbuch

  • Zwei neue Seiten. Die ersten 30 Minuten führt durch den ersten Tag — anmelden, zurechtfinden, den ersten Eintrag schreiben, auf einen Alarm antworten. Bisher standen Anmelden und „Passwort vergessen" mitten im Kapitel über die sieben Rollen. Datenschutz & Aufbewahrung sammelt am Stück, was eine Wehr ihrem Träger vorlegen muss: welche personenbezogenen Daten entstehen, wer sie sieht, wie lange sie bleiben, wohin etwas das Haus verlässt.

  • Das Handbuch beschreibt wieder, wie es ist. Ein Durchgang über alle Seiten hat gut zwei Dutzend Stellen gefunden, an denen es etwas anderes sagte als die Software tut — darunter: der Not-Aus trifft drei von fünf Alarm-Meldungsarten, nicht alle; der Alarmmonitor zeigt den Einsatz auch bei gedrücktem Not-Aus; „laut" tragen zwei Meldungsarten; die Zugaben zum Rückzugsdruck werden beim Anlegen einer Überwachung eingefroren.

  • Und es liest sich wieder wie eine Anleitung: Quelltext-Namen, Datenbankspalten, Entwickler-Wörter („Modal", „Scope", „readonly") und Rückblicke auf frühere Versionen sind raus. Das Handbuch ist ohne Anmeldung lesbar — da gehört nichts hinein, was nur Entwickler angeht.

Behoben

  • Der Druck am Einsatzort darf nicht aus einem Flaschenwechsel stammen. Aus ihm entsteht der Rückzugsdruck — und er wird genau einmal gesetzt. Ein Trupp, der von 300 auf 100 bar herunteratmet, die Flasche wechselt und dann „am Einsatzort" meldet, hätte sonst einen Anmarschverbrauch von 0 und damit gar keine Rückzugsschwelle für den Rest des Einsatzes. Das Feld bleibt vorgetragen (für Abfrage, Pause und Entlassen ist der Wert richtig), vor diesem einen Vorgang fragt die Tafel jetzt nach.

  • Eine Übergabe aushandeln geht auch dann nicht „lautlos", wenn das WLAN steht. Anfragen, bestätigen und ablehnen brauchen das ETB. Der Riegel dafür hing daran, ob der Browser sich für offline hält — im Keller mit Accesspoint hält er sich für online. Der Vorgang landete dann in der Warteschlange, der Dialog schloss sich wie nach einem gelungenen Vorgang, und passiert ist nie etwas. Jetzt entscheidet der tatsächliche Fehlschlag, nicht die Behauptung des Browsers.

  • Der Empfänger-Wähler bietet keine Rolle mehr an, die der Server ablehnt. Bei Meldungen mit Klarnamen stand der Schwerpunkt-Dispo zur Wahl und wurde beim Speichern abgewiesen — mit einer Meldung, die behauptete, alle übrigen Kreise seien erlaubt. Beide sagen jetzt dasselbe.

  • Ein zu langes Stichwort-Muster in einer Alarm-Regel lief in einen Datenbankfehler statt sauber gekappt zu werden.

  • Der Timer läuft nach einem Neuladen ohne Netz weiter, statt von vorne zu beginnen. Ohne Verbindung bekam jede Kachel bei jedem Seitenaufbau einen vollen Takt geschenkt: „noch 10 Minuten", obwohl die letzte Abfrage acht Minuten her war. Das ist die gefährlichste Anzeige dieser Tafel, weil sie Ruhe behauptet, wo längst keine mehr ist.

    Der Anlauf vom 10.09.2026 konnte nicht wirken: Er verwarf den konservierten Wert richtigerweise — und die Vorausschau der Kachel schrieb unmittelbar danach einen frisch gerechneten hinein. Sie nimmt jetzt dieselbe Regel wie der Rest des Moduls: Takt = Ereigniszeit des Vorgangs plus Minuten. Fehlt die Ereigniszeit, steht dort ein Gedankenstrich statt einer erfundenen Restzeit.

  • Ein Flaschenwechsel gilt jetzt als Druckmessung. Wer für zwei Träger eine neue Flasche einträgt und den dritten abfragt, konnte danach „am Einsatzort" nicht melden: Die Tafel verlangte für jeden Träger einen Wert, und für die frisch Gewechselten stand keiner im Formular. Ohne Verbindung fiel das erst beim Nachreichen auf — der Eintrag wurde abgelehnt, und der gemessene Wert des dritten war mit weg. Jetzt steht der Druck der neuen Flasche im Erfassungsdialog schon drin, mit dem Vermerk, woher er stammt; ändern kannst Du ihn jederzeit. Und ein nachgereichter Eintrag wird nicht mehr abgewiesen, solange für jeden Träger ein dokumentierter Wert vorliegt.

    Die Zusage endet, sobald eine Abfrage folgt: Danach ist der Flaschendruck Geschichte, und das Feld bleibt wieder leer. Ein übernommener Wert nach einer halben Stunde wäre eine Messung, die nie stattgefunden hat.

Die Atemschutzüberwachung arbeitet ohne Netz vollständig weiter (#232). Mit der letzten Fassung ließ sich die Tafel im Funkloch schon bedienen — aber nicht alles davon war fertig: Wer führt, hing an einer Serverantwort; Protokoll und Ausdruck kannten nur, was angekommen war; die Übergabe verschob die Schreibhoheit gar nicht. Diese Fassung schließt das ab.

Alles, was Du auf der Tafel tust, wird im Gerät gerechnet und sofort gezeigt — einsetzen, abfragen, Pause, Rückzug, Flaschenwechsel, entlassen, übernehmen, abschließen, verbinden. Nicht erst beim nächsten Abgleich: Bisher zeichnete nur Pause und Entlassen sofort neu, jede andere Aktion stand bis zu 30 Sekunden alt da. Ein Balken sagt, dass gerade keine Verbindung besteht, und nennt die Uhrzeit des letzten Kontakts.

Neu

  • Meldungen aus der Atemschutzüberwachung stehen jetzt als „Atemschutz" in der Einsatzakte, nicht mehr als „System". Sie entstehen zwar automatisch — aber „System" war die unwichtigste wahre Antwort: Wer eine Akte nachliest, will wissen, welches Werkzeug gemeldet hat. Welche Überwachung es war, steht wie bisher im Text der Zeile, mit Truppbezeichnung und Uhrzeit. Gilt überall gleich — Einsatz, Abschnitt und Export.

  • Dieselbe Meldung landet nicht mehr mehrfach in der Einsatzakte. Unter Atemschutz verwalten steht dafür eine Zeitspanne — Vorgabe 10 Sekunden, 0 schaltet sie ab. Kommt derselbe Vorgang mit demselben Text innerhalb dieser Zeit noch einmal, wird er in der Zeitleiste des Einsatzes nur einmal vermerkt — derselbe Satz derselben Überwachung zu (nahezu) derselben Uhrzeit. Gedacht gegen versehentliche Doppelmeldungen: zweimal getippt, weil das Tablet hakte, oder zwei Geräte melden dasselbe.

    Der Atemschutz-Nachweis ist davon nicht betroffen — er nimmt jede Meldung, immer. Ein Notruf darf an nichts scheitern, auch nicht an „zu schnell hintereinander". Und eine Meldung mit anderem Inhalt geht immer durch: Ändert sich die Lage, steht das auch in der Zeitleiste. Ebenso nachgetragene Einträge — verbindest Du eine Überwachung später mit einem Einsatz, wandert ihr ganzer Verlauf vollständig hinüber.

  • Und eine Überwachung schreibt höchstens 30 Zeilen je Minute in die Einsatzakte. Unter Atemschutz verwalten steht dafür eine zweite Zahl — Vorgabe 30, 0 schaltet sie ab. Die Drossel darüber vergleicht Texte und fängt damit den versehentlichen Doppelklick; wer die Akte über den Tafel-Zugang absichtlich vollschreiben will, ändert aber einfach ein Zeichen. Dagegen hilft nur zählen: Diese Begrenzung fragt nicht, was kommt, sondern wie viel.

    Sie ist kein vollständiger Riegel, und das Handbuch sagt es. Wer jede Zeile um gut fünf Minuten zurückdatiert, kommt an beiden Zahlen vorbei — solche Zeilen stehen in der Akte praktisch dort, wo sie auch ohne Rückdatierung stünden. Die Lücke bleibt offen, weil die Alternative teurer wäre: Eine Begrenzung, die Nachgereichtes mitzählt, schneidet beim Wiederverbinden nach einem Funkloch echte Einsatzhistorie ab. Gegen einen Insider mit dem Zugangs-Code hilft nur, den Code zu erneuern.

  • Und eine zweite Zahl darunter: höchstens 100 je Minute und Einsatz. Die erste zählt je Überwachung — über den Tafel-Zugang lässt sich aber jederzeit eine neue anlegen, an jedem offenen Einsatz und ohne Obergrenze. Jede brächte sonst ein frisches Kontingent mit: Wer die Akte fluten will, legt einfach die nächste Überwachung an. Diese Stufe zählt über alle Atemschutzüberwachungen eines Einsatzes zusammen, also hilft ihm das nichts mehr — auch die Zeile, die das Anlegen erzeugt, fällt darunter.

    Ein MAYDAY geht immer durch — durch beide Zahlen und durch die Drossel. Mit der zweiten Stufe kann eine gesprächige Überwachung die Zeilen einer anderen am selben Einsatz verdrängen; für gewöhnliche Meldungen ist das der bewusste Preis, für einen Notruf nicht.

    Die engere Stufe meldet sich zuerst. Hängt eine Überwachung schon an ihrer eigenen Grenze, steht in der Zeitleiste der Hinweis zu ihr. Gezählt wird je Einsatz — ein gesprächiger Einsatz bremst keinen anderen —, und es gelten dieselben Ausnahmen: Funkloch-Rücklauf, nachträglich verbundene Überwachungen und der Atemschutz-Nachweis. Sie schweigt nicht. Greift sie, steht einmal in der Zeitleiste, dass aus dieser Überwachung ungewöhnlich viele Meldungen kommen und die weiteren vollständig im Atemschutz-Nachweis stehen — eine Lücke ohne diesen Satz läse sich wie ein Datenverlust.

    Gezählt wird je Überwachung: Eine gesprächige Tafel bremst eine zweite am selben Einsatz nicht mit. Der Atemschutz-Nachweis nimmt weiterhin jede Meldung, immer. Und nachgetragene Überwachungen sind ausgenommen — deren Verlauf wandert vollständig hinüber, egal wie lang er ist.

    Was aus einem Funkloch zurückkommt, zählt ebenfalls nicht mit. Hat die Tafel ohne Netz gearbeitet, gehen die gesammelten Einträge beim Wiederverbinden in wenigen Sekunden raus. Die Begrenzung lässt sie durch — sonst schnitte sie genau die Akte ab, die das Gerät gerade über das Funkloch gerettet hat.

  • Die Überwachung lässt sich aktiv übergeben. Bisher gab es nur den Weg von unten: Wer übernehmen wollte, stellte eine Anfrage. Am Fahrzeug ist es meistens andersherum — der Überwacher weiß, wer weitermacht. Neben seinem Namen steht jetzt Übergeben, mit drei Wegen: an einen angemeldeten Benutzer (der kann an jedem Gerät weiterarbeiten), an einen frei getippten Namen (dann bleibt die Überwachung an dieses Tablet gebunden — der Dialog warnt davor), oder an niemanden — die Überwachung steht dann wieder auf frei und lässt sich mit einem Klick übernehmen. Übergeben darf, wer führt; die Einsatzleitung darf sie auch abnehmen, und dann steht im Nachweis, wer es ausgelöst hat.

    Übergeben ist kein Abschluss. Die Überwachung läuft weiter, die Timer zählen weiter; es wechselt nur, wer schreiben darf. Im Nachweis steht danach, wer ab wann geführt hat. Ohne Netz geht es genauso.

  • MAYDAY: die Notlage eines Trupps lässt sich dokumentieren. Die FwDV 7 nennt so den Notruf eines Trupps. Im Erfassungsdialog eines Trupps im Einsatz steht dafür ein lila Knopf mit Blitz — an keine weitere Bedingung geknüpft; er öffnet ein Fenster über der Erfassung, in das Du schreibst, was Du weißt — wo der Trupp ist und was passiert ist. Bestätigst Du, wird festgehalten: Uhrzeit, der Trupp mit allen Trägern, die zuletzt erfassten Drücke und Dein Kommentar.

    Der Abfragetakt läuft weiter und der Rückzugsdruck gilt unverändert — eine Notlage ändert nichts daran, wie viel Luft der Trupp für den Rückweg braucht. Du kannst mehrfach melden; jede Meldung ist eine eigene Zeile.

    Die Drücke tippst Du nicht ab: Es sind die zuletzt dokumentierten, und die stehen bereits im Nachweis. Ein zweites Eingabefeld wäre eine zweite Wahrheit daneben.

    Gehört die Überwachung zu einem Einsatz, steht die Lage auch in dessen Zeitleiste — mit Truppbezeichnung, den Namen der Träger, den Drücken und Deinem Kommentar. Verbindest Du die Überwachung erst später mit einem Einsatz, wird sie dort nachgetragen.

    Ohne Netz funktioniert das genauso. Die Meldung wird im Gerät festgehalten und geht raus, sobald das ETB wieder erreichbar ist.

    In der Trupp-Übersicht bekommt die Kachel einen lila Rahmen, pulst und trägt hinter dem Truppnamen die Marke „MAYDAY seit 14:32" mit blinkendem Blitz — auch ohne Netz, sofort, und auf einem zweiten Gerät zusätzlich als Ansage. Lila und nicht rot, weil Rot auf dieser Tafel schon „Rückzugsdruck", „Abfrage überfällig" und „Einsatz läuft" bedeutet: So ist erkennbar, welcher der auffälligen Trupps der in Not ist. Die Kachel bleibt dabei voll bedienbar — Druck, Rückzug, Flaschenwechsel, alles geht weiter. Die Marke steht, bis der Trupp entlassen wird.

  • Ein Trupp darf jetzt aus drei Atemschutzgeräteträgern bestehen. Die FwDV 7 kennt Trupps aus zwei oder drei Trägern; der dritte ist meist der Melder. Im Dialog Trupp anlegen steht dafür unter dem Truppmann der Knopf „Melder hinzufügen". Er ist freiwillig: Wer ihn nicht braucht, merkt nichts — der Zweier-Trupp kostet keinen Tipp mehr als vorher. Blendest Du den Block ein und lässt den Namen leer, wird niemand angelegt; der Knopf heißt dann „Melder entfernen" und räumt die Eingabe wieder weg.

    Der Melder zählt überall mit: Er hat einen eigenen Anfangsdruck, wird bei jeder Abfrage mit erfasst, steht auf der Kachel, in der Historie und im Nachweis — und sein Rückzugsdruck zählt für den ganzen Trupp. Ist er der Schlechteste, schlägt die Tafel für den Trupp Alarm. Das alles funktioniert auch ohne Verbindung: anlegen, einsetzen, abfragen, entlassen.

    Auf der Kachel und im Nachweis trägt er die Marke ME; Truppführer und Truppmann heißen unverändert TF und TM.

    Kein Update-Hinweis, keine Schema-Prüfung. Die Datenbank trägt die dritte Rolle seit dem ersten Tag — es fehlte allein die Bedienung.

  • Beim Übernehmen einer freien Überwachung lässt sich ein anderer Benutzer eintragen. Statt eines freien Textfelds gibt es für Angemeldete eine Auswahlliste, vorbelegt auf den eigenen Namen — so lässt sich eine Überwachung an einem anderen Gerät weiterführen. Über den Tafel-Zugang ohne Konto bleibt es beim freien Text; die Namensliste der Wehr hängt nicht am QR-Code am Fahrzeug. Wird jemand anderes eingetragen, führt danach allein dessen Konto — die Gerätekennung des Eintragenden wird geleert, sonst dürften zwei schreiben. Der Nachweis nennt beide: den Eingetragenen und den, der ihn eingetragen hat.

  • Die Truppbezeichnungen sind konfigurierbar. In der Verwaltung unter Atemschutz lassen sich die Bezeichnung für den Atemschutztrupp (Standard „Atemschutztrupp“), ihre Anzahl (Standard 3) und die Bezeichnung für den Sicherheitstrupp (Standard „Sicherheitstrupp“) festlegen. Beim Anlegen eines Trupps bietet die Tafel daraus Vorschläge an — zusammengesetzt aus Einheit, Bezeichnung und laufender Nummer, etwa „E1 AGT 1“. Ein bereits vergebener Vorschlag wird nicht mehr angeboten, auch ohne Verbindung. Freier Text bleibt möglich.

  • Die Tafel sagt jederzeit, woran Du bist. Unter dem Kopf steht die Führung als Balken, und er wird laufend nachgeführt — auch wenn der Wechsel an einem anderen Gerät passiert: kein Balken heißt Du führst, sonst „… führt diese Überwachung. Du kannst nur zusehen.", „Diese Überwachung hat noch keinen Überwacher.", „Führung unbekannt." oder „Diese Überwachung ist abgeschlossen." Sprachausgaben hören jeden Wechsel angesagt.

  • „Führung unbekannt" sperrt nichts. Ohne Verbindung und mit einem zu alten Stand im Gerät kann die Tafel die Frage nicht beantworten — dann sagt sie genau das, statt „nichts gewusst" als „nicht erlaubt" auszugeben. Die Kacheln bleiben offen.

  • Wer nicht schreiben darf, kommt trotzdem an die Zahlen. Ein Tipp auf eine Trupp-Kachel öffnet dann dessen Historie statt der Erfassung — neu auch für laufende Trupps, nicht mehr nur für entlassene. Die Kachel sagt es vorher: Neben dem Truppnamen steht die Marke „nur ansehen". Gibt das führende Gerät ab, verschwindet die Marke von selbst.

  • Der Überwacher kommt jetzt ebenfalls an die Historie eines laufenden Trupps — über den Knopf Historie im Erfassungsdialog. Vorher war der Dialog für ihn unerreichbar, weil seine Kachel die Erfassung öffnet.

  • Die Historie gibt es für jeden Trupp — auch für einen, der ohne Verbindung angelegt wurde und noch läuft. Er muss dafür nicht erst entlassen oder vom Server bestätigt sein: Personen, Dauer unter Pressluftatmer und die volle Protokolltabelle entstehen aus denselben Einträgen im Gerät, die auch seine Kachel speisen.

  • Protokoll und Druckansicht zeigen auch das, was noch im Gerät liegt — an der richtigen Stelle der Zeitleiste einsortiert, mit dem Vermerk „noch nicht übertragen" und einer Legende im Fuß. Ein Trupp, den es nur auf diesem Gerät gibt, bekommt einen eigenen Abschnitt („nur auf diesem Gerät, noch nicht übertragen"). Damit bleibt der Atemschutznachweis nach FwDV 7 auch dann vollständig, wenn am Einsatzende kein Netz da war.

  • Die Liste unter Werkzeuge → Atemschutz zeigt ohne Verbindung angelegte Überwachungen mit — ganz oben, mit der Marke „Noch nicht übertragen" und einem Öffnen-Knopf wie jede andere Zeile. Vorher fehlten sie dort, und eine leere Liste liest sich wie „nichts angelegt".

  • Der Warteschlangen-Balken auf der Einsatzakte nennt sein Thema („Atemschutzüberwachung: 3 Einträge noch nicht übertragen …") und steht jetzt unter der Brotkrumen-Leiste statt darüber.

Geändert

  • Die Bezeichnung des Sicherheitstrupps gilt jetzt überall. Zwei Stellen trugen noch ein festes Wort: die kurze Pille auf der Trupp-Kachel („Sicherung“) und die Vorlage im Nachweis für Trupps, die ohne Verbindung angelegt wurden („Sicherungstrupp“). Auf demselben Ausdruck standen damit zwei Wörter für dieselbe Rolle.

  • Der Modul-Filter im Log-Dashboard ist alphabetisch sortiert. Die Liste war historisch gewachsen — jedes neue Modul kam hinten dran, zuletzt ATEMSCHUTZ. Wer dort etwas sucht, sucht alphabetisch.

  • Eine Formulierung für einen Zustand. Derselbe Sachverhalt hieß an fünf Stellen fünfmal anders; überall steht jetzt „noch nicht übertragen" — auf der Kachel, im Balken, in der Liste, im Protokoll und auf dem Ausdruck.

  • Eine Übergabe-Anfrage ablehnen hängt jetzt am Freigabe-Recht (atemschutz.freigeben) statt am Schreibrecht. Die harmlosere der beiden Richtungen darf nicht die höhere Hürde haben.

  • Die Rückfrage vor dem Übergeben nennt den Namen, an den übergeben wird.

  • Ein frei getippter Name ist als solcher erkennbar. Wer über den Tafel-Zugang (QR-Code am Fahrzeug, kein Konto) eine Übernahme anfragt, tippt seinen Namen selbst ein. Hinter diesem Namen steht jetzt an drei Stellen „über Tafel-Zugang": im Balken der offenen Anfrage, in der Rückfrage vor dem Übergeben und im Balken „… führt diese Überwachung", den jeder Zuschauer sieht — und dort auch dann, wenn der Wechsel erst während der Sitzung passiert. Damit ist sichtbar, ob ein angezeigter Name aus einem Konto stammt oder eine Behauptung ist; dieselbe Ehrlichkeit leistet der Nachweis schon.

  • Druck- und Einsatz-Ansicht laden kein Tafel-Skript mehr. Beide brauchten es nie: Eine Druckseite legt jetzt keine Gerätekennung an, startet keinen Sende-Kreislauf und trägt keinen Warteschlangen-Hinweis ins gedruckte Dokument — und wer nur einen Einsatz öffnet, bekommt weder einen wiederkehrenden Sendevorgang noch ein dauerhaftes Atemschutz-Gerätekennzeichen angelegt, bloß weil er hingesehen hat. Die Kennung entsteht dort erst, wenn das Formular AÜ anlegen wirklich abgeschickt wird; an der Bedienung ändert sich nichts.

Behoben

  • Der Not-Aus hinterlässt eine Spur, die niemand löschen kann. „Alarmierung aussetzen" ist der gefährlichste Schalter dieser Anwendung — eine stillgelegte Alarmierung sieht im Normalbetrieb aus wie „es ist nichts los". Der Vorgang stand bisher nur im Systemprotokoll, und das hat einen Knopf „alle Einträge löschen" sowie Aufräum-Stufen ab sieben Tagen: Wer abschaltete und danach aufräumte, hinterließ nichts. Jetzt führt das ETB eine eigene Aufstellung — Zeitpunkt, Person, Grund, Dauer, für das Aussetzen und das Wiedereinschalten. Sie steht aufklappbar unter der Karte, überlebt das Leeren des Protokolls und auch einen ETB-Reset, und der Name darin ist der, der damals galt.

  • Ein Überwacher-Wechsel ohne Netz behält seine Uhrzeit. Wurde die Überwachung offline abgegeben und kurz darauf wieder übernommen, bekam die Abgabe beim Übertragen die Uhrzeit von jetzt — und stand damit hinter der Übernahme. Ergebnis: Das ETB hielt die Überwachung danach für frei, obwohl jemand sie führte; Übersicht und Nachweis widersprachen sich, und in einem Fall fehlte ein Eintrag ganz.

    Gefunden bei der Offline-Abnahme am Gerät — kein automatischer Test konnte das sehen, weil es erst im Zusammenspiel zweier gepufferter Wechsel auftritt.

  • „50 bar in 1 Minuten" heißt jetzt „in 1 Minute".

  • Ein Stichwort-Muster kann keine Einheit mehr stillschweigend übergehen. Wer bei einer Einheit ein Alarm-Stichwort mit vielen Sternchen einträgt, konnte die Mustererkennung überfordern — sie brach ab, und die Einheit wurde nicht alarmiert, ohne dass irgendwo etwas stand. Jetzt wird im Zweifel alarmiert, und der Vorgang steht im Protokoll. (Ein Fehlalarm kostet eine Rückfrage, ein ausgebliebener Alarm kostet Zeit am Einsatzort.)

  • Nachalarmieren geht nicht mehr aus einer Großlage heraus. Der Alarm-Knopf schließt den Schwerpunkt-Modus aus; die Nachalarmierung tat es nicht und war damit der eine Weg, über den dort doch eine Vollalarmierung ausging.

  • Rückmeldungen lassen sich nur noch löschen, wenn man den Einsatz auch sehen darf. Geprüft wurden Recht und Rolle, nicht der Bereich — wer Zugriff auf die Verwaltung hatte, konnte durch Raten von Nummern Rückmeldungen zu Einsätzen außerhalb seiner Zuständigkeit entfernen.

  • Eine gelöschte Rückmeldung lässt sich nicht mehr über den alten Link erneut geben. Der Antwort-Schlüssel blieb gültig.

  • Die Aufräum-Frist erreicht jetzt auch alte Rückmeldungen ohne Zeitstempel. Sie fielen nie darunter — die Zusage griff ausgerechnet bei den ältesten nicht.

  • „Protokoll" und „Drucken" verschwinden bei einer noch nicht übertragenen Überwachung. Sie führten dort ins Leere — ohne Netz auf die Ersatzseite, mit Netz auf eine Fehlermeldung. Genau diese Vorsicht galt seit Anfang September schon im Historie-Dialog, die beiden Knöpfe im Kopf gingen leer aus.

  • Die Fehlerbox im Abschnitts-Dialog ist im Dunkelmodus nicht mehr weiß. Sie benutzte zwei Farbnamen, die es nie gab — und fiel damit auf die hellen Rückfallwerte zurück.

  • „Übergabe bestätigen" ohne Netz sagt jetzt, dass es nicht geht. Der Dialog schloss sich wie nach einem gelungenen Vorgang — bewirkt hat der Klick nichts. Eine Übergabe auszuhandeln (anfragen, bestätigen, ablehnen) braucht das ETB; alles andere lässt sich weiter erfassen.

  • Eine wiederholte Übernahme-Anfrage blockiert die Übergabe nicht mehr. Jede neue Anfrage ersetzte die vorige und setzte die Uhr neu — wer ständig anfragte, konnte damit jede echte Übergabe verhindern. Eine fremde Anfrage weicht jetzt erst nach zwei Minuten; die eigene lässt sich jederzeit auffrischen.

  • Ein zweiter Anlauf schreibt keinen zweiten Eintrag mehr in den Nachweis. Lief das Übernehmen einer Überwachung in einen Timeout und kam Sekunden später doch durch, stand sie danach zweimal im Atemschutz-Nachweis — und die Uhrzeit „führt seit" sprang auf den zweiten Versuch. Dasselbe beim Anlegen: Scheiterte der Journaleintrag, meldete das ETB trotzdem Erfolg, und der nächste Versuch legte eine zweite Überwachung an.

  • Eine übergebene Überwachung sieht von außen nicht mehr wie eine freie aus. Wer sie außerhalb seines Bereichs sieht, bekommt die Namen geschwärzt — und ausgerechnet ein leerer Name bedeutet intern „an niemanden übergeben". Für diese Betrachter stand deshalb „hat noch keinen Überwacher" über einer Überwachung, die jemand führt.

  • Zwei Hinweise auf der Trupp-Kachel verdeckten sich gegenseitig. „Noch nicht übertragen" und „kein Rückzugsdruck" belegten dieselbe Stelle — ohne Netz liegt beides ständig an, und der erste fiel weg. Ebenso verschwand „Abfrage überfällig", sobald zusätzlich der Rückzugsdruck erreicht war: der wahrscheinlichste Ernstfall.

  • Der Warnrahmen „kein Rückzugsdruck" war unsichtbar. Ein Trupp, der drin ist, ohne dass sich sein Rückzugsdruck berechnen lässt, soll einen gestrichelten Rahmen bekommen — eine Klammer zu viel im Stylesheet machte die ganze Regel wirkungslos, ohne jede Fehlermeldung. Alle hielten den Rahmen für vorhanden; es gab ihn nie.

  • Der Fokusrahmen der Trupp-Kachel ist im Dunkelmodus wieder zu sehen. Er war dort dasselbe Rot wie im Hellmodus und hob sich kaum ab — auf einer MAYDAY-Kachel am wenigsten. Wer die Tafel mit einer Tastatur bedient, sah nicht, wo er steht.

  • Die beiden Atemschutz-Knöpfe in der Einsatzansicht haben Namen. Sie enthielten nur das Symbol; eine Sprachausgabe las für beide dasselbe vor („Atemschutzgeräteträger") und sagte nicht, was sie tun. Auf dem Tablet gibt es kein Hover — der Tooltip half dort auch Sehenden nicht.

  • Trupp- und Trägernamen landen nicht mehr ungefiltert in der Einsatzakte. Der Name des Überwachers wurde seit Anfang September entschärft, die Namen aus dem Trupp-Dialog nicht: Über den Tafel-Zugang ließ sich damit ein klickbarer Verweis oder eine beliebig hohe Zeile in eine fremde Einsatzakte setzen — in einen Eintrag, den niemand mehr ändern kann.

  • Eine Meldung mit Uhrzeit in der Zukunft sagt es jetzt. Die Gerätezeit wird auf zwei Stunden geklammert, und eine Rückdatierung war als „nachgetragen" markiert — eine Vordatierung nicht. Die Zeile stand stundenlang unkommentiert ganz oben in der Zeitleiste.

  • Die Tafel sperrt nicht mehr, was das ETB erlaubt. Drei Fälle waren betroffen: Nach „an niemanden übergeben" erschien der Übernehmen-Knopf nicht mehr — die Überwachung blieb verwaist. Wer die Überwachung mit seinem Konto übernommen hatte, bekam auf einem zweiten Gerät nur die Ansicht, obwohl der Dialog „arbeitet an jedem Gerät weiter" verspricht. Und der Administrator stand vor denselben gesperrten Kacheln.

    Die Tafel rechnet ihren Zustand selbst — damit sie ohne Netz weiterläuft. Sie kennt dabei aber weder Rechte noch Konten; das weiß nur das ETB. Jetzt gilt dessen Antwort, solange sich die Führung nicht auf dem Gerät geändert hat.

  • „Übernahme anfragen" ohne Netz führt nicht mehr in die Irre. Auf einer Überwachung, die jemand anders führt, ist der Knopf eine Anfrage — der bisherige Überwacher führt weiter, bis er bestätigt. Ohne Verbindung zeigte die Tafel danach trotzdem „Du führst" und ließ erfassen; beim nächsten Netz wies das ETB alles davon ab. Die Drücke waren weg. Jetzt bleibt die Anfrage eine Anfrage.

  • Eine hängende Trupp-Anlage legt nicht mehr die ganze Warteschlange still. Kam das Anlegen eines Trupps nach zehn Versuchen nicht durch — ein überlasteter Server für zwei Minuten reicht —, warteten alle folgenden Eintragungen dieses Trupps ab da für immer: Drücke, Rückzug, Entlassen, MAYDAY. Der Balken sagte weiter „geht raus, sobald wieder Verbindung da ist". Jetzt sagt die Tafel, dass der Trupp nie angekommen ist und von Hand nachzutragen ist.

  • Die Seite „Keine Verbindung" kann nicht mehr dauerhaft verschwinden. Sie wurde nur beim Einrichten des Hintergrunddienstes geholt; ging sie einmal verloren, landete jeder Rückfall auf der Fehlerseite des Browsers. Sie holt sich jetzt selbst zurück.

  • Die Schema-Prüfung meldet einen misslungenen Schritt nicht mehr als Erfolg. Die Reparatur bricht bei einem Fehler bewusst nicht ab, sondern macht weiter — die fehlgeschlagenen Schritte wurden bisher aber wie erledigte mitgezählt, und oben stand grün „Reparatur abgeschlossen". Jetzt steht dort gelb, wie viele Schritte nicht durchliefen, und der Hinweis, dass ein zweiter Lauf oft hilft.

  • Eine Aktualisierung braucht keinen zweiten Reparatur-Lauf mehr. Drei Spalten wurden an einer Stelle einsortiert, die es zu dem Zeitpunkt noch gar nicht gab — der erste Lauf scheiterte daran. Am deutlichsten bei den Einheiten: Bis zum zweiten Klick ließ sich keine Einheit mehr speichern.

    Dazu bekamen drei Spalten frisch aufgesetzte Anlagen gar nicht, weil sie nur im Nachrüst-Weg standen — darunter der Haken Atemschutzgeräteträger in der Benutzerverwaltung, der dort wirkungslos blieb.

  • Die beiden Auswahlen unter Atemschutz verwalten sagen jetzt, wofür sie sind. Über „Anfangsdruck" und „Kennzeichen für Atemschutzgeräteträger" stehen je fünf Auswahlknöpfe. Die Beschriftung darüber war zwar zu sehen, gehörte technisch aber zu keinem davon — eine Sprachausgabe las deshalb nur „300, Optionsfeld", ohne die Frage dazu. Jetzt ist die Zuordnung hinterlegt; sichtbar ändert sich nichts.

  • Ein Eintrag, der gehangen hat, meldet sich zurück. Lief ein Absenden in einen Timeout, warnte der Balken — ging der Eintrag Sekunden später doch durch, verschwand die Warnung einfach. Wer sie gesehen hatte, wusste nicht, ob sein Druckwert im Nachweis steht, und trug ihn im Zweifel ein zweites Mal. Jetzt steht da: „Nachgetragen: Druckabfrage von 14:32 Uhr steht jetzt im Nachweis."

  • Übernahmen einer anderen Überwachung flossen in die falsche Tafel. Die Warteschlange im Gerät gilt geräteweit; gerechnet wurde ohne Rücksicht darauf, zu welcher Überwachung ein wartender Eintrag gehört. Wer ohne Netz eine übernahm und danach eine andere öffnete, sah dort einen Überwacher, der woanders führt.

  • Ein nachgereichter Flaschenwechsel auf denselben Wert wurde verworfen. Trifft der gemeldete Druck zufällig genau den Stand von damals — eine frische 300er-Flasche auf einen Träger, der noch bei 300 stand —, galt er als „nichts geändert", und der ganze Vorgang wurde abgelehnt. Beim Nachtrag zählt jetzt, was das Gerät meldet.

  • Ein nicht lesbares Journal sieht nicht mehr aus wie ein leeres. Die Abfrage fing einen Datenbankfehler ab und lieferte „keine Einträge" — darauf beruhten die Vergleichsbasis der Drucksperre und die Werte, die in den Nachweis gehen. Jetzt heißt es „nicht jetzt": Der Eintrag bleibt in der Warteschlange und kommt gleich noch einmal.

  • Ein nachgereichter Druck wurde gegen den falschen Vorwert geprüft. Meldet ein Gerät ohne Netz um 22:05 einen Rückzug mit 240 bar und ist bis zur Rückkehr ins Netz am ETB schon die nächste Abfrage eingegangen (180 bar um 22:09), verglich der Server den nachgereichten Wert mit den 180 — und 240 ist mehr. Ergebnis: die harte Sperre „Der Druck kann nicht steigen", der Eintrag war weg. Diese Sperre ist richtig und bleibt; falsch war die Vergleichsbasis. Ein nachgereichter Eintrag wird jetzt gegen den Stand geprüft, wie er zu seiner eigenen Uhrzeit war — was danach kam, ist für ihn nicht geschehen. Auch die Zeitspanne zählt bis zum Eintrag, nicht bis jetzt.

  • Beim Zurückkommen ins Netz gingen Einträge verloren — je schneller die Verbindung wieder da war, desto eher. Wurde ein Trupp ohne Netz zum Rückzug aufgefordert und entlassen, konnten beide Einträge beim Nachreichen abgelehnt werden: „2 nachgereichte Einträge wurden abgelehnt und fehlen im Nachweis". Der bereits entlassene Trupp stand danach wieder im Einsatz. Ursache war die Rückfrage bei ungewöhnlichen Druckwerten. Sie wird bei nachgereichten Einträgen bewusst durchgelassen — niemand kann sie Stunden später beantworten, und eine Zahl mit Vermerk ist mehr wert als eine Lücke. Erkannt wurde der Nachtrag aber an der Uhr: Ereigniszeit über eine Minute alt. Kam das Netz nach zwanzig Sekunden zurück, griff das nicht. Jetzt sagt das Gerät ausdrücklich, dass es die Warteschlange abarbeitet. Die harten Sperren (über 330 bar, gestiegener Druck ohne Flaschenwechsel) bleiben davon unberührt.

  • Eine ohne Netz angelegte Überwachung war nach dem Übertragen „erst mal weg". Sie bekommt beim Nachreichen ihre endgültige Nummer — die Tafel stand danach aber noch unter der alten, örtlichen Adresse und zeigte deshalb nichts mehr an; erst ein Neuladen brachte sie zurück. Eine leere Tafel liest sich wie „kein Trupp im Einsatz" und ist damit die gefährlichste Anzeige überhaupt. Die Tafel wechselt jetzt selbst auf die neue Adresse — ohne Neuladen, ohne dass etwas springt.

  • Ohne Verbindung begann der Timer nach jedem Neuladen wieder von vorne. Die Tafel, die das Gerät ohne Netz ausliefert, ist eine Konserve — und sie trägt die Restzeit von dem Moment, in dem sie abgelegt wurde. Bei jedem Neuladen zählte der Timer deshalb wieder ab derselben Zahl; wurde die Seite kurz nach einer Abfrage abgelegt, war das fast der volle Takt. Eine Anzeige, die Ruhe behauptet, wo längst keine mehr ist. Die Tafel erkennt jetzt, dass sie aus dem Speicher kommt, und zeigt die Restzeit erst wieder, wenn der Takt bestätigt ist — aus dem, was im Gerät gerechnet wurde, oder vom ETB. Bis dahin steht dort nichts: unbekannt ist hart, aber ehrlich.

  • Ohne Verbindung war eine Trupp-Kachel nach dem Einsetzen ein totes Bild. Sie ließ sich anfassen und tat nichts: kein Erfassungsdialog, also keine Drücke, kein Flaschenwechsel, kein Rückzugsdruck — und der Status blieb stehen, weil sich nichts mehr melden ließ. Betroffen war jede Kachel, die ohne Netz neu gezeichnet wird: ein dort angelegter Trupp und jeder Wechsel zwischen „In Bereitschaft", „Im Einsatz" und „Aus Einsatz entlassen". Dasselbe galt für ESC und den Klick neben einen Dialog, der ohne Netz entstanden ist. Mit Netz war nie etwas davon zu sehen.

  • Ohne Verbindung wurde ein Flaschenwechsel nicht übernommen. Der Dialog „Flasche gewechselt" liegt über dem Erfassungsdialog — und der bleibt dabei geöffnet. Nach einer eigenen Eingabe zeichnet die Tafel neu, aber einen offenen Dialog lässt sie dabei in Ruhe, solange die Änderung nicht von ihr selbst kommt. Online sagt sie das dazu, ohne Verbindung sagte sie es nicht: Das Modal schloss sich, und darunter standen die alten Drücke. Beide Wege sagen es jetzt.

  • Nach einer Übernahme ohne Verbindung stand in der Übersicht weiter „noch niemand" — und die Überwachung blieb unter „Frei". Die Tafel rechnete richtig, die Übersicht liest aber den Satz im Gerät, und der wurde beim Anlegen einmal geschrieben und nie wieder angefasst. Dasselbe galt fürs Abschließen (selbst gefunden). Beides wird jetzt nachgeführt — beim ersten Anlauf lief die Nachführung allerdings kein einziges Mal: Sie stand im Zweig fürs Anlegen, und eine Übernahme legt nichts an. Zu sehen war das als Balken „Führung unbekannt — deine Einträge könnten abgelehnt werden" auf einer Tafel, die sich einwandfrei bedienen ließ, und als ein Abschließen, das ohne Netz nichts bewirkte.

  • Wer eine Tafel öffnet, nimmt die anderen Überwachungen jetzt mit ins Funkloch. Vorgehalten wurden sie bisher nur, wenn Du vorher die Übersicht aufgerufen hattest — wer stattdessen die Tafel neu lud und losfuhr, hatte genau diese eine Seite im Gerät. Jede andere Überwachung meldete ohne Verbindung wahrheitsgemäß „dieses Gerät kennt diese Überwachung nicht", und Abschließen war dort nicht möglich. Jetzt lädt auch die Tafel bis zu fünf weitere laufende oder freie Überwachungen vor (die eigene nicht noch einmal), im Hintergrund und ohne Eile. Abgeschlossene bleiben wie bisher außen vor.

  • Der Einheiten-Name fehlte ohne Verbindung vor dem Truppnamen — dort stand „Atemschutztrupp 1" statt „Berkum Atemschutztrupp 1". Die Ersatztafel kennt keine Einheit; die Überwachung im Gerät inzwischen schon.

  • Die AGT-Vorschläge stehen jetzt auch ohne Verbindung zur Verfügung. Beim Anlegen eines Trupps schlug die Tafel im Funkloch niemanden vor — übrig blieb der Freitext. Die Ersatztafel, die das Gerät ohne Netz ausliefert, ist nämlich bewusst datenfrei: Sie gilt für jede Überwachung und darf keine Klarnamen tragen. Die Namen kommen deshalb jetzt getrennt davon ins Gerät — und liegen dort unter derselben Regel wie jede gespeicherte Tafel: Meldet sich am Fahrzeug-Tablet jemand anderes an, sind sie weg. Wer schon in einem Trupp dieser Überwachung steht, ist wie gewohnt ausgegraut — auch ohne Netz.

  • Ohne Verbindung wusste die Tafel nichts über die Überwachung selbst. Sie rechnete nur die Trupps; die Überwachung baute sie aus dem Nichts — „frei", ohne Überwacher, Führung unbekannt. Drei Falschaussagen auf einmal, auf einer Tafel, die dieses Gerät selbst angelegt hat und selbst führt: Der Kopf schrieb den richtigen Überwacher wieder auf „noch niemand", die gelbe Warnung „Führung unbekannt — Deine Einträge könnten abgelehnt werden" stand über einer einwandfrei arbeitenden Tafel, und eine Überwachung ohne Überwacher ließ sich ohne Netz nicht übernehmen — der Balken mit „Übernehmen" erscheint nur, wenn die Führung bekannt ist. Was das Gerät über seine eigene Überwachung weiß, zählt jetzt: Bezeichnung, Grund, Einheit, Überwacher und Status. Der Server gewinnt weiterhin überall dort, wo er etwas sagt.

  • Die gewählte Einheit war nach dem Anlegen verschwunden. Sie stand im Dialog und danach nirgends mehr — ohne Verbindung kann sie niemand nachschlagen. Sie wird jetzt mitgeschrieben und steht im Kopf der Tafel, neben dem Grund.

  • Der Timer fing nach jedem Neuladen wieder von vorne an. Die Vorlage, aus der die Tafel eine Trupp-Kachel ohne Verbindung baut, kam mit einer laufenden Restzeit auf die Welt — „jetzt + Takt", gesetzt in dem Moment, in dem die Seite erzeugt wurde. Jeder daraus gebaute Trupp trug sie mit, bis sie überschrieben wurde. Auf einer Atemschutztafel ist eine falsche Restzeit der gefährlichste denkbare Anzeigefehler. Die Vorlage ist jetzt ein Blanko: Sie trägt überhaupt keine Uhrzeit mehr, weder eine Restzeit noch ein „im Einsatz seit". Was wirklich gilt, wird aus den Uhrzeiten der Einträge gerechnet — und das überlebt jedes Neuladen.

  • Nachgereichte Einträge gingen verloren, wenn ein Druck ungewöhnlich war. Trägst Du einen auffälligen Wert ein, fragt das ETB nach — „ungewöhnlich viel, trag es noch einmal ein, wenn es stimmt". Online beantwortest Du das im Dialog. Bei einem Eintrag aus dem Funkloch ist aber niemand mehr da, der antworten könnte: Die Rückfrage wurde zur Sperre, und der Eintrag fehlte anschließend im Nachweis — samt der gemessenen Drücke. Ein nachgereichter Eintrag wird jetzt angenommen und trägt die Rückfrage als Vermerk mit: Im Nachweis steht dann, dass der Wert ungewöhnlich ist, statt dass er fehlt. Unmögliche Werte (über 330 bar, gestiegener Druck) bleiben gesperrt.

  • Eine Überwachung ohne Überwacher stand ohne Verbindung unter „Laufend" statt unter „Frei". Sie versteckte sich damit vor genau dem, der sie übernehmen soll.

  • Ohne Verbindung kam „Keine Verbindung", obwohl die Seite im Gerät lag. Der Webserver hängt an jede Antwort den Vermerk Vary: X-Forwarded-For, User-Agent. Der Browser-Speicher nimmt das wörtlich: Er gibt eine gespeicherte Seite nur heraus, wenn diese Angaben beim Speichern und beim Suchen übereinstimmen — und das tun sie nicht, je nachdem ob die Seite beim Aufrufen oder im Hintergrund abgelegt wurde. Ergebnis: Die Seite lag da und wurde trotzdem nicht gefunden, ohne jede Meldung. Für das ETB ist der Vermerk gegenstandslos — es liefert nicht unterschiedliche Seiten je Browser. Er wird beim Suchen jetzt ausgeblendet.

  • Die Seite „Keine Verbindung" sagt jetzt, warum sie da ist. Unten steht aufklappbar „Technische Angaben (für die Fehlersuche)": welche Adresse aufgerufen wurde, ob der Service Worker läuft, und was das Gerät an Seiten vorhält. Bisher war das von außen nicht zu sehen — wer im Funkloch steht, kann kein Log-Dashboard aufrufen, und ohne diese Angabe ließ sich nicht unterscheiden, ob eine Seite fehlt, der Speicher leer ist oder gar kein Service Worker läuft. Nur Adressen, keine Inhalte: Namen und Drücke aus den gespeicherten Tafeln stehen dort nicht.

  • Die Übersichtsseiten der Atemschutzüberwachung zeigten ohne Verbindung „Keine Verbindung", wenn Du sie vorher nie mit Netz geöffnet hattest. Für eine einzelne Überwachung hält das ETB seit Langem eine leere Ersatztafel bereit — für die beiden Listen („Alle Überwachungen" und die Liste im Einsatztagebuch) gab es keinen Ersatz: Treffer oder Fehlerseite. Und der übliche Weg führt an ihnen vorbei, weil die Tafel aus der Liste heraus in einem neuen Reiter aufgeht. Wer dann ohne Netz auf „Übersicht" tippte, stand vor der Fehlerseite. Beide Listen werden jetzt genauso vorgehalten wie die Ersatztafel — nachgesehen bei jedem Aufruf einer Atemschutzseite, geholt nur, wenn sie fehlen.

  • Der Timer eines Trupps sprang nach jedem Neuladen auf die volle Zeit zurück — und bei einem ohne Verbindung eingesetzten Trupp lief er gar nicht erst an. Die Tafel merkte sich die Kacheln mit Timer einmal beim Laden und fror den Zielzeitpunkt dabei ein. Eine Kachel, die später entsteht — und das ist jeder ohne Verbindung angelegte Trupp —, war nie dabei; stand beim Laden gar kein Trupp im Einsatz, lief der Sekundentakt überhaupt nicht an. Und weil der eingefrorene Zeitpunkt aus der gespeicherten Seite stammen konnte, zeigte die Kachel nach jedem Neuladen wieder „10:00", obwohl der Trupp längst drin war. Auf einer Atemschutztafel ist das der gefährlichste denkbare Anzeigefehler. Die Restzeit wird jetzt jede Sekunde frisch aus dem gerechneten Stand gelesen — der überlebt jedes Neuladen, weil er an den Uhrzeiten der Einträge hängt und nicht am Seitenaufbau.

  • „Achtung: … fehlt auf der Tafel" erschien für Träger, die auf der Tafel standen. Beim Anlegen eines Trupps meldete die Tafel jeden Träger als nicht darstellbar, während die Kachel daneben alle korrekt zeigte. Ein Alarm, der bei richtiger Anzeige losgeht, wird weggeklickt — und dann fällt der echte Fall nicht mehr auf. Er kommt jetzt nur noch, wenn wirklich ein Platz fehlt.

  • Der Hinweis „Kein Sicherungstrupp in Bereitschaft" fehlte ohne Verbindung — und blieb online stehen, wenn zwischendurch einer bereit wurde. Er wird jetzt laufend nachgeführt, aus derselben Rechnung, die auch die Kacheln füllt.

  • Wurden mehrere nachgereichte Einträge abgelehnt, fehlte der Grund. Die Meldung nannte nur Uhrzeiten — bei einem einzelnen Eintrag stand der Grund seit jeher dabei. Jetzt bei beiden.

  • Nach jedem Sitzungsablauf war die Atemschutztafel offline weg — die Anmeldemaske löschte den Seitenspeicher. Der Seitenspeicher gehört dem angemeldeten Menschen und wird geräumt, sobald eine Antwort eine fremde Kennung trägt. Die Anmeldemaske sendete „niemand" — und das ist eine fremde Kennung. Auf einem Fahrzeug-Tablet läuft die Sitzung alle zwölf Stunden ab; jeder Ablauf warf damit die gespeicherte Tafel und die leere Ersatztafel weg, mit der eine ohne Verbindung angelegte Überwachung überhaupt erst geöffnet werden kann. Wer danach im Funkloch eine Überwachung aufrief, sah die Seite „Keine Verbindung". Ohne angemeldeten Menschen geht jetzt gar keine Kennung mehr hinaus: „niemand da" ist keine Aussage darüber, wem der Speicher gehört. Und die leere Ersatztafel holt sich das Gerät ab jetzt selbst — beim Start, nach jedem Räumen und wenn sie fehlt; vorher hing sie allein an einem Skript, das dafür erst geladen werden musste.

  • Eine Überwachung ohne Überwacher ließ sich nicht mehr übernehmen, wenn man den Dialog einmal weggeklickt hatte. Das „X" galt als Antwort „ich will nur zusehen", und der Knopf Übernehmen über der Tafel war ausgerechnet für die unsichtbar, die übernehmen dürfen. Jetzt merkt sich nur noch der ausdrückliche Knopf „Nur zusehen (nicht mehr fragen)" die Ablehnung; das X, ein Klick daneben und ESC heißen „später" und fragen beim nächsten Öffnen wieder. Der Balken mit Übernehmen steht dauerhaft über der Tafel, solange niemand führt.

  • Der „freie Name" im Anlege-Dialog wurde durch den eigenen Kontonamen ersetzt. Wer angemeldet war, konnte über die Auswahl „— freier Name —" niemanden eintragen, der kein Konto hat — es stand immer der eigene Name da, ohne Hinweis. Der getippte Name trägt jetzt. Damit erkennbar bleibt, dass er kein bestätigtes Konto ist, steht „ohne Konto" jetzt überall neben ihm — auf der Tafel, im Protokoll und im Atemschutznachweis, nicht mehr nur in der Übersichtsliste. Und im Einsatzprotokoll steht dazu, wer ihn eingetragen hat.

  • Ein freier Name bindet die Überwachung an dieses eine Gerät — der Dialog sagt es jetzt, sobald Du „freier Name" wählst. Ohne Konto gibt es keine Benutzer-Kennung, mit der das ETB die Schreibberechtigung erkennen könnte; es bleibt allein die Kennung dieses Browsers. Auf einem anderen Gerät steht der Name dann zwar da, schreiben kann dort aber niemand. Wer an mehreren Geräten führen will, wählt eine Person aus der Liste.

  • Ohne Verbindung fehlte in der Übersicht der Überwacher, wenn er aus der Namensliste gewählt worden war — dort stand „noch niemand", obwohl schon jemand eingetragen war.

  • Am Fahrzeug-Tablet löschte sich der Offline-Speicher der Atemschutztafel selbst. Ohne Konto — also über den QR-Zugang — sendeten die Atemschutzseiten eine andere Kennung als jede andere Seite des ETB. Der Seitenspeicher gehört dem angemeldeten Menschen und wird geräumt, sobald eine Antwort eine fremde Kennung trägt: Ein einziger Aufruf daneben — ein Tipp auf „Zum Einsatztagebuch" genügte — warf damit die gespeicherte Tafel weg. Ohne Netz stand danach die Offline-Seite da, wo die Tafel stehen müsste. Genau der „Keine Verbindung"-Fehler, nur mit einer neuen Ursache. Zusätzlich entscheidet jetzt allein ein Seitenaufruf über den Besitzer des Speichers — ein nachgeladenes Symbol ist kein Benutzerwechsel.

  • Nach einem Update lud eine gespeicherte Tafel ohne Netz keine Skripte mehr. Die Seite kam aus dem Speicher und verwies auf die alte Fassung ihrer Dateien; die war beim ersten Online-Kontakt nach dem Update aufgeräumt worden. Ergebnis: eine Tafel, die aussieht wie eine Tafel und nichts tut — schlimmer als eine Fehlermeldung, weil sie nicht sagt, dass sie kaputt ist. Ohne Netz zählt jetzt der Pfad, nicht die Fassung.

  • Ein überlasteter Server löschte gemessene Drücke. Antwortete er auf einen nachgereichten Eintrag zehnmal mit „nicht jetzt" (gut zweieinhalb Minuten — auf geteiltem Webspace keine Seltenheit), verwarf das Gerät danach den Trupp samt allem, was für ihn noch wartete. „Nicht jetzt" ist aber kein „nie": Der Eintrag verlässt jetzt die Warteschlange, damit sie nicht blockiert — was auf dem Gerät steht, bleibt stehen.

  • Der Weg aus der Atemschutzüberwachung zurück in den Einsatz verlor die Großlage. Wer aus einem Schwerpunkt heraus eine Überwachung öffnete und von dort in den Einsatz zurückging, landete ohne den Schwerpunkt-Rahmen und musste sich neu hineinfinden. Betrifft die Tafel, den Nachweis am Bildschirm und die Übersicht. Der Kontext hängt dabei nicht an der Adresse der Atemschutzseiten — sonst hätte die Tafel zwei Adressen, und ihr Seitenspeicher fürs Funkloch läge unter der falschen.

  • Nach einem Flaschenwechsel fiel der zweite Träger aus der Zeile des gedruckten Nachweises. Auf dem Ausdruck steht in jeder Zeile eines Trupps ein Druck je Träger — auch dann, wenn der Vorgang selbst keinen neuen Wert mitbringt; dann wird der zuletzt dokumentierte mitgeführt. Diese Fortschreibung entschied bisher aber je Zeile: Trug ein Eintrag irgendeinen eigenen Wert, galten nur seine. Der Regelfall dafür ist der Flaschenwechsel — er betrifft eine Person, und für den zweiten Träger blieb die Zeile leer, obwohl sein zuletzt dokumentierter Wert bekannt war. Auf einem Nachweis, der im Zweifel ein Jahr später vorgelegt wird, liest sich diese Lücke als „dazu ist nichts bekannt". Entschieden wird jetzt je Person.

    Damit können in einer Zeile ein gemessener und ein mitgeführter Wert nebeneinander stehen. Die Kennzeichnung „(zuletzt dokumentiert)" hängt deshalb jetzt am einzelnen Wert statt am Zeilenende — vorher hätte sie über die halbe Zeile etwas Falsches behauptet. Zeilen, die auf dem Gerät liegen und noch nicht übertragen sind, werden genauso geschrieben.

  • Ein einzelner Lesefehler des Servers löschte gemessene Drücke. Kam ein ohne Netz angelegter Trupp oder eine ohne Netz angelegte Überwachung beim Wiederverbinden nach, schlug der Server nach, was er dazu schon hat. Konnte er in diesem Moment nicht nachsehen — ein abgerissener Datenbankzugriff genügte —, antwortete er wie bei „gibt es nicht mehr": Das Gerät verwarf daraufhin den Trupp und alles, was für ihn noch in der Warteschlange lag. Beides sind jetzt zwei verschiedene Antworten. Bei der vorübergehenden bleibt der Eintrag im Gerät und geht gleich noch einmal raus; die Warteschlangen-Anzeige sagt dabei, dass der vorderste Eintrag hängt und wie oft er schon abgewiesen wurde. Nach zehn vergeblichen Anläufen — gut zwei Minuten — meldet sie ihn zum Nachtragen von Hand, statt still weiterzudrehen (Issue #236).

  • Eine ohne Netz angelegte Überwachung stand mit der falschen Uhrzeit im Einsatztagebuch. Sie trug dort die Uhrzeit der Wiederverbindung statt die des Anlegens und bekam deshalb auch keinen „(nachgetragen …)"-Vermerk — während ein nachgereichter Trupp beides richtig zeigte. Zwei Wege, dieselbe Sache, unterschiedliche Auskunft auf einem Nachweis, den im Zweifel jemand ein Jahr später liest. Beide nehmen jetzt die Gerätezeit, mit derselben Klammer wie überall sonst (mehr als zwei Stunden Abweichung gilt als unplausibel, dann zählt die Serverzeit und der Versatz wird mitgeschrieben) — und Nachweis und Zeitleiste nennen dieselbe Sekunde.

  • Ein unmöglicher Druck kam trotz Sperre in die Warteschlange. Fehlte für einen Träger der Druck, kam die Rückfrage „Ein Träger fehlt"; wer sie bestätigte, schickte das Formular ein zweites Mal ab — und dabei wurde die Plausibilitätsprüfung übersprungen. Ein Tippfehler beim anderen Träger (280 statt 250 bar, also ein steigender Druck ohne Flaschenwechsel) ging damit ungeprüft ohne Netz in die Warteschlange und wurde beim Wiederverbinden abgelehnt — der gemessene Wert war weg. Eine Sperre lässt sich jetzt durch nichts übersteuern, auch nicht durch eine vorher bestätigte Rückfrage. Und sie zeigt sich, selbst wenn die Dialog-Anzeige nicht geladen ist: Vorher passierte in dem Fall sichtbar gar nichts.

  • Auf dem Telefon stand eine leere Tabellen-Kopfzeile unter „Noch keine Überwachung". Die schmale Ansicht machte Tabellen scrollbar — und hob damit aus Versehen auch das Verstecken einer leeren Tabelle auf. Das betraf jede Seite mit Tabelle im ETB.

  • Der Ausdruck des Nachweises ließ sich starten, bevor er vollständig war. Bei hängender Verbindung — Funkloch, schwaches Netz — dauert es ein paar Sekunden, bis die ohne Netz erfassten Drücke nachgetragen sind. Wer in dieser Zeit druckte, bekam einen Nachweis ohne sie, ohne dass man es ihm ansah. Der Knopf wartet jetzt und sagt, worauf.

  • Fehlt ein Träger auf der Tafel, wird es jetzt auch angesagt. Die Meldung nennt zuerst den Namen, holt sich ins Bild und wird von Sprachausgaben vorgelesen. Ist kein Name bekannt, steht die Rolle im Klartext da statt tf/tm.

  • Nach „Fortsetzen" zeigte die Kachel ohne Verbindung weiter „pausiert". Wer den Abfragetakt eines Trupps im Funkloch anhielt und dann wieder fortsetzte, bekam auf der Tafel keine Rückmeldung: Die Marke „pausiert" blieb stehen, die Restzeit blieb verborgen — obwohl der Takt schon wieder lief. Das Zurückschalten hing an einem Abgleich, der ohne gespeicherten Stand gar nicht erst zeichnet, also ausgerechnet auf einem Gerät, das die Tafel nur aus dem Speicher kennt. Jetzt schaltet dieselbe Stelle, die das Anhalten anzeigt, auch das Fortsetzen — sofort und ohne Verbindung.

  • Eine Überwachung, die Du anlegst und gleich selbst führst, stand nicht in der Zeitleiste des Einsatzes. Im Atemschutz-Protokoll war sie vollständig, im Einsatztagebuch fehlte sie. Wer dieselbe Überwachung dagegen als freie anlegte und eine Minute später übernahm, hinterließ dort „Atemschutz: Überwachung übernommen von …". Zwei Wege zum selben Ergebnis, zwei verschiedene Spuren. Jetzt schreiben beide denselben Eintrag — genau einmal: Wird das Anlegen aus der Warteschlange nachgereicht, entsteht kein zweiter, revisionsfester Kommentar. Eine Überwachung ohne Einsatzbezug (mit Grund statt Einsatz) hat keine Zeitleiste und bekommt weiterhin keinen Eintrag.

  • Ein nachgereichter Trupp stand zweimal im Einsatzprotokoll. Wurde ein ohne Verbindung angelegter Trupp beim Wiederverbinden nachgereicht, schrieb das ETB ein zweites Mal „Atemschutz: … in Bereitschaft" in die Zeitleiste des Einsatzes. Diese Einträge sind System-Kommentare und damit revisionsfest — sie lassen sich nicht mehr entfernen. Die Weiche davor fragte nach der Nummer des Trupps statt danach, ob dieser Aufruf ihn überhaupt angelegt hat; seit dem 02.09.2026 gibt der Server auch beim zweiten Versuch die echte Nummer zurück, damit das Gerät seine wartenden Einträge zuordnen kann, und seitdem war die Weiche immer erfüllt.

  • Die Warteschlange konnte dauerhaft stehen bleiben — lautlos. Wurde ein ohne Verbindung angelegter Trupp oder eine so angelegte Überwachung nachgereicht und war der Vorgang beim Server längst angekommen, meldete er „war schon angelegt“ — konnte die vorhandene Zeile aber in seltenen Fällen nicht mehr benennen (Lesefehler, oder sie war inzwischen gelöscht). Er antwortete trotzdem mit Erfolg ohne Nummer. Das Gerät konnte seinen örtlichen Eintrag daraufhin weder zuordnen noch aufräumen: Ab da blieb alles Weitere in der Warteschlange hängen — jede Abfrage, jeder Rückzug, jeder Flaschenwechsel —, ohne Zähler, ohne Meldung, während der Balken weiter versprach, es gehe raus, sobald wieder Verbindung da sei. Im Atemschutznachweis fehlte danach alles ohne Netz Erfasste. Jetzt gilt: Ohne Nummer ist es kein Erfolg. Der Vorgang wird abgelehnt, gezählt und gemeldet, der Überwacher liest, was zu tun ist, und der Fall steht mit der Gerätekennung im Log-Dashboard. Die Tafel verlässt sich zusätzlich nicht mehr auf das Wort des Servers: Sie räumt auf, sobald eine eigene Anlage nach dem Umlauf keine Nummer bekommen hat — gleich, was die Antwort behauptet.

  • Ohne Verbindung ging ein unplausibler Druck verloren, statt beanstandet zu werden. Der Server kennt drei harte Sperren (negativer Wert, über 330 bar, steigender Druck ohne Flaschenwechsel) und zwei Rückfragen. Die Tafel kannte nur die Rückfragen — ein gesperrter Wert wanderte ohne Verbindung kommentarlos in die Warteschlange, wurde beim Wiederverbinden abgewiesen und fiel samt der ganzen Erfassung heraus. Die gemessene Zahl war dann weg. Die Prüfung liegt jetzt als Zwilling unter der gemeinsamen Falltabelle, wie jede andere fachliche Regel des Moduls.

  • Der Sicherheitstrupp-Haken liess sich nicht zurücknehmen. Wer beim Anlegen erst den Sicherheitstrupp-Vorschlag antippte und dann einen anderen, legte einen gewöhnlichen Trupp mit gesetztem Sicherheitstrupp-Merkmal an — sichtbar an der Kachel und im gedruckten Nachweis, und nur durch Löschen zu korrigieren.

  • Eine abgelehnte Erfassung nannte ihre Zahlen nicht. Wird ein Vorgang beim Nachreichen zurückgewiesen, fehlt er im Nachweis — der Überwacher soll ihn von Hand nachtragen. Der Merker hielt aber nur Zeit, Aktion und Grund fest, nicht die gemessenen Drücke. „Trag sie von Hand nach“ war damit nicht ausführbar. Sie stehen jetzt drin, mit Name und Rolle statt einer Personennummer (Issue #233).

  • Eine abgelehnte Nachreichung blieb unsichtbar. Kam das Gerät nach einer Zeit ohne Verbindung zurück und wies der Server einen nachgereichten Vorgang zurück, sah der Überwacher davon nichts: Eine Bildschirmmeldung gab es nur, wenn eine ohne Verbindung neu angelegte Überwachung abgelehnt wurde. Fiel dagegen ein Vorgang zu einer bestehenden Überwachung heraus, sprang die Tafel kommentarlos auf den Serverstand zurück — es sah aus, als sei nichts gewesen. Jetzt wird jede Ablehnung sofort gemeldet.

  • Ein Übernehmen wurde mit der Schreibzeit statt der Ereigniszeit vermerkt. Ein nachgereichtes Übernehmen stand damit im Nachweis zu dem Zeitpunkt, an dem die Verbindung zurückkam, nicht zu dem, an dem es geschah.

  • Eine freie Überwachung liess sich ohne Verbindung nicht übernehmen. Der Service Worker lieferte zwar das Gerüst aus, aber dessen Platzhalter ist fest als laufend gebaut — der „Übernehmen?“-Dialog hängt am Status frei und stand darin nie im Markup. Er wird jetzt immer gerendert; nur das automatische Öffnen hängt am tatsächlichen Status. Ausserdem deckt das Vorabladen jetzt auch freie Überwachungen ab — vorher wurden nur laufende zwischengespeichert.

  • Beim Flaschenwechsel erschien ein Wechsel bei jemandem, der keinen hatte. Der Dialog schickt immer beide Drücke mit, auch den unveränderten. Der Server filtert das richtig — unverändert heißt kein Wechsel —, der JavaScript-Zwilling hatte diesen Filter aber nicht. Solange die Meldung unterwegs oder in der Warteschlange lag, zählte jeder übermittelte Druck als Wechsel.

  • Ein zweiter Flaschenwechsel wurde übergangen. Kannte der Server bereits einen früheren Wechsel, gewann dieser gegen jeden neueren, noch nicht abgeglichenen — die Kachel zeigte weiter Druck und Flaschennummer des ersten. Jetzt gewinnt der zeitlich jüngere.

  • Ein ohne Verbindung angelegter Trupp konnte als Leiche zurückbleiben. Lehnte der Server das Anlegen ab — etwa weil ein Truppmann fehlte —, wurde der Eintrag aus der Warteschlange genommen, der örtliche Trupp blieb aber stehen. Auf dem Gerät sah er vollständig und bedienbar aus; es gab ihn nirgends, und jede Folgehandlung endete mit „den Trupp gibt es nicht“. Er wird jetzt samt aller wartenden Folgehandlungen entfernt, und der Grund der Ablehnung erscheint sofort auf dem Bildschirm.

  • Ohne Verbindung fiel eine leere Truppmann-Angabe gar nicht auf. Der Anlege-Dialog prüft Pflichtfelder bewusst erst im Endpunkt — und die örtliche Darstellung setzte an die leere Stelle das Rollenwort „Truppmann“. Der Trupp sah damit richtig aus und wurde beim Abgleich zu Recht abgewiesen. Die Prüfung greift jetzt schon beim Anlegen, wortgleich zur Servermeldung.

  • Im Trupp-Dialog konnte die Uhr einfrieren — und aus einer Pause kam sie nicht zurück. Der Kopf rendert bisher entweder „pausiert“ oder die laufende Uhr; wurde er im Pause-Zweig gebaut, gab es das Zählwerk gar nicht, und das Umschalten einer CSS-Klasse konnte keines erzeugen. Zudem meldete dieser Pfad eine geänderte Fälligkeit nie an den gemeinsamen Takt an, sodass der Countdown im Dialog auch im laufenden Fall stehenbleiben konnte. Beide Teile stehen jetzt immer im Markup und werden per hidden geschaltet.

  • Abgelehnte Vorgänge waren nirgends nachlesbar. Weist ein Endpunkt eine Aktion zurück, sah der Überwacher eine Meldung — und danach war sie weg. Endgültig verworfene Warteschlangen-Einträge standen nur im Sitzungsspeicher des Browsers und starben mit dem Reiter. Beides steht jetzt im Protokoll. Ausserdem fehlte ATEMSCHUTZ im Modul-Filter des Log-Dashboards: Geschrieben wurde, angezeigt nicht.

  • Die Gerätekennung stand im Klartext im Protokoll. Für ein Tablet ohne Konto ist sie der einzige Schreibausweis, und das Dashboard liest der Administrator. Sie erscheint jetzt als nicht umkehrbarer Fingerabdruck.

  • Die Trupp-Kachel zeigte den Stand vom Seitenaufbau, nicht den vom Klick. Wer „Am Einsatzort“ meldete oder den Rückzug anordnete, sah weiter „im Anmarsch“ — online wie offline, bis jemand neu lud. Die Pillen wurden vom Server bedingt gerendert; was beim Laden nicht galt, stand gar nicht erst im Dokument, und ein Skript kann nicht einblenden, was nie da war. Sie stehen jetzt immer im Markup und werden aus dem gerechneten Zustand geführt. Dasselbe galt für die Flaschenwechsel-Marke am Druckwert.

  • Der Takt lief erst nach einem Neuladen an. Eine Kachel, die zur Laufzeit ihren ersten Takt bekam — frisch eingesetzt oder ohne Verbindung neu entstanden — stand nicht in der Liste der tickenden Kacheln; die wurde nur fortgeschrieben, nicht ergänzt.

  • Eine ohne Verbindung angelegte Überwachung ließ sich nicht öffnen. Statt der Tafel kam die Offline-Seite. Zu einer örtlich angelegten Überwachung gibt es nie eine gespeicherte Seite — der Service Worker fällt dafür auf das datenfreie Gerüst zurück, das die Tafel anschließend aus dem örtlichen Stand füllt. Dessen Abruf hängte aber am Vorabladen anderer Überwachungen, und das läuft nur, wenn mindestens eine laufende Überwachung in der Liste steht. Bei leerer Liste wurde das Gerüst nie geholt — und damit fehlte der Rückfall für jede Adresse. Er wird jetzt vor jeder Bedingung geholt.

  • Die Übergabe einer Überwachung verschob die Schreibhoheit nicht. Der Abgebende behielt sie, der Übernehmende bekam keine — in der Zeile stand der Name des Neuen neben der Kennung des Alten. Die Bestätigung liest die Identität jetzt ausschließlich aus der gespeicherten Anfrage; sie prüft dabei, dass die Anfrage noch dieselbe ist wie beim Anzeigen („Die Anfrage hat sich geändert — sieh sie Dir noch einmal an."). Eine Anfrage ohne Kennung wird schon beim Stellen abgewiesen, sonst könnte danach niemand mehr schreiben.

  • Die Einsatzleitung durfte ablehnen, sah den Knopf aber nie. Wer nur atemschutz.freigeben hatte, bekam den Balken mit Ablehnen und Übergeben gar nicht zu Gesicht.

  • Ein Gerät, dem während der Sitzung die Führung entzogen wurde, blieb ohne Weg zur Übernahme. Es gab zwei Balken für denselben Fall, und der mit dem Übernahme-Knopf entstand nur beim Seitenaufbau. Jetzt gibt es einen, immer im Markup, mit dem Weg darin.

  • Frei- und Abgeschlossen-Balken wurden nie nachgeführt. Übernahm während der Sitzung jemand, standen drei Aussagen über dieselbe Führung übereinander, zwei davon falsch; ein Abschluss während der Sitzung wurde gar nicht gemeldet.

  • Eine gesperrte Kachel zeigte auf einen Dialog, den es nicht gab — der Tipp darauf tat lautlos nichts. Und gab das führende Gerät wieder ab, ohne dass hier jemand klickte, blieb die Kachel dauerhaft bei der Historie stehen.

  • Der Nachweis verschwieg ganze Trupps — Trupps, die es nur auf dem erfassenden Gerät gab, fehlten in Protokoll und Ausdruck ersatzlos. Kommt die Seite an sie nicht heran, sagt sie es jetzt, statt sie stillschweigend wegzulassen.

  • Auf dem Ausdruck war die Kennzeichnung nur eine Farbfläche. Browser drucken Hintergründe standardmäßig nicht — auf dem Papier blieb ein unerklärtes Symbol ohne Legende. Der Vermerk steht jetzt als Text in der Zeile.

  • Nachtragszeilen hingen am Tabellenende statt nach Ereigniszeit einsortiert, und sie sahen anders aus als die Zeilen darüber (andere Zeitform, Drücke ohne Namen) — zwei Formate in einer Tabelle lesen sich wie zwei Quellen.

  • Ein ohne Verbindung angelegter Trupp rechnete mit festen 10 Minuten statt mit dem eingestellten Abfragetakt. Nach dem Abgleich sprang seine Restzeit.

  • Auf dem führenden Gerät meldete die Tafel „frei", wenn der örtliche Stand die Journalzeilen der Überwachung noch nicht kannte.

  • Übernehmen und Abschließen scheiterten auf einer Installation ohne gelaufenen Schema-Check. Beide kommen jetzt ohne die neue Spalte aus — siehe Update-Hinweis.

Sicherheit

  • Die Kennung eines Journaleintrags ging an jeden Betrachter und ließ sich in die Nummer einer fremden Überwachung umtauschen. Der Standabruf der Tafel gab für jeden Trupp-Eintrag die geräteeigene Kennung heraus — auch an einen Dispositionsdienst außerhalb seines Schwerpunkts —, und wer eine solche Kennung an das Anlegen einer Überwachung anhängte, bekam mit „war schon angelegt" die Nummer einer fremden Überwachung zurück. Auszunutzen war das nicht: Die Zielseite schwärzt korrekt, und Nummern lassen sich ohnehin durchzählen. Trotzdem: Die Suche geht jetzt nur noch auf Anlege-Einträge, und die Antwort wird vorher gegen den Bereich geprüft — so wie es jede andere Aktion dieses Endpunkts längst tut. Kennung und vollständige Druckreihe eines fremden Einsatzes gehen nicht mehr hinaus; Name und aktueller Druck bleiben unverändert geregelt (Issue #235).

  • Protokoll und Ausdruck zeigten am geteilten Tablet die Daten des Vorgängers. Der Riegel, der den örtlichen Speicher gegen die eigene Anmeldung prüft, wirkte nur auf der Tafel — die beiden Nachweis-Seiten lasen denselben Speicher ohne jede Prüfung. Wer sich am Fahrzeug-Tablet anmeldete und ohne Netz den Nachweis öffnete, bekam Klarnamen und Drücke des Vorigen in den Ausdruck gezeichnet. Beide Seiten holen sich die Kennung jetzt selbst aus dem Netz — nie aus dem eigenen Markup, das ja selbst aus dem Seitenspeicher stammen kann — und räumen einen fremden Satz, statt ihn zu zeichnen.

  • Am geteilten Tablet konnte der Nächste die Tafel des Vorgängers sehen. Der Seitenspeicher wird geräumt, sobald eine Antwort aus dem Netz eine andere Nutzerkennung trägt — diese Kopfzeile sendeten aber nur die vier Atemschutz-Seiten. Wer sich anmeldete, losfuhr und die Tafel erst ohne Netz öffnete, bekam die des Vorgängers samt Klarnamen, Drücken und Einsatzbezug — auch ohne eigenes Leserecht. Die Kopfzeile setzt jetzt bootstrap.php zentral, also auch die Anmeldeseite und die Landeseite danach (Issue #234).

  • Beim Anlegen mit Fremdzuweisung durften zwei schreiben. Trug jemand beim Anlegen einer Überwachung einen anderen Benutzer als Überwacher ein, blieb die eigene Gerätekennung als führend stehen — danach durfte der Eingetragene über sein Konto und der Anlegende weiter über das Gerät schreiben. Auf einer Tafel, die den Rückzugsdruck von Menschen unter Atemschutz führt, ist das der gefährlichste Zustand. Derselbe Fehler war beim Übergeben und beim Übernehmen bereits geschlossen; hier stand er noch.

  • Die Bereichsprüfung der Atemschutzüberwachung hat nie gefeuert. Ein SP-Disponent konnte über ?ue=1, ?ue=2, … Klarnamen der Atemschutzgeräteträger, Anfangs- und Restdrücke und den ganzen Journalverlauf zu Einsätzen weit außerhalb seines Schwerpunkts lesen. Die Prüfung greift jetzt — und zwar an allen vier Türen: Tafel, Protokoll, Ausdruck und Schnittstelle. Außerhalb Deines Bereichs stehen statt der Namen der Träger, des Erfassers und der Notiz Gedankenstriche; Truppnamen, Zeiten und Zahlen bleiben sichtbar. Der Tablet-Zugang ist nicht betroffen — er hat keinen Bereich, sondern den Zettel am Fahrzeug.

  • Die Gerätekennung des führenden Geräts stand in der Antwort für jeden Zuschauer. Sie ist zugleich der Schreibausweis: Wer sie lesen konnte, konnte damit schreiben. Herausgegeben wird jetzt nur noch die eigene Kennung.

  • Der örtliche Speicher der Tafel wird auch beim stillen Benutzerwechsel geräumt. Auf einem Fahrzeug-Tablet meldet sich niemand ab — die Sitzung läuft ab, der Nächste meldet sich an. Bis jetzt wurde der Stand des Vorigen mit Klarnamen und Drücken weitergezeichnet. Die Kennung dafür stammt ausschließlich aus einer echten Serverantwort, nie aus einer Konserve.

  • Die Liste unter Werkzeuge → Atemschutz landet nicht mehr im Browser-Zwischenspeicher. Auf einem geteilten Tablet war sie über den Zurück-Knopf erreichbar — mit Einsatznummer, Stichwort und den Klarnamen der Überwacher.

Update-Hinweis

Schema-Check nötig (/admin/schema-check.php → „Reparieren").

Zwei neue Spalten. atemschutz_ue.uebergabe_an_geraet hält die Kennung des Geräts, das eine Übergabe angefragt hat — über den Tablet-Zugang gibt es kein Konto, dort ist das Gerät die einzige Kennung. einsatz_kommentar.eingang_at hält fest, wann eine Zeile wirklich ankam: Die bisherige Zeitangabe trägt bei einem Nachtrag die Ereigniszeit, und die kommt über den Tafel-Zugang aus einem Formularfeld. Eine Mengenbegrenzung, an deren Uhr der Begrenzte selbst dreht, wäre keine.

Dazu drei Indexe auf der Kommentartabelle, damit die Begrenzung nicht bei jeder Meldung die ganze Historie durchsucht. Sie kommen mit demselben Lauf.

Und sechs Spalten, die vorher nur der halbe Weg bekam. Drei scheiterten im ersten Reparatur-Lauf, weil sie an einer Stelle einsortiert waren, die es zu dem Zeitpunkt noch nicht gab — am deutlichsten bei den Einheiten: Bis zum zweiten Klick ließ sich keine speichern. Drei weitere bekamen frisch aufgesetzte Anlagen gar nicht, darunter der Haken Atemschutzgeräteträger in der Benutzerverwaltung. Beides ist behoben; ein Lauf genügt jetzt.

Solange der Lauf fehlt, fällt genau eine Sache aus: das Übergeben. Eine Anfrage an einen Tablet-Zugang lässt sich nicht stellen und eine offene Anfrage nicht bestätigen. Übernehmen, Ablehnen und Abschließen laufen weiter — ausdrücklich so gebaut, damit eine laufende Überwachung nicht an einer fehlenden Spalte hängen bleibt. Dasselbe gilt für die Mengenbegrenzung: Ohne eingang_at schreibt die Tafel weiter wie bisher — die Begrenzung zählt dann nur nichts und greift nie. Kein Ausfall, aber auch kein Schutz.

Was ohne Verbindung weiterhin nicht geht: übergeben. Anfragen, bestätigen und ablehnen brauchen das ETB. Die Kennung des übernehmenden Geräts lässt sich ohne Netz nicht prüfen, und zwei Geräte, die beide glauben zu führen, sind genau der Zustand, den dieses Modul verhindert. Alles andere geht — bis hin zur Historie jedes Trupps, auch der eines gerade erst örtlich angelegten.

Der erste Teil dieser Version — ausgeliefert am 02.09.2026

Diese Abschnitte standen bis zum Release unter einer eigenen Versionsnummer. Getaggt wurde sie nie: Die Atemschutzüberwachung wuchs im Betrieb weiter, und alles darüber gehört zu derselben Auslieferung. Sie stehen hier unverändert, weil sie beschreiben, was seit dem 02.09.2026 auf den Geräten lief.

Atemschutzüberwachung (#232). Das ETB führt jetzt Trupps unter Pressluftatmer: anlegen, einsetzen, in festen Abständen den Flaschendruck abfragen, entlassen. Am Ende steht ein lückenloses, nicht änderbares Protokoll, das als Nachweis taugt — auf Knopfdruck als Ausdruck oder PDF und im Einsatz-Bericht.

Gearbeitet wird auf einer Tafel im Vollbild, gebaut für das Tablet am Fahrzeug: große Kacheln, Knöpfe für Handschuhe, Uhr in der Ecke. Wer dort steht, muss sich nicht anmelden — ein QR-Code an der Fahrzeugklappe genügt.

Sie bleibt nicht stehen, wenn das Netz weg ist. Keller, Tiefgarage, Funkloch am Waldrand — das ist der Normalfall, nicht die Ausnahme. Die Tafel rechnet deshalb im Gerät: Drücke, Rückzugsdruck, Reservebalken und Takt entstehen dort, der Server ist ein zweiter Teilnehmer und kein Vorgesetzter. Ohne Verbindung lässt sich alles bedienen — bis hin zu einer neu angelegten Überwachung mit neuen Trupps. Ein Balken sagt, wie viele Einträge warten; sobald die Verbindung steht, gehen sie der Reihe nach raus — jeder mit seiner eigenen Uhrzeit und im Protokoll als nachgetragen gekennzeichnet. Der Abgleich unterbricht die Bedienung dabei nie: Ein offener Dialog und ein Feld, in dem jemand tippt, werden nicht angefasst.

Ein Handgriff macht das möglich: einmal mit Netz die Liste unter Werkzeuge → Atemschutz öffnen. Sie lädt die laufenden Überwachungen im Hintergrund auf das Gerät — danach geht Flugmodus.

Der Rückzugsdruck wird nach der FwDV 7 gerechnet (2 × Anmarschverbrauch), mit optionalem Sicherheitszuschlag und Mindestdruck aus Eurer Dienstanweisung — beide ab Werk auf 0, dann gilt die reine Norm. Das ETB warnt, es ordnet nichts an: Die Entscheidung bleibt beim Überwacher.

Neu

  • Tafel und Übersicht — die Vollbild-Tafel (/atemschutz.php) zum Arbeiten, die Liste unter Werkzeuge → Atemschutz zum Nachsehen: wer führt was, seit wann, wie viele Trupps.
  • Trupps mit Truppführer und Truppmann, Kennzeichen Sicherungstrupp, Anfangsdruck je Person. Die Namen kommen als Knöpfe — vorgeschlagen wird, wer zum Einsatz zurückgemeldet hat und als Atemschutzgeräteträger gekennzeichnet ist. Wer schon in einem Trupp steht, ist nicht wählbar.
  • Abfrage-Timer je Trupp (Vorgabe 10 Minuten, an der Tafel mit −5/−1/+1/+5 änderbar). Läuft er ab, wird die Kachel orange, nach einer Minute rot und zählt aufwärts weiter.
  • Drücke als Knöpfe, absolut beschriftet — über Funk kommt „Truppführer 210", und genau diese 210 tippst Du an. Für krumme Werte ±5 genau.
  • „Am Einsatzort" setzt das Ende des Anmarschs fest — erst danach steht der Rückzugsdruck.
  • „Flasche gewechselt" als eigener Dialog: Beide Träger stehen darin, jeder mit seinem zuletzt dokumentierten Druck. Ein geänderter Wert ist der Wechsel, ein unveränderter heißt „keine neue Flasche". Der Rückzugsdruck ändert sich dadurch nicht — er rechnet gegen den Anmarsch, und der Weg zurück bleibt derselbe.
  • Der Wechsel steht danach da, wo er die Zahl erklärt: als Pille „⇄ 2. Flasche · 300 bar · 09:49" im Erfassungsdialog und als Wechselzeichen direkt vor der Zahl auf der Kachel. Ohne Vermerk stünde dort ein Druck, der gegen jede Erwartung gestiegen ist — im Nachgang wie im Stress liest sich das wie ein Zahlendreher.
  • „Rückzug anordnen" — der Befehl wird mit Uhrzeit protokolliert und steht als gelbe Pille auf der Kachel. Der Trupp bleibt unter Pressluftatmer und wird weiter abgefragt, bis er zurück ist.
  • Zwischen-Bereitschaft: den Takt anhalten, ohne zu entlassen. Der Trupp ist heraus, sitzt am Fahrzeug, behält sein Gerät an und geht gleich wieder rein — ihn zu entlassen zerschnitte seinen Einsatz, ihn weiter takten zu lassen brächte Dir bei, den Alarm wegzuklicken. Das Pause-Zeichen rechts neben dem Zeitsteller hält den Abfragetakt genau eines Trupps an: Der Status bleibt im Einsatz, die Kachel zeigt statt der Restzeit „pausiert", aus dem Knopf wird Fortsetzen, und ein angehaltener Trupp löst keine Warnungen aus (am Fahrzeug verbraucht er nichts). Die aktuellen Drücke sind Pflicht — sie sind der Ausgangswert beim Fortsetzen. Der Takt rechnet ab dem Fortsetzen neu, und beide Vorgänge stehen im AÜ-Protokoll und im Einsatzprotokoll, wo sie die Lücke in den Abfragen erklären.
  • Übernehmen und übergeben — eine Überwachung ohne Überwacher fragt beim Öffnen von selbst („Überwachung übernehmen?"), Nur zusehen schließt den Dialog. Führt sie jemand anderes, heißt der Knopf „Übernahme anfragen"; der amtierende Überwacher sieht die Anfrage oben und entscheidet Ablehnen / Übergeben. Wer atemschutz.freigeben hat (Einsatzleiter, Lage, Administrator), übernimmt direkt — für den Fall, dass der Überwacher nicht mehr erreichbar ist. Jeder Wechsel steht mit Uhrzeit und Namen im Protokoll.
  • Protokoll drucken — Knopf Drucken auf Tafel und Protokollseite öffnet das AÜ-Protokoll als Druckstück, das der Browser als PDF speichert. Auch über den Tablet-Zugang ohne Anmeldung.
  • QR-Code und Aushang für den Tablet-Zugang — der Code wird im Haus gerechnet, nicht bei einem Bild-Dienst bestellt: Sonst ginge die Adresse mitsamt Zugangsschlüssel an einen Fremden. Dazu ein Aushang zum Ausdrucken mit großem Code, Adresse zum Abtippen und dem Hinweis, dass der Zettel ein Schlüssel ist.
  • Knopf an der Einsatzansicht — legt eine Überwachung für diesen Einsatz an, bewusst ohne Überwacher (sie wartet auf dem Tableau). Läuft schon eine, führt derselbe Knopf dorthin und zeigt die Zahl der Trupps im Einsatz.
  • Kennzeichen „Atemschutzgeräteträger" je Person in der Benutzerverwaltung, mit wählbarem Symbol (Vollmaske, Pressluftflasche, Kreis-A). Bewusst nur ein Haken — das ETB ist ein einsatzbezogenes Werkzeug und keine Personalverwaltung.
  • „AGT" hinter dem Namen in den Rückmeldungen und auf dem Alarmmonitor. Wer die Rückmeldungen im Alarmfall liest, liest sie mit einer Frage im Kopf: Reicht es für einen Trupp? Als Wort, nicht als Symbol — auf einem Wandbildschirm liest man aus fünf Metern mit; Sprachausgaben lesen „Atemschutzgeräteträger". Das Kennzeichen hängt am Modulschalter Atemschutz (ist er aus, erscheint es nirgends) und für Angemeldete zusätzlich am Leserecht atemschutz.view. Der Bildschirm ohne Anmeldung zeigt es ebenfalls — er kennt keine Rechte, dort ist der Modulschalter die einzige Grenze. Rückmeldungen aus dem Telegram-Chat (Merker „alt") bekommen keins: Dort steht ein Name, aber keine Person — ein geratenes Kennzeichen wäre schlimmer als keins.
  • Die Tafel arbeitet zuerst im Gerät. Sie rechnet den Zustand jedes Trupps selbst — Drücke, Rückzugsdruck, Reservebalken, Takt — und schickt danach an den Server. Ohne Verbindung geht alles: eine Überwachung anlegen, Trupps anlegen, einsetzen, abfragen, Flasche wechseln, pausieren, Rückzug anordnen, entlassen. Was so entsteht, steht sofort als Kachel da und lässt sich vollständig bedienen; beim Wiederverbinden geht alles der Reihe nach raus, jedes mit seiner eigenen Uhrzeit.
  • Nachträglicher Einsatzbezug — eine ohne Einsatz angelegte Überwachung lässt sich später einem Einsatz zuordnen: Knopf Verbinden im Kopf der Tafel. Sie bekommt dabei die feste Kennung des Einsatzes, und die bereits erfassten Vorgänge wandern mit ihrer Ereigniszeit in das Einsatzprotokoll — an der richtigen Stelle der Zeitleiste und als nachgetragen gekennzeichnet. Damit muss der Betrieb ohne Verbindung nicht können, was er nicht kann: einen Einsatz wählen, den das Tablet noch nie gesehen hat.
  • Einheiten: „Stellt Atemschutzgeräteträger" — neuer Haken je Einheit (Verwaltung → Einheiten, Vorgabe: ja). Nur solche Einheiten stehen beim Anlegen einer Überwachung zur Wahl, und nur ihr Name wird den Trupps vorangestellt. A- und B-Dienst oder IuK machen keinen Atemschutz — „IuK Angriffstrupp 1" stünde sonst im Nachweis.
  • Löschen einer Überwachung — allein der Administrator, allein in der AÜ-Liste unter Werkzeuge → Atemschutz. Es gehen Journal, Trupps, Personen und die Einträge im Einsatzprotokoll mit; läuft die Überwachung, wird zweimal gefragt, und ein Überwacher an der Tafel bekommt beim nächsten Abgleich einen Hinweis und kann nichts mehr eintragen. Der Notausgang für Probe-Überwachungen und Fehlgriffe — kein vergebbares Recht, sonst wäre die Zusage, dass das Journal unantastbar ist, an einem Häkchen aufzuheben. Im Audit-Protokoll des Einsatzes bleibt festgehalten, was entfernt wurde und von wem.
  • Vier neue Rechte: atemschutz.view (lesen), atemschutz.fuehren (anlegen und führen), atemschutz.freigeben (eine laufende Überwachung übergeben, ohne der Überwacher zu sein — nur Einsatzleiter und Lage) und atemschutz.verknuepfen (eine Überwachung nachträglich mit einem Einsatz verbinden — ebenfalls nur Einsatzleiter und Lage, der Administrator über den Failsafe). Ein eigenes Recht statt eines mitbenutzten: Verbinden und Freigeben sind zwei verschiedene Handlungen, und ein Recht, das zwei Dinge bedeutet, lässt sich später nicht mehr trennen.
  • Einstellungsseite Administration → Atemschutz: Master-Schalter, Abfrage-Timer, Anfangsdruck, AGT-Symbol, Sicherheitszuschlag, Mindestdruck und die Zugangs-Adresse.
  • Hell/Dunkel auf den Seiten ohne Seitenleiste. Atemschutztafel und AÜ-Protokoll bekommen den Umschalter in die Kopfleiste — die Umschaltung gab es längst, aber nur am Knopf der Seitenleiste, und die haben diese Seiten bewusst nicht. Wer am Fahrzeug steht, kam bisher nicht heran.
  • Hell/Dunkel am Alarmmonitor — Knopf Hell / Dunkel in der Fußleiste, gemerkt am Gerät wie Schriftgröße und Großschrift. Der Monitor fährt eine eigene Farbwelt und kann deshalb nicht am Umschalter der Seitenleiste hängen. Seine Lagekarte bleibt immer hell: Der Dunkelmodus der Karte ist eine Farbumkehr der Kacheln — aus Wald wird Violett, aus Wasser Sand, und auf einem Schirm, den man aus fünf Metern liest, erkennt man die Gegend dann nicht wieder.

Geändert

  • Die Atemschutztafel baut sich nicht mehr neu auf. Bisher lud sie die Seite neu, sobald die Warteschlange leer war — und riss dabei einen offenen Erfassungsdialog samt getippter Werte weg, zuverlässig genau dann, wenn gerade etwas passiert. Jetzt holt sie den Stand als Daten und schreibt ihn in die vorhandenen Kacheln. Nie angefasst werden dabei ein offener Dialog und ein Feld, in dem jemand tippt; eine Kachel mit wartenden Einträgen bekommt keine Server-Zahlen aufgedrückt — gezeichnet wird sie mit dem Stand aus dem Gerät, der neueren Sicht. Nach einer eigenen Eintragung werden die Zahlen dagegen sofort nachgeführt — ein Dialog mit alten Werten wäre dann nicht „unangetastet", sondern falsch.
  • Genau eine Einheit je Überwachung statt einer Mehrfachauswahl. Angeboten wird, was Atemschutz stellt — mit Einsatzbezug zusätzlich nur, was zu diesem Einsatz gehört; ohne Bezug alle atemschutzrelevanten. Findet sich kein Treffer (nur IuK zurückgemeldet, Stammdaten ungepflegt), stehen wieder alle zur Wahl, mit Hinweis: Eine leere Auswahl, während draußen jemand unter Pressluftatmer geht, wäre die schlechteste aller Antworten. — keine — bleibt wählbar. Das normiert die Truppnamen (<Einheit> Angriffstrupp 1); bestehende Überwachungen behalten ihre Einheitenliste.
  • „Trupp ist am Einsatzort" zählt genau einmal. Maßgeblich ist der erste gemeldete Einsatzort-Druck je Träger; ein zweiter Griff auf den Knopf ändert die Rechnung nicht mehr. Nachtragen bleibt möglich, aber nur für einen Träger, der noch keinen Wert hat. Hat jeder einen, verschwindet der Knopf, und an seiner Stelle steht, was jetzt gilt: „Der Anmarschverbrauch steht fest; der Rückzugsdruck rechnet ab jetzt dagegen." Eine Korrektur gehört dann als Bemerkung ins Einsatztagebuch — das Journal der Überwachung ist nicht änderbar. (Der Knopf geht erst weg, wenn der Dialog geschlossen wird: einer, der unter den Fingern verschwindet, wäre eine Falle.)
  • Eine Druckabfrage ohne Druck gibt es nicht. Speichern & Timer neu wird abgelehnt, wenn gar kein Wert eingetragen ist — der Knopf setzt auch den Takt neu, und danach stünde an der Kachel eine frische Restzeit neben einem Wert von vorhin. Fehlt der Wert eines von zwei Trägern, kommt eine Rückfrage mit Namen; die eingetragenen Werte bleiben dabei stehen.
  • Nachträge werden auch nach einer Übernahme angenommen. Ein Tablet, das eine Stunde ohne Verbindung geführt hat, bekommt seine Einträge auch dann noch unter, wenn inzwischen jemand anders die Überwachung übernommen hat — maßgeblich ist, wer zum Zeitpunkt des Ereignisses führen durfte, nicht wer jetzt führt. Vorher wurde alles abgelehnt: Im Nachweis fehlte eine Stunde Einsatz, und die Lücke wies sich nicht als Lücke aus.
  • Der Einsatz-Export trägt zwei neue Abschnitte: das AÜ-Protokoll und die Bevölkerungswarnungen — beide im Export-Dialog einzeln abwählbar und standardmäßig an. Sie gehören zum Einsatz, nicht zu einer Sonderauswertung. Die Warnungen stehen dort im Format des ETB, mit allen Ständen (Erstwarnung, Aktualisierung, Entwarnung): Das Anforderungsformular des Kreises ist ein Übermittlungsdokument, der Bericht beantwortet hinterher „was ging raus, wann, an wen". Beide Abschnitte verlangen ihr eigenes Leserecht (atemschutz.view bzw. mowas.view) — admin.export allein genügt nicht, denn sie tragen Klarnamen.
  • Ungewöhnliche Werte verhindern die Eingabe nicht mehr. Gesperrt wird weiter, was nicht sein kann (negativ, über 330 bar, steigender Druck ohne Flaschenwechsel). Was ungewöhnlich, aber möglich ist — viel Verbrauch in kurzer Zeit, derselbe Wert wie vorhin —, fragt nach: mit Namen und Rechnung, und die eingetragenen Werte bleiben stehen. Nach der Bestätigung wird genau so eingetragen, nichts wird gerundet oder still korrigiert.
  • Enddrücke sind beim Entlassen Pflicht. Fehlt ein Träger, sagt das ETB wer — sonst stünde im Nachweis eine Messung, die nie stattgefunden hat.
  • Der Einsatzlink im Kopf der Tafel erscheint nur noch für Benutzer, die den Einsatz auch öffnen dürfen (Recht und Bereich). Sonst steht die Nummer als Text da; am Tablet-Zugang gibt es sie nie.
  • Löschen und Zurücksetzen nehmen die Überwachung mit — wer einen Einsatz löscht, löscht auch dessen AÜ samt Protokoll, und der ETB-Reset leert die Atemschutz-Daten. Die Zugangs-Adresse bleibt (der QR-Code klebt im Fahrzeug). Wehren, die Nachweise dauerhaft behalten wollen, schalten den Auto-Reset ab.
  • Kopfzeile der Tafel — Uhr und Datum als eigener Block rechts oben, die Verbindungsfarbe über die ganze Leiste. Unter 900 px werden aus den Kopfknöpfen Zeichen; das Wort wandert in die Vorlesehilfe statt zu verschwinden.
  • Die Bezeichnung mit Einsatzbezug ist fest. Sie wird als Kennung E#042-AÜ#01 gebildet und je Einsatz hochgezählt — von Hand geändert wäre der Nachweis später nicht mehr auffindbar. Ohne Einsatzbezug bleibt sie frei wählbar.
  • Der Übernahme-Dialog fragt Angemeldete nicht mehr nach ihrem Namen — er steht im Konto, und genau der landet im Protokoll. Ein Feld daneben wäre irreführend gewesen. Ohne Anmeldung (Tablet-Zugang) bleibt es. Wer „Nur zusehen" wählt, wird im selben Browser-Reiter nicht erneut gefragt.
  • Der Knopf für den Flaschenwechsel heißt nur noch „Flasche" — mit Wechselzeichen und in der Größe von Rückzug und Entlassen. Er war der breiteste Knopf der Leiste und ist der seltenste.
  • Auf dem AÜ-Ausdruck steht in jeder Zeile eines Trupps ein Druck. Nicht jeder Vorgang bringt eigene Werte mit — wer den Rückzug anordnet, ohne neu abzufragen, schickt keine. Statt einer leeren Zelle steht dort jetzt der zuletzt dokumentierte Wert, gekennzeichnet als „(zuletzt dokumentiert)": Wer ein Jahr später „14:41 Rückzug angeordnet — —" liest, weiß sonst nicht, mit wie viel Luft der Trupp umgedreht hat.
  • AÜ-Protokoll und Bevölkerungswarnungen beginnen im Einsatz-Export je auf einer neuen Seite — beides sind eigenständige Nachweise, die man aus dem Bericht herauslösen können muss.
  • Der Warte-Balken der Tafel ist kurz. Er erklärte dreimal dasselbe; jetzt steht dort „1 Eintrag liegt im Gerät und geht mit seiner Uhrzeit raus, sobald wieder Verbindung da ist." Beide tragenden Hälften bleiben — wo der Eintrag liegt und wann er rausgeht.

Behoben

  • Der Rückzugsdruck stieg nach einer erneuten Druckerfassung. Gerechnet wurde der Anmarschverbrauch gegen den neuesten „Am Einsatzort"-Eintrag — ein zweiter Griff auf den Knopf rechnete also gegen einen inzwischen viel niedrigeren Druck: Aus „Rückzug ab 100 bar" wurde „ab 300 bar". Die Schwelle sprang damit über den Flaschendruck, jeder Träger stand sofort auf Rückzug — und eine Tafel, auf der alles rot ist, sagt nichts mehr. Jetzt zählt der erste Wert je Träger, und zwar überall gleich: an der Tafel, im Gerät und im Nachweis.
  • „Rückzug ab 0 bar" wird nicht mehr angezeigt. Eine Schwelle von 0 ist keine Schwelle, sondern eine Warnung, die nie anspricht — die Tafel führt sie intern längst als unbekannt, zeigte sie aber als Zahl an. Die Pille bleibt jetzt weg; ist der Trupp am Einsatzort gemeldet und trotzdem keine Schwelle zu rechnen, sagt es die Marke „kein Rückzugsdruck" an der Kachel.
  • Der Erfassungsdialog zeigte veraltete Zahlen. Nachgeführt wurde bisher nur, woran die Rechnung hängt — die sichtbare Wertereihe blieb auf dem Stand des Seitenaufbaus stehen: Nach dem Melden von „Am Einsatzort" stand dort weiter „noch nicht erfasst", während die Kachel daneben schon rechnete, und nach einem Flaschenwechsel fehlte der Vermerk, der den gestiegenen Druck erklärt. Jetzt führen sich Start, Einsatzort, Anmarsch, Flaschenwechsel, „Rückzug ab" und der Reservebalken samt Marke selbst nach — ohne die Seite neu zu laden. Kommt ein Rückzugsdruck neu dazu, wird er zusätzlich angesagt.
  • In den Atemschutz-Ansichten stand die Nummer der Leitstelle statt unserer Einsatznummer. Die Spalte einsatznummer trägt die Kennung der Leitstelle — sie folgt einer fremden Systematik und kann fehlen. Übersicht, Tafel, Protokoll, Ausdruck und die Einsatzauswahl zeigen jetzt E#042, dieselbe Nummer, die auch in der Kennung einer Überwachung steht (E#042-AÜ#01). Die Nummer der Leitstelle steht in der Übersicht dahinter.
  • Ohne Netz kam man nicht in eine Überwachung hinein („keine Verbindung zum ETB, und dann kommt nichts mehr"). Der Kern: Läuft die Sitzung ab — und auf einem Tablet läuft sie ständig ab —, antwortet die Tafel mit einer Weiterleitung auf die Anmeldemaske, und genau die wurde unter dem Schlüssel der Tafel abgelegt. Ohne Verbindung lieferte das Gerät danach ausgerechnet die Seite aus, die als Erstes eine Verbindung verlangt. Gespeichert wird jetzt nur noch, was wirklich eine Tafel ist. Dazu kam: Ohne Verbindung wartet für jeden Trupp etwas in der Warteschlange — und eine wartende Kachel wurde vom Zeichnen ausgenommen. Die Tafel rechnete also korrekt und zeigte nichts davon; jetzt wird immer der gerechnete Stand gezeichnet (Journal plus Warteschlange), und nur rohe Server-Zahlen werden zurückgehalten.
  • Die Liste unter Werkzeuge → Atemschutz packt die Tafeln ein. Das Vorabladen hing bisher an der Auswahlansicht der Tafel — einer Seite, die auf dem üblichen Weg niemand sieht. Jetzt lädt auch die Liste im Einsatztagebuch die laufenden Überwachungen im Hintergrund auf das Gerät (höchstens fünf, und nur laufende: Jede vorgeladene Tafel legt Klarnamen und Drücke ab). Einmal im Gerätehaus die Liste öffnen — danach geht Flugmodus. Eine geöffnete Tafel legt sich zusätzlich selbst noch einmal beiseite, falls der Speicher zwischendurch geräumt wurde.
  • Eine ohne Verbindung angelegte Überwachung erschien nicht. Gezeichnet wurde die Tafel vom Server, und der kennt nur, was bei ihm angekommen ist: Ein Druck an einem vorhandenen Trupp ließ sich noch in die Kachel schreiben, eine neue Überwachung oder ein neuer Trupp hatte gar keine.
  • Die Tafel konnte ohne Netz in einer Sackgasse landen. Gesucht wurde nur die exakte Adresse — ?ue=7 und ?ue=8 sind zwei verschiedene, und eine ohne Verbindung angelegte Überwachung war ohnehin nie zwischengespeichert. Dafür gibt es jetzt ein leeres Gerüst: eine datenfreie Tafel, die jedes Gerät vorhält und die ohne Verbindung ausgeliefert wird, wenn zu einer Überwachung nichts gespeichert ist. Ein roter Balken sagt es klar — „Ohne Verbindung — dieses Gerät kennt diese Überwachung nicht" — und dazu, dass Einträge gesammelt und nachgereicht werden, aber abgelehnt werden können, wenn ein anderes Gerät führt. Kommt die Verbindung zurück, verschwindet der Balken, der echte Stand wird gezeichnet und der Überwacher steht wieder im Kopf. Auf dem Gerüst gibt es keine Namensknöpfe für die Atemschutzgeräteträger (es kennt den Einsatz nicht und soll keine Namensliste der Wehr mit sich führen) — dafür steht das Freitextfeld gleich offen.
  • Die Kachel musste von Hand neu geladen werden. „Pausiert" gegen Restzeit und die Zeile „letzte Abfrage" standen auf dem Stand des Seitenaufbaus: Nach einer Pause stand dort weiter „pausiert", nach einer Druckabfrage weiter die alte Uhrzeit — auch dann, wenn ein anderes Gerät geschaltet hatte. Beides führt sich jetzt selbst nach. Die beiden Zeilen im Kachelfuß behalten dabei immer dieselbe Bedeutung: oben, seit wann der Zustand gilt, unten, wann zuletzt gemessen wurde — Letzteres jetzt auch in der Pause, wo die Frage nach dem Alter des Wertes am dringendsten ist. Wer die Tafel vorlesen lässt, bekommt den Wechsel angesagt.
  • Ein abgewiesener Nachtrag wird nicht mehr weggeworfen. Kommt die Seite aus dem Gerätespeicher, trägt sie das Sicherheitsmerkmal einer längst abgelaufenen Sitzung; der Server lehnte den nachgereichten Eintrag ab, und er galt als endgültig gescheitert — verloren waren Drücke, die jemand im Funkloch gemessen hat. Jetzt holt die Tafel ein frisches Merkmal und schickt denselben Eintrag noch einmal. Erst wenn wirklich niemand mehr angemeldet ist oder es auch nach mehreren Anläufen nicht angenommen wird, meldet sie es sichtbar.
  • Die Eingabetaste im Druckfeld löste „Trupp ist am Einsatzort" aus — ohne Rückfrage, und damit war der Anmarschverbrauch und mit ihm der Rückzugsdruck für den Rest des Einsatzes festgezurrt. Auf dem Tablet ist das die „Fertig"-Taste des Ziffernblocks, also der Normalweg. Betroffen waren drei Knöpfe, die versehentlich Vorgabe-Knopf des Formulars waren.
  • Das Kennzeichen „Atemschutzgeräteträger" wurde beim Bearbeiten eines Benutzers nicht zurückgelesen — der Haken sah beim erneuten Öffnen leer aus und ging beim Speichern verloren.
  • Kontraste im Hell- und im Dunkelmodus — die Knöpfe der Tafel waren im Hellmodus weiß auf weiß, und mehrere Angaben lagen unter der lesbaren Grenze: allen voran die Rückzugsdruck-Pille, ausgerechnet das stärkste Signal der Tafel. Ebenfalls nachgezogen: Rückzugsschwelle im Dialog, Bandüberschriften, „(zuletzt dokumentiert)" und der Fokusring auf der Verbindungsleiste.
  • Die Bildlaufleisten der ganzen App waren praktisch unsichtbar und schmaler als nötig. Auf der Tafel ist der Balken der einzige Hinweis, dass die Protokolltabelle weitergeht.
  • Ein ohne Verbindung entlassener Trupp wurde nicht mehr angezeigt. Der Vorgang war erfasst und wartete sichtbar in der Warteschlange — die Kachel aber war weg: Für den Status entlassen hielt das Gerät keine Vorlage vor, und das Band „Aus Einsatz entlassen" wurde bei leerer Liste gar nicht erst gezeichnet; die erste entlassene Kachel hätte also ohnehin nirgends landen können. Genau dort, wo der Überwacher die Bestätigung braucht, sah es aus, als sei seine Eintragung verloren. Jetzt wandert die Kachel wie mit Netz ins Band — mit Zeitspanne und „45 min unter PA", beides aus dem Journal im Gerät gerechnet — und zwar sofort: Bisher zeichnete nur der Pausen-Zweig neu, der entlassene Trupp stand bis zu 30 Sekunden weiter unter „Im Einsatz". Die Kachel wird ins Blickfeld geholt — das Band steht ganz unten und liegt auf dem Tablet quer oft außerhalb des Blicks; Sprachausgaben hören den Wechsel zusätzlich angesagt.
  • Die Historie eines entlassenen Trupps blieb ohne Verbindung leer. Sie kam bisher nur vom Server. Jetzt baut die Tafel sie aus dem, was auf dem Gerät liegt: beide Träger mit Start → Ende in bar, die Dauer unter Pressluftatmer und die volle Protokolltabelle mit Uhrzeit, Ereignis und Drücken — einschließlich der Einträge, die noch auf die Übertragung warten.
  • Die Marke „wartet auf Übertragung" ging beim Neuzeichnen verloren. Sie wurde einmalig beim Absenden gesetzt und fiel weg, sobald die Kachel neu entstand — etwa beim Wechsel in ein anderes Band. Ein gerade ohne Verbindung entlassener Trupp sah damit aus wie ein bestätigt übertragener Vorgang. Die Marke wird jetzt aus der Warteschlange abgeleitet und bleibt, bis der Eintrag wirklich durch ist.
  • Die Zusage „ein offener Dialog wird nie angefasst" war wirkungslos. Fünf Prüfungen der Tafel fragten nach einem Merkmal, das in dieser App niemand setzt — sie waren dauerhaft falsch. In der Folge schrieb der Abgleich im Hintergrund in einen offenen Dialog hinein, ein Bandwechsel riss ihn samt gemerktem Fokus weg, der Knopf „Trupp ist am Einsatzort" verschwand doch unter den Fingern, und die Bremse vor dem Neuladen bremste nicht. Geprüft wird jetzt am tatsächlichen Offen-Zustand.

Sicherheit

  • Der Tablet-Zugang kann sehen und führen — sonst nichts. Kein Postfach, keine Einsatzakte, keine Verwaltung. Der Schlüssel wandert beim ersten Aufruf aus der Adresszeile in ein Cookie, damit er nicht in jeder Zeile des Zugriffsprotokolls beim Hoster steht. Jeder darüber erfasste Eintrag ist im Protokoll als solcher erkennbar.
  • Adresse erneuern macht die alte sofort ungültig; alle bisherigen Ausdrucke und QR-Codes gelten dann nicht mehr. Wer die alte Adresse aufruft, erfährt nicht, warum sie nicht mehr gilt.
  • Der QR-Code verlässt das Haus nicht — er wird lokal gerechnet, damit der Zugangsschlüssel nicht bei einem Fremddienst landet.
  • Ist das Modul abgeschaltet, antworten Seiten und Endpunkte mit 404, nicht mit 403: Ein abgeschaltetes Modul soll nicht verraten, dass es existiert.
  • Der Schwerpunkt-Dispo-Bereich gilt auch hier — überall. Tafel, Protokoll und Ausdruck zeigen Einsatznummer, Stichwort, Straße und Ort nur, wenn der Einsatz im eigenen Bereich liegt; ohne Bereich bleiben die Felder leer. Dasselbe beim Übernehmen einer freien Überwachung zu einem fremden Einsatz: Sie wird abgelehnt, statt still ohne Einsatzbezug weiterzulaufen — sonst würde ein Trupp geführt, von dem der Einsatz nichts weiß.
  • Über den Tablet-Zugang werden keine Klarnamen aus der Benutzerliste aufgelöst. Die Oberfläche bietet diese Auswahl dort ohnehin nicht an; jetzt weist auch der Endpunkt sie ab. Und ein System-Kommentar im Einsatztagebuch sagt, wenn er über den Tafel-Zugang entstanden ist — ohne Konto steht dort sonst revisionsfest ein Name, den niemand bestätigt hat.
  • Der Zwischenspeicher der Tafel gehört dem angemeldeten Menschen. Seit die Tafel örtlich rechnet, liegt im Gerät der ganze Stand einer Überwachung — AGT-Klarnamen, Drücke, Ereigniszeiten, Einsatzbezug. Auf einem geteilten Fahrzeug-Tablet läse das sonst der Nächste, ohne angemeldet zu sein. Geleert wird beim Abmelden — und ebenso, sobald sich am selben Gerät jemand anders anmeldet: Dort meldet sich niemand ab, die Sitzung läuft einfach ab. Noch nicht übertragene Einträge und ohne Verbindung angelegte Überwachungen bleiben: Sie sind Nachweis, und ein Wechsel am Gerät darf ihn nicht vernichten.
  • Nachträge belegen ihr Recht, sie behaupten es nicht. Angenommen wird nur, was von einem Gerät kommt, das zum Ereigniszeitpunkt nachweislich geführt hat — die Übernahme steht im Journal, nicht im Formular. Eine Ereigniszeit, die auf das erlaubte Fenster (±2 Stunden) zurechtgestutzt werden musste, gilt nicht als Nachtrag, und in eine abgeschlossene Überwachung schreibt auch der frühere Überwacher nichts mehr nach.

Update-Hinweis

Schema-Check nötig (/admin/schema-check.php → „Reparieren").

Jedes Gerät ist nach diesem Update einmal kalt. Der Zwischenspeicher für die Atemschutztafel bekommt einen neuen Namen — das musste sein, weil darin unter dem Schlüssel einer Tafel die Anmeldemaske liegen konnte. Praktische Folge: Üffne einmal mit Netz die Liste unter Werkzeuge → Atemschutz. Sie packt die laufenden Überwachungen von selbst ein; danach geht Flugmodus. Was in der Warteschlange liegt und was Du ohne Verbindung angelegt hast, ist davon nicht betroffen — das bleibt.

Fünf neue Tabellen für den Atemschutz (atemschutz_ue, atemschutz_trupp, atemschutz_person, atemschutz_eintrag, atemschutz_zugang) und zwei neue Spalten (users.ist_agt für das AGT-Kennzeichen, atemschutz_ue.einheiten_csv für die Einheiten-Zuordnung) sowie atemschutz_ue.zuschlag_bar und atemschutz_ue.mindestdruck_bar — sie frieren die Zugaben aus Deiner Dienstanweisung mit der Überwachung ein, damit ein späterer Ausdruck dieselben Zahlen zeigt wie die Tafel an dem Abend. Ohne den Lauf bleibt das Modul stumm: Die Einstellungsseite sagt es und verweist auf den Schema-Check; einstellen kannst Du dort trotzdem schon.

Zwei weitere Spalten kommen mit demselben Lauf: loeschgruppen.atemschutz_relevant (stellt die Einheit Atemschutzgeräteträger? Vorgabe: ja — eine Bestandsinstallation hat danach dieselbe Auswahl wie vorher; wer A-Dienst und IuK herausnehmen will, schaltet sie unter Verwaltung → Einheiten ab) und einsatz_kommentar.quelle_ref (die Herkunft eines System-Kommentars, damit sich beim Löschen einer Überwachung genau ihre Zeilen aus der Zeitleiste entfernen lassen und keine fremden). Fehlt die zweite Spalte noch, bleiben beim Löschen die Protokollzeilen stehen — lieber ein sichtbarer Rest als ein Löschlauf, der rät.

Derselbe Lauf verteilt einmalig atemschutz.view an jede Rolle mit einsatz.comment, atemschutz.fuehren an jede mit einsatz.status, atemschutz.freigeben an jede mit alarm.trigger_manual und atemschutz.verknuepfen an jede, die bereits atemschutz.freigeben hat — sonst hätte auf einer Bestandsinstallation nur der Administrator den Knopf Verbinden. Das Führen hängt bewusst an einem Schreibrecht und nicht am Kommentarrecht: Hast Du einsatz.comment breit vergeben, bekämen sonst Rollen ungefragt die Schreibhoheit über eine laufende Überwachung. Nimmst Du ein Recht später bewusst weg, holt es sich nicht zurück.

Läuft Deine Installation ohne HTTPS, müssen sich alle einmal neu anmelden. Die Cookie-Namen hängen jetzt am Protokoll: Über TLS bleibt alles wie bisher (dort ändert sich nichts und niemand wird ausgeloggt), ohne TLS heißen sie FFETB_SID_H, FFETB_GERAET_H und so weiter.

Der Grund ist eine Regel der Browser, die uns einen halben Tag gekostet hat: Ein Cookie von einer unverschlüsselten Verbindung wird stillschweigend verworfen, wenn unter demselben Namen schon ein Secure-Cookie einer passenden Domain liegt. Wer eine Testinstanz als Subdomain neben der verschlüsselten Hauptinstanz betreibt, konnte sich dort deshalb nicht mehr anmelden — ohne jede Fehlermeldung. Mit getrennten Namen kann das nicht mehr passieren. Auch „Auf diesem Gerät angemeldet bleiben" muss dort einmal neu gesetzt werden.

Die Atemschutzüberwachung ist nach dem Update eingeschaltet. Brauchst Du sie nicht, nimm den Haken unter Administration → Atemschutz heraus — dann verschwinden Menüeintrag, Knopf am Einsatz, AGT-Kennzeichen und die Tafel vollständig. Vorhandene Überwachungen und Protokolle bleiben dabei unangetastet.

Die Offline-Fähigkeit der Tafel braucht HTTPS. Warteschlange und nachgereichte Einträge funktionieren überall; dass die Tafel nach einem Neustart des Tablets ohne Netz überhaupt aufgeht, setzt einen sicheren Kontext voraus. Auf einer Instanz ohne Zertifikat ist dieser Teil aus.


4.9.0 — 2026-08-28

Die Alarmierung braucht keinen fremden Messenger mehr.

Bis hierher lief jede Nachricht des ETB über Telegram, adressiert an feste Gruppen-Chats. Das hatte drei Folgen: Eine Meldung an eine Person gab es nicht, es lasen Leute mit, die kein Konto haben, und ob ein Alarm wirklich auf einem Handy geklingelt hat, wusste niemand.

4.9 legt einen kanalunabhängigen Meldungs-Bus darunter. Adressiert wird an Menschen, Rollen und Löschgruppen; welcher Weg daraus eine Zustellung macht, entscheidet ein austauschbarer Kanal. Der zweite Kanal ist Web Push — die eigene App, direkt auf den Sperrbildschirm, Ende zu Ende verschlüsselt. Telegram bleibt, verliert aber seine Sonderstellung: Für neue Installationen ist Web Push die Vorgabe.

Für bestehende Installationen ändert sich am Verhalten nichts. Der Zustellweg bleibt auf Telegram stehen, dieselbe Nachricht geht in denselben Chat. Umgestellt wird von Hand — und vorher erprobt, mit einer Handvoll Freiwilliger, ohne dass die übrige Wehr etwas merkt.

Zurückmelden

Vier Wege, absichtlich verschieden schnell:

Weg Für wen
Zwei Knöpfe an der Benachrichtigung Der schnellste — ein Tipp auf dem Sperrbildschirm, ohne App, ohne Anmeldung
Die Antwortseite Wer die Knöpfe nicht sieht oder daneben tippt
Das Alarm-Fenster in der App Bildschirmfüllend, Knöpfe für Handschuhe (64 px, Tablet 72)
Das Postfach Zum Nachlesen und Umentscheiden

Ohne Anmeldung geht das über einen Ausweis, der in der verschlüsselten Nutzlast mitreist — nur das Zielgerät kann ihn lesen. Er gilt für genau eine Zustellung, vier Stunden lang. Für die Rolle Einsatzkraft ist das der einzige Weg: Sie kann sich bewusst nicht anmelden.

Auf der Antwortseite steht weniger als in der App: Stichwort und Ortsteil. Melder, Rufnummer und Lagetext bleiben hinter der Anmeldung — der Link könnte weitergeleitet worden sein.

„Auf diesem Gerät angemeldet bleiben" — ein Häkchen beim Anmelden, und das Gerät fragt 90 Tage lang nicht mehr nach dem Passwort. Die Sitzung endet sonst nach zwölf Stunden Untätigkeit; wer nachts um drei alarmiert wird, müsste erst tippen.

Die Verwaltung öffnet es nicht. Für alles unter Administration fragt das ETB weiterhin nach dem Passwort — auch auf einem gemerkten Gerät.

Was der Gruppen-Chat nebenbei lieferte, kommt zurück:

  • Die Sammelmeldung — das geteilte Lagebild. Auf einen Hauptalarm startet mit der ersten Rückmeldung ein Fenster von 90 Sekunden; danach geht eine Meldung mit dem Stand an die Führung: wie viele „Komme", wer zugesagt hat samt Zusatztext, wie viele offen sind. Für Spätzünder folgt genau ein Nachtrag. Sie ist ausdrücklich leise — sie kommt mitten in der Lage und darf den Alarm nicht übertönen.
  • Die Kurznachricht zur Lage — „ELW raus", „Abbruch". Jeder Empfänger kann mit einem Tipp die anderen Empfänger derselben Meldung informieren.

    Das ist keine Rückmeldung. Eine Rückmeldung beantwortet kommst Du?, geht an die Führung und zählt in einer Kachel; diese hier sagt etwas über die Lage, geht an den Kreis und zählt nirgends. Eigenes Fenster von zwölf Stunden — sie wird gerade dann gebraucht, wenn man längst geantwortet hat.

Die Nachricht (bis 4.9 „Durchsage") geht an eine Rolle, eine Einheit oder — wo der Zustellweg Personen adressiert — an einzelne Personen.

Das Postfach

Aus der langen Kartenliste ist ein Postfach geworden: Ordner links, Liste in der Mitte, Vorschaufenster rechts; am Telefon immer nur eines im Bild.

Ordner statt Reiter, und das ist eine Entscheidung: Sortiert wird nicht nach Datum, sondern danach, was von Dir verlangt wird. „Wartet auf Dich" ist keine Art von Meldung, sondern ein Zustand, und er schneidet quer durch alle Arten.

Erreichbar über das Briefsymbol mit Zähler auf jeder Seite — in der installierten App steht dieselbe Zahl am App-Symbol, sichtbar ohne die App zu öffnen. Gezählt wird nur, was oben steht; reine Kenntnisnahmen zählen nicht mit, weil eine Zahl, die nie kleiner wird, nach zwei Wochen niemand mehr liest.

Einen Menü-Eintrag „Postfach" gibt es nicht. Der Brief ist der einzige Weg — er trägt den Zähler und sitzt auf jeder Seite an derselben Stelle.

Gelesen heißt angeschaut (vorher galt alles als gelesen, sobald man die Seite öffnete). Kein Abhaken, kein Ordner „Erledigt" — eine Meldung bleibt, wo sie hingehört; weg geht sie nur, wenn man sie entfernt.

Der Alarmmonitor

Die Seite Rückmeldungen hat einen zweiten Modus: einen Vollbild-Monitor für den Bildschirm in der Fahrzeughalle. Links die Lage — Nummer, Stichwort, Adresse, Sachverhalt, kleine Lagekarte —, rechts die Rückmeldungen.

Die Größe stellt man vor Ort ein. Ein Schieberegler skaliert die ganze Anzeige; alle Maße sind Anteile der Bildschirmbreite. Dieselbe Pixelzahl ist auf 32″ und 65″ eine andere Millimeterhöhe. Ein Knopf schaltet auf Großschrift: kein Sachverhalt, keine Namensliste, dafür Stichwort und Adresse in Maximalgröße.

Drei Zustände, nie zwei. Lage, Ruhe (Uhr, Datum, letzte Einsätze, Wetter) und Störung — wenn der Server nicht antwortet, bleibt der letzte bekannte Stand stehen, mit seinem Alter und dem Satz: „Ein Alarm in dieser Zeit wäre hier nicht zu sehen."

Auf einem Lagebild dürfen „nichts da" und „nichts gewusst" nie gleich aussehen.

Die Wichtigkeit ist auf einen Blick zu sehen: Der Rahmen der Einsatznummer trägt die Farbe der Stufe, bei Stufen über der Normalstufe steht zusätzlich das Symbol der Stufe oben rechts. Nicht bei normalen Einsätzen — ein Warnzeichen, das an jedem Einsatz hängt, warnt nicht mehr.

Bildschirm-Zugänge für Schirme ohne Anmeldung: je Schirm ein benannter, einzeln widerrufbarer Zugang mit vier Symbol-Knöpfen (Anzeigen, Adresse kopieren, Neuer Link, Widerrufen). Der Zugang darf nur das Lagebild lesen — kein Postfach, keine Einsatzakte, keine Verwaltung.

Die Rückmeldungs-Seite am Schreibtisch ist dasselbe Lagebild und zieht aus derselben Quelle. Vorher standen dort Kacheln mit Zahlen, aber nirgends, zu welchem Einsatz sie gehören.

Nachsehen können

Drei Fragen hatten keine Antwort im Programm:

  • Ist der Alarm angekommen?Zustellprotokoll. Eine Zeile ist eine Meldung, mit ihrer Bilanz: so viele Empfänger, so viele erreicht, so viele Antworten. Ein Klick zeigt Inhalt und alle Empfänger mit ihrem Stand.

    „Im Gruppenchat" ist kein Problem — es ist grün. Als Problem zählt nur, was nachweislich niemanden erreicht hat. Kanal aus und Kanal erreicht die Person nicht sind Betriebszustände; wer sie mitzählt, bekommt eine Fehlerliste, die nie leer wird.

  • Käme jetzt einer an?Statusseite. Sie prüft Zustellweg, Schlüssel, Erreichbarkeit, letzte Meldung, Zustellquote, Lebenszeichen des Cron und die Hallenbildschirme in einem Rutsch. Jeder Punkt sagt, was zu tun ist, und verlinkt dorthin. Ein einziges rotes Feld macht die Seite rot — bei dieser Frage ist der Durchschnitt keine Auskunft.

  • Klingelt mein Handy?Bereitschaft, und zwar vor dem Alarm. Vier Kacheln, die Personen zählen statt Geräte: erreichbar, unbewiesen, stumm, ohne Gerät. Im Profil sieht jeder dasselbe für seine eigenen Geräte, mit Probealarm.

    Abgeschickt ist nicht angekommen. „Zugestellt" hieß bisher nur, dass der Push-Dienst die Nachricht angenommen hat. Jetzt meldet das Gerät den echten Empfang zurück — und solange der fehlt, sagt die Oberfläche das auch so, statt zu beruhigen.

Der Administrator ist die Rückfallebene: Probealarm an jedes freigegebene Gerät, Widerruf einer gemerkten Anmeldung aus der Verwaltung. Vorher musste er anrufen und bitten.

Empfänger auswählen statt tippen

Die Empfänger einer Meldungsregel standen als Ausdruck in einem Textfeld (statisch:loeschgruppe:IuK|recht:mowas.release) — eine Sprache, die man nur lernt, wenn man sie oft benutzt. Einen Meldungskatalog richtet man aber einmal ein.

Jetzt stellst Du sie aus Bausteinen zusammen: Was es nicht gibt, steht gar nicht erst zur Wahl. Gespeichert wird derselbe Ausdruck wie bisher, bestehende Regeln bleiben unangetastet, Als Text bearbeiten zeigt ihn weiterhin. Ein Empfänger, dessen Löschgruppe seither gelöscht wurde, steht mit Warnzeichen da statt unauffällig zwischen den funktionierenden.

Telegram wird ein Kanal unter zweien

Der Setup-Wizard hatte einen festen Schritt namens „Telegram" und gar keine Kanalwahl — eine neue Installation lief danach über den Code-Rückfall auf Telegram, ohne dass diese Entscheidung je jemand getroffen hätte. Der Schritt heißt jetzt „Zustellweg", der gewählte Weg wird ausdrücklich gespeichert, und die Vorgabe ist Web Push.

⚠️ Für bestehende Installationen ändert sich nichts — der Schema-Check schreibt den bisher genutzten Kanal vorher fest. Hätte man nur den Vorgabewert gedreht, wären alle Installationen, die die Einstellungsseite nie gespeichert haben, über Nacht auf einen Kanal gesprungen, der niemanden erreicht: ohne Schlüssel, ohne Geräte — und ohne Fehlermeldung.

Die installierte App

  • App-Kürzel — langes Antippen des App-Symbols öffnet Postfach, Rückmeldungen und Nachricht. Bewusst nur drei: Android zeigt in der Regel vier, iOS gar keine.
  • Sichere Ränder — in der App lag die Kopfleiste hinter der Kamera-Kerbe, und unten verschwand die letzte Zeile hinter dem Wisch-Balken. Im Postfach waren das die Antwort-Knöpfe.
  • Feste App-Kennung — ohne sie gilt die Installation nach einer geänderten Startadresse als andere App: Die alte bleibt als Leiche liegen, und die Push-Anmeldung hängt an ihr.
  • Anleitung „Gerät einrichten" — Schritt für Schritt, getrennt für Android und iPhone, im Handbuch und als Handzettel zum Ausdrucken (Administration → Web Push). Der Zettel trägt die Adresse Deiner eigenen Instanz und warnt selbst, wenn die Einrichtung nicht gelingen kann.

    Die häufigste Stolperfalle steht vor Schritt 1: Wer den Link aus WhatsApp oder Telegram antippt, landet im eingebauten Browser des Messengers — und dem fehlt genau der Menüpunkt, den er als nächstes braucht.

Der Ton bei einem Alarm

Eine Web-App darf ihren Benachrichtigungston nicht selbst mitbringen. Die sound-Eigenschaft der Notification-API wurde gestrichen; kein Browser hat sie.

Einen eigenen Alarmton kann die App trotzdem bekommen — auf Samsung ist der Weg dorthin nur ab Werk ausgeblendet. Erst Einstellungen → Benachrichtigungen → Erweiterte Einstellungen → „Benachrichtigungskategorien für jede App verwalten" einschalten; danach steht in den App-Einstellungen ganz unten „Benachrichtigungskategorien", und in der Kategorie Allgemein lassen sich Ton, Vibration, Pop-up und Sperrbildschirm einzeln setzen. Zusammen mit einer Ausnahme von „Nicht stören" ergibt das einen echten Alarm — unabhängig vom allgemeinen Benachrichtigungston des Geräts.

Ohne diesen Schalter sieht man in den App-Einstellungen nur „Ton und Vibration" als Ein/Aus und hält den eigenen Ton für unmöglich. Er ist nur nicht sichtbar. Beides steht jetzt als Schritt 8 in Anleitung und Handzettel.

Auf iOS ist „Zeitkritische Mitteilungen" der entscheidende Schalter — nur der kommt durch einen Fokus hindurch.

Neu: ein eigenes Vibrationsmuster bei Alarmen (kurz-kurz-lang, zweimal), damit ein stummgeschaltetes Gerät wenigstens spürbar unterscheidbar bleibt. Nur bei Alarmen, nicht bei Systemmeldungen.

Die Push-Alarmierung ersetzt keinen Meldeempfänger. Steht das Gerät auf lautlos, bleibt es lautlos — das kann keine App übergehen. Richtig eingerichtet ist sie aber laut und zuverlässig. Die Frage nach einem garantierten Alarmton auch ohne diese Einrichtung ist als #228 erfasst.

Anzeigen beschleunigen (#216, #213)

  • Die Kartenbibliothek kam von fremden Servern — acht Seiten luden Leaflet von unpkg.com. Jetzt liegt sie auf Deinem Server; nebenbei sieht kein Fremdanbieter mehr, wann Ihr Karten benutzt.
  • Der Service-Worker holte auch unveränderliche Dateien immer neu. Ein Seitenwechsel kostet jetzt gar keinen Netzverkehr mehr für Programmcode.
  • Regenradar und Blitze kommen als zwei feste Bilder statt als Kachelraster — Zoomen und Schwenken kosten keine Abrufe mehr. Das alte Raster löste das Radar bis zu 166-fach feiner auf, als es misst.
  • Gewitter kommen als Vektoren — Blitzsymbol mit dem Umriss der Zelle statt eines roten Blocks; eine Anfrage statt 36, zehnmal weniger Daten. Die Vergangenheit hebt das ETB selbst auf: Der Cron sichert alle fünf Minuten den ersten Zeitschritt, nach zwei Stunden ist die Zeitleiste vollständig.
  • Das Regenradar kann aus Rohdaten selbst gezeichnet werden, umschaltbar im Betrieb. Gemessen: 0,25 s je Bild, rund vier Prozent Auslastung. Der Gewinn liegt darin, dass 52 Gelegenheiten zu scheitern auf eine zusammenschrumpfen.
  • Das Tagebuch lud immer alle Einträge — jetzt die neuesten 50 mit Nachladen auf Knopfdruck. Export und Druck bleiben vollständig.
  • Endlich eine Legende für Regen und Gewitter, samt der ausdrücklichen Kennzeichnung des Graus: „kein Radar" markiert Flächen ohne Messung, nicht die trockenen.

Die Alarmierung von Sondereinheiten ist konfigurierbar

Bisher war genau eine Einheit regelbar: die IuK, fest im Programm, über drei Einstellungen — darunter ein regulärer Ausdruck, den ein Wehrführer schreiben sollte, ohne ihn je zu Gesicht zu bekommen. Alle anderen Einheiten wurden alarmiert, wenn die Leitstelle sie nannte, sonst nie. A-Dienst und B-Dienst standen deshalb faktisch nie im Alarm — sie tauchen in einer Depesche gar nicht auf.

Jetzt trägt jede Einheit ihre eigene Regel, einzustellen unter Administration → Einheiten:

  • Nur wenn die Leitstelle sie nennt — die Vorgabe, das bisherige Verhalten.
  • Zusätzlich bei bestimmten StichwortenB3*, B4* für die IuK, DROHNE für die Drohnengruppe. Entweder aus dem Stichwort-Katalog ankreuzen oder ein Muster tippen; dieselbe Schreibweise wie bei den Alarm-Regeln.
  • Immer bei einer Leitstellen-Meldung — für A-/B-Dienst. Bei einem von Hand angelegten Einsatz zählt dagegen die getroffene Auswahl.
  • Zusätzlich in einem Zeitfenster — für eine Tages- oder Nachtbereitschaft. Das Fenster darf über Mitternacht gehen.

Eine Regel nimmt nie etwas weg. Wer in der Depesche steht, wird alarmiert — immer. Die Regeln können nur Einheiten hinzufügen.

Greift eine Regel, wird die Einheit dem Einsatz hinzugefügt und steht danach in seiner Historie. Sonst hätte man einen Einsatz, bei dem jemand alarmiert wurde, der nirgends im Datensatz steht.

Die Ausrückeordnung steht jetzt beim Ort

Wer rückt aus, wenn es in Berkum brennt? Diese Frage konnte das ETB bisher nicht beantworten — sie stand nirgends. Bei einem Alarm per Mail nennt die Leitstelle die Einheiten; ein von Hand ausgelöster Alarm legte den Einsatz dagegen mit leerem Einheiten-Feld an und erreichte damit niemanden.

Unter Administration → Orte trägt jeder Ort jetzt seine Alarm- und Ausrückeordnung:

  • eine Stammeinheit, die immer ausrückt,
  • beliebig viele weitere Einheiten ab einer StufeB3 ist Stufe 3,
  • wahlweise eingeschränkt auf eine Einsatzart, weil eine echte AAO B3 von TH3 unterscheidet.

Die Stufe steht in der Ziffer des Stichworts. Ein Stichwort ohne Ziffer (B, DROHNE) gilt als Stufe 1 — ein Kleinbrand ist ein echter Einsatz. Und die Stammeinheit rückt auch bei einem Stichwort aus, das niemand kennt: Passt keine ihrer Einsatzarten, rücken alle Stammeinheiten des Ortes aus. Lieber einer zu viel als niemand.

Die Orte-Liste zeigt je Ort, ob eine Ausrückeordnung gepflegt ist — ein Ort ohne sie erreicht bei einem von Hand ausgelösten Alarm niemanden.

Beim Anlegen eines Einsatzes entfällt die Einheiten-Auswahl. Sie ergeben sich aus Stichwort und Ort und stehen beim Bearbeiten bereits da. Ermitteln und Alarmieren sind dabei zwei Dinge: Eingetragen werden die Einheiten immer — wer einen Einsatz von gestern nachträgt, will ihn vollständig im Tagebuch haben, ohne die Wehr zu wecken. Wer alarmieren will, setzt den Haken „Diese Einheiten auch alarmieren"; er ist ab Werk aus.

Zur Wahl stehen nur Einheiten mit der Regel „Nur wenn die Leitstelle sie nennt". Sondereinheiten wie IuK oder A-Dienst haben ihre eigene Regel; sie hier ein zweites Mal einzutragen hieße, zwei Antworten auf dieselbe Frage zu pflegen.

Aus „Löschgruppen" werden „Einheiten"

In dieser Liste standen von Anfang an auch Dinge, die keine Löschgruppe sind — IuK, Drohnengruppe, A-/B-Dienst. Der Name passte nicht mehr zu dem, was drinsteht.

„Alarmpush aktiv" heißt jetzt „Alarmmails verarbeiten" — er betrifft das Eingehende, im Unterschied zum neuen Alarmierung aussetzen, das das Ausgehende stilllegt. Zwei Schalter, zwei Richtungen; der alte Name ließ sie wie eine Dopplung aussehen.

Der Haken „In Telegram-Alarmierung" heißt jetzt „In der Häkchenliste". Er steuerte nie den Kanal, sondern nur die Aufzählung im Text der Alarmmeldung — „Telegram" darin war doppelt irreführend.

Die Alarmierung lässt sich aussetzen

Unter Meldungen → Zustellweg gibt es den Not-Aus: Für eine Großschadenslage, eine Übung oder eine Wehr, die die Funktion gar nicht nutzt. Es geht dann kein Alarm mehr hinaus — Postfach und Systemmeldungen laufen weiter.

Mit Dauer (30 Minuten bis 12 Stunden, oder bis auf Widerruf), Pflicht-Grund und einem Warnbalken auf jeder Seite.

Ein vergessener Not-Aus ist von „es ist nichts los" nicht zu unterscheiden. Deshalb läuft er von selbst ab, deshalb steht der Grund im Balken, und deshalb landet jedes Setzen und Aufheben als Warnung im Protokoll.

Eine Einheit nachalarmieren

Fügst Du einem laufenden Einsatz eine Einheit hinzu, fragt das ETB beim Speichern, ob sie alarmiert werden soll. Nur die neuen werden geweckt, und die Rückmeldungen zählen getrennt vom Erstalarm — auf dem Sperrbildschirm steht „Nachalarm" vorne, damit niemand es für die Erstmeldung hält.

Das verlangt dasselbe Recht wie der Knopf Alarm auslösen: Einen Einsatz zu bearbeiten ist die kleinere Befugnis, als eine Einheit aus dem Bett zu holen.

Entfallen

  • Der Tagalarm. Er setzte ein zeitabhängiges Häkchen in der Aufzählung „Alarmierung der Einheiten" — und alarmierte dabei niemanden. Wer eine Einheit zeitgesteuert alarmieren will, nimmt jetzt den Modus Zeitfenster bei der Einheit; der weckt dann auch jemanden, gilt für jede Einheit statt für einen Sonderfall und kennt Wochenenden und Nachtschichten über Mitternacht. Die drei Felder unter Einstellungen sind weg; die Werte bleiben ungelesen in der Datenbank stehen.
  • Das Abhaken im Postfach. Mit dem Ordner „Erledigt" war es schon im August verschwunden — die Schnittstelle dahinter blieb aber stehen und meldete „3 Meldungen abgehakt", während der Zähler daneben unverändert stand. Was noch etwas von Dir will, verschwindet weiterhin dadurch, dass Du antwortest, es liest oder es aus Deinem Postfach entfernst.
  • Die IuK-Sonderlogik samt ihrer drei Einstellungen. Der Schema-Check überführt sie einmalig in die Regel der IuK-Einheit und weist darauf hin, dass der bisherige reguläre Ausdruck nachzusehen ist — er lässt sich nicht verlustfrei übersetzen.
  • Wachtberger Ortsnamen im Programm. An zwei Stellen standen sieben Ortsteile als Rückfall im Quelltext. Auf der Anlage einer anderen Wehr wäre das eine Liste fremder Dörfer.

Neu

  • Meldungs-Bus mit 17 Meldungsarten in vier Gruppen (Alarm, Einsatz, Warnung, System), je Art beliebig viele Regeln — die Führungsstelle bekommt anderen Text und andere Rückmeldungen als eine Löschgruppe. Pro Person greift die erste passende Regel.

  • Zwei Textfassungen je Regel: eine Kurzfassung für den Sperrbildschirm (bewusst ohne Personendaten) und eine Langfassung.

  • Zustellweg Web Push — Ende zu Ende verschlüsselt; der Push-Dienst sieht nur einen unlesbaren Datenblock und die Geräteadresse. Voraussetzung ist HTTPS; auf iPhone und iPad muss die Seite installiert sein.

  • Einladungslink für Geräte — für die Rolle Einsatzkraft, die sich bewusst nicht anmelden kann. Gilt 14 Tage und genau einmal, ist keine Anmeldung.

  • Erprobung des Zustellwegs — je Person ein abweichender Weg, damit sich der Durchstich üben lässt, den kein Test ersetzt: ein echter, lauter Alarm auf ein schlafendes Handy. Die Ausnahmeliste steht mit Namen offen; das Beenden setzt in einem Zug alle Ausnahmen zurück.

    „Nur Web Push" nimmt niemanden aus dem Telegram-Gruppenchat. Wer den Push-Weg scharf testen will, muss die Gruppe selbst verlassen — sonst fängt Telegram jeden Ausfall auf, und der Fehler bleibt bis zum Ernstfall verborgen.

  • Telegram-Rückmeldungen abholen statt zugestellt bekommen — der zweite Rückweg für Instanzen, bei denen der Webhook nicht funktioniert. Der Cron fragt bei Telegram nach; das läuft auf jedem Webspace. Höchstens so frisch wie der Cron-Takt.

  • Karte „Wie Rückmeldungen hereinkommen" auf der Webhook-Seite — aktueller Weg, letzter Abholvorgang, „Jetzt abholen", „Stand zurücksetzen".

  • Rolle „Einsatzkraft" für alle, die alarmiert werden sollen, aber nicht im Tagebuch arbeiten. Löschgruppen-Zuordnung beim Benutzer entscheidet, wen ein Alarm erreicht.

  • Live-Vorschau im Meldungskatalog (Langfassung und Sperrbildschirm mit Zeichenzähler) und HTML in der Langfassung auch im Postfach.

  • Universelle Platzhalter {zeit}, {einsatz}, {wehr} in jeder Art.

  • Alarm-Fenster beim Öffnen der App, für Meldungen, die als laut eingestuft sind. Ohne Rückmeldung geht es nicht zu — außer eine Antwort scheitert zweimal; ein Fenster ohne Ausweg würde die App im Einsatz blockieren.

  • Profilseite mit Bereitschaftsanzeige, Geräten, Probealarm, Name, E-Mail und Passwortwechsel.

  • Nachfrage nach dem Anmelden — einmal „Soll dieses Gerät Alarme bekommen?". Auf iPhone und iPad steht dort die Anleitung zum Home-Bildschirm; dort ist es kein Defekt, sondern ein fehlender Schritt.

  • Meldungen können Handlungen auslösen — Schema-Hinweis → Schema-Check, Zustellfehler → Zustellprotokoll, neues Gerät → Geräteverwaltung. Der Knopf erscheint nur mit dem nötigen Recht.

  • Neues Recht mitteilung.rueckmeldungen („Rückmeldungen anderer sehen"). Ab Werk bei Administrator, Einsatzleiter und Lage; zusätzlich an den Dispo vergebbar. Bewusst ein eigenes Recht und nicht einsatz.view — das hat auch die Rolle Gast.

  • Bereich „Meldungen" in drei Blöcken: Einstellungen (Zustellweg, Meldungsarten, Rückmeldungen), Push-Dienste (Web Push, Telegram), Logs & Diagnose (Zustellprotokoll, Status). Geräteverwaltung als eigene Seite.

  • Freigabe neuer Geräte, Vorgabe aus: Wer sich anmelden kann, hat sich ausgewiesen, und eine Alarmierung, die auf einen Verwaltungsvorgang wartet, ist keine.

  • Admin-Seite „Wetter → Zwischenspeicher" — Trefferquote, belegter Platz, „Animation warm", „Nur noch Ballast" und ein Probe-Knopf zum Messen.

Geändert

  • „Mitteilungen" heißt überall „Meldungen" — Bereich, Adresse, Menü, alle Texte; alte Lesezeichen werden weitergeleitet. Die Katalogseite heißt Meldungsarten.
  • „Durchsage" heißt „Nachricht" — Seite, Rechte-Label, PWA-Kürzel. Adresse /durchsage.php und Recht mitteilung.durchsage bleiben.
  • Rückmeldungen sind ein fester Katalog (Komme, Später, Nicht, ESt, LG) statt eines freien Textfelds. Vorher ließ sich alles eintragen, während die Auswertung ihre Werte fest kennt: Wer „Ja" statt „Komme" eintrug, sah dort dauerhaft eine 0. „ELW raus" und „Abbruch" sind keine Rückmeldungen mehr.
  • Die Zählung stellt sich nach 15 Minuten zurück (einstellbar unter Meldungen → Rückmeldungen, 0 schaltet ab). Gefiltert wird, nicht gelöscht.
  • Die Seite „Rückmeldungen" verlangt mitteilung.rueckmeldungen statt admin.access.
  • Rollenspezifische Rechte gelten auch zur Laufzeit (#211) — eine Zuordnung, die auf anderem Weg in die Datenbank kam, wirkte bisher trotzdem.
  • Entscheidungen bleiben 14 Tage offen, eine Rückmeldung vier Stunden, eine Kurznachricht zwölf.
  • Entscheidungen gehen nicht über Telegram raus — dort könnte jeder Mitleser ein fremdes Gerät freischalten, und der Bus wüsste nicht einmal, wer. Die Meldung entsteht trotzdem und steht im Postfach.
  • Eine Meldung, eine Zeile je Person — auch wenn sie über zwei Wege geht.
  • Der Zustellnachweis unterscheidet sechs Zustände statt drei. Nur fehlgeschlagen gilt als Fehler.
  • Telegram-Rückmeldungen laufen über Knöpfe an der Nachricht statt über eine Antwort-Tastatur; der bisherige Textweg bleibt als Rückfall.
  • Der Schalter „Telegram aktiv" hält beide Richtungen an. Ein Not-Aus, der nur die halbe Richtung abschaltet, ist keiner.
  • Die Chat-Zuordnung entscheidet auch über den Rückweg — angenommen wird nur noch aus Chats, in die das ETB selbst sendet.
  • Einsatz löschen und ETB zurücksetzen räumen die Meldungen mit ab (sie tragen den vollen Alarmtext samt Melderdaten). Katalog und Chat-Zuordnung bleiben — sonst wäre danach niemand mehr erreichbar.
  • Ein Gerät gehört genau einer Person. Richtete sich am selben Browser ein Zweiter ein — typisch am geteilten Fahrzeug-Tablet —, wanderte das Gerät bisher still zu ihm.
  • Benutzernamen dürfen nur Buchstaben, Ziffern und . _ - @ enthalten (3–64 Zeichen); bestehende Konten bleiben unberührt.
  • Name und E-Mail ändert jeder selbst. Eine E-Mail gehört genau einem Konto — sonst ließe sich der „Passwort vergessen"-Link umlenken.
  • Der Schema-Banner erscheint nach dem Anmelden sofort statt mit bis zu einer Stunde Verzögerung.
  • Tippziele auf dem Tablet (#214): Schließen-X von 30 auf 40 px, kleine Knöpfe erreichen 44 px ab 800 statt erst ab 760 px Breite.
  • Die Symbole der Wichtigkeit sind gezeichnet statt Emoji — ein Emoji ist auf jedem Gerät ein anderes Bild und lässt sich nicht einfärben.
  • Statische Dateien werden ein Jahr zwischengespeichert, bewusst nur unterhalb von /assets/; Logos unter /branding/ bleiben austauschbar.

Behoben

  • Rückmeldungen aus dem Telegram-Chat kamen bei vielen Wehren nie an. Ein Druck auf die Antwort-Tastatur schickte eine normale Textnachricht — die sieht ein Bot in einer Gruppe nur, wenn sein Privacy Mode ausgeschaltet ist, und ab Werk ist er an. Kein Fehler, kein Log-Eintrag. Das war keine Frage des Hostings. Die neuen Knöpfe erreichen den Bot immer.

  • Eine Rückmeldung aus einem fremden Chat zählte mit — wer den Bot direkt anschrieb, konnte eine Zusage ins Lagebild setzen.

  • Wiederholte Chat-Antworten konnten die Seite „Rückmeldungen" fluten.

  • Wer sofort vom Sperrbildschirm antwortete, bekam einen Fehler — der Ausweis wurde erst gültig, wenn der letzte Empfänger beliefert war.

  • Derselbe Ausweis ließ sich doppelt einlösen.

  • Der Nachtrag der Sammelmeldung verpuffte regelmäßig — er ging fast leer raus, und jede echte Spätmeldung danach erreichte die Führung nie mehr.

  • Ein Zusatztext konnte im Lagebild einen zweiten, erfundenen Namen vortäuschen.

  • „Zustellung fehlgeschlagen" kam einmal je Regel statt je Vorgang.

  • Freigaben ließen sich nicht aus der Liste löschen. Der Papierkorb meldete „Diese Rückmeldung gibt es nicht mehr", obwohl sie dastand — ein Riegel gegen das Löschen von Entscheidungen war stehen geblieben, nachdem sein Grund entfallen war. Freigaben lassen sich jetzt löschen; sie sind weiterhin vom automatischen Aufräumen ausgenommen, und wer eine löscht, steht mit Namen und Inhalt im Protokoll.

  • Jeder Fehler beim Löschen sagte dasselbe. „Gibt es nicht mehr" stand auch dann da, wenn die Rückmeldung sehr wohl vorhanden war — die Suche ging daraufhin in die falsche Richtung. Jetzt wird unterschieden, ob sie weg ist oder ob etwas schiefging.

  • „Zeitraum ändern" auf der Startseite führte auf die falsche Seite.

  • Freigabe-Anfragen lösten einen Fehlalarm aus — sie richten sich an einzelne Personen, was Telegram nicht kann.

  • Das Zustellprotokoll bildete die Wirklichkeit nicht ab — dort stand „zugestellt", selbst wenn Telegram abgeschaltet war.

  • Der Debug-Modus wirkte nicht mehr — wer ihn zum Testen einschaltete, alarmierte trotzdem die ganze Wehr.

  • Löschgruppen wurden schreibweisenabhängig gesucht („IuK" gegen „iuk").

  • Über einen Einladungslink eingerichtete Geräte konnten sich nie erneuern — ausgerechnet die der Rolle Einsatzkraft. Sie wären still aus der Alarmierung gefallen.

  • Auf einer reinen Web-Push-Installation lief kein Heartbeat — und die Logs wurden nie aufgeräumt. Ausgerechnet die Überwachung, die melden soll, dass der Cron läuft, schaltete sich bei der Vorgabe-Einstellung selbst ab.

  • Der Probealarm fragte den falschen Zustellweg — den der Wehr statt den der Person. Für Erprobende konnte er also nie funktionieren.

  • Sieben Regeln hatten keine Kurzfassung, darunter beide des Hauptalarms.

  • Parallele Anfragen meldeten ein Gerät dauerhaft ab. Beim Kaltstart der App laufen zwei Anfragen gleichzeitig; die zweite löschte das Cookie.

  • Jeder Warnungs-Link in einer Meldung führte auf 404 — an sieben Stellen.

  • In der Geräteverwaltung taten vier von fünf Knöpfen nichts — kein Fehler, keine Meldung, die Seite lud neu. Betroffen war der zweite, unabhängige Weg zur Geräte-Freigabe.

  • Der Speichern-Knopf legte Bildschirm-Zugänge an und widerrief sie (verschachtelte Formulare).

  • Der Probealarm fragt jetzt nach der Stufe. Drei Knöpfe — laut, normal, leise —, im Profil wie in der Geräteverwaltung. Seit die Stufen wirklich drei verschiedene Benachrichtigungen erzeugen, beantwortet ein Probealarm mit fester Stufe nur die halbe Frage: „kommt etwas an" ja, „wird es so laut wie gedacht" nicht.

  • Die Sammelmeldung nimmt wieder alle Empfängerkreise an — einzelne Personen, rechtebasiert, dynamisch. Bisher nur feste Rollen und Löschgruppen; das war eine Ersatzprüfung aus der Zeit, als noch niemand die Rolle eines namentlich genannten Empfängers nachschlagen konnte. Genau das tut der Riegel beim Versand inzwischen — er streicht Gast, Einsatzkraft und Schwerpunkt-Dispo heraus, egal über welchen Ausdruck sie hineingeraten sind. Die Sperre schützte also nichts mehr und verhinderte nur noch den engeren Kreis: eine Sammelmeldung an eine einzelne Person.

  • „laut" und „leise" wirkten gleich. Die Benachrichtigung trug nur ein Ja/Nein für lautnormal und leise waren für das Gerät nicht zu unterscheiden, und der Tagesbericht klingelte wie ein Hauptalarm. Jetzt wirken alle drei Stufen: laut (Ton, Vibrationsmuster, bleibt liegen), normal (Ton), leise (erscheint, bleibt still).

    Einen eigenen Klingelton je Meldungsart kann eine Web-App nicht vergeben — Benachrichtigungskanäle legt auf Android der Browser an, und die Notification-API kennt kein Feld dafür. Ob es klingelt, ist der Hebel, den es gibt.

  • Die kopierte Bildschirm-Adresse konnte unbrauchbar sein. Sie wurde aus org_url gebaut — und die ist ab Werk leer. Ohne sie landete ein relativer Pfad in der Zwischenablage, der auf dem Hallenschirm ins Nichts führt, während der Knopf „kopiert" meldet. Sie fällt jetzt auf den Host der Anfrage zurück, wie der Einladungslink für Geräte es längst tat.

  • Die Statusseite warf zwei Bildschirm-Zustände in einen Topf. „Noch nie aufgerufen" und „meldet sich seit zwei Stunden nicht" zählten gemeinsam, und beide bekamen den Satz der schlimmeren Lage. Ein frisch angelegter Zugang wurde dadurch als Ausfall gemeldet. Jetzt getrennt: Ein nie aufgerufener Zugang ist ein offener Einrichtungsschritt (gelb), ein verstummter Bildschirm ein Ausfall (rot) — der hängt in der Halle und zeigt einen alten Stand.

  • Der Knopf „Anzeigen" bei den Bildschirmen versprach zu viel. Er öffnet Deine Vorschau über Deine Anmeldung und richtet den Bildschirm nicht ein; „zuletzt gesehen" bleibt danach leer. Das steht jetzt an Knopf und Legende.

  • Die Statusseite meldete einen Cron-Ausfall, den es nicht gab. Die Karte Lebenszeichen maß die letzte system.heartbeat-Meldung — die schickt aber ein eigener, täglicher Cron-Job. Gegen eine Frist von zwei Stunden gehalten war die Karte damit rund zweiundzwanzig Stunden am Tag rot, während der System-Status daneben „19 s, OK" zeigte. Sie liest jetzt denselben Marker wie der System-Status — den, den jeder Cron-Lauf schreibt — und benutzt dessen Schwellen.

    Ein Warnzeichen, das fast immer leuchtet, wird nach zwei Tagen überlesen. Dann fällt der echte Ausfall auch nicht mehr auf — genau das sollte diese Seite verhindern.

  • Haken und Radios waren aufgeblasen. Zwei Regeln für Textfelder trafen auch sie: das Formularraster gab ihnen Rahmen, Innenabstand und volle Breite, die Touch-Runde vom 28.08. zusätzlich 44 Pixel Mindesthöhe — und das auf jedem Bildschirm, weil die Regel nicht in der Touch-Media-Query stand. Auf der Seite Meldungsarten stand dadurch ein 44 Pixel großer blauer Haken neben normalgroßen Feldern.

    Ein Haken braucht kein großes Kästchen, sondern eine große Anfassfläche — das ist Sache seines Labels. Der app-weite Durchgang dazu ist als #219 erfasst.

  • Die Geräte-Freigabe an der Benachrichtigung tat nichts. Wer auf Freigeben tippte, sah die Rückmeldung gebucht — das Gerät blieb aber gesperrt, was von außen aussieht wie eine Ablehnung.

    Die Ursache war nicht die Zuordnung der Knöpfe, sondern ein Riegel, der richtig ist: Eine Entscheidung wird nur auf dem angemeldeten Weg ausgeführt. Ein Antwort-Token ist ein vier Stunden gültiger Ausweis, den ein Blick auf ein fremdes, entsperrtes Handy mitbringt — er darf keinem unbekannten Gerät die Alarmierung freischalten.

    Also standen dort zwei Knöpfe, die nichts bewirken durften. Sie sind jetzt weg: Ein Tipp führt ins Postfach, wo die Entscheidung mit Rechteprüfung fällt. Betroffen war ausschließlich die Geräte-Freigabe — sie ist die einzige Meldungsart mit Antwortknöpfen und Folgehandlung. Beim Hauptalarm ist die Antwort das Ergebnis; dort war nie etwas kaputt.

  • Rückmeldungen lassen sich löschen — von Hand und nach Frist. In der Liste unter Rückmeldungen steht für die Konfigurationsverwaltung ein Papierkorb je Zeile, und unter Meldungen → Rückmeldungen eine Frist: „Rückmeldungen löschen nach", Vorgabe 3 Tage, höchstens 14, 0 schaltet ab. Der Cron räumt ab.

    Eine Rückmeldung beantwortet eine Frage der Gegenwartich komme. Ein paar Tage später ist derselbe Eintrag etwas anderes: die Aufzeichnung, wer wann wo war. Der ETB-Reset räumte bisher nur die Rückmeldungen zu Einsätzen weg; die systemnahen blieben unbegrenzt liegen.

    Weg ist dabei nur die Antwort, nicht die Zustellung: Dass die Meldung hinausging und wen sie erreicht hat, bleibt im Zustellprotokoll. Sonst sähe es hinterher so aus, als sei die Person nie alarmiert worden. Wer von Hand löscht, steht mit Namen im Protokoll — zurückholen lässt sich nichts.

  • Die Sammelmeldung konnte trotz Klarnamen-Schutz in einen privaten Telegram-Chat gehen. Der Schutz strich die gesperrte Person aus der Empfängerliste — Telegram sucht seine Chats aber aus dem Ausdruck, nicht aus der Personenliste. Ein persönlich eingetragener Empfänger blieb dort stehen, und die vollständige Personallage ging in seinen Chat, während das Protokoll „gestrichen" meldete. Der Schutz greift jetzt auf beiden Wegen, und eine Meldung mit Klarnamen geht nie ersatzweise „an den Kanal, Personen unbekannt".

    Erreichbar war das erst, seit die Sammelmeldung einzelne Personen als Empfänger annimmt. Die Öffnung bleibt richtig — sie brauchte denselben Riegel eine Ebene tiefer.

  • Der Probealarm ignorierte die gewählte Stufe. Im Profil kam immer ein normaler Push an, während die Antwort die gewählte Stufe behauptete. Über die Geräteverwaltung wirkte sie.

  • Die Frist hätte beim ersten Lauf den ganzen Telegram-Altbestand gelöscht. Die alten Rückmeldungen speichern ihren Zeitpunkt in einem anderen Format; der Vergleich gegen „älter als drei Tage" traf deshalb ausnahmslos jede Zeile — und hätte es als planmäßiges Aufräumen gemeldet.

  • Entscheidungen wären mit weggeräumt worden. Eine erteilte Freigabe hätte danach wieder als offene Frage im Postfach gestanden, und der Nachweis, wer sie verantwortet hat, wäre fort. Freigaben sind jetzt ausgenommen — von der Frist wie vom Papierkorb.

  • „Alarm auslösen" alarmierte auf einer Installation ohne Telegram niemanden. Der Haken hieß „Auch per Telegram alarmieren" und war zusätzlich an das Telegram-Feature gekoppelt: War Telegram aus — seit v4.9.0 ein ausdrücklich vorgesehener Fall —, stand er ausgegraut da und der Meldungs-Bus erfuhr von der Auslösung gar nichts. Keine Push-Nachricht, kein Postfach-Eintrag, nichts auf dem Alarmmonitor. Der Einsatz stand da, alarmiert war niemand. Derselbe Alarm per Mail erreichte dagegen alle.

    Der Haken heißt jetzt „Einsatzkräfte alarmieren" und ist gesetzt. Über welche Wege alarmiert wird, entscheidet der Meldungs-Katalog — die Frage gehört nicht mehr in den Auslöse-Dialog. Wer nur die Einsätze anlegen will (Übung, Nachtrag), nimmt den Haken heraus.

    Im Alarm-Banner eines bestehenden Einsatzes bleibt die Vorgabe aus — dort wäre es ein zweiter Alarm zum selben Vorgang. Auch dort wirkt der Haken jetzt unabhängig von Telegram.

  • Der Papierkorb verweigerte Geräte- und Warnungs-Freigaben — mit der Meldung „Diese Rückmeldung gibt es nicht mehr", obwohl sie sehr wohl da war. Ausgerechnet diese Einträge überstehen den ETB-Reset und sind deshalb die, die man von Hand aufräumen will.

    Der Grund war ein Riegel, der eine gelöschte Freigabe daran hindern sollte, wieder als offene Frage im Postfach zu erscheinen — was seit dem Fix darüber ohnehin nicht mehr passiert. Was in der Zeile stand, wandert jetzt beim Löschen ins Protokoll: Bei einer Gerätefreigabe ist sie der einzige Nachweis, wer ein fremdes Gerät in die Alarmkette gelassen hat.

    Und „darf nicht" heißt nicht mehr „gibt es nicht": Die beiden Fälle sagen jetzt Verschiedenes. Eine Fehlermeldung, die in die falsche Richtung zeigt, kostet mehr Zeit als gar keine.

  • Eine gelöschte Rückmeldung kam sofort zurück. Löschen setzte die Antwort auf „leer" — und genau daran erkennt das Postfach eine offene Meldung. Der Alarm stand sofort wieder da, das Vollbild-Fenster ging auf, ließ sich nicht schließen, ohne zu antworten, und die Antwort schrieb die gelöschte Rückmeldung zurück. Ein Löschen, das sich selbst rückgängig machte — und dabei zu einer Aussage zwang, die man gerade entfernt hatte.

    Eine gelöschte Antwort ist jetzt etwas anderes als noch keine. Nur die zweite macht eine Meldung wieder auf.

  • Die Alarmansicht lässt sich wieder öffnen. Wer „ELW raus" oder „Abbruch" nachtragen wollte, kam an die Meldung nicht mehr heran: Das Vollbild-Fenster erscheint nur bei einem unbeantworteten Alarm. Im Postfach steht jetzt „Alarmansicht öffnen" — derselbe Dialog, samt Lage-Knöpfen, solange der Alarm im 12-Stunden-Fenster liegt. Er zwingt zu nichts und zeigt oben, was Du gemeldet hast.

  • Angekreuzte Auswahl-Pillen blieben grau. Ein angeklickter Wochentag im Zeitfenster einer Einheit zeigte seinen Zustand nicht — die rote Färbung hing an einer Klasse, die nur die Server-Seite setzt. Jetzt zeigt die Pille ihren Zustand ohne Skript.

  • Der Alarmmonitor zeigte im Ruhezustand dauerhaft einen roten „ALARM"-Balken. Auf einem Schirm, der monatelang in der Halle läuft, ist das die schlimmstmögliche Fehlaussage.

  • Deaktivierte Ortsteile standen als Auslöser eines Schwerpunkts zur Wahl — ein damit angelegter Schwerpunkt löst nie aus.

  • Löschst Du einen Benutzer, gehen seine Zeilen im Zustellprotokoll mit. Nebenwirkung: Die Zustellquote vergangener Einsätze ändert sich rückwirkend.

  • Löschst Du eine Bevölkerungswarnung im Entwurf, gehen ihre Meldungen mit.

Karten und Wetter

  • „Kein Radarbild" sah aus wie „kein Regen" — auf einer Lagekarte die gefährlichste Verwechslung, die eine Wetteranzeige machen kann.
  • Das Regenradar schnitt den Westen ab — genau die Seite, aus der das Wetter kommt. Das Bild benutzte die Grenzen Deutschlands; das Komposit des DWD reicht weiter.
  • In derselben Animation folgte auf ein richtig liegendes Bild ein verzerrtes — der Zwischenspeicher schlüsselte nicht nach Ausschnitt. Jede Bild-Kennung trägt jetzt zwei Fassungen: eine für das Wo, eine für das Wie.
  • Mit eingeschalteten Blitzen stockte die Animation — rund vierzig Abrufe je Takt, die nichts liefern konnten und die Warteschlange blockierten.
  • Die Warntexte standen 466-mal in derselben Antwort — von 389 KB waren 195 KB reine Wiederholung, über Mobilfunk an ein Tablet im Einsatz.
  • Die Animation musste erst laden und konnte nicht sofort starten.
  • Der Cron wärmte nur vor, solange ohnehin schon jemand zuschaute — Vorwärmen ist genau dann nötig, wenn niemand zuschaut.
  • Der Zwischenspeicher sammelte, ohne je wegzuwerfen. Jetzt wird zuerst nach Alter aufgeräumt: Platz ist nicht der Grund, etwas wegzuwerfen — Nutzlosigkeit ist es.
  • Dazu: falscher Dienst bei einer Störung beschuldigt, blaue Rechtecke über der Lagekarte, „Keine Warnung" mitten in einer Warnfläche, Warnkarte blieb beim Hineinzoomen auf Landkreis-Ebene, springende Zeitleiste, unsichtbare Regen-Legende.

Sicherheit

  • Verwaltungsrechte waren über die JSON-Schnittstelle ohne frische Anmeldung erreichbar. Die Nachfrage für Sitzungen aus dem „angemeldet bleiben"-Cookie galt nur für Seiten — der Dauerausweis war damit doch der Generalschlüssel, der er nicht sein sollte.
  • Der Klarnamen-Schutz prüfte den Ausdruck, nicht die Empfänger. Ein Gast-Konto in einer adressierten Löschgruppe bekam die Sammelmeldung mit der vollständigen Personallage — bei Telegram in einen Gruppenchat.
  • Das Lagebild zeigte einem Dispo alle laufenden Einsätze — dieselben, die ihm die Einsatzakte mit „kein Zugriff" verweigert.
  • Ein Schwerpunkt-Dispo sah über die alten Telegram-Zeilen fremde Einsätze.
  • Das erzeugte Webhook-Secret stand in der Adresszeile — und landete damit in Browser-Historie, Referrer und Zugriffslog.
  • Ein Push-Abo ließ sich ohne Besitznachweis erneuern. Bisher genügte die Kenntnis des alten Endpunkts — und der steht im Klartext in jedem Backup.
  • Die Seite „Rückmeldungen" ist für Gast und Einsatzkraft gesperrt, auch wenn ihnen jemand admin.access zuweist.

Barrierefreiheit

Zehn Befunde mit gerechneten Kontrasten: weiße Schrift auf Farbtoken, die im Dunkelmodus aufgehellt werden (bis herunter zu 1,85:1); ein Fokusring, der ausgerechnet auf dem meistgenutzten Knopf verschwand; ein 18 Pixel breiter Trenner im Postfach; drei Stellen, an denen ein Zustand nur durch Farbe unterschieden wurde. Die Rückmelde-Farben liegen jetzt zentral in den Tokens und wurden abgedunkelt.

Doku

Handbuch und Kontexthilfen sind einmal gegen den Code gelesen worden — und das war ein Testverfahren: Vier echte Funktionsfehler kamen dabei heraus. Korrigiert wurden zwei falsche Aussagen über Berechtigungen, eine überholte Datenschutz-Zusage und sieben Seiten ohne Kontexthilfe. Neue Kapitel: Gerät einrichten, Angemeldet bleiben im Profil, sechs Glossar-Begriffe, FAQ zu Alarmmonitor und Wetter.

Update-Hinweis

Einmaliger Schema-Check nötig (/admin/schema-check.php → „Reparieren"). Bestehende Einstellungen bleiben unangetastet.

Elf neue Tabellen: sechs für den Bus (user_loeschgruppe, meldung_arten, meldung_regeln, meldungen, meldung_zustellungen, meldung_kanal_ziele), zwei für Web Push (push_abos, push_einladungen), dazu geraete_logins („angemeldet bleiben"), monitor_zugaenge (Bildschirm-Zugänge) und aktion_drossel.

Neue Spalten unter anderem für den Antwort-Ausweis, die Sammelmeldung, den Besitznachweis der Geräte, die Geräte-Freigabe, den Empfangsnachweis und den Zustellweg je Person (users.meldung_kanal).

Nachtrag 31.08.2026 — Einheiten: Derselbe Schema-Check legt die Regel-Spalten der Einheiten an, überführt die bisherige IuK-Sonderlogik in die Regel ihrer Einheit, trägt die Meldungsart Einheit nachalarmiert nach legt die Tabelle für die Ausrückeordnung (ort_einheit) an und ergänzt die Spalte, an der eine gelöschte Rückmeldung von einer nie gegebenen zu unterscheiden ist.

⚠️ Die übernommene IuK-Regel bitte nachsehen. Der bisherige Ausdruck war ein regulärer Ausdruck und lässt sich nicht verlustfrei übersetzen — übernommen wird die gängige Auslegung („ab Stufe 3") als lesbares Muster. Der Bericht des Schema-Checks weist darauf hin. Bis zum Schema-Check verhält sich alles wie bisher.

Inhalte, die derselbe Lauf einspielt oder repariert:

  • Der Meldungskatalog mit allen 16 Arten samt Startvorlagen.
  • Die Rolle Einsatzkraft; mitteilung.durchsage für alle Rollen mit „Alarm manuell auslösen"; mitteilung.rueckmeldungen für alle mit „Nachricht verschicken".
  • Der bisher genutzte Zustellweg wird festgeschrieben, damit eine Bestandsinstallation nicht über den neuen Vorgabewert auf Web Push springt.
  • Alle bereits angemeldeten Geräte werden einmalig als freigegeben markiert — was vorher erlaubt war, bleibt erlaubt.
  • Fehlende Kurz- und Langfassungen werden nachgetragen; angefasst wird ausschließlich eine leere Zelle.
  • Eine angepasste Telegram-Vorlage wird in den Katalog übernommen, aber nur wo dort noch der unveränderte Standardtext steht.
  • Vorhandene Emoji der Wichtigkeitsstufen werden auf gezeichnete Symbole umgeschrieben.

Vor dem Lauf alarmiert das ETB unverändert weiter. Nicht möglich sind bis dahin Rückmeldungen aus App und Sperrbildschirm, Sammelmeldung und Nachricht; die Freigabe wirkt nicht, die Bereitschaftsanzeige bleibt leer.

Danach sechs Dinge prüfen:

  1. Löschgruppen zuordnen (Administration → Benutzer). Wer in keiner Gruppe steht, wird von keinem Alarm erfasst.
  2. Rechte-Verteilung für „Nachricht verschicken", falls „Alarm manuell auslösen" bei Euch abweichend vergeben ist.
  3. Rechte-Verteilung für „Rückmeldungen anderer sehen" — die Klarnamen im Postfach hängen daran.
  4. Wer die Seite „Rückmeldungen" braucht, benötigt jetzt dieses Recht.
  5. Web Push bleibt aus, bis Du umstellst. Instanz auf HTTPS bringen, Schlüssel erzeugen, Geräte einrichten — und erst umschalten, wenn die Zahl „Ohne Gerät" klein genug ist.
  6. Die Bereitschaft anschauen. Direkt nach dem Update steht fast jeder auf unbewiesen — der Empfangsnachweis entsteht erst mit der nächsten Meldung.

Das Abholen der Telegram-Rückmeldungen braucht keinen Schema-Lauf und ist ebenfalls aus. Der Rückweg bleibt auf Webhook — läuft er bei Euch, lass ihn.

Nach dem Update an die Wehr denken: Wer auf Web Push umstellt, sollte den Handzettel verteilen (Administration → Web Push). Besonders Schritt 8 — ohne gesetzten Benachrichtigungston bleibt jeder Alarm still.


4.8.0 — 2026-08-10

Neues zubuchbares Zusatzmodul „Wetter" (#210). Die amtlichen Warnungen des Deutschen Wetterdienstes für Deine Beobachtungsgebiete, aktuelle Messwerte, eine 24-Stunden-Vorschau, Warnflächen, Regenradar, Blitze und Wetter-Rose auf den Karten, eine automatische Momentaufnahme der Wetterlage bei jeder Einsatz-Anlage und ein Lagebild zum Ausdrucken.

Das Modul ist standardmäßig aus: Ohne Freischaltung gibt es weder den Menüpunkt noch die Wetterseiten noch die Wetter-Ebenen der Karten — unabhängig von den vergebenen Rechten.

Das nie veröffentlichte Zwischenrelease 4.7.5 ist hier mit gebündelt — vier gemeldete Bugs, Einsätze anheften, der Leitungs-Einsatz am Schwerpunkt, die Sperre durch offene Bevölkerungswarnungen, das Recht mowas.export und die selbst gesetzte Zeitzone.

Neu

  • Wetterseite (Sidebar → Lage → Wetter, Recht wetter.view) — amtliche Warnlage, vier Kennzahlen samt Herkunftszeile, weitere Messwerte mit Messstation und Entfernung, Gebietskarte, Live-Intervall.

    „Warnlage unbekannt" heißt nicht „keine Warnung" und sieht deshalb anders aus als die Ruhe-Anzeige.

  • 24-Stunden-Vorschauleiste — je Stunde Temperatur, Niederschlag und Böen, auffällige Stunden mit Grund im Klartext („kräftige Böen", „Frost"). Über der Leiste die erste auffällige Stunde als Vorwarnzeit. Eine Warnung kommt, wenn die Lage da ist; eine Freiwillige Feuerwehr braucht die Zeit davor.

  • Wetter-Ebenen auf drei Karten (Lagekarte, Wetterseite, maximierte Einsatzkarte): Wetterwarnungen legt die Warnflächen schraffiert über die Karte, Aktuelles Wetter blendet das Regenradar mit Zeitleiste ein und setzt per Klick eine Wetter-Rose auf einen Kartenpunkt, Blitze & Vorhersage zeichnet erkannte Blitze und die Vorhersage der nächsten Stunde.

  • Warnarten statt bloßer Stufen — 46 amtliche Warnkennziffern auf neun Gruppen mit eigenem Symbol; Hitze und UV haben eine eigene Farbskala und tragen deshalb keine Stufennummer. Eine Hitzewarnung ist nicht harmloser als eine Sturmwarnung, sondern etwas anderes.

  • Warntafel neben der Wetter-Rose — ein Klick beantwortet beide Fragen: Messwerte und die Warnlage an genau diesem Punkt, mit Gebietsnamen. Vorher schlossen sich beide Auskünfte aus.

  • Warnflächen in der Auflösung, die zum Ausschnitt passt — kleine Ausschnitte holen die Gemeinde-Ebene, großflächige die Landkreis-Ebene, wie die Karte des DWD selbst.

  • Momentaufnahme der Wetterlage bei der Einsatz-Anlage — jeder neue Einsatz mit Koordinaten hält fest, wie das Wetter an der Einsatzstelle war. Genau diese Angabe sucht man Wochen später beim Einsatzbericht; ein Live-Abruf liefert dann das Wetter von heute. Scheitert der Abruf, wird der Einsatz trotzdem angelegt.

  • „In die Lage übernehmen" und „Jetziges Wetter ins Tagebuch" — schreibt Warnung bzw. aktuelles Wetter als Kommentar ins Tagebuch. Beides manuell, der Eintrag trägt Deinen Namen.

  • Wetter-Lagebild zum Ausdrucken — alle Beobachtungsgebiete auf einem Blatt. Großlagen halten sich nicht an Gemeindegrenzen.

  • Beobachtungsgebiete und amtlicher DWD-Gebiets-Katalog — die Warngebiets- Liste (rund 11.600 Einträge) holt ein Knopf einmalig in die Datenbank; danach wählst Du über Bundesland → Kreis → Gemeinde. Die Messstation ist wählbar; fällt sie aus, weicht das ETB auf die nächstgelegene aus und schreibt das dazu.

  • Herkunft der Messwerte einstellbar — Modellwerte (für Deine Koordinate, keine Messung) oder Stationsmessungen (echte Messwerte, oft aus zehn Kilometern). Voreinstellung: Modellwerte. Jede Anzeige schreibt dazu, was von beidem sie zeigt.

  • MET Norway als zweiter Wetterdienst — ein europäisches Modell als Vergleich. Gewählt wird nur, woher Kennzahlen und Vorhersage kommen; die amtlichen Warnungen bleiben immer beim DWD. Pflicht ist eine Kontakt-Kennung.

    Außerhalb Norddeutschlands liefert MET Norway in aller Regel keine Böen — dann fehlen die Zacken der Wetter-Rose und die Böen-Schwellen der Vorschauleiste.

  • Einsätze fixieren (anheften) — ein Reißzwecken-Symbol heftet einen Einsatz oben in der Liste an, unabhängig von der Sortierung. Kein neues Recht; die Fixierung landet im Audit-Log.

  • Leitungs-Einsatz am Schwerpunkt — beim Anlegen eines Schwerpunkts optional ein Einsatz „Leitung Schwerpunkt", gebunden und fixiert. Dort dokumentierst Du alle Maßnahmen rund um den Schwerpunkt selbst.

  • Bevölkerungswarnung sperrt das Erledigen — ein Einsatz oder Schwerpunkt lässt sich nicht erledigen, solange an ihm eine Warnung offen ist. Der Sperr-Dialog öffnet sich sofort statt erst nach dem Bestätigen und listet die blockierenden Warnungen; eine aktive Entwarnung lässt sich direkt darin abschließen.

  • Neues Recht mowas.export („MoWaS-Formulare herunterladen") — Sehen und Herunterladen sind jetzt getrennt. Wer bisher mowas.create oder mowas.release hatte, behält den Download automatisch.

  • Filter „Mit Warnung" in der Einsatz-Übersicht.

  • Neues Recht wetter.view — reines Leserecht. Bei Neuinstallation bis hinunter zum Gast; bei bestehenden Installationen zieht der Schema-Check es für jede Rolle nach, die schon lagekarte.view hat.

Geändert

  • Feste Reihenfolge der Karten-Ebenen — DWD-Warnungen → Regenradar → Blitze → Bevölkerungswarnungen → Einsatz-Elemente. Bis dahin lag das Radar hinter der Warnfläche und war ausgerechnet innerhalb der gewarnten Zelle kaum zu sehen.
  • Regenradar neu gebaut — ein Bild je Zeitschritt statt rund zwanzig Kacheln; für die volle Schleife 25 statt rund 500 Abrufe. Nach dem Vorladen berührt das Abspielen kein Netz mehr.
  • Zeitachse des Radars sagt die Wahrheit — die Beschriftung stand fest auf „−2 h / jetzt / +2 h". Der Jetzt-Strich steht jetzt dort, wo die Vorhersage wirklich beginnt.
  • DWD-Stufe 4 in der Farbe des DWD — das bisherige Lila lag zu nah an der Hitzeskala.
  • Beaufort wird aus dem Mittelwind gerechnet, nicht aus der Böe. Aus Böen gerechnet lag die Stufe zwei bis drei zu hoch — „Bft 9" ist eine Ansage, nach der Absperrungen gesetzt werden.
  • Reihenfolge im Hauptmenü, Gruppe „Lage" — erst der Vorgang, dann die Lagedarstellung, dann was auf ihr liegt, zuletzt die Mittel.
  • Einsatz-Rollen: Vergabe auch aus einer geliehenen Rolle heraus. Die Kette wird über die Laufzeit gedeckelt — eine vergebene Rolle endet spätestens mit der eigenen. Der Entzug verlangt weiterhin die feste Basis-Rolle.
  • Sperrmeldungen nennen Namen statt nur Anzahl.

Behoben

  • Hitze- und UV-Warnungen wurden falsch eingefärbt — eine Hitzewarnung trägt den amtlichen Schweregrad „gering" und wurde deshalb als Stufe 1 gelb gezeichnet, während der DWD sie violett zeigt. Im August 2026 betraf das 66 von 67 bundesweit aktiven Warnungen: Die Karte sah für eine Hitzelage harmlos aus.
  • Herausgezoomt blieb die Warn-Ebene leer — eine leere Warnkarte liest sich als „keine Warnungen", und das ist der gefährlichste Zustand, den ein Warnsystem haben kann.
  • Ein abgebrochener Abruf galt als Erfolg — es kam eine leere Liste zurück, die sich als „keine Warnungen · gerade eben" ausgab.
  • Die Quellenangabe stand fest auf „Deutscher Wetterdienst" — auch wenn die Zahlen von MET Norway kamen, bis in den revisionssicher festgeschriebenen Tagebuch-Eintrag hinein. Zugleich ein Lizenzverstoß.
  • Die Warnliste sprach eine andere Sprache als die Karte daneben — links gelb als „DWD-Stufe 1", rechts violett als „Hitze".
  • Ein Klick auf eine Warnfläche blieb ohne Antwort, wenn nur die Ebene „Wetterwarnungen" eingeschaltet war — genau die Geste, die unter Stress zuerst kommt.
  • Das Vollbild wurde vom Minutentakt weggeräumt — wer die Karte groß gemacht hatte und nur schaute, flog nach 60 Sekunden heraus.
  • Die Karte vergaß, ob Du sie hell oder dunkel wolltest.
  • Eine geliehene Einsatz-Rolle konnte Rollen entziehen — wer die Einsatzleiter-Rolle geliehen bekam, konnte sie seinem eigenen Verleiher nehmen.
  • Zeitzone verlässt sich nicht mehr auf den Hoster. Das ETB hat sie bisher nirgends gesetzt; ohne Vorgabe in der php.ini fällt PHP auf UTC zurück, und sämtliche Zeitstempel im Tagebuch wären verschoben — bei einem Dokument mit revisionsrelevanten Zeiten gravierend. Die Anwendung legt sie jetzt selbst fest (APP_TIMEZONE, Vorgabe Europe/Berlin) und zieht die Datenbank nach. Das behob zugleich einen unbemerkten Fehler: Eine auf zwei Stunden befristete Rolle lief bei zwei Stunden Versatz vier.
  • Dazu: leere Zeilen im gedruckten Lagebild sahen aus wie fehlende Daten, Erklärungen fehlten auf dem Tablet, Tippziel des Karten-Umschalters, Warn-Symbol mit fester Größe, Hover-Schatten im Dunkelmodus.

Sicherheit

  • Abruf-Bremse für die Wetter-Schnittstellen — 40 Abrufe je Benutzer, Bereich und Minute. Die Endpunkte nehmen frei wählbare Koordinaten, jede neue Koordinate ist ein Abruf beim DWD und bindet für dessen Zeitlimit einen PHP-Arbeiter; auf Shared Hosting genügen wenige parallele Anfragen, um die Instanz auszubremsen.
  • Härtung der Wetter-Abrufe — die Größenbremse greift während des Ladens statt danach, alle Quellen laufen mit erzwungenem HTTPS und geprüftem Zertifikat, und die Entscheidung Gemeinde- oder Landkreis-Ebene hängt nicht mehr am frei wählbaren Zoom-Parameter aus dem Browser.

Update-Hinweis

Schema-Check nötig — vier neue Tabellen (wetter_gebiet, wetter_cache, wetter_moment, wetter_warngebiet) und die Vorgabewerte des Moduls, dazu aus 4.7.5 die Spalte einsaetze.ist_fixiert und das Recht mowas.export. Derselbe Lauf verteilt wetter.view an jede Rolle mit lagekarte.view.

Ohne den Lauf bleibt das Wetter stumm, stehen fixierte Einsätze nicht oben, und außer dem Administrator kann niemand Formulare herunterladen.


4.7.0 — 2026-08-02

Export im Original-Formular der Leitstelle Rhein-Sieg-Kreis (#208). Die Kreisleitstelle nimmt unser Standard-Dokument nicht an, sondern besteht auf ihrem eigenen Excel-Formular. Das ETB befüllt es jetzt maschinell aus der Warnung — in Excel weiterhin bedienbar. Wer keine solche Vorgabe hat, merkt nichts: Das bisherige Dokument bleibt die Voreinstellung.

Neu

  • Leitstellen-Formular als Excel-Download — das Original (F.1 Anlage A, Version 8.3) wird mit den Angaben der Warnung gefüllt: anfordernde Stelle, Koordinate im gewählten Format, Umkreis bzw. Verwaltungsbereich, Warnbereiche positionsgetreu, Warnstufe und Warnmittel als Kreuze, Warninhalt, Handlungsempfehlungen, Bürgerinformation. Layout, Logos und Druckbereiche bleiben unangetastet. Auch jeder archivierte Stand lässt sich so ausgeben.

  • Einstellung „Export-Vorlage" — Standard-MoWaS-Formular oder Rhein-Sieg-Kreis. Fehlt auf dem Server die PHP-Erweiterung zip, bleibt es beim bisherigen Dokument.

  • Zugeordnete Gemeinde — einmalig im Admin aus der Liste des Formulars gewählt; damit stehen Gemeindename und Verwaltungsbereich-Code fest. Der Wert wird je Warnung beim Speichern eingefroren.

  • Feld 7: Umkreis oder gesamte Gemeinde — genau eine der beiden Angaben ist Pflicht. Der Platzhalter {umkreis} wird bei „gesamte Gemeinde" zum Gemeindenamen.

  • Neue Formular-Version selbst einspielen — sie wird zuerst geprüft: Ändern sich nur Inhalte (Gemeindeliste, Warnbezirke), bleibt die Vorlage gültig; ändert sich die Struktur, wird sie abgelehnt. „Zur mitgelieferten Vorlage zurück" stellt jederzeit den Auslieferungsstand her.

  • Gemeindegrenze auf den Karten — betrifft eine Warnung die gesamte Gemeinde, zeichnen Lagekarte und Einsatzkarte statt eines Kreises den Umriss der Gemeinde. Den Umriss holt der Administrator einmalig per Knopfdruck von OpenStreetMap oder lädt ihn als GeoJSON hoch — nie automatisch im Hintergrund.

    Ohne gespeicherten Umriss bleibt die Fläche leer. Ein Kreis wäre dort irreführend: Er suggeriert einen viel kleineren Bereich, als gewarnt wird.

  • Standardwerte für die Bürgerinformation (Ansprechstelle, Bürgertelefon, Info-URL) belegen jede neu angelegte Warnung vor.

Geändert

  • Ankreuzfelder über den internen Katalog-Schlüssel statt über das frei editierbare Label. Ein unbekannter Schlüssel lässt das Kreuz bewusst leer, statt das falsche zu setzen.
  • Erzeugtes Excel bleibt bedienbar — die Datei rechnet beim Öffnen neu durch, dadurch funktionieren die Auswahllisten des Formulars wie im leeren Original.
  • Feld 7 heißt überall „Zu warnender Bereich"; die Variante steckt im Wert.
  • Lagekarte: „Warn-Radien" heißen „Warnflächen", weil jetzt auch Gemeinde-Umrisse gezeichnet werden.
  • Übermittlungs-Dialog nennt das richtige Dokument — damit niemand versehentlich das falsche verschickt.

Behoben

  • Telefonnummern verloren beim Speichern ihre führende Null. Ein rein numerisch aussehender Wert wurde beim Lesen in eine Zahl gewandelt. Betroffen waren unter anderem die Rückrufnummer der Wehrleitung, die Leitstellen- und die Bürgertelefonnummer. Nummern mit Leerzeichen blieben unberührt — deshalb fiel es lange nicht auf.
  • Warnbereiche landeten nicht positionsgetreu im Formular — sie wurden nach Typ statt nach Position verteilt.
  • Die Auswahlreihenfolge der Warnbereiche wird jetzt dauerhaft gespeichert statt über die Katalog-Id behelfsmäßig sortiert.
  • Die Karte des einzelnen Einsatzes zeichnet jetzt auch Warnflächen — vorher kannte sie nur den Umkreis-Kreis.
  • Ein „Gesamt"-Warnbereich (Feld 11) wirkt jetzt wie „Gesamte Gemeinde" (Feld 7) — vorher zeigte die Karte nur den Umkreis, bei einer Warnung für die ganze Gemeinde nicht bloß unvollständig, sondern irreführend.

Update-Hinweis

Schema-Check nötig — neue Spalte für die Auswahlreihenfolge der Warnbereiche.


4.6.0 — 2026-07-24

Bevölkerungswarnung (MoWaS) — Meldeformular mit Freigabe-Workflow, Zyklen und Historisierung (#208). Das ETB kann das Anforderungsformular für eine Bevölkerungswarnung erfassen, freigeben und als Dokument erzeugen.

Die Warnung wird nicht automatisch versendet. Das ETB erzeugt nur das Dokument; Übermittlung und telefonische Bestätigung bleiben beim Menschen.

Neu

  • Ablauf als Phase × Zyklus mit Vier-Augen-Freigabe — jede Warnung durchläuft je Zyklus (Erstwarnung → Aktualisierung 1…n → Entwarnung) dieselben Phasen (Entwurf → Zur Freigabe → Freigegeben → Bei Leitstelle → Aktiv). Die Rolle Lage erstellt und übermittelt, die Rolle Einsatzleiter gibt frei. Freigabe und Abschluss erfordern in jedem Zyklus das Vier-Augen-Prinzip. Ab „Zur Freigabe" ist die Warnung revisionsfest.
  • Drei neue Rechtemowas.view (Lage, Einsatzleiter, Disponent), mowas.create (Lage), mowas.release (Einsatzleiter). Für Schwerpunkt-Dispo und Gast bewusst nicht zuweisbar: Warnungen tragen keinen Scope-Filter.
  • Schwerpunkt-Anbindung — eine Warnung für die Großlage wird an den Schwerpunkt gebunden; ein Dialog übernimmt Adresse und Koordinaten eines zugewiesenen Einsatzes als Vorlage. Einsätze mit Schwerpunkt lösen keine eigene Warnung mehr aus.
  • Gefahrenbereich & Warnbereiche — vier Koordinatenformate (Dezimalgrad, Grad/Minuten/Sekunden, UTM 32U, what3words), ein Umkreis als Pflichtangabe und bis zu drei Warnbereiche.
  • Handlungsempfehlungen als editierbarer Text — über ein Auswahl-Fenster mehrere Katalog-Sätze übernehmen oder eigene ergänzen; Anzahl im Admin begrenzbar.
  • Meldungsvorlagen mit Platzhaltern ({ortslage}, {adresse}, {umkreis}, {url}, {telefon}).
  • Administrierbare Kataloge und Stammdaten — Kategorien, Warnstufen, Empfänger, Umkreis-Stufen, Warnbereiche, Ereignisse, Meldungsvorlagen, Handlungsempfehlungen, Absender-Stammdaten. Die Grundlisten sind mit dem bundesweiten MoWaS-Standard vorbelegt; die Textbausteine starten leer und lassen sich per Knopfdruck als Musterdaten laden.
  • Historisierung — jede Übermittlung wird als revisionsfester Stand archiviert; bei Übermittlung, Auslösung und Abschluss schreibt das ETB zusätzlich einen System-Kommentar mit Stand-Link in den Verlauf des gebundenen Einsatzes bzw. in die Schwerpunkt-Historie.
  • Warn-Indikator & Warn-Radien — ein Zivilschutz-Zeichen in Liste, Detail und Schwerpunkt-Leiste; der farbige Ring zeigt den Status. Auf Lagekarte und Mini-Karte wird der Warn-Radius in der Status-Farbe gezeichnet.
  • Interne Warnungsnummer nach dem Schema E#027-01 bzw. SP#001-02. Die laufende Nummer zählt Warnungen, nicht Zyklen.
  • Automatisch gekennzeichnete FolgemeldungenAKTUALISIERUNG X – … bzw. ENTWARNUNG – …; die Kennzeichen stapeln sich über Zyklen nicht.
  • Änderungen für die Leitstelle sichtbar — bei einer Aktualisierung sind im Dokument die Zeilennummern rot markiert, deren Inhalt sich gegenüber der vorherigen Meldung geändert hat.
  • Bestätigung nach dem Versand — verlangt die Leitstelle eine telefonische Rückbestätigung, führt das ETB beim Übermitteln die nötigen Schritte samt Kontaktdaten auf.
  • Koordinate aus der Adresse ermitteln — ein Knopf geocodiert und aktualisiert Dezimalgrad, Grad/Minuten/Sekunden und UTM. what3words bleibt unangetastet (kostenpflichtiger Abruf).
  • Lagekarte merkt sich Deine Einstellungen (Ansicht, Filter, Layer, Live-Intervall).

Marke

  • Neuer Produktname: „ETB – Das Einsatztagebuch" — Handbuch, README, Changelog und Wiki sprechen einheitlich diesen Namen; an der Bedienung ändert sich nichts.
  • Neue Standard-Bilder im ETB-Erscheinungsbild. Eigene hochgeladene Bilder bleiben unverändert bestehen.

Behoben

  • Warnkreis eines gelöschten Einsatzes blieb auf der Lagekarte stehen.
  • Warnkreis blieb bei geänderter Koordinate an der alten Stelle — der Mittelpunkt wurde beim Anlegen einmalig kopiert. Jetzt ist die Dezimalgrad-Eingabe führend.
  • Lagekarte zeigte nicht alle Warn-Radien — sie wurden aus den sichtbaren Markern abgeleitet und fehlten, sobald der Einsatz keine eigenen Koordinaten hatte oder ausgeblendet war. Jetzt werden sie unabhängig von den Markern geladen; die Randlinie unterscheidet Einsatz (durchgezogen) und Schwerpunkt (gestrichelt).
  • Horizontale Laufleiste beim Ansehen einer Warnung (fehlender box-sizing-Reset im Seitenrahmen).

Geändert

  • MoWaS-Leitstelle als eigene Stammdaten — bewusst getrennt von der Funkzentrale des Einsatzbetriebs.
  • Telegram-Webhook-URL konfigurierbar statt fest verdrahtet.
  • Ortsneutrale Beispiele in Platzhaltern, Hilfe und Vorschau.

Update-Hinweis

Schema-Check nötig — legt die MoWaS-Tabellen (Warnungen, Kataloge, Zuordnungen, Versionen, Audit) und die Konfigurationswerte an.


4.5.1 — 2026-07-21

Modal- und Layout-Aufräumen (#200) — überwiegend intern.

  • Modal-Tastaturbedienung vereinheitlicht — in den beiden Fenstern der Schwerpunkt-Einstellungen bleibt der Tastatur-Fokus jetzt im offenen Dialog (WCAG 2.4.3 / 2.1.2); ESC schließt, das Schließen-X sitzt app-weit oben rechts.
  • Sauberere Adresszeile bei Statusmeldungen — Erfolgsmeldungen laufen über einen einmaligen Sitzungs-Hinweis statt über einen ?msg=-Parameter. Die Meldung selbst ist unverändert.

4.5.0 — 2026-07-21

Rechte-Drifts schließen und härten, Hydrantenplan aus eigenen Daten, Kurz-Standort je Einsatz.

Neu

  • Kurz-Standort je Einsatz: Plus Codes & what3words (#186) — zusätzlich zur Adresse, beide einzeln zuschaltbar und standardmäßig aus.

    • Plus Codes werden komplett offline berechnet — kein Schlüssel, keine Kosten, kein externer Abruf.
    • what3words ist schon ohne Schlüssel nutzbar: Die drei Wörter lassen sich von Hand eintragen, werden angezeigt und verlinkt. Ein kostenpflichtiger Schlüssel schaltet zusätzlich die automatische Umwandlung frei.

    Kosten-Disziplin: what3words wird nur bei tatsächlicher Koordinaten-Änderung neu abgerufen; ein Pro-Einsatz-Deckel (Standard 5) verhindert, dass an einem Einsatz beliebig viele Abrufe anfallen. Ein Monatszähler warnt ab 80 % eines hinterlegten Limits. Der Schlüssel gehört als W3W_API_KEY in config/.env, nie in die Datenbank.

  • Hydrantenplan aus einer eigenen Datei statt Google MyMaps (#181) — die Wasserentnahmestellen kamen bisher aus einer Google-MyMaps-Karte. Jetzt lädst Du eine eigene GeoJSON-Datei hoch; es wird nichts mehr aus dem Internet nachgeladen, die Daten gehören der Wehr. Der Upload ist zweistufig: prüfen → Vorschau → übernehmen. Das Format ist tolerant (Pflicht ist nur name), eine Beispieldatei steht bereit. Für den Umstieg gibt es „Bestand als eigene Daten übernehmen".

  • Dimensionsklassen frei konfigurierbar (#181) — ab welcher Nennweite ein Hydrant als klein/mittel/groß/XL gilt, samt Bezeichnung und Farbe. Änderungen wirken sofort auf allen Karten, ohne die Daten neu einzulesen.

  • Freundliche Offline-Seite statt Browser-Fehlermeldung (#195) — mit „Erneut versuchen" und einer Rückmeldung. Besonders in der installierten App hilft das: Dort gibt es keine Adressleiste als Ausweg.

    An der bewussten Nicht-Offline-Fähigkeit ändert sich nichts. Was im Moment des Verbindungsverlusts abgeschickt wurde, ist nicht gespeichert und wird nicht nachgereicht. Die Seite sagt das ausdrücklich.

  • Sprungknopf „Zu den Einsatzmitteln" auf schmalen Bildschirmen (#195) — am Handy steht die EM-Seitenleiste unter dem Inhalt; bei einer langen Liste musste man erst an allem vorbeiscrollen.

  • Karte „Export-Bild-Cache" im System-Status (#203) — Frühwarnung für den Fall, dass der Tages-Heartbeat auf einer Instanz gar nicht eingerichtet ist.

Geändert

  • Sanfter Hinweis statt Fehlerseite, wenn nach einem Update ein Datenbank-Feld fehlt — statt einer harten Fehlerseite eine Zwischenseite mit Link zur Schema-Prüfung.

  • Status setzen verlangt jetzt überall einsatz.status (#201) — an mehreren Stellen genügte bisher das breitere einsatz.edit. Der Knopf „Einsätze abschließen" verlangt folgerichtig einsatz.abschluss und einsatz.status. Die automatischen Übergänge (Disponent zugewiesen, erstes EM zugewiesen) bleiben unverändert.

    Verhaltensänderung für selbst gebaute Rollen: Eine Rolle mit einsatz.edit, aber ohne einsatz.status, kann den Status nicht mehr setzen. Alle Standard-Rollen tragen beide Rechte.

  • Das Recht „Abschnitt anlegen" wirkt jetzt tatsächlich (#205)abschnitt.create stand seit jeher im Rollen-Editor, geprüft hat es aber niemand: Zum Bilden von Abschnitten genügte faktisch einsatz.edit. Die Oberfläche versprach eine Steuerbarkeit, die es nicht gab.

    Verhaltensänderung für selbst gebaute Rollen in beide Richtungen: Wer „Abschnitt anlegen" abgewählt hatte, verliert die Funktion jetzt wirklich. Wer umgekehrt „Einsatz bearbeiten" abgewählt hatte, gewinnt dadurch keine Rechte dazu.

  • Status beim Anlegen verlangt dieselben Rechte (#204) — bisher konnte jeder mit einsatz.create einen beliebigen Status vergeben, auch „Abgeschlossen": Damit ließ sich das Vier-Augen-Prinzip beim Anlegen umgehen. Wer direkt als Erledigt oder Abgeschlossen anlegt, wird jetzt auch als „Erledigt von" vermerkt.

  • EM-Zuweisung an Abschnitte hängt auf allen Wegen am Recht (#202) — zwei Nebenwege liefen daran vorbei. Fehlt es, läuft die Hauptaktion weiter, nur der Abschnitts-Anteil entfällt — und die Rückmeldung sagt das ausdrücklich.

  • Export-Bild-Cache räumt sich selbst auf (#203) — Fassungen, die seit 30 Tagen nicht gebraucht wurden, fliegen raus; über 250 MB zusätzlich die ältesten. Die Originale bleiben unangetastet.

  • „H"-Link der Telegram-Alarm-Nachricht zeigt auf den eigenen Hydrantenplan — die Einstellung „Google-MyMaps-ID" entfällt ersatzlos.

Sicherheit

  • Der Riegel für Status-Wechsel sitzt jetzt zentral (#201, #204) — bisher musste jede Stelle das Recht selbst prüfen, und genau das war mehrfach unbemerkt auseinandergelaufen. Damit sind auch Aufrufe abgedeckt, die an der Oberfläche vorbei abgeschickt werden.
  • Max. Abschnitte pro Einsatz wird serverseitig erzwungen — sonst ließe sich durch massenhaftes Anlegen der Abschluss eines Einsatzes blockieren.
  • Manuelles Auslösen von Alarm-Regeln legt Folge-Abschnitte nur noch an, wenn der Auslösende auch „Abschnitt anlegen" hat.
  • storage/ gegen direkten Web-Zugriff abgesichert (#203) — der seit v4.1.0 hinzugekommene storage/cache/ war nicht geschützt; dort liegen verkleinerte Kopien von Kommentar-Anhängen.

Update-Hinweis

Schema-Check nötig — legt plus_code, w3w und w3w_derive_count an und trägt für Bestandseinsätze den Plus Code offline nach. what3words wird zum Kostenschutz bewusst nicht rückwirkend befüllt.


4.1.0 — 2026-07-18

Neu

  • Sondersignal steuert automatisch die Wichtigkeit (#41) — die Alarm-Mail enthält eine Zeile „Sondersignal" (Ja/Nein). In der Wichtigkeit-Verwaltung legst Du fest, welche Stufe als Eil und welche als Zeit gilt; so bleibt die Benennung frei. Die Auswertung wirkt nur beim Anlegen — eine von Hand geänderte Wichtigkeit wird durch Folgemails nicht überschrieben.
  • Echte App-Icons für die installierte App (#194) — aus dem hochgeladenen Logo wird ein vollständiger Icon-Satz gerendert: 192 und 512 px für Android (jeweils auch als „maskable"-Variante) und ein opakes 180-px-Icon für iOS.

Geändert

  • PDF-Export: Bilder werden automatisch verkleinert (#191) — bisher wurden Bild-Anhänge in Originalauflösung eingebettet; schon wenige Handy-Fotos machten die Datei viele MB groß. Jetzt eine verkleinerte JPEG-Fassung (längste Kante 1600 px) — für A4 ohne sichtbaren Unterschied. Die Originale bleiben unverändert.
  • EM-Zuweisung hängt einheitlich am Recht em.assign — Drag & Drop auf der Detailseite prüfte bisher das allgemeine Bearbeiten-Recht.
  • Einheitliche Zugriffs-Meldungen der Einsatz-/Abschnitts-Endpoints (#160) — gleiche Fehlermeldungen und Statuscodes überall; eine unbekannte Einsatz-Nummer meldet konsequent „nicht gefunden".
  • Schwebende Hinweise (Toasts) liegen jetzt zuverlässig über Dialogen und dem mobilen Menü — vorher konnten sie je nach Seite dahinter verschwinden.
  • Projekt-Umzug zu GitLab — Repository, Releases und Issue-Tracker liegen unter gitlab.com/brun-soft/das-etb.

Sicherheit

  • CSV-Import mit Zeilen-Obergrenze (#196) — höchstens 5000 Datenzeilen.
  • Abgelaufene temporäre Rollen werden aufgeräumt (#196) — bisher blieb die Zuweisung dauerhaft in der Datenbank stehen. An der Rechte-Wirkung ändert sich nichts, abgelaufen war abgelaufen.
  • Obergrenze für Massen-Aktionen (#189) — höchstens 500 Einsätze pro Aktion, geprüft vor der beim Löschen destruktiven Verarbeitung.
  • Ausgehende Verbindungen gehärtet (#189) — Geocoding und Telegram-Versand folgen Weiterleitungen nur noch zu HTTPS-Zielen. Das Telegram-Protokoll speichert nicht mehr die vollständige API-Antwort, sondern nur Erfolg und Nachrichten-ID.

Behoben

  • Der Gesamt-Reset räumt jetzt auch das Alarm-Dedup-Log ab (#193) — es merkt sich, welche Alarm-Regel für welchen Einsatz schon ausgelöst hat. Weil der Reset die Nummern auf 1 zurücksetzt, konnten diese Waisen-Einträge danach Alarm-Auslösungen für neue Einsätze unterdrücken.
  • CLI-Migration macht jetzt den Voll-Repair wie der Schema-Check (#190)php scripts/migrate.php legte bisher nur fehlende Tabellen an; eine frisch per CLI aufgesetzte Installation startete mit veraltetem Schema.
  • Einsatz-Status-Farben: Live-Vorschau mit korrekter Textfarbe (#192).
  • Karten-Chips TIM/DZ/HYD leichter zu treffen (#187) — mindestens 28 px, auf Touch-Geräten 44 px.

4.0.0 — 2026-07-06

Einsätze löschen, Stichwort-Katalog, Alarm-Rollen, Schwerpunkt-Abschluss und die Kontext-Hilfe.

Neu

  • Einsätze endgültig löschen — einzeln über das Papierkorb-Symbol oder mehrere über die Bulk-Auswahl. Jede Löschung verlangt eine Begründung, die ins Anwendungsprotokoll geht; der Einsatz wird samt Abschnitten, Einsatzmitteln, Kommentaren, Anhängen und Audit-Spuren hart entfernt und lässt sich nicht wiederherstellen. Recht einsatz.delete, ab Werk bei Administrator, Einsatzleiter und Lage.
  • Stichwort-Katalog — eine Admin-Seite zum Pflegen der Einsatzstichworte, mit Kategorie, vollem Stichwort, Anzeige-Variante, Aliasen und CSV-Import. Ausblend-Präfixe leiten die Anzeige-Variante aus dem vollen Stichwort ab.
  • Stichwort-Auswahl im Einsatz-Formular — zwei verkettete Auswahlfelder (Kategorie, dann Stichwort); Freitext bleibt über die Kategorie „— Freitext —" möglich. Eine übergebene Katalog-ID wird serverseitig gegen den Katalog geprüft.
  • Alarm-Regeln auch bei manuellen Einsätzen — trifft das Stichwort eine aktive Regel, erscheint ein Bestätigungs-Banner mit Vorschau, wie viele Folge-Einsätze sie anlegen würde. Telegram ist hier nicht vorbelegt, damit eine Nachdokumentation nicht versehentlich den Alarm-Chat benachrichtigt. Eine Regel feuert pro Einsatz nur einmal.
  • Alarm-Knopf — Einsatz-Rolle übernehmen (#163) — je Alarm-Regel konfigurierbar (Rolle Lage oder Einsatzleiter, Laufzeit 6–48 h). Löst die Regel aus, entsteht ein einmaliges Rollen-Angebot; ein Disponent ohne aktive Einsatz-Rolle übernimmt es per Dialog, es wirkt sofort ohne Neuanmeldung. Genau ein Gewinner. Lage, Einsatzleiter und Administrator können das Angebot stattdessen entschärfen. Gast und SP-Dispo sehen den Knopf nie.
  • Schwerpunkt-Abschluss (#170) — der Lebenszyklus zieht mit dem Einsatz gleich: Erledigt (früher „Geschlossen") und Abgeschlossen (früher „Archiviert"). Ein Schwerpunkt lässt sich erledigen, sobald alle Einsätze mindestens erledigt sind. Sammel-Abschluss in der Übersicht; Reaktivierung nur durch den Administrator. Ein Ort kann nur einem offenen Schwerpunkt zugeordnet sein.
  • Blockierende Abschnitte direkt erledigen (#162) — überall dort, wo die Abschnitts-Sperre einen Einsatz am Erledigen hindert, lassen sich die betroffenen Abschnitte an Ort und Stelle erledigen; danach läuft der Statuswechsel automatisch weiter.
  • Arbeitsplatz „Einsätze abschließen" — ein Fenster mit allen erledigten Einsätzen, einzeln oder gesammelt abschließbar. Einsätze mit offenen Abschnitten sind gesperrt und werden bei „Alle abschließen" übersprungen.
  • Kontext-Hilfe-Schublade + seiten-genaues Handbuch — ein „?"-Knopf in der Aktions-Leiste öffnet rechts eine Schublade mit der genau zu dieser Seite passenden Erklärung. Dieselbe Quelle wie das Handbuch. Breite anpassbar, bleibt über Seitenwechsel offen. Auf schmalen Bildschirmen und in der installierten App bewusst ausgeblendet.
  • Öffentliches Handbuch ohne Login (/handbuch.php) — das komplette Handbuch ist auch ohne Anmeldung lesbar, verlinkt von der Anmelde-Seite. Es liest dieselben Texte wie die In-App-Hilfe; der Inhalt wird nur einmal gepflegt.
  • Digitaler Zwilling NRW als Karten-Link (#175) — ein grüner „DZ"-Link zum landesweiten 3D-Geo-Kartensystem, in Einsatz-Detail und Telegram-Nachricht. Die UTM-Koordinaten berechnet das ETB automatisch. Feuerwehren außerhalb von NRW schalten das Feature aus.
  • Einsatz-Status-Farben admin-konfigurierbar (#164) — je Status eine Farbe, wirksam in Pillen, Zeilenbalken, Kacheln, Lagekarten-Markern und Filtern. Die Textfarbe wählt das ETB automatisch kontraststark (WCAG AA).
  • Stärke-Eingabe über drei Felder ZVF / GF / Ma (#168) — die Gesamtstärke wird automatisch berechnet; gespeichert wird weiterhin das Schema A/B/C/S.
  • Überörtliches Einsatzmittel direkt im Schwerpunkt-Wizard anlegen (#172) — ohne Umweg über die Stammdaten-Pflege. Verlangt zusätzlich em.uoert_create.
  • Adress-Suffix je Ort (#174) — ersetzt beim Geocodieren das Standard-Suffix, gedacht für Orte außerhalb der eigenen Gemeinde.
  • Mitscrollende EM-Übersicht und fixe Filterleiste (#166), Lagekarte: EM-Panel im Tablet-Hochformat als Vollbild (#179), Wizard-EM-Pool per Tastatur bedienbar (#180), Direkt-Zugriff auf den Geocode-Cache (#171).

Geändert

  • Ort ist Pflicht-Auswahl aus der Orts-Verwaltung (#173) statt Freitext.
  • Neue Abschluss-Semantik — „in Arbeit" blockiert, „geplant" nicht mehr.
  • Durchgängige Icons statt Emoji in Sidebar, Listen und Dialogen; eine zentrale Icon-Bibliothek.
  • Farbige Status-Kachel und Ansicht „Komfort | Kompakt" in der Einsatz-Liste; Abschnitte lassen sich direkt in der Liste aufklappen.
  • Einsatz-Rollen als Modal auf der Einsatz-Übersicht.
  • Sechs editierbare Telegram-Templates.
  • Entmandantisierung — die mandantenspezifische Kennung ist entfallen.
  • Rollen-, Einsatz-Rollen- und Aktiv-Status-Änderungen wirken jetzt sofort statt erst nach einer Neuanmeldung.
  • Branding vereinfacht: „Eigenes Theme" entfernt.
  • Mail-Parser behält das Stichwort-Präfix und gleicht gegen den Katalog ab.

Barrierefreiheit

Dialoge fangen den Tastatur-Fokus ein (#124), größere Touch-Ziele, sichtbarer Wartezustand der Status-Auswahl, Schwerpunkt-Übersicht auf schmalen Bildschirmen (#116), einheitliche Begriffe und Aktions-Verben (#119), Einsatzmittel komplett per Tastatur zuweisbar, EM-Status nicht mehr nur über Farbe (WCAG 1.4.1), vereinheitlichte Fokus-Ringe und mehrere Dark-Mode-Kontraste.

Sicherheit

  • Die Lagekarte respektiert den Disponenten-Scope.
  • Ein abgeschlossener Einsatz ist auch serverseitig komplett eingefroren.
  • CSRF-Schutz für die JSON-API (Header-Token).
  • Schwerpunkt schließen/archivieren nur noch für Lage, EL und Admin.
  • Link-Icon-URLs auf http(s):// beschränkt (#177).
  • Änderungen am Stichwort-Katalog werden mit auslösendem Benutzer protokolliert.

Behoben

  • Die Geocodierung beim Bearbeiten folgt der Adressänderung.
  • Ein Abschnitt eines abgeschlossenen Einsatzes lässt sich nicht mehr ändern.
  • Einsatzmittel in den Schwerpunkt-Pool hinzufügen ist jetzt atomar.
  • Lesbare Textfarbe auf frei gewählten Status- und Wichtigkeit-Farben.
  • Der Lagekarten-Filter „Nur offene" blendet jetzt auch erledigte Einsätze aus.
  • SMTP („Passwort vergessen") jetzt im Setup-Wizard und unter Einstellungen.
  • Dazu: Einsatzkräfte-Summen, Schwerpunkt-Personalstärke live, Theme-Leak der Detail-Mini-Karte, „Auch SP-Einsätze anzeigen" bleibt beim Filtern erhalten.

Update-Hinweis

Schema-Check nötig — mehrere neue Tabellen und Spalten: stichwort_katalog, alarm_einsatz_trigger, alarm_role_offer, die UTM-Spalten einsaetze.utm_ost/utm_nord samt einmaligem Backfill, einsaetze.stichwort_katalog_id, em_stammdaten.default_anzahl/ default_kontakt, das Adress-Suffix je Ort sowie die Umbenennung der Schwerpunkt-Status-Labels (selbst angepasste bleiben unberührt).


3.0.1 — 2026-06-15

Neu

  • Neues Recht „Als Disponent arbeiten" (dispo.act_as) — trennt, wer als Disponent zugewiesen werden darf, von der Rolle selbst.

Geändert

  • Administratoren erscheinen jetzt ebenfalls in den Disponenten-Auswahlen.
  • EM-Seitenleiste aktualisiert sich live bei einer Status-Änderung.
  • SP-Pool-Einsatzmittel bleiben in der ETB-Übersicht ausgeblendet.
  • Einsatznummer einheitlich im Format #007 in Marker und Tooltip.
  • Disponent-Anzeige einheitlich „Name (Rolle)".

Behoben

  • Neutrale Links, Buttons und Kacheln bleiben nach dem Klick neutral (die globale Besucht-Farbe hatte sie eingefärbt).
  • Die EM-Seitenleiste zeigte die Leitstellen- statt der laufenden Nummer.
  • Frisch alarmierte Einsatzmittel werden als „im Einsatz" angezeigt.
  • Ein zugewiesener, aber nicht mehr berechtigter Disponent verschwand aus der Anzeige.
  • Dark-Mode: zwei hell leuchtende Pillen abgedunkelt, Setup-Wizard und Geocode-Filter lesbar gemacht.

3.0.0 — 2026-06-14

Erscheinungsbild, mobile Bedienung und Passwort-Selbsthilfe.

Neu

  • Passwort vergessen — Selbsthilfe per E-Mail statt Anruf beim Administrator.
  • Als App installierbar (PWA) — das ETB bringt ein Web-App-Manifest mit und lässt sich auf den Startbildschirm legen.
  • Mobile Bedienung — auf schmalen Bildschirmen ein Off-Canvas-Menü.
  • Eigenes Erscheinungsbild (Theme) pro Organisation.
  • Menü-Logo für die Seitenleiste; Logo, Menü-Logo und Favicon sind wieder entfernbar (#88).
  • PDF-Export mit Einsatzmittel-Übersicht samt Stärke und Kontakt (#32).
  • Versionsanzeige in der Seitenleiste.

Geändert

  • Ein Passwort-Reset beendet alle bestehenden Sitzungen des Kontos.
  • Schwerpunkt-Stärke getrennt nach „im Einsatz" und „Reserve".
  • Einsatzmittel-Stärke im Schema A/B/C/S — die Gesamtzahl rechnet das ETB.
  • Hauptmenü in Gruppen gegliedert; Setup-Wizard mit Schritt-Navigation links statt oben.
  • Lagekarte: Modus „Taktisch" entfernt.

Behoben

  • PDF-Export immer im Hellmodus — vorher konnte ein dunkles Thema in den Druck durchschlagen.
  • Einsatzmittel per Touch zuweisen (Handy/Tablet) — vorher nur per Maus.
  • Bild-Anhänge: Galerie-Navigation in der Großansicht.
  • PDF-Export: große und viele Kommentarbilder werden sauber dargestellt.
  • Doppelte Einsätze durch Doppelklick verhindert (#81).
  • Einsatzmittel aus der Liste entfernen fragt jetzt nach (#71).
  • Einsatzmittel aus abgeschlossenen Einsätzen lassen sich wieder lösen.
  • Hinweis beim Anlegen, wenn noch keine Orte angelegt sind (#59).
  • Die Erstinstallation steckte nach dem Tabellen-Schritt fest; die Orte-Verwaltung war auf Neuinstallationen defekt.
  • Dazu: echte Umlaute in Katalog- und Hinweistexten (#69), mehrere Dark-Mode-Korrekturen, Einsatzmittel-Stärke direkt nach dem Zuweisen.

Sicherheit

  • CSRF-Schutz für alle Admin- und Bearbeiten-Formulare, ebenso für den Setup-Wizard (#62).
  • Login-Brute-Force-Bremse (#50) — nach fünf Fehlversuchen greift eine Sperre.
  • Keine internen Fehlertexte mehr im Browser (#51).
  • Scope-Lücken geschlossen (Befunde eines Security-Sweeps): Die Lagekarten-Schnittstelle verlangt jetzt das Kartenrecht, die Geocode-Verwaltung steht hinter admin.access, die Hydranten-Daten respektieren die Berechtigung auch im Endpoint.
  • Kommentar-Moderation an den eigenen Bereich gebunden.
  • Die Eignung eines Schwerpunkt-Disponenten wird serverseitig geprüft.
  • Kontaktdaten der Einsatzmittel-Vorbelegung sind scope-begrenzt.

Update-Hinweis

Schema-Check nötig — neue Tabelle pw_reset (für „Passwort vergessen") und neue Spalte users.password_changed_at. Ohne den Lauf erscheint der Schema-Hinweis-Banner.


2.4.0 — 2026-05-29

Schwerpunkt-Dispo-Kopplung, Folge-Abschnitte, Übersichtlichkeit.

Neu

  • SP-Dispo-Kopplung — solange ein Einsatz einem Schwerpunkt angehört, folgt sein Disponent (und der seiner Abschnitte) automatisch dem Schwerpunkt-Disponenten; das Feld ist dann gesperrt. Herauslösen per Dialog mit Wahl eines übernehmenden Disponenten.
  • Alarm-Regeln: Folge-Abschnitte — eine Regel legt beim Greifen entweder Folge-Einsätze oder Folge-Abschnitte an.
  • Alarm-Regeln: Auto-Reset-Stopp pro Regel statt fest verdrahtet. Mehrere Regeln mit ähnlichem Trigger feuern jetzt alle.
  • Standard-Werte in der Administration (★) für Wichtigkeit und Abschnitts-Status; neuer Abschnitts-Status „geplant" als Voreinstellung.
  • Personalstärke-Anzeige je Einsatz und als Gesamt-Einsatzstärke in der Titelzeile (dedupliziert je Einsatzmittel, ohne abgeschlossene Einsätze).
  • Einsatzmittel nach Gruppen in Übersicht und Lagekarten-Panel.
  • Lagekarte: Filter-Leiste ein- und ausblendbar — zusammen mit eingeklapptem Menü eine große Beamer-Ansicht.
  • Geocode-Cache-Verwaltung als eigene Admin-Seite; der Cache bleibt beim Reset erhalten.

Geändert

  • Personalstärke-Format überall korrigiert auf „Zug- und Verbandführer / Gruppenführer / Mannschaft / Gesamt".
  • Abschnitts-Disponent ist optional („– nicht zugewiesen –").
  • Überörtliche Einsatzmittel werden durchgängig per App-Dialog angelegt (kein Browser-Prompt mehr).

Behoben

  • Horizontaler Verschiebebalken auf Lagekarte, Einsatzmitteln und Hilfe.
  • Der Sammel-Wechsel des Disponenten überspringt schwerpunktgebundene Einsätze sauber, statt einen Fehler zu werfen.

Update-Hinweis

Schema-Check nötig — neue Tabelle für Folge-Abschnitte, neue Spalten an den Alarm-Regeln, Abschnitts-Status „geplant" und die Standard-Werte. Optional einmalig php scripts/migrate-sp-dispo-kopplung.php, um Bestands-Einsätze an den SP-Dispo zu koppeln.


2.3.0 — 2026-05-28

Dunkler Modus und einklappbare Navigation.

Neu

  • Dunkler Modus app-weit über den Knopf neben „Abmelden". Startet nach der Systemeinstellung, danach gemerkt.
  • Einklappbare Seitenleiste — reduziert die Navigation auf Symbole.
  • Karten-Hell/Dunkel-Umschalter für Lagekarte, Hydrantenplan und Einsatz-Detailkarte, unabhängig vom App-Thema.
  • Einklappbare Filterleiste in der Einsatz-Übersicht.

Geändert

  • Admin — einheitliche Brotkrumen auf allen Seiten; die Kacheln sind in vier Kategorien neu sortiert (Feuerwehr, Konfiguration, Aktionen, Logs & Diagnose).
  • Die Einsatz-Bearbeitung respektiert jetzt den Schwerpunkt-Pool bei der Einsatzmittel-Auswahl.
  • Der Schwerpunkt-Kontext bleibt bei Reset-, Neuanlage- und Werkzeugleisten-Links erhalten.

2.2.0 — 2026-05-27

Alarm-Regeln und ein reparierbares Schema.

Neu

  • Alarm-Regeln — ein Multi-Alarm-Regelwerk: pro Regel ein Trigger-Stichwort (z. B. UW-ERSTALARM) und beliebig viele Folge-Einsatz-Vorlagen. Eine Trigger-Mail erzeugt den Haupteinsatz plus alle konfigurierten Folge-Einsätze. Bei aktiver Regel wird der morgendliche ETB-Reset ausgesetzt, damit die Großlage nicht weggespült wird.
  • Wichtigkeit „Bereitstellung" als neue Stufe für Vorhalte-Einsätze.
  • Unwettermail mit mehreren Einsatz-Blöcken erzeugt jetzt n eigenständige Einsätze statt nur einen mit den Werten des letzten Blocks.
  • Schema-Check erweitert — er erkennt jetzt auch veraltete Spalten und fehlende Vorgabewerte und repariert beides per Knopfdruck.

Behoben

  • Die Schwerpunkt-Dispo-Rolle ließ sich nicht speichern — Ursache war eine veraltete Spaltendefinition aus einer alten Migration, die den neuen Rollenwert nicht kannte. Der Schema-Check zieht sie jetzt automatisch nach.
  • Ein Schwerpunkt-Dispo sah auf der Hauptkarte alle aktiven Schwerpunkt-Marker, nicht nur seine eigenen.
  • System-Kommentare waren nur in der Oberfläche geschützt — ein direkter Aufruf hätte sie ändern können. Der Schutz sitzt jetzt im Dienst.
  • Hilfe-Links führten ins Leere (falsches Linkformat im Markdown-Renderer).
  • Mehrere Unwetter-Blöcke mit gleichem Stichwort und gleicher Uhrzeit wurden zu einem Einsatz zusammengefasst — der Schlüssel dafür war nicht eindeutig genug.

Update-Hinweis

  1. Schema-Check → „Reparieren" — legt die Alarm-Regel-Tabellen, Indizes, Spalten-Migrationen und Vorgabewerte in einem Rutsch an.
  2. Falls Schwerpunkt-Dispo-Konten durch die alte Spaltensperre eine leere Rolle haben: einmal bearbeiten und die Rolle neu setzen.
  3. Auf der Alarm-Regel-Seite prüfen, dass die Standardregel da ist. Die Löschgruppen-Felder der Folge-Einsätze bleiben absichtlich leer.

2.1.0 — 2026-05-26

Ein Handbuch — in der App und im Wiki, aus derselben Quelle.

Das ETB hatte bisher keine zusammenhängende Bedienungsanleitung. Diese Version liefert 20 Kapitel (rund 50 Seiten), zugänglich über den Menü-Eintrag Hilfe und zusätzlich im Wiki.

  • In-App-Hilfe mit Themen-Spalte und Vorheriges/Nächstes-Navigation.
  • Branding-Platzhalter in den Texten (Name der Wehr, Kurzform, Adresse) — White-Label-tauglich.
  • Wiki-Sync über ein Skript, das die Markdown-Dateien spiegelt und die internen Links ins Wiki-Format überträgt.

Komplett additiv — kein Schema-Update nötig.


2.0.0 — 2026-05-26

Administrierbare Berechtigungen.

Die Rechte sind nicht mehr im Code festgelegt, sondern werden über eine Häkchen-Matrix pro Rolle gepflegt. Die sechs Rollen bleiben fest, ihre Rechte sind unter Administration → Rollen konfigurierbar.

Neu

  • 36 einzelne Rechte in sieben Gruppen statt fester Rollen-Abfragen.
  • Rollen-Editor als Häkchen-Matrix mit „Auf Standard zurücksetzen" und einem Audit-Eintrag je Änderung.
  • Dreifacher Failsafe:
    • Der Administrator bekommt intern immer true — das verhindert Selbst-Aussperren auch bei kaputter Datenbank.
    • Gesperrte Rechte (z. B. die Schwerpunkt-Sicht für den SP-Dispo) lassen sich weder über die Oberfläche noch über die Schnittstelle abwählen.
    • Rollenspezifische Rechte werden anderen Rollen gar nicht erst angeboten.
  • Schema-Check als neue Seite: zeigt fehlende Tabellen und Indizes und legt sie auf Knopfdruck an; ein Banner in der Seitenleiste warnt bei inkonsistentem Stand.
  • Dialog-Bibliothek — ersetzt rund 40 native Browser-Dialoge durch einheitliche Fenster mit ESC-Behandlung und Bestätigungs-Stufen.
  • Schwerpunkt-Historie als eigene Seite mit Stammdaten, EM-Pool, Einsatzliste und chronologischem Audit; PDF-Export mit Deckblatt.

Geändert

  • System-Kommentare sind revisionsfest — das Editieren ist in allen drei Kommentar-Diensten blockiert, auch für Administratoren.
  • Ein Einsatzmittel, das mehreren Einsätzen eines Schwerpunkts zugewiesen ist, zählt in der Personalsumme nur einmal — vorher wurde es je Zuweisung mehrfach addiert.
  • Die Lagekarte zeigt die Einsatznummer immer über allen Markern; vorher konnten Symbole sie überdecken.
  • Wärmere Farbskala der Dichtekarte — die bisherige war auf Wald- und Wasserflächen praktisch unsichtbar.

Scope-Filter bleiben Code-Logik. Der Eigentums-Filter des Disponenten und der Schwerpunkt-Scope sind bewusst nicht über Häkchen konfigurierbar: Kein Häkchen kann die Beschränkung des SP-Dispo aufheben.

Update-Hinweis

Die neuen Tabellen legt der erste Aufruf einer Admin-Seite automatisch an; notfalls über den Schema-Check. Die Vorbelegung entspricht dem bisherigen Verhalten — nach dem Update ändert sich nichts, bis jemand etwas umstellt.


1.5.0 — 2026-05-25

Schwerpunkte — eine Ebene über den Einsätzen.

Neue Strukturebene für die Koordination von Großlagen (Unwetter, Flächenbrand, Großübung): Ein Schwerpunkt bündelt mehrere Einsätze unter einem eigenen Disponenten, mit eigenem Einsatzmittel-Pool, eigener Lagekarte und einem eigenen Schwerpunkttagebuch-Modus.

Neu

  • Schwerpunkt-Wizard in vier Schritten: Stammdaten und Disponent, Modus-Auswahl (nach Orten oder nach konkreten Einsätzen), Einsatz-Auswahl mit Konflikt-Markierung, Einsatzmittel-Pool.
  • Schwerpunkt-Übersicht mit Status-Filter und eine Schwerpunkt-Tabelle im Haupt-ETB mit dreistufiger Aufklappung: Schwerpunkt → Einsatz → Abschnitt.
  • Schwerpunkttagebuch-Modus — alle Unterseiten filtern auf den Schwerpunkt, die Seitenleiste wechselt in den SP-Modus mit Banner und „← Zurück zum ETB".
  • Einsatzmittel-Pool je Schwerpunkt. Ein EM aus dem Pool zu entfernen kaskadiert in alle Einsätze und Abschnitte des Schwerpunkts und schreibt einen System-Kommentar in jeden betroffenen Einsatz.
  • Automatische Einsatz-Zuweisung anhand des Orts — auch für Einsätze aus dem Mail-Parser.
  • Status-Lebenszyklus aktiv → pausiert (Auto-Zuweisung aus) → geschlossen (gesperrt, solange offene Einsätze enthalten sind) → archiviert.
  • Neue Rolle Schwerpunkt-Disponent — sieht und bearbeitet nur Einsätze und Abschnitte aus „seinen" Schwerpunkten.
  • Lagekarte im SP-Modus — Schwerpunkt-Einsätze als Dichtekarte statt als viele Einzelmarker, mit Umschalter und automatischem Zuschnitt.
  • PDF-Export je Schwerpunkt, Sammel-Zuweisung aus der Übersicht und Drag & Drop von Einsatzmitteln auf einen Schwerpunkt.

Behoben

  • Anhänge von Abschnitts-Kommentaren ließen sich nicht herunterladen — der Endpunkt kannte die Abschnitts-Variante nicht und suchte immer in der Einsatz-Tabelle. Der Download schlug still fehl.
  • Mehrere Sperren griffen nur für den normalen Disponenten, nicht für den Schwerpunkt-Disponenten — Status-Sperre im Sammel-Editor und Erledigt-Sperre an Abschnitten.
  • Sieben Disponenten-Auswahlen blendeten den Schwerpunkt-Disponenten aus und konnten ihm nichts zuweisen.

Sicherheit

  • Session-Cookie auf SameSite=Lax als CSRF-Schutz für die JSON-Schnittstellen. Cross-Site-POSTs blockiert der Browser; Links aus Telegram funktionieren weiter.

Update-Hinweis

Die neuen Tabellen werden beim nächsten Aufruf automatisch angelegt. Bestehende Daten bleiben unverändert; das Feature ist additiv — wer keine Schwerpunkte anlegt, sieht das Verhalten wie zuvor.


1.0.0 — 2026-05-23

Erste produktiv eingesetzte Version des Einsatztagebuchs.

  • Einsatz-Verwaltung — Mail-Parser für eingehende Alarm-Mails, Detailseite mit Kommentaren, Anhängen und Audit-Historie, Status-Lebenszyklus, PDF-Export.
  • Abschnitte — größere Einsätze in operative Abschnitte unterteilen, jeder mit Leiter, Rufgruppe, Disponent und Status; Abschluss-Sperre auf Einsatz-Ebene.
  • Karten und Geo — Lagekarte, Hydrantenplan, Geocoding mit Zwischenspeicher.
  • Telegram-Alarmierung — Push in mehrere Chats, IuK-Sondernachricht, Antworten landen als Kommentar.
  • Fünf Rollen mit Eigentums-Filter für den Disponenten.
  • Setup-Wizard für die Erst-Konfiguration; Branding, Geocoding-Suffix und Karten-Mittelpunkt konfigurierbar.
  • Mehrere Instanzen in einer Datenbank über ein Tabellen-Präfix.