Release Notes
Versionierung folgt MAJOR.MINOR.PATCH — neue Funktionen heben die mittlere Stelle, Bugfixes die letzte.
- v1.44.1
Mitarbeiter-Unterschrift jetzt auch per Pad (Finger/Maus)
- Verträge mit Vertragsart „Signatur (Unterschrift)“ kriegen jetzt im Mitarbeiterbereich ein Unterschriftsfeld statt der OTP-Code-Eingabe: Finger oder Maus, malen, fertig. Kein E-Mail-Code mehr für diese Vertragsarten.
- Die gemalte Unterschrift landet als PNG am Signatur-Datensatz (DB-Spalte `padImage`). Im finalen PDF wird das Bild prominent ins Signatur-Panel gezeichnet — der „✓ ELEKTRONISCH SIGNIERT“-Header bleibt drüber, drunter Name + Datum + Audit-ID + Hash. Panels werden bei Pad-Unterschriften automatisch höher.
- Beweisrechtlich gleichwertig zur OTP-Variante (beides EES nach eIDAS Art. 3 Nr. 10). Audit-Track enthält den Hash des Vertragstexts, die laufende Mobile-Session, IP, User-Agent und die Signatur-Methode (PAD_SIGNATURE vs EMAIL_OTP).
- v1.44.0
Vertrags-Signatur: OTP/Signatur/Papier auswählbar, Arbeitgeber klickt direkt
- Die Vertragsarten-Verwaltung kennt jetzt drei klare Signatur-Methoden: „OTP (E-Mail-Code)“, „Signatur (Unterschrift)“ und „Papier (handschriftlich)“. Beim Hovern über eine der drei Optionen öffnet sich rechts ein kleines Fenster mit der juristischen Einordnung (eIDAS-Stufe, Beweisregel, Schriftform-Hinweise). Die alten Werte AES/QES sind aus der Auswahl raus — bestehende Datensätze sind auf „Papier“ migriert.
- Der Arbeitgeber muss seine Verträge nicht mehr per OTP-Code bestätigen: Klick auf „Digital ausstellen & ich unterschreibe“ gilt direkt als Unterschrift. Beweis-Anker bleiben Login-Identität, Body-Hash, IP, User-Agent und Audit-Eintrag. Auf der Mitarbeiterseite bleibt es bei OTP/Pad — dort ist der zweite Kanal als unabhängige Vertragspartner-Bestätigung sinnvoll.
- „Signatur (Unterschrift)“ ist als Vertragsart-Auswahl schon da; die Mitarbeiter-Pad-UI selbst kommt in einer der nächsten Versionen — bis dahin fällt der Flow für diese Art auf OTP zurück.
- Aufhebungsvertrag bleibt wie bisher auf „Papier“ (Schriftform-Pflicht § 623 BGB), alles andere ist standardmäßig „OTP“.
- v1.43.8
Mitarbeiter-Detailseite: Verträge-Reiter, klickbarer Avatar, Reihenfolge
- Neuer Tab „Mitarbeiterverträge“ auf der Mitarbeiter-Detailseite. Liefert die Liste aller Verträge dieses Mitarbeiters (Arbeitsvertrag, NDA, Einfühlungsvereinbarung, …) mit Vertragsart, Vorlage, Beginn/Ende, Status und Direkt-Link zur Detailseite. Oben rechts der „+ Neuer Vertrag“-Knopf.
- Das Profilbild ist jetzt nur noch einmal sichtbar — oben im Identity-Header. Klick darauf öffnet direkt den Datei-Dialog; das zweite Vorkommen aus der „Einstellungen“-Karte ist entfernt.
- Reihenfolge im Profil-Tab umgedreht: „Einstellungen“ steht jetzt oben, darunter die drei Zugangs-Cards (PIN, Mobile-Zugang, Stationsleitung), dann die Gefahrenzone.
- v1.43.7
Mitarbeiter-Profil-Seite kompakter und auf einen Blick erfassbar
- Die Profil-Detailseite eines Mitarbeiters hatte sich über viele Iterationen in sechs untereinander gestapelte Erklär-Karten verwandelt. Stark verkürzt und neu strukturiert: ein Identity-Header oben (Avatar groß, Name, Hauptstation·Cluster·Brand, Status-Pills für aktiv/Mobile-Zugang/Stationsleitung/Minijob), darunter drei kompakte Zugangs-Cards nebeneinander (PIN, Mobile-Zugang, Stationsleitung), darunter „Einstellungen“ (Profilbild + Form in einer Karte). Gefahrenzone als zugeklappte ein-Zeilen-Box.
- Die langen Erklär-Texte unter jedem Card-Titel sind weg — der Card-Titel + die Status-Pills im Header sagen schon, worum es geht.
- Container ist breiter (max-w-5xl statt max-w-3xl), damit die drei Zugangs-Cards nebeneinander Platz haben. Auf Mobile stapeln sie sich automatisch.
- Der Minijob-Forecast-Banner wird nur noch dann groß ausgespielt, wenn er kritisch wird (≥ 85 % Auslastung). Sonst zeigt nur eine kleine Pill im Header den aktuellen Stand.
- v1.43.6
Vertrags-PDF: Vorlagen-Version raus aus dem Header
- Im PDF-Header von Mitarbeiterverträgen stand bisher rechts neben dem Stand-Datum noch „Vorlage v1“ / „v2“ etc. — interne Buchhaltungs-Info, die nichts in einem Vertrags-Dokument zu suchen hat. Entfernt. Im Header steht jetzt nur noch das Stand-Datum (bzw. „Unterzeichnet“-Datum bei finalisierten Verträgen).
- v1.43.5
Mitarbeiter-E-Mail aus Stammdaten — eine Quelle für alle Aktionen
- „Onboarding-Link senden“, „Mobile-Zugang einrichten“ und „Stationsleitung einrichten“ ziehen die E-Mail-Adresse jetzt einheitlich aus den Stammdaten (Tab „Stammdaten“, Feld „E-Mail (privat)“). Keine drei verschiedenen Email-Eingabefelder mehr in den jeweiligen Panels.
- Ist im Stammdaten-Feld noch keine E-Mail hinterlegt, öffnet sich beim Klick auf die Aktion ein Popup, das die Adresse abfragt — die wird sofort in den Stammdaten gespeichert und für die Aktion verwendet. Beim nächsten Mal greift sie direkt ohne Nachfrage.
- Mobile-Invite und Stationsleiter-Einrichtung synchronisieren die verwendete Adresse zurück in die Stammdaten, falls dort noch leer. Damit gilt: was im Stammdaten-Feld steht, ist die Wahrheit für alle Stellen.
- Die E-Mail-Adresse änderst du wie gewohnt im Tab „Stammdaten“ (mit Speichern-Button) — die Action-Panels zeigen sie read-only an.
- v1.43.4
Vertrags-Signatur-Code: Passwortmanager mischen sich nicht mehr ein
- Im Code-Eingabefeld der digitalen Vertragsunterschrift (Operator-Modal und Mitarbeiter-Mobile-Flow) blendete der Passwortmanager Login-Vorschläge ein. Über die üblichen Marker-Attribute (data-1p-ignore, data-lpignore, data-bwignore, data-form-type='other') halten wir 1Password, LastPass, Bitwarden und Browser-Manager jetzt ausdrücklich raus.
- v1.43.3
PDF zeigt erfasste Unterschrift, kein irreführendes Wasserzeichen mehr
- Wenn ein Vertrag im Status „Wartet auf Unterschriften“ steht und du das PDF öffnest, siehst du jetzt die schon erfasste Seite als grünes Unterschrift-Panel — mit Name, Datum/Uhrzeit und Audit-ID. Die andere Seite bleibt als „offen“ markiert. Beide Seiten können also genau erkennen, was schon passiert ist.
- Das „ENTWURF · NICHT UNTERSCHREIBEN“-Wasserzeichen erscheint dabei nicht mehr — bei „Wartet auf Unterschriften“ soll die jeweils andere Seite den Vertrag ja gerade unterschreiben, der „nicht-unterschreiben“-Hinweis war irreführend. Nur reine DRAFT-Verträge (vor der digitalen Ausstellung) bekommen weiter das Wasserzeichen.
- Die Verifikations-URL im Footer wird im Zwischenstand auch schon mitgedruckt — wer den PDF rumzeigt, kann sofort prüfen, was online steht.
- v1.43.2
PDF-Vorschau auch bei „Wartet auf Unterschriften“
- Solange ein digitaler Vertrag noch nicht beidseits unterzeichnet ist (Status „Wartet auf Unterschriften“), brachte „PDF öffnen“ in der Detail-Ansicht die Meldung „Vertrag wurde noch nicht final generiert.“ Behoben: in diesem Zwischenstand wird wie im DRAFT die Live-Vorschau mit Entwurf-Wasserzeichen ausgespielt, damit du den aktuellen Stand inspizieren kannst, ohne auf die zweite Unterschrift zu warten. Erst nach SIGNED kommt das endgültige PDF aus dem Storage.
- v1.43.1
Mitarbeiterverträge: finales PDF nach digitaler Unterschrift + Verifikations-Seite
- Sobald Arbeitgeber und Arbeitnehmer beide elektronisch unterschrieben haben, wird das finale Vertrags-PDF automatisch neu erzeugt — ohne „Entwurf“-Wasserzeichen und mit einem eingebetteten Unterschriften-Block: Name, Datum + Uhrzeit, Audit-ID und gekürzter Hash, pro Seite ein eigener grüner Panel. Das ist das Stück, das du an die Personalakte und den Mitarbeiter ausgibst.
- Neu im PDF (unter den Signaturen): die Echtheits-URL zum Vertrag. Die Adresse ist energydesk.online/v/<Vertrags-ID>; wer den PDF in der Hand hält, kann den Link öffnen und sieht die Plattform-Bestätigung mit allen Eckdaten.
- Verifikations-Seite ist öffentlich (kein Login). Sie zeigt Vertragsart, Vertrags-ID, beide Unterschrifts-Zeitpunkte mit Namen und den vollständigen Body-Hash. Wer das PDF prüfen will, kann den SHA-256 aus seinem PDF einfügen — wir vergleichen direkt im Browser und melden ✓ Match oder ✗ Abweichung.
- Bestehende ISSUED- und manuell-mark-as-signed-Verträge bleiben wie bisher — der neue Mechanismus greift nur bei digitalen EES-Signaturen.
- v1.43.0
Digitale Vertrags-Unterschrift (EES) im Mitarbeiterbereich
- Mitarbeiterverträge können jetzt komplett digital abgeschlossen werden — ohne Drucker, ohne Briefumschlag. Pro Vertragsart legst du in „Vertragsarten“ fest, ob digital (Einfache Elektronische Signatur) oder weiter klassisch auf Papier unterschrieben wird. Plattform-Standards: Arbeitsvertrag, NDA, Einfühlungs- und Änderungsvertrag = EES. Aufhebungsvertrag = nur Papier (Schriftform-Pflicht § 623 BGB).
- Operator-Flow: bei einem EES-Entwurf klickst du „Digital ausstellen & ich unterschreibe“. Du bekommst einen 6-stelligen Code per E-Mail an deine Login-Adresse, gibst ihn ein, fertig. Status springt auf „Wartet auf Unterschriften“, der Mitarbeiter sieht den Vertrag sofort im Mitarbeiterbereich (Verträge-Kachel mit Badge).
- Mitarbeiter-Flow: unter „Verträge“ im Mobile-Mitarbeiterbereich öffnet er das PDF, bestätigt das Gelesen-Haben, fordert seinen eigenen 6-stelligen Code an (Mail an seine Login-Adresse), tippt ihn ein. Beide Unterschriften erfasst → Status „Unterzeichnet“, Bestätigungs-Mails an beide mit Vertragstext-Hash als Beweismittel.
- Wer auf Arbeitgeberseite unterschreiben darf: der Operator-Owner immer, Stationsleiter mit der neuen Cluster-Permission „contract.sign“. Diese Permission setzt du wie gewohnt unter Cluster → Berechtigungen Stationsleiter.
- Die Unterschrift-Methode ist eine Einfache Elektronische Signatur (eIDAS Art. 3 Nr. 10). Das reicht für die meisten Standard-Arbeitsverträge und Vereinbarungen. Verträge mit Schriftform-Pflicht (z. B. Befristungen § 14 TzBfG, Aufhebung § 623 BGB) müssen weiter auf Papier laufen — wir markieren die in der Vertragsart-Verwaltung entsprechend.
- v1.42.2
Mitarbeiterverträge — Arbeitgeber-Anschrift aus Cluster-Impressum
- Im Parteien-Block oben im PDF erscheint jetzt automatisch die Anschrift des Arbeitgebers unter dem Firmennamen. Quelle: das Impressum-Stammblatt des Clusters, in dem der Mitarbeiter angestellt ist (Cluster-Detailseite → „Geschäftliche Stammdaten“).
- Außerdem stehen neue Platzhalter für eigene §-Texte zur Verfügung: [employer.companyName], [employer.legalForm], [employer.representatives], [employer.address.full], [employer.address.street], [employer.address.postalCode], [employer.address.city], [employer.commercialRegister], [employer.vatId]. Die alten [operator.companyName]-Platzhalter funktionieren weiter, sind aber als Legacy markiert.
- Wenn das Impressum eines Clusters noch leer ist, fällt der Firmenname auf den bisherigen Account-Wert zurück — die Anschriftszeilen bleiben dann ganz weg, statt mit Platzhaltern aufzutauchen.
- v1.42.1
Mitarbeiterverträge — Vertragsart steht jetzt auch im PDF
- Wenn du gestern bei der Vertragsart-Umstellung gemerkt hast, dass im erzeugten PDF (sowohl Entwurf-Vorschau als auch finales Dokument) trotzdem noch „Arbeitsvertrag“ als Überschrift stand: behoben. Headline, PDF-Titel (in den Datei-Metadaten) und der Datei-Name beim Download nutzen jetzt die Vertragsart aus dem Wizard.
- Eine Einfühlungsvereinbarung heißt im PDF jetzt also auch „Einfühlungsvereinbarung“, der Download-Name ist einfuehlungsvereinbarung-nachname-vorname.pdf statt arbeitsvertrag-…
- Eingangs-Satz im PDF („wird folgender Arbeitsvertrag geschlossen“) wurde auf „wird Folgendes vereinbart“ umformuliert — passt grammatisch zu maskulinen Verträgen genauso wie zu femininen Vereinbarungen.
- Bereits final ausgestellte Verträge (Status „Ausgestellt“) behalten ihre alte PDF — die ist per Design unveränderlich. Wenn du da die neue Überschrift willst: stornieren und neu anlegen.
- v1.42.0
Mitarbeiterverträge — mit Vertragsarten
- Der Bereich „Arbeitsverträge“ heißt ab sofort „Mitarbeiterverträge“ und kann jetzt auch andere Vertragstypen abbilden — Geheimhaltungsvereinbarungen, Einfühlungsvereinbarungen, Änderungs- und Aufhebungsverträge sind als Standard mit dabei.
- Neu unter „Vertragsarten“ pflegst du deinen eigenen Katalog: umbenennen, deaktivieren und beliebig neue Arten anlegen (z. B. Praktikumsvertrag, Werkstudent-Zusatz). Die fünf Plattform-Standards lassen sich umbenennen oder auf inaktiv setzen, aber nicht löschen — damit ältere Verträge stabil zugeordnet bleiben.
- Beim Anlegen einer Vorlage und beim Erstellen eines konkreten Vertrags wählst du zuerst die Vertragsart; die Vorlagen-Liste filtert sich entsprechend. Die Detail-Seite zeigt die Art im Titel, die Übersicht hat eine eigene Spalte dafür.
- Bestandsdaten: alle bisherigen Vorlagen und Verträge wurden automatisch der Vertragsart „Arbeitsvertrag“ zugeordnet — du musst nichts manuell nachpflegen.
- v1.41.0
Arbeitsvertrag: Entwurf nachträglich bearbeiten
- Auf der Vertrags-Detailseite gibt es im Aktionen-Block jetzt einen neuen Knopf „Bearbeiten“ — sichtbar, solange der Vertrag im Status Entwurf ist. Damit lassen sich Vertragsbeginn/-ende, Probezeit, Arbeitszeit, Vergütung, Tätigkeit und Arbeitsort nachträglich korrigieren, ohne den Entwurf löschen und neu anlegen zu müssen.
- Vorlage und Mitarbeiter bleiben gesperrt — wenn die getauscht werden müssen, weiterhin: Entwurf löschen und neuen Vertrag anlegen.
- Beim Speichern wird der Vertragstext-Snapshot automatisch neu aufgelöst (Platzhalter wie [contract.start], [employee.weeklyHours] usw. aktualisieren sich auf die neuen Werte). Das Vorschau-PDF zeigt nach dem Speichern direkt den aktualisierten Stand.
- Sobald „Final ausstellen → PDF“ geklickt wurde, ist der Vertrag wie bisher unveränderlich (Audit-/Beweis-Charakter).
- v1.40.4
Arbeitsvertrag: Stations-Adresse löst sich jetzt im PDF auf
- Der Platzhalter [station.address.full] in Arbeitsvertrags-Vorlagen blieb im finalen PDF als roher Text stehen, weil die Station-Adresse nicht aus den Stammdaten gezogen wurde. Folge: im Vertrag stand „[station.address.full]" statt z. B. „Musterstraße 1\n12345 Musterstadt".
- Fix: der Vertrags-Wizard merkt sich jetzt zusätzlich die ID der im Schritt „Tätigkeit & Arbeitsort" gewählten Station. Beim Generieren des PDFs wird die Anschrift aus den Stations-Stammdaten (Straße, PLZ, Stadt) als mehrzeilige Adresse aufgelöst. Fallback: wenn die Station noch keine Adresse hinterlegt hat, greift die Adresse aus den importierten Site-Stationsdaten.
- Wichtig: bereits final generierte Verträge (Status „Ausgestellt") behalten ihren bestehenden PDF-Inhalt (Vertrags-Immutabilität). Wenn du einen schon ausgestellten Vertrag mit der Adresse neu haben willst: Vertrag stornieren und neu anlegen.
- v1.40.3
Sekundärfarbe färbt jetzt wirklich alles Rote (Buttons, Hover, Akzente)
- 1.40.0 hatte die Sekundärfarbe nur im Header verwendet — der „Jetzt bewerben"-Button auf der Stellenliste, die roten Akzent-Striche unter den Überschriften, die Karten-Hover-Borders und die Initiativ-Bewerbung-CTAs blieben hartkodiert rot (#DC0000). Jede Farbänderung wirkte sich also nur partiell aus.
- Ab jetzt: Alles, was bisher #DC0000 oder #B80000 war, übernimmt die eingestellte Sekundärfarbe. Hover-Zustände bekommen automatisch eine ~18 % dunklere Variante. Wenn der Operator die Sekundärfarbe leer lässt, greift weiterhin das klassische Rot.
- Technisch: jede Site-Sub-Seite setzt CSS-Variablen (--site-secondary, --site-secondary-hover) auf ihrem äußersten Wrapper; alle Buttons/Links/Borders referenzieren diese — kein extra-Prop-Drilling in jede Komponente.
- v1.40.2
Fix: Auto-Save der Farben verlangt nicht mehr alle Pflichtfelder
- 1.40.1 hatte einen Bug: das Auto-Save schickte nur die geänderte Farbe an die Site-API, die aber alle Pflichtfelder (insb. siteEnabled) erwartete. Folge: "Ungültige Eingaben — siteEnabled: Required", die Farbe wurde NICHT gespeichert und die Public-Site rutschte beim nächsten Render auf den Default zurück.
- Fix: die Site-API akzeptiert jetzt partielle PATCH-Requests. Felder, die nicht im Body stehen, bleiben in der DB unverändert. Das gilt auch für siteEnabled und alle anderen Felder — keine Daten gehen mehr verloren, wenn du nur eine Farbe änderst.
- v1.40.1
Farbwähler: 2D-Picker und Auto-Save (ohne Speichern-Klick)
- Statt des einfachen Browser-Farbwählers haben die beiden Farb-Picker im Site-Editor jetzt eine vollwertige 2D-Auswahl: oben das Sättigungs-/Helligkeits-Quadrat, darunter der Hue-Slider — wie auf htmlcolorcodes.com.
- Jede Änderung wird automatisch gespeichert (ca. 0,4 s nach der letzten Bewegung). Ein kleiner Status („speichere …" / „✓ gespeichert") zeigt dir, dass es durch ist. Keinen Speichern-Knopf mehr für Farben.
- Hex-Eingabe, Palette und „↺ Standard" funktionieren wie vorher.
- v1.40.0
Site-Branding-Farben editierbar — Primär (Header/Footer) + Sekundär (CTA)
- Unter Site-Editor → Allgemein gibt es jetzt zwei Farb-Picker für die öffentliche Cluster-Site. Jeder Picker kombiniert eine 12-Farben-Palette, einen nativen Farbwähler und ein freies Hex-Eingabefeld. Klick auf „↺ Standard" verwirft den eigenen Wert und nutzt wieder die Default-Farben.
- Die Primärfarbe färbt den Header- und Footer-Hintergrund der Site. Die Sekundärfarbe färbt CTAs (z. B. den „Jetzt bewerben"-Button), Text-Links und Social-Icons. Default: Primär #FFCD00 (gelb), Sekundär #DC0000 (rot) — das, was bisher fest verdrahtet war.
- Backend-Validierung im API: nur gültige Hex-Codes (#RRGGBB). Bei leerem Wert greift jeweils der Default-Wert, du verlierst also nichts wenn du einmal Standard wählst.
- v1.39.0
Tagesabschluss löschen — wenn das PDF auf den falschen Tag gezogen wurde
- In der Detailansicht eines Tagesabschlusses (klick im Wochenraster oder in der „Unzugeordnete Abschlüsse"-Liste) gibt es jetzt oben rechts den Button „Tagesabschluss löschen". Klick + Bestätigung entfernt den Closing samt aller Zeilen, der zugehörigen PDF-Datei (S3) und des Document-Eintrags komplett aus der Datenbank.
- Anschließend kannst du das PDF erneut auf die korrekte Zelle ziehen — der Closing wird frisch erkannt. Audit-Eintrag closing.deleted hält fest, welcher Closing entfernt wurde (OBN, Geschäftstag, Abrechnungsnr.).
- Hart-Delete: keine Soft-Lösch-Spur in der DB. Wenn das PDF gerade noch von anderen Vorgängen referenziert wird (sollte nicht vorkommen — Closing-PDFs haben dedizierte Documents), wird der Vorgang per FK-Constraint abgebrochen statt halb-fertig zu enden.
- v1.38.0
Tagesabschluss-Analyse: Live-Status sichtbar, Seite refresht sich selbst
- Wenn ein hochgeladenes PDF gerade analysiert wird (Texterkennung + Closing-Detection laufen im Hintergrund), erscheint oben auf der Tagesabschluss-Seite eine info-blaue Card mit Spinner und Liste der Dateien („wird gerade analysiert …").
- Solange Analysen laufen, lädt sich die Seite alle 4 Sekunden automatisch neu — sobald das Resultat da ist, verschwindet die Card und der Closing erscheint im Wochenraster bzw. unter „Unzugeordnete Abschlüsse". Ohne laufende Analyse refresht die Seite entspannt alle 30 Sekunden.
- Heuristik für „läuft gerade": DocumentVersion wurde in den letzten 5 Minuten hochgeladen und hat noch keinen DailyClosing verlinkt.
- v1.37.0
Tagesabschluss-Match toleriert OBN-Schreibweisen wie 'OBN 1234'
- Beim Hochladen eines Tagesabschluss-PDFs wurde die Station bisher nur gematcht, wenn das OBN-Feld der Station EXAKT mit dem PDF-Wert übereinstimmte (reine Ziffern, mit Leading Zeros). War in der Station-Verwaltung z. B. „OBN 1234" oder „OBN 0000003596" eingetragen, blieb der Closing als „Station unbekannt" hängen.
- Ab sofort: Match vergleicht beide Seiten auf reiner Ziffern-Basis. Das alte „OBN 0000003596" matched mit dem PDF-Wert „0000003596". Beim Speichern der Station wird das Feld zudem automatisch auf Ziffern normalisiert — der UI-Text spielt nicht mehr rein.
- v1.36.0
Credentials aus der UI wirken jetzt wirklich (instrumentation hook)
- Werte, die der Plattform-Admin über /admin/credentials in die DB speichert, werden ab sofort beim App-Start automatisch in process.env gespiegelt — bevor irgendein S3-, Stripe-, SMTP- oder Webpush-Client initialisiert wird. Damit hat Speichern in der UI tatsächlich Effekt, ohne dass jemand per SSH die .env anfassen muss.
- Reihenfolge: DB-Eintrag schlägt env-Wert (passt zur Resolutions-Ordnung im UI). Container-Restart per Knopf in der UI reicht aus, um neue Werte aktiv zu schalten.
- Fehlt der Master-Key oder ist die DB nicht erreichbar, startet die App weiterhin normal mit den env-Werten — die UI bleibt in dem Fall „lesend wie bisher".
- v1.35.2
Credentials: Paar-Test schaltet Speichern für alle beteiligten Zeilen frei
- Nach 1.35.1 konnte ein S3-Test zwar mit zwei neuen Werten (Access + Secret) zusammen positiv durchlaufen — der Speichern-Button wurde aber nur bei der Zeile freigeschaltet, in der der Test ausgelöst wurde. Die zweite Zeile blieb verriegelt, obwohl ihr Wert ebenfalls verifiziert war.
- Fix: bei erfolgreichem Test werden alle Zeilen, deren ungespeicherter Wert zum Test beigetragen hat, gemeinsam als bestätigt markiert. Beide Save-Buttons schalten frei; bei der nicht-direkt-getesteten Zeile erscheint ein Hinweis „durch Paar-Test bestätigt“.
- v1.35.1
Credentials-Test berücksichtigt jetzt mehrere unsaved Werte gleichzeitig
- Paar-Credentials wie S3_ACCESS_KEY + S3_SECRET_KEY oder SMTP_USER + SMTP_PASSWORD konnten bisher nicht zusammen getestet werden, wenn beide gleichzeitig ausgetauscht wurden: der Test einer Seite lief immer noch mit dem alten (oft ungültigen) Wert der anderen Seite. Resultat: "Test fehlgeschlagen", obwohl beide neue Werte korrekt waren.
- Ab sofort sammelt der Credentials-Editor alle Werte, die du gerade in irgendeinem Feld eingetippt hast (aber noch nicht gespeichert), und schickt sie beim Test als zusätzliche Overrides mit. So testet z. B. der S3-Test mit deiner neuen ACCESS_KEY + SECRET_KEY in einem Rutsch — du musst weiterhin pro Zeile speichern, aber kannst sie endlich erst zusammen testen.
- v1.35.0
Credentials-Seite: Inline-Editor mit Test-vor-Speichern
- Plattform-Admin → Credentials (/admin/credentials): jede Zeile hat jetzt ein Eingabefeld direkt neben den Aktionen. Du tippst den neuen Wert ein, klickst „Test" — bei positivem Test wird der Speichern-Button freigeschaltet. Bei negativem Test bleibt Speichern verriegelt. Änderst du den Wert nach einem erfolgreichen Test nochmal, wird der Test wieder ungültig — Speichern verriegelt sich erneut.
- Kein Passwort-Re-Auth mehr für Anzeigen, Setzen, Override-Löschen oder Container-Restart. SuperAdmin-Session reicht. Jede Aktion landet weiterhin im Audit-Log; ein Reveal ist dort als `credential.reveal` sichtbar.
- Reveal-Endpoint wurde von POST auf GET umgestellt (passt zur „read-only“-Semantik). Test funktioniert wie bisher mit dem neuen Wert aus dem Feld (ohne ihn vorher in die DB zu schreiben).
- v1.34.0
Zeiterfassungs-Log für den Pächter
- Neue Seite unter Einstellungen → Zeiterfassungs-Log (/operator/admin/timesheet-log): chronologische, read-only Übersicht aller zeiterfassungs-relevanten Bewegungen — Ein-/Ausstempeln (Tablet + Mobile), Pausen, nachträgliche Stempel-Änderungen, Korrektur-Anträge, Schicht-Anlage/-Änderung/-Absage, Schichttausch, Open-Shift-Anfragen, AU-Uploads, Tages-Freigaben und Monats-Einfrierungen.
- Pro Eintrag werden Zeitpunkt, Akteur (Mitarbeiter, Stationsleiter, Pächter oder System), Aktion und betroffene Schicht/Mitarbeiter/Station angezeigt. Die Seite ist explizit read-only — Änderungen sind hier nicht möglich.
- Datenquelle ist das bestehende Audit-Log (append-only via DB-Trigger). Standard-Anzeige sind die letzten 500 Einträge; per URL-Parameter `?limit=2000` lassen sich mehr Einträge laden.
- v1.33.2
Stammdaten-Tab: Land als Dropdown, Email-Plausibilität sichtbar
- Im Mitarbeiter-Detail → Stammdaten-Tab ist das Land-Feld jetzt ein Dropdown mit allen Ländern; Deutschland steht oben in der Liste. Damit kein Tippfehler mehr beim PLZ-Autofill stört (der prüft auf exakt „Deutschland").
- Die private E-Mail-Adresse bekommt jetzt einen Plausibilitäts-Check direkt im Formular: rote Umrandung + Hinweis bei ungültigem Format (z. B. fehlendes @), grüne Markierung bei gültigem Format.
- Die IBAN-Plausibilitätsprüfung war bereits aktiv (Live-Check gegen IBAN-Modulo + Bank-Lookup) — wird unverändert übernommen. Bei Bedarf erscheint die rote Warnung erst nach kurzer Eingabe-Pause.
- v1.33.1
PLZ-Autofill: zwei weitere übersehene Formulare nachgezogen
- Mitarbeiter-Detail → Stammdaten-Tab (Operator-Backoffice): das Ort-Feld wird jetzt beim Verlassen des PLZ-Feldes automatisch gefüllt — gleiche Mechanik wie überall sonst. Außerdem wird, wenn das Land-Feld leer ist, „Deutschland" automatisch mitgeschrieben.
- Site-Editor → Station-Override (PLZ + Ort pro Station): identisches Verhalten, nur auf das Ort-Feld der Station-Public-Daten.
- v1.33.0
PLZ-Autofill und Email-Plausibilität in allen Formularen vereinheitlicht
- Stammdaten-Onboarding (Mitarbeiter-Formular per Token-Link): das Ort-Feld wird jetzt automatisch aus der PLZ ergänzt — gleiche Mechanik wie im Cluster-Impressum und Station-Anlegen-Formular. Funktioniert auch ohne vorher gesetztes Land (5-stellige deutsche PLZ).
- Der zugehörige Lookup-Endpoint ist anonym (/api/public/geo/postal-code), damit das Onboarding-Formular ohne Backoffice-Login funktioniert. Operator-internes Pendant /api/operator/geo/postal-code bleibt parallel bestehen.
- E-Mail-Plausibilität: das private-E-Mail-Feld im Stammdaten-Onboarding und die Kontakt-E-Mail im Site-Editor werden jetzt im Zod-Schema validiert (z. B. „blah" ohne @ wird abgelehnt). Vorher: keine Validierung bzw. nur Frontend-Regex.
- v1.32.3
PLZ→Ort-Autofill funktioniert jetzt auch ohne vorab gewähltes Land
- Bug-Fix im Cluster-Impressum: das automatische Ausfüllen des Ort-Feldes nach Eingabe der Postleitzahl funktionierte nur, wenn vorher das Land-Feld auf „Deutschland" gestellt war. Bei leerem Land-Feld passierte gar nichts — kein Hinweis, kein Lookup.
- Ab sofort: Eingabe einer 5-stelligen PLZ löst den OpenPLZ-Lookup auch dann aus, wenn das Land-Feld noch leer ist. Bei Treffer wird der Ort eingetragen UND das Land-Feld auf „Deutschland" gesetzt. Hat der Operator explizit ein anderes Land gewählt (z. B. „Österreich"), bleibt das Verhalten konservativ — kein Lookup.
- v1.32.2
Backoffice-Übersicht respektiert Stationsleiter-Permissions
- Bug-Fix: die Übersicht-Seite (/operator) hat einem Stationsleiter Mitarbeiter-Daten gezeigt, auch wenn der Pächter die Mitarbeiter-Berechtigung im Cluster-Override deaktiviert hatte. Konkret: die Headline „X Mitarbeiter" sowie Vor-/Nachnamen in der Live-Schicht-Liste pro Station tauchten weiterhin auf.
- Ab jetzt: Wenn ein Stationsleiter die Mitarbeiter-Berechtigung im jeweiligen Cluster nicht hat, wird der Mitarbeiter-Zähler aus der Headline entfernt und die Schicht-Liste zeigt „Mitarbeiter (anonymisiert)" statt der Namen. Außerdem werden Cluster, Stationen und Aufgaben auf die Cluster gefiltert, denen der Stationsleiter via StationManagerAssignment zugewiesen ist.
- v1.32.1
Bugfix: Stationsleiter konnten sich nach Mobile-Setup nicht einloggen
- Nach 1.26.0 (Stationsleiter teilen sich Backoffice- und Mobile-Passwort) lief das Mobile-Login bei verlinkten Stationsleitern in eine Endlosschleife: Anmeldung war erfolgreich, aber die anschließende Session-Validierung erwartete fälschlich noch ein Passwort auf dem Mitarbeiter-Datensatz (das seit 1.26.0 leer ist — der Hash liegt am verlinkten User-Datensatz). Folge: direkt zurück zum Login-Bildschirm.
- Fix in zwei Pfaden: Mobile-Session-Validierung (getCurrentMobileEmployee) akzeptiert jetzt den User-Hash als gültigen Anker; Belehrungs-Abschluss-Endpoint (verlangt Passwort als Unterschrift) ebenso.
- v1.32.0
Ausgehende Mails im Admin-Activity-Feed einsehbar
- Jede ausgehende Mail (Verifikations-, Reset-, Invite-, Stationsleiter-Setup-, etc.) wird ab sofort in der Datenbank protokolliert — egal ob über Console-Transport (Dev) oder SMTP. Der Plattform-Admin sieht unter /admin/activity eine neue Sektion „Ausgehende Mails" mit den letzten 50 Einträgen (Zeitpunkt, Empfänger, Betreff, Transport, Status).
- Klick auf eine Zeile klappt die Mail mit komplettem Body, From-Header, Message-ID und ggf. Fehlertext aus. Für Debugging im Dev-Setup heißt das: kein Log-Grep mehr nötig, der Reset-Link steht direkt im Backoffice.
- v1.31.0
Plattform-Admin: Passwort für beliebige User und Mitarbeiter direkt setzen
- Neue Seite Admin → User (/admin/users): Liste aller Backoffice-User mit Rolle, Verlinkung und Status. Per Klick auf „Passwort setzen" kann ein Plattform-Admin direkt ein neues Passwort vergeben — bestehende Sitzungen des Users (Backoffice + ggf. Pächter-Session) werden dabei abgemeldet.
- Auf der bestehenden Admin → Mitarbeiter-Seite gibt es jetzt pro Mitarbeiter-Zeile einen „PW setzen"-Button. Damit wird das Mobile-Login-Passwort gesetzt und der Mobile-Zugang automatisch aktiviert (mobileLoginEnabled=true). Stationsleiter (Employee mit User-Link) bekommen den Hash konsistent auf dem verlinkten User-Datensatz — ein Passwort für alle Login-Oberflächen.
- Pächter-Konten haben den Reset-Button wie bisher unter Admin → Betreiber.
- v1.30.0
Plattform-Admin: Mitarbeiter-Übersicht und Live-Activity-Feed
- Neue Seite Admin → Mitarbeiter (/admin/employees): Übersicht aller Mitarbeiter, gruppiert pro Pächter, mit Status (aktiv, mobile freigeschaltet, gerade angemeldet, gerade online). „Online" = Navigationsaktivität in den letzten 5 Minuten.
- Neue Seite Admin → Activity (/admin/activity): Live-Feed mit aktiven Sessions (User/Operator/Mobile-Mitarbeiter), letzten 200 Navigationen (wer ist gerade in welchem Bereich unterwegs — nur Pfade, keine Inhalte) und letzten 50 Audit-Events. Refresh automatisch alle 5 Sekunden.
- Beide Seiten sind ausschließlich für Plattform-Admins (SUPER_ADMIN) sichtbar.
- v1.29.0
Passwort im Backoffice selbst ändern
- Im Backoffice gibt es jetzt eine eigene Profil-Seite unter /operator/profile. Klick auf die Email-Adresse oben rechts neben „Abmelden" öffnet sie. Dort kann ein Passwort-Wechsel direkt durchgeführt werden: aktuelles Passwort + neues Passwort + Wiederholung.
- Nach erfolgreicher Änderung werden alle anderen aktiven Sitzungen (z. B. auf anderen Geräten oder im Mobile-Browser) automatisch abgemeldet — die aktuelle bleibt aktiv. Funktioniert für Pächter, Stationsleiter, Brand-Admins und Plattform-Admins gleichermaßen.
- Google-only-Konten (per „Mit Google anmelden" eingerichtet) sehen einen entsprechenden Hinweis statt des Formulars — sie melden sich weiterhin über Google an.
- v1.28.0
Aufräumen: alte Operator-Passwort-Spalte entfernt
- Datenbank-Aufräumarbeit, für Nutzer transparent: die alte Passwort-Spalte am Pächter-Konto wird endgültig entfernt. Seit 1.27.0 wird ohnehin nur noch das verlinkte Backoffice-User-Konto fürs Login benutzt — die doppelte Datenhaltung war reine Übergangs-Krücke.
- Google-Signup legt jetzt automatisch beide Datensätze (User + Operator) verlinkt an, samt UserSession parallel zur OperatorSession.
- Mitarbeiter-Passwörter (Mobile-App, reine Mitarbeiter ohne Backoffice-Zugang) bleiben in der Mitarbeiter-Tabelle. Wenn auch diese irgendwann auf das zentrale User-Modell migriert werden, kann die zweite Passwort-Spalte ebenfalls fallen.
- v1.27.0
Pächter-Konten auf zentrales Login-Modell umgestellt
- Pächter-Konten (Operator) sind ab dieser Version intern an einen Backoffice-User-Datensatz mit Rolle OPERATOR_OWNER gekoppelt. Login-Passwort, Email-Verifikation und Password-Reset laufen über dasselbe Konto-Modell wie Stationsleiter und Plattform-Admins — eine Email, ein Passwort, egal welche Rolle die Person außerdem hat.
- Bestehende Pächter behalten ihr Passwort 1:1 (die Backfill-Migration kopiert es auf den neuen User-Datensatz). Reines Verhalten: Anmelden unter dev.energydesk.online/login funktioniert wie vorher, intern landet die Session nur an einer anderen Stelle.
- "Passwort vergessen?" funktioniert jetzt auch für Pächter-Konten (vorher nur Stationsleiter/Admins). Der Plattform-Admin-Reset im Super-Admin-Bereich schreibt ebenfalls auf den User-Datensatz.
- Folge-Schritt: in einer der nächsten Versionen werden die alten Passwort-Spalten der Operator- und Mitarbeiter-Tabellen ganz entfernt; für Nutzer ändert sich dadurch nichts.
- v1.26.0
Ein Passwort für Backoffice und Mobile-App (Stationsleiter)
- Stationsleiter, die sowohl im Backoffice (dev.energydesk.online) als auch in der Mobile-App (ma.energydesk.online) eingeloggt sind, nutzen jetzt überall dasselbe Passwort. Bisher gab es technisch zwei getrennte Passwort-Felder — das Backoffice-Passwort und das Mobile-Passwort konnten unterschiedlich sein und unabhängig voneinander zurückgesetzt werden.
- Ab dieser Version gilt: ein Passwort-Reset (egal über welche Domain getriggert) ersetzt das Login-Passwort für beide Oberflächen. Bestehende abweichende Mobile-Passwörter werden im Hintergrund auf den Backoffice-Wert vereinheitlicht (User-Passwort gewinnt bei Konflikt).
- Reine Mitarbeiter (ohne Stationsleiter-Backoffice-Zugang) bleiben unverändert mit ihrem Mobile-Passwort.
- Folge-Phasen für später: Betreiber-Accounts auf dasselbe zentrale User-Modell migrieren, dann alte Passwort-Spalten entfernen.
- v1.25.0
Eine Email-Adresse = ein Mensch (eindeutige Konten)
- Eine Email-Adresse darf jetzt nicht mehr für mehrere verschiedene Konten genutzt werden. Bisher konnte z. B. dieselbe Email gleichzeitig in der Betreiber-, Backoffice-User- und Mitarbeiter-Tabelle auftauchen — das hat zu Verwechslungen beim Passwort-Reset geführt (Stationsleiter klickt „Passwort vergessen" in der Mitarbeiter-App, kriegt aber keine Mail, weil er dort kein Konto hat).
- Erlaubte Ausnahme: das bestehende Stationsleiter-Pattern. Ein Mitarbeiter, der gleichzeitig Stationsleiter ist, behält eine Email, die in beiden Tabellen vorkommt — über die Verlinkung Employee.userId klar als „derselbe Mensch" markiert.
- Beim Anlegen oder Aktualisieren von Konten zeigt das System bei Email-Kollision jetzt eine klare 409-Fehlermeldung („Diese Email ist bereits als Mitarbeiter/Backoffice/Betreiber-Konto vergeben") statt einer kryptischen DB-Fehlermeldung. Datenbank-Trigger fängt zusätzlich Race-Conditions und Direkt-Inserts ab.
- Smart-Reset: wer auf ma.energydesk.online/m/reset eine Backoffice-Email eingibt (oder umgekehrt), bekommt automatisch den richtigen Reset-Link für die Domain, auf der sein Konto tatsächlich liegt — kein stummes Verschlucken mehr.
- v1.24.0
Passwort vergessen für Stationsleiter, Brand- und Plattform-Admins
- Auf der Backoffice-Login-Seite (energydesk.online/login) gibt es jetzt einen "Passwort vergessen?"-Link. Stationsleiter, Brand-Admins und Plattform-Admins können sich darüber selbst einen Reset-Link an die hinterlegte E-Mail schicken lassen — vorher mussten sie den Operator bitten, die Stationsleiter-Einladung erneut zu senden.
- Ablauf: Email eingeben → Mail mit Link (60 Min gültig) bekommen → neues Passwort vergeben → wird direkt eingeloggt. Alle bestehenden Backoffice-Sessions dieses Users werden bei Erfolg revoked.
- Aus Datenschutzgründen zeigt die Bestätigungsseite immer dieselbe Meldung — egal ob die Email zu einem Konto gehört oder nicht (kein User-Enumeration).
- Für Mobile-Mitarbeiter bleibt der bestehende Reset-Flow unter ma.energydesk.online/reset unverändert.
- v1.23.4
Mitarbeiter-Subdomain ma.* funktioniert jetzt auch auf Dev und Staging
- Bis jetzt war die Mitarbeiter-Anlauf-URL (ma.energydesk.online/<cluster>) ausschließlich auf der Produktion erreichbar — auf Dev und Staging gab es eine TLS-Fehlermeldung. Ab dieser Version erkennt die App jeden Host der Form ma.<env>.energydesk.online (also z. B. ma.dev.energydesk.online, ma.staging.energydesk.online) als Mitarbeiter-Subdomain. Cluster-spezifische Login-Links lassen sich dadurch nun auch in den Vorab-Umgebungen testen, ohne die Hauptdomain anfassen zu müssen.
- Für Server-Admins: Dev und Staging haben jetzt ihr eigenes Caddyfile (`Caddyfile.dev`, gemountet über das neue `compose.dev.yml`-Overlay). Die Hostliste kommt aus der Env-Variable `CADDY_DOMAIN` und darf kommagetrennt mehrere Domains enthalten. Prod (`Caddyfile.hetzner`) bleibt unverändert.
- v1.23.3
Stationsleiter-Einrichtung: private Email aus Stammdaten übernehmen
- Wird ein Mitarbeiter zum Stationsleiter gemacht und ist noch keine Mobile-Login-Email gesetzt, wird die private E-Mail-Adresse aus dem Stammdaten-Onboarding automatisch vorbefüllt. Der Hinweis unter dem Feld zeigt, woher der Wert kommt (Mobile-Login vs. Stammdaten) — die Adresse kann beim Einrichten noch geändert werden.
- v1.23.2
Station anlegen: Ort wird automatisch aus PLZ ermittelt
- Im Adress-Block der Station-Anlegen-/Bearbeiten-Maske wird der Ort beim Verlassen des PLZ-Feldes automatisch aus der offiziellen PLZ-Datenbank (OpenPLZ) ergänzt — gleiche Mechanik wie im Cluster-Impressum. Funktioniert für deutsche 5-stellige PLZ; vorhandene Orte werden überschrieben.
- v1.23.1
Landingpage aufgeräumt
- Im Abschnitt „Was Energydesk auf der Station macht“ ist „Schwarzes Brett“ raus, dafür kommt die Beschreibung der Website-/Karriere-Seiten-Funktion (eigene Domain pro Cluster, Stellenanzeigen, Bewerberformular, automatisch generiertes Impressum + Datenschutzerklärung).
- Die Platzhalter-Kennzahlen „Stationen aktiv“, „Aufgaben pro Woche“ und „Verfügbarkeit“ wurden entfernt — sie waren bislang nur Fake-Zahlen und wirkten unseriös.
- Der Hinweis-Block am Seitenende („Du bist Mitarbeiter und stehst an einem gepairten Stationstablet?“) ist raus. Operator/Mitarbeiter kommen über die regulären Login-Pfade rein.
- v1.23.0
Impressum & Datenschutz editierbar mit „Zurücksetzen“
- Im Site-Editor (/operator/site) sind Impressum und Datenschutzerklärung jetzt frei editierbar — als Standard erscheint weiterhin der automatisch generierte Text aus den Cluster-Stammdaten. Sobald du den Text änderst, wird er als „Eigene Version“ gespeichert und auf der öffentlichen Seite angezeigt.
- Neuer „↺ Zurücksetzen“-Button neben der Pille: wirft die eigene Version weg und holt die aktuelle Generator-Version zurück. Die Pille wechselt von „Eigene Version“ (amber) auf „Vorschau“ (grau), sobald du wieder den Generator nutzt.
- Die öffentliche Impressum- und Datenschutz-Seite (/s/<op>/impressum, /s/<op>/datenschutz) bevorzugt jetzt die eigene Version vor dem Generator. Solange du nichts überschreibst, läuft alles automatisch aus den Cluster-Daten.
- v1.22.0
Datenschutzerklärung auto-generiert + Vorschau im Site-Editor
- Die Datenschutzerklärung der öffentlichen Cluster-Seite (/s/<op>/<cl>/datenschutz und /s/<op>/datenschutz) wird ab sofort automatisch aus den Stammdaten des Clusters erzeugt — analog zum Impressum. Verantwortlicher, Kontakt, Adresse, Vertretungsberechtigte:r kommen aus dem Cluster, der restliche Text ist eine Art-13-DSGVO-konforme Vorlage (Server-Logfiles, Cookies, Kontaktaufnahme, Bewerbungen, Web-Push, SSL, Auftragsverarbeitung, Rechte der Betroffenen, Beschwerderecht).
- Im Site-Editor (/operator/site) ersetzen jetzt zwei Vorschau-Kacheln „Impressum“ und „Datenschutzerklärung“ die früheren Hinweis-/Textfelder. Du siehst sofort, wie die generierten Texte aktuell aussehen — gespeist aus dem ältesten öffentlich sichtbaren Cluster.
- Wichtig: Der Operator bleibt rechtlich für die Datenschutzerklärung verantwortlich. Eine ⚠️-Box über der Datenschutz-Vorschau weist explizit darauf hin und erinnert daran, fehlende Abschnitte (Web-Analyse, Drittanbieter, Newsletter) selbst zu ergänzen — falls nötig.
- v1.21.0
Öffentliches Impressum wird automatisch aus Cluster-Daten erzeugt
- Die Impressum-Seite auf der öffentlichen Cluster-Website (z. B. /s/<operator>/<cluster>/impressum) wird ab sofort automatisch aus den geschäftlichen Stammdaten des Clusters erzeugt: Firmenname + Geschäftsform, Vertretungsberechtigte:r, Anschrift, Kontakt-E-Mail und -Telefon, Handelsregister und USt-IdNr. — alles, was unter Operator → Cluster → Detail → „Impressum & geschäftliche Stammdaten“ gepflegt ist.
- Auch die operator-weite Impressum-Seite (/s/<operator>/impressum) bedient sich aus dem ältesten öffentlich sichtbaren Cluster des Operators. Hat ein Operator mehrere Cluster mit unterschiedlichen Rechtsentitäten, ist die jeweils Cluster-spezifische /s/<operator>/<cluster>/impressum-URL maßgeblich.
- Im Site-Editor (/operator/site) ist das freie Impressum-Textfeld durch einen Hinweis ersetzt, der auf die Cluster-Stammdaten verweist. Bestehende frei eingegebene Impressum-Texte bleiben als Fallback erhalten, falls in einem Cluster noch keine strukturierten Daten gepflegt sind.
- v1.20.0
Cluster-Impressum: Geschäftsführer / Vertretungsberechtigte:r
- Neues Pflichtfeld im Cluster-Impressum (§ 5 Abs. 1 Nr. 1 DDG): Vertretungsberechtigte:r. Die Beschriftung passt sich an die gewählte Geschäftsform an — GmbH/UG/KG → „Geschäftsführer:in“, AG/e.V. → „Vorstand“, e.K./Einzelunternehmen → „Inhaber:in“, GbR/OHG → „Vertretungsberechtigte:r Gesellschafter:in“.
- Mehrere Personen werden kommagetrennt im selben Feld erfasst (z. B. „Max Mustermann, Maria Beispiel“). Auto-Save wie bei den anderen Impressums-Feldern.
- v1.19.3
Cluster-Impressum: PLZ überschreibt Ort + auffälligere Warnungen
- Eine neue PLZ überschreibt jetzt immer den Ort (vorher nur, wenn das Ort-Feld leer war). Wechselt der Operator die PLZ, kommt automatisch der passende neue Ort.
- Plausibilitäts-Warnungen (E-Mail, USt-IdNr., Handelsregister) sind jetzt deutlich sichtbar: amber-farbener Rahmen am Eingabefeld + Warn-Box mit ⚠️-Icon und fett gesetztem Hinweistext. Speicher-Fehler erscheinen analog mit rotem Rahmen und ⛔-Icon.
- v1.19.2
Cluster-Impressum: Land vor Straße + Plausibilitätsprüfungen
- Das Land-Feld steht jetzt oben in der Adresse, vor Straße/PLZ/Ort — passt zur Reihenfolge, in der die Adresse eingegeben wird (Land bestimmt das PLZ-Format und die automatische Ort-Auflösung).
- Plausibilitätsprüfungen für E-Mail (Format), Handelsregister (Registerart HRB/HRA/GnR/PR/VR/GesR + Nummer) und Umsatzsteuer-ID (EU-Format pro Länderkürzel, z. B. DE + 9 Ziffern). Auffällige Eingaben werden mit einem amber-farbenen Hinweis markiert — der Wert wird trotzdem gespeichert (Auto-Save bleibt unverändert).
- v1.19.1
Cluster-Impressum: Länder-Dropdown + PLZ-Auflösung
- Das Feld „Land“ im Cluster-Impressum ist jetzt ein Dropdown mit allen ISO-Ländern (deutsche Namen). Deutschland steht zuerst, danach alphabetisch sortiert.
- Wenn Land = Deutschland und eine 5-stellige PLZ eingegeben wird, ergänzt das System den Ort automatisch aus der offiziellen PLZ-Datenbank (OpenPLZ). Existiert schon ein Ort, wird er nicht überschrieben.
- Das PLZ-Feld trägt jetzt sichtbar die Beschriftung „PLZ“ (vorher nur Platzhalter).
- v1.19.0
Cluster-Impressum: geschäftliche Stammdaten direkt am Cluster
- In der Cluster-Detail-Ansicht (Operator → Cluster → Detail) gibt es eine neue Karte „Impressum & geschäftliche Stammdaten“: Firmenname, Geschäftsform (Dropdown: GmbH, UG, AG, GmbH & Co. KG, KG, OHG, GbR, e.K., e.V., Einzelunternehmen, AöR, Sonstige), ladungsfähige Anschrift (Straße/PLZ/Ort/Land), Kontakt-E-Mail, Kontakt-Telefon, Handelsregister und USt-IdNr.
- Alle Felder speichern automatisch beim Verlassen — kein extra Speichern-Button mehr. Pro Feld wird der Status angezeigt (speichere…, ✓ Gespeichert, Fehler-Hinweis).
- Passwortmanager (1Password, LastPass, Bitwarden, Dashlane) und Browser-Autofill schlagen auf Stammdaten-Feldern (auch bei Mitarbeiter-Neuanlage) nicht mehr an.
- Die Karte „Berechtigungen Stationsleiter“ ist jetzt standardmäßig eingeklappt — wird beim Klick auf den Titel auf- und zugeklappt, mit Hinweis auf bestehende Cluster-Overrides.
- v1.18.0
Lizenz-Add-ons: vier zubuchbare Bereiche
- Vier neue Add-on-Lizenzen pro Operator: „Website“, „Routinen“ (Aufgaben/Checklisten/Belehrungen), „Zeiterfassung“ (Dienstplan/Stempel/Stundenzettel/Lohn), „Bewerbermanagement“ (Stellen/Bewerbungen). Alle Bestandskunden bekommen automatisch alle vier freigeschaltet — niemand verliert eine Funktion.
- Plattform-Admin → Betreiber-Liste → Klick auf eine Email öffnet eine Detail-Seite mit vier Toggles. Sperrt ein Toggle eine Lizenz, verschwinden die dazugehörigen Menüpunkte beim Operator (und beim Stationsleiter). Direkter URL-Aufruf landet auf einer schlanken Upsell-Seite mit Beschreibung, was die Lizenz enthält, und einem Mailto-Link an den Support.
- Stripe-Pricing für Lizenz-Add-ons ist in dieser Version noch nicht angebunden — das kommt im Folge-Sprint zusammen mit dem Self-Service-Upgrade-Button im Operator-Backoffice.
- Kern (immer aktiv, keine Lizenz nötig): Mitarbeiter, Arbeitsverträge, Dokumente, Schwarzes Brett, Marktplatz, Tagesabschlüsse, Reports, Adressbuch, Cluster/Stationen/Tablets, Stationsleiter-Verwaltung, Affiliate.
- v1.17.0
Affiliate-Programm: Operatoren werben Operatoren
- Jeder Operator kann unter Einstellungen → „Affiliate-Programm“ einen eigenen Empfehlungs-Link generieren (frei wählbarer Slug, z. B. https://energydesk.online/ref/aral-cologne). Wir tracken Klicks, Signups und Subscriptions automatisch.
- Provisionsmodell: 50 % des Subscription-Umsatzes (Cent-genau) für 12 Monate ab Aktivierung des geworbenen Operators. Ein monatlicher Cron-Job läuft idempotent über alle bezahlten Invoices und gutschreibt die Provisionen auf das Guthaben des Affiliates. Der Affiliate bekommt pro Provision eine Benachrichtigungs-Mail.
- Dashboard zeigt Guthaben (verfügbar / lifetime / ausgezahlt), eigenen Link mit Klick- und Conversion-Statistik, Liste aller geworbenen Operatoren mit Status (pending / aktiv / abgewandert / Fenster abgelaufen) und die letzten 50 Transaktionen.
- Architektur: neue Tabellen ReferralLink, OperatorReferral, AffiliateBalance, AffiliateTransaction, AffiliateProcessingRun + plattform-weite SystemConfig. Auszahlungs-Methoden (SEPA / Amazon / In-App-Rabatt) sind im Schema vorbereitet, aber UI-seitig noch nicht freigeschaltet — folgt in 1.18+.
- v1.16.1
Stationsleiter: Verboten = wirklich kein Zugriff
- Zwei Lecks gefixt: (1) Klick auf einen Dropdown-Header (z. B. „Personal“) führte für Stationsleiter immer auf den Top-Level-Pfad (/operator/employees), auch wenn dieser auf Verboten stand — jetzt biegen wir den Header-Link auf den ersten erlaubten Sub-Eintrag. (2) Direktes Eintippen der URL umging den Filter — jetzt prüft das Operator-Layout den Pfad gegen die Permission-Allow-Liste und zeigt für Verboten-Pfade 404.
- Damit gilt zuverlässig: was im Menü nicht sichtbar ist, ist auch per URL nicht erreichbar.
- v1.16.0
Stationsleiter: Erlaubt = volle Operator-Sicht (lesen + bearbeiten)
- Neues Berechtigungs-Modell: pro Bereich gibt es nur noch eine Stellschraube — „Erlaubt“ oder „Verboten“. „Erlaubt“ heißt: der Stationsleiter sieht und bearbeitet diesen Bereich genauso wie der Pächter (kein read-only-Modus mehr). „Verboten“ heißt: der Menüpunkt taucht im Stationsleiter-Menü nicht auf.
- Technisch: wenn ein Stationsleiter eingeloggt ist und einem Operator zugeordnet ist, wird er für alle Backoffice-Routen automatisch als dieser Operator behandelt. Damit funktionieren Speichern, Hochladen, Löschen, PIN zurücksetzen usw. ohne Sonderbehandlung. Das alte „read-only“-Branch in den Listen/Detailseiten ist entfernt.
- Aufräumen in der Berechtigungs-Verwaltung: die alten „.write“/„.approve“-Schalter (z. B. Mitarbeiter — anlegen / bearbeiten, Stundenzettel freigeben, Dienstplan bearbeiten, …) sind weg. Bestehende Override-Zeilen in der Datenbank mit diesen Keys werden ignoriert.
- Hinweis Datenschutz: wer „Erlaubt“ in IRGENDEINEM Cluster hat, kommt heute mit voller Operator-Berechtigung auf die Daten — auch von Clustern, in denen er kein „Erlaubt“ hat. Wenn du jemand hart aussperren willst, entferne ihn aus der Stationsleitung auf der Mitarbeiter-Seite — der Web-Zugang ist dann komplett widerrufen.
- v1.15.1
Stationsleiter: Mitarbeiter-Detail anklickbar (read-only)
- In der Mitarbeiter-Liste kann der Stationsleiter jetzt eine Zeile anklicken und landet auf einer kompakten, read-only Detail-Sicht: Profilbild, Eckdaten (Personalnummer, Job-Titel, Beschäftigungsart, Soll-Stunden, Pausen, Mobile-Login, weitere Einsatz-Stationen) und — wenn er die jeweilige Berechtigung hat — Direkt-Links zu „Arbeitsverträge“ und „Stundenzettel“ dieses Mitarbeiters.
- Stammdaten, Lohnabrechnung, Belehrungen, Aufgaben-Tabs und alle Bearbeiten/Löschen/PIN-Reset-Aktionen bleiben dem Pächter vorbehalten.
- v1.15.0
Stationsleiter: gleiche Menüführung wie der Pächter
- Der Stationsleiter sieht jetzt das exakt selbe Hauptmenü wie der Pächter — dieselben fünf Dropdowns (Übersicht, Personal, Zeit & Schicht, Routinen, Inhalte), in derselben Reihenfolge. Innerhalb der Dropdowns sind nur die Einträge sichtbar, für die er eine Freigabe hat; leere Dropdowns werden ausgeblendet.
- Dokumente: für Stationsleiter heute noch ein Platzhalter („Ansicht folgt“) — der Menüpunkt ist also sichtbar, die Seite gibt einen ehrlichen Hinweis aus. Vereinfachte Dokumenten-Sicht für Stationsleiter ziehen wir als Nächstes nach.
- Das alte schlanke Stationsleiter-Menü und sein Landing-Sprungbrett sind entfernt — Navigation läuft jetzt komplett über die normalen Dropdowns.
- v1.14.3
Stationsleiter: Stundenzettel + Lohnabrechnungen freischaltbar (Batch 4)
- Stundenzettel-Seite ist jetzt für Stationsleiter scharf — er sieht Stempelungen aller Mitarbeiter in seinen erlaubten Clustern, ohne Monatsabschluss-Einfrieren und ohne Sprung in die aggregierten Reports.
- Lohnabrechnungen sind ebenfalls scharf, aber Vorsicht: das sind sensible Daten. Per Default ist die Berechtigung jetzt zwar an, du kannst sie aber in der Stationsleiter-Verwaltung gezielt für einzelne Personen wieder ausschalten. Upload und Freigabe-Aktionen bleiben dem Pächter vorbehalten.
- Übrig: Dokumente (komplexere Such- und Tree-Logik) und die Detailseiten von Verträgen/Mitarbeitern für Stationsleiter — folgt schrittweise.
- v1.14.2
Stationsleiter: Tagesabschlüsse freischaltbar (Batch 3)
- Tagesabschlüsse-Übersicht (Wochen-Matrix Stationen × Tage) ist jetzt für Stationsleiter scharf — read-only, kein Drag&Drop-Upload, keine Klicks in die Stations-Detailseite. Stationen ohne OBN-Hinweis und Rescan-Button bleiben dem Pächter vorbehalten.
- Dokumente, Stundenzettel und Lohnabrechnungen folgen in einem nächsten Schritt — sie brauchen jeweils tiefer gehende Anpassung.
- v1.14.1
Stationsleiter: Dienstplan, Abwesenheiten, Aufgaben freischaltbar (Batch 2)
- Drei weitere Bereiche sind jetzt für Stationsleiter scharf verdrahtet (read-only): Abwesenheiten (mit Anzeige der Anträge, aber kein Genehmigen), Aufgaben-Vorlagen (vereinfachte Tabelle, kein Bearbeiten/Bulk), Dienstplan (Heute-Tagesübersicht pro Station, kein „nicht erschienen“-Buchen, kein Vorlagen-Link).
- Tagesabschlüsse, Dokumente, Stundenzettel und Lohnabrechnungen folgen im nächsten Batch — sie brauchen jeweils etwas Umbau in den Daten-Helpern.
- v1.14.0
Stationsleiter: sechs weitere Bereiche freischaltbar (Batch 1)
- Folgende Bereiche sind jetzt für Stationsleiter scharf verdrahtet (read-only): Reports (nur Index, Detailseiten folgen), Stellen, Bewerbungen, Belehrungen, Schwarzes Brett, Checklisten. Sobald in der Stationsleiter-Verwaltung „Erlaubt“ gesetzt ist, erscheint der Menüpunkt automatisch.
- Neuer Default: bei Stationsleitern stehen alle Berechtigungen jetzt standardmäßig auf „erlaubt“ — der Pächter kann gezielt einzelne Bereiche per Cluster oder pro Person sperren. (Hinweis: bestehende „Standard“-Anzeigen im Editor zeigen ggf. noch „verboten“, bis du die Seite neu lädst.)
- v1.13.1
Stationsleiter: Mitarbeiter-Liste freischaltbar
- „Mitarbeiter — Liste & Stammdaten lesen“ ist jetzt scharf verdrahtet. Wenn du die Berechtigung in der Stationsleiter-Verwaltung auf „Erlaubt“ stellst, sieht der Stationsleiter unter „Mitarbeiter“ die Liste aller Mitarbeiter aus den erlaubten Clustern (read-only — kein Bearbeiten, kein Klick in die Detailseite). Die Detail-Ansicht für Stationsleiter folgt in einer späteren Version.
- Architektur: der Nav-Builder ist generalisiert — sobald wir eine weitere Berechtigung scharf machen, taucht der zugehörige Menüpunkt automatisch auf, wenn der Stationsleiter sie hat.
- v1.13.0
Stationsleiter zentral verwalten — Berechtigungen pro Person
- Neu im Einstellungs-Menü: „Stationsleiter“. Listet alle deine Stationsleiter mit Email, Cluster + Stations-Zuordnungen und Status (aktiv / Einladung offen).
- Klick auf einen Namen öffnet die Berechtigungs-Matrix für genau diese Person — pro Cluster und pro Bereich (z. B. Mitarbeiter, Dienstplan, Stundenzettel, Arbeitsverträge …). Drei Zustände: „Standard“ (übernimmt Cluster-Voreinstellung) / „Erlaubt“ / „Verboten“. Speichern erfolgt automatisch pro Klick.
- Architektur: neue Tabelle `UserClusterPermissionPolicy` (User × Cluster × Berechtigung). Hierarchie: User-Einstellung > Cluster-Voreinstellung (rollen-weit) > Default aus der Registry. Damit kannst du z. B. einem Stationsleiter Arbeitsverträge zeigen, einem anderen im selben Cluster nicht.
- Hinweis: das tatsächliche Sperren der jeweiligen Seite wird Bereich für Bereich nachgezogen. Heute schon scharf: „Arbeitsverträge einsehen“. Alle anderen Häkchen werden gespeichert und sind sofort lebendig, sobald die jeweilige Seite den Check eingebaut hat — Toggles mit Tag „noch nicht aktiv“ sind als solche markiert.
- v1.12.1
Stationsleiter: Einladung erneut senden
- Neuer Button „Einladung erneut senden“ auf der Mitarbeiter-Detailseite bei bestehenden Stationsleitern. Sinnvoll wenn der erste Link abgelaufen, verloren oder noch gar nicht ausgelöst wurde (z. B. weil der Stationsleiter aus einer früheren Version mit altem Initial-Passwort kommt).
- Effekt: alle offenen Setup-Links werden invalidiert, ein frischer Link geht per Mail raus, 7 Tage gültig. Das bestehende Passwort bleibt nutzbar, bis der neue Link konsumiert wird — dann wird es überschrieben und alle aktiven Web-Sessions abgemeldet.
- v1.12.0
Stationsleiter: Einladung per Magic-Link statt Initial-Passwort
- Wenn du einen Mitarbeiter unter „Stationsleitung einrichten“ neu freischaltest, bekommt er jetzt eine Email mit einem Link, über den er sich selbst sein Passwort vergibt und direkt eingeloggt wird. Kein Initial-Passwort mehr, das du weitergeben musst.
- Der Link gilt 7 Tage; läuft er ab, kannst du das Setup einfach erneut auslösen — wir invalidieren alte Links automatisch.
- Ältere Stationsleiter, die bereits ein Passwort haben, bleiben unverändert.
- v1.11.0
Landing Page — klarer für neue Besucher
- Hero ist aufgeräumt: die doppelte Zeile unter der Überschrift ist weg, der Intro-Text verzichtet auf Fachjargon und spricht stattdessen von „vollständiger Datentrennung pro Betreiber“.
- Der erste Knopf heißt jetzt „Kostenlos testen — erste Station gratis“ statt „Betreiber-Account anlegen“ — macht klarer, dass man unverbindlich loslegen kann.
- Die sechs Modul-Kacheln (Aufgaben, Schichten, Belehrungen, Dokumente, Schwarzes Brett, Zeiterfassung) sind nutzenorientierter formuliert: was du davon hast, nicht nur was die Funktion technisch tut.
- Neue Sektion „Im Stationsalltag bewährt“ mit Kundenstimme und drei Kennzahlen (aktive Stationen, Aufgaben pro Woche, Verfügbarkeit). Aktuell als sichtbare „Beispiel-Vorschau“ markiert — die Zahlen werden ersetzt, sobald wir verifizierte Werte und Freigaben für echte Stimmen haben.
- v1.10.0
Stationsleiter-Backoffice: Verträge lesen (Pilot)
- Stationsleiter-User können sich jetzt im Backoffice unter energydesk.online/login anmelden und landen auf einer eigenen, schlanken Übersicht. Welche Bereiche sie sehen, hängt von den Cluster-Berechtigungen ab, die der Pächter auf der Cluster-Detailseite (Abschnitt „Berechtigungen Stationsleiter“) setzt.
- Pilot-Berechtigung: „Arbeitsverträge einsehen“. Sobald aktiv, sieht der Stationsleiter unter „Arbeitsverträge“ alle Verträge der Mitarbeiter aus seinen erlaubten Clustern (inkl. PDF). Bearbeiten, Ausstellen, Unterzeichnen und Stornieren bleiben weiterhin dem Pächter vorbehalten.
- Architektur: neuer Helper `requireBackofficeActor()` und ein Layout-Fork in `/operator/*` (Pächter-Sicht vs. Stationsleiter-Sicht). Weitere Berechtigungen (Stundenzettel, Personalakte, …) folgen in 1.11+.
- v1.9.2
Berechtigungs-Card: Auto-Save pro Klick
- Das Setzen oder Entfernen eines Berechtigungs-Häkchens auf der Cluster-Detailseite wird sofort gespeichert — kein „Speichern“-Button mehr. Während des Speicherns ist die Checkbox kurz blockiert; bei einem Fehler kommt die alte Stellung zurück.
- v1.9.1
Berechtigungs-Card: eindeutiges „Erlauben“-Häkchen
- Auf der Cluster-Detailseite war das Häkchen im Abschnitt „Berechtigungen Stationsleiter“ unklar beschriftet (der Text wechselte zwischen „erlaubt“ und „verboten“). Jetzt steht dauerhaft „Erlauben“ neben dem Häkchen — Häkchen gesetzt = erlaubt, kein Häkchen = nicht erlaubt.
- v1.9.0
Cluster-Berechtigungen für Stationsleiter (Foundation)
- Auf jeder Cluster-Detailseite findest du jetzt den Abschnitt „Berechtigungen Stationsleiter“. Dort kannst du pro Cluster festlegen, was Stationsleiter zusätzlich dürfen — Stand 1.9.0 ist eine erste Berechtigung verdrahtet („Arbeitsverträge einsehen“, standardmäßig aus). Weitere Berechtigungen kommen schrittweise dazu.
- Hintergrund: Was Stationsleiter im Backoffice tatsächlich öffnen können, regelt eine separate Ausbaustufe (Stationsleiter-Login im Backoffice). Die hier gesetzten Regeln greifen automatisch, sobald dieser Zugang scharfgeschaltet wird — du kannst die Politik aber jetzt schon einstellen.
- Architektur: Neue Tabelle `ClusterPermissionPolicy` (Cluster × Rolle × Permission → erlaubt/verboten). Operator-Sicht ist davon nicht betroffen — du selbst hast als Operator weiterhin alle Rechte in deinen Clustern.
- v1.8.0
Stationsleiter direkt aus der Mitarbeiter-Akte einrichten
- Auf der Mitarbeiter-Detailseite gibt es jetzt einen Abschnitt „Stationsleitung“: dort wählst du eine Email für den Web-Zugang und die Stationen aus dem Cluster, für die er/sie Stationsleiter sein soll. Beim Anlegen zeigt das System ein Initial-Passwort genau einmal — bitte vertraulich weitergeben.
- Stationsleiter dürfen sich danach unter energydesk.online/login mit Email + Passwort anmelden, Stundenzettel ihrer Stationen prüfen und freigeben. Über „Rolle entfernen“ widerrufst du den Web-Zugang wieder.
- Der „SL“-Badge in der Mitarbeiter-Liste ist seit dieser Version verbindlich an die echte Verknüpfung gekoppelt (statt der bisherigen Email-Heuristik aus 1.7.0).
- v1.7.0
Stationsleiter-Badge in der Mitarbeiter-Liste
- In der Mitarbeiter-Liste erscheint neben dem Namen ein kleines „SL“-Pill, wenn der Mitarbeiter zusätzlich als Stationsleiter im Web freigeschaltet ist (eigene Email-/Passwort-Anmeldung im Backoffice mit Stationszuordnung). Damit ist auf einen Blick sichtbar, wer im Team Approval-Rechte hat.
- v1.6.1
Social-Vorschau-Bild für Energydesk-Startseite
- Wenn jemand den Energydesk-Link bei WhatsApp, LinkedIn, X, Slack oder einem anderen Dienst teilt, erscheint jetzt ein eigenes 1200×630-Vorschaubild im Brand-Stil: Logo, „Tankstellen-Software für den digitalen Stationsalltag“ als Headline und der „Erste Station kostenlos“-CTA-Knopf.
- Das Bild wird vom Server dynamisch gerendert — kein Asset im Repo, keine Update-Disziplin nötig.
- v1.6.0
SEO-Paket: robots.txt, sitemap.xml, Open Graph, Twitter Cards und Structured Data
- Die Startseite ist jetzt für Suchmaschinen vollständig aufgestellt: aussagekräftiger Titel mit Keyword „Tankstellen-Software“, beschreibende Meta-Description, eindeutige Canonical-URL, vollständige Open-Graph- und Twitter-Card-Tags (mit 1200×630-Vorschaubild) und ein JSON-LD-Block (Organization + SoftwareApplication mit Preis-Information).
- robots.txt und sitemap.xml werden ab sofort automatisch aus dem Code generiert und liefern keine 404 mehr. Crawler bekommen die Marketing-Seite freigegeben, der Backoffice-/Tablet-/Mobile-Bereich bleibt gesperrt.
- Die H1 der Startseite beginnt jetzt mit „Tankstellen-Software für den digitalen Stationsalltag“ — die ursprüngliche Tagline bleibt darunter als Untertitel.
- v1.5.13
Tagesabschluss-Übersicht: Wochen-Navigation und PDF auf jede Zelle ziehen
- Die Übersicht „Tagesabschlüsse“ (Stationen × Tage) zeigt jetzt eine Woche statt der letzten 14 Tage, mit Navigation „← Vorwoche / Diese Woche / Nächste Woche →“. Klick auf einen Stations-Eintrag öffnet die Detailansicht in derselben Woche.
- Auch in dieser Matrix lassen sich PDF-Tagesabschlüsse direkt auf eine Zelle (Station × Tag) ziehen. Die Datei wird der jeweiligen Station für den gewählten Tag zugeordnet. Duplikate (gleiche Abrechnungsnummer) werden erkannt.
- v1.5.12
Tagesabschluss-Drop: der Tag aus dem Drop-Ziel zählt
- Wenn ihr einen PDF-Tagesabschluss direkt auf einen Tag im Wochenraster zieht, ist genau dieser Tag jetzt maßgeblich. Der Tag aus dem PDF-Inhalt (der je nach Betreiber-Format unterschiedlich aussehen kann und nicht zuverlässig auslesbar ist) wird damit überschrieben.
- Die Auswertung der Zahlenwerte (Artikelgruppen, Mengen, Beträge) läuft weiterhin per OCR aus dem PDF. Die Duplikatenerkennung über Abrechnungsnummer bleibt aktiv.
- v1.5.11
Tagesabschlüsse: Wochen-Navigation und PDF per Drag & Drop auf den Tag
- Die Station-Detail-Seite der Tagesabschlüsse zeigt jetzt eine Woche (Mo–So) statt eines ganzen Monats, mit Navigation „← Vorwoche / Diese Woche / Nächste Woche →“. Lücken (Rot) und vorhandene Abschlüsse (Grün) sind dadurch klarer und großzügiger dargestellt.
- Ihr könnt PDF-Tagesabschlüsse jetzt direkt auf einen Tag ziehen — die Datei wird hochgeladen, automatisch ausgewertet und der Tag wird grün, sobald das System sie als Abschluss erkannt hat. Die Duplikatenerkennung über Abrechnungsnummer bleibt aktiv, sodass dieselbe Datei nicht doppelt erfasst wird.
- v1.5.10
Mitarbeiter im Dienstplan sortieren — Alphabet, freie Reihenfolge oder freie Stunden zuerst
- In der Mitarbeiteransicht des Dienstplans gibt es jetzt oben eine Sortier-Auswahl: „Alphabet (A–Z)“, „Wenigste verplante Stunden zuerst“ (zeigt zuerst Mitarbeiter, bei denen am meisten Sollstunden offen sind) und „Eigene Reihenfolge“ (Drag & Drop am ≡-Griff neben dem Namen).
- Die gewählte Sortierung wird pro Station gespeichert und bleibt beim nächsten Aufruf erhalten. Auch die manuelle Reihenfolge wird gemerkt, wenn ihr zwischenzeitlich auf Alphabet oder Stunden umschaltet.
- v1.5.9
Offene Schichten direkt im Dienstplan anlegen
- Im Timeline-Dialog „Neue Schicht“ gibt es jetzt die Auswahl „Offen (kein Mitarbeiter — Schicht zur Übernahme)“. Damit lässt sich eine unbesetzte Schicht direkt anlegen, die später von einem Mitarbeiter beansprucht werden kann.
- In der Mitarbeiteransicht reicht ein Klick in eine leere Zelle der „Offen“-Zeile, um eine offene Schicht für diesen Tag anzulegen — wie das Anlegen für einen konkreten Mitarbeiter.
- v1.5.8
Urlaub sichtbar in der Dienstplan-Wochenansicht
- In der Mitarbeiteransicht des Dienstplans (Stunden pro Mitarbeiter und Tag) erscheint jetzt ein Urlaubs-Hinweis in der Zelle: 🌴 „Urlaub“ in grünem Tile bedeutet genehmigt, 🌴 „Urlaub (beantragt)“ mit gestricheltem Rand und schraffiertem Hintergrund bedeutet noch nicht entschieden.
- Damit ist beim Schichtplanen sofort erkennbar, an welchen Tagen ein Mitarbeiter nicht zur Verfügung steht — und ob der Urlaub noch genehmigt werden muss.
- Krankheitstage werden in dieser Ansicht weiterhin nicht markiert (kommt separat).
- v1.5.7
Schichtvorlagen werden korrekt auf Mo–So angewendet (Off-by-one-Fix)
- Beim Anwenden einer Schichtvorlage rutschten alle Slots um einen Tag nach hinten: ein Sonntag-Slot landete auf dem Sonntag VOR dem Montag der Woche. Ursache war eine fehlerhafte DST-Korrektur in der Wochentag-Berechnung. Vorlagen werden ab sofort wieder genau auf Montag bis Sonntag der gewählten Woche angewendet.
- Bereits angelegte fehlerhafte Schichten bleiben unverändert; betroffene Operatoren bitte einmal löschen und neu anwenden.
- v1.5.6
Belehrungs-PDFs öffnen sich wieder in der Mitarbeiter-App
- Auf ma.energydesk.online schlug das Öffnen einer Belehrung mit der Fehlermeldung „text/html is not a valid JavaScript MIME type“ fehl. Ursache: die statische Worker-Datei des PDF-Betrachters lief in das Cluster-Slug-Routing und bekam HTML statt JavaScript zurück. Statische Dateien (Worker, Service-Worker, Manifest) werden auf der ma.-Subdomain jetzt direkt durchgereicht.
- v1.5.5
Mitarbeiter-Mails verlinken jetzt direkt auf die Mitarbeiter-App
- Wenn ein Mitarbeiter zum Mobile-Portal freigeschaltet wird (oder sein Passwort zurücksetzt), führt der Link in der E-Mail jetzt direkt auf ma.energydesk.online — die dedizierte Mitarbeiter-Domain. Bisher landete der Klick auf der Backoffice-Domain energydesk.online.
- Funktional gleiches Ziel, aber sauberer und besser zum Bookmarken auf dem Smartphone.
- v1.5.4
Passwort sichtbar machen auch beim regulären Login
- Auch beim Anmelden im Mitarbeiterportal lässt sich das Passwort jetzt über das Augen-Symbol kurz sichtbar machen. Damit ist das Verhalten konsistent zwischen dem ersten Passwort-Setzen (1.5.3) und allen weiteren Anmeldungen.
- v1.5.3
Passwort sichtbar machen beim ersten Login (Mitarbeiterportal)
- Wenn ein Mitarbeiter das Mitarbeiterportal das erste Mal öffnet und sein Passwort vergibt, kann er ab sofort über das Augen-Symbol neben dem Eingabefeld kurz sehen, was er gerade tippt. Beide Felder (Neues Passwort + Bestätigung) lassen sich gemeinsam ein- und ausblenden — Tippfehler beim Anlegen werden so seltener und der Mitarbeiter kommt nicht in eine Endlosschleife.
- Für Operator/Backoffice keine sichtbare Änderung.
- v1.5.2
„Jetzt bewerben“-Button fest verdrahtet, Primärfarbe folgt automatisch der Brand
- Der rote Knopf rechts oben im Website-Header heißt jetzt immer „Jetzt bewerben“ und führt immer zur Karriere-Sektion (Operator-Übersicht: Anker; Cluster-Seite: eigene Karriere-Unterseite). Die früheren Eingabefelder „CTA-Button-Text“ und „CTA-Ziel“ sind aus den Site-Einstellungen entfernt.
- Die Eingabe einer eigenen Primärfarbe entfällt ebenfalls. Druckbare Job-Aushänge (PDF) übernehmen die Akzentlinie jetzt automatisch aus der Marke (Shell-Rot, Aral-Blau, Esso-Rot).
- v1.5.1
Website-Inhalte zentral bei „Site-Einstellungen“ pflegen
- Inhalte für eure öffentliche Website (Logo, Hero-Bild, Texte, Farbe, Kontakt, Impressum, Datenschutz, Social-Links, CTA, Copyright) werden ab sofort an einer Stelle gepflegt: unter Site-Einstellungen. Die Cluster-Detailseite zeigt nur noch cluster-spezifische Felder: ob der Cluster öffentlich sichtbar ist, der URL-Slug und eine optionale eigene Domain.
- Wenn ihr im Site-Editor ein Logo oder Hero ändert und einzelne Cluster ein eigenes Bild hinterlegt haben, sagt euch die Oberfläche jetzt direkt, welche das sind — damit ihr wisst, wo ihr ggf. nachziehen müsst.
- Im Hintergrund werden bei jeder Operator-Änderung auch alle eigenen Cluster-Seiten neu aufgebaut, damit Änderungen sofort sichtbar sind und nicht hinter einem Cache hängen bleiben.
- v1.5.0
Sicherheits-Update: PIN-Schutz härter, Cron-Secret konstanzeitig, Unterschriften gesäubert
- PIN-Sperre am Tablet greift jetzt deutlich härter: Nach fünf Fehlversuchen sperrt das Konto wie bisher fünf Minuten, danach steigt die Sperrzeit gestaffelt (30 Minuten, vier Stunden, schließlich ein Tag). Vorher startete der Zähler nach jedem Lock wieder bei null — das verschärft Brute-Force-Resistenz spürbar.
- Im Hintergrund: Cron-Secret-Prüfung läuft jetzt zeitkonstant (kein Timing-Leak), Unterschriften-SVGs werden serverseitig auf Skript-Tags, Event-Handler und gefährliche Schemata gefiltert. Beides ohne sichtbare Änderung im Tablet/Backoffice-Alltag.
- Damit sind drei Befunde aus dem Security-Audit (C-3, H-3, C-2) geschlossen.
- v1.4.1
Boot-Merge für Credentials außerhalb von Next.js (intern)
- Interner Bugfix: das Spiegeln der DB-Credentials in process.env läuft jetzt als eigenständiges ESM-Script in entrypoint.sh statt als Next.js-Instrumentation-Hook. Damit funktioniert die Credentials-Verwaltung auch in Setups, in denen Webpack die node:crypto-Auflösung im Edge-Bundle verweigert.
- Für Operatoren und Tablet-Nutzer keine sichtbare Änderung.
- v1.4.0
Credentials-Verwaltung mit Test, Setzen, Anzeigen und Restart (Etappe 2 von 3)
- Plattform-Admins können in der Credentials-Übersicht jetzt aktiv arbeiten: jedes Credential lässt sich live testen (Stripe-Balance, S3-HeadBucket, SMTP-Login, Google-OAuth-Token-Check, VAPID-Parse), neue Werte verschlüsselt in der DB speichern, im Klartext anzeigen oder den DB-Override wieder entfernen.
- Setzen, Anzeigen, Löschen und der neue „Container neu starten“-Knopf verlangen das eigene Passwort zur Bestätigung. Jede Aktion landet im Audit-Log.
- Für Operatoren und Tablet-Nutzer keine sichtbare Änderung.
- v1.3.1
Admin-Header mit Navigation — /admin/* mit eigenem Layout
- Plattform-Admins sehen oben jetzt auch auf den /admin/*-Seiten den Header mit Navigation (Betreiber, Marktplatz-Meldungen, Credentials, Abmelden). Bisher fehlte dort der Header, sodass man nur über die URL zwischen den Admin-Bereichen wechseln konnte.
- v1.3.0
Credentials-Übersicht im Admin-Bereich (Etappe 1 von 3, read-only)
- Plattform-Admins finden unter Admin → Credentials eine Übersicht aller Plattform-Secrets (Stripe, S3, SMTP, Google OAuth, VAPID, Cron, Backup, GA): welche gesetzt sind, gruppiert nach Bereich, mit maskierter Vorschau und Quelle (DB-Override oder .env).
- Etappe 1 zeigt nur an. Live-Tests („Test now“) und das Setzen neuer Werte mit Re-Auth + verschlüsselter DB-Ablage folgen in den nächsten Releases.
- v1.2.1
Mehrere Super-Admin-E-Mails per Komma trennen (intern, Dev/Staging)
- Interne Bootstrap-Verbesserung: SUPER_ADMIN_EMAIL akzeptiert jetzt eine komma-separierte Liste, damit auf Dev/Staging mehrere Test-Admin-Accounts angelegt werden können. Verhalten in Production bleibt identisch — eine einzelne Adresse funktioniert wie bisher.
- Für Operatoren und Tablet-Nutzer keine sichtbare Änderung.
- v1.2.0
Neue Startseite für Besucher ohne Login
- Die Startseite von energydesk.online wurde überarbeitet: Wer ohne Login vorbeischaut, sieht jetzt direkt, wofür Energydesk gut ist — sechs Modul-Kacheln (Aufgaben, Schichtplan, Belehrungen, Dokumente, Schwarzes Brett, Zeiterfassung) und ein kompakter Preis-Teaser.
- Die bisherigen Knöpfe „Betreiber-Account anlegen“ und „Anmelden“ bleiben prominent. Der Tablet-PIN-Hinweis ist weiterhin am Fuß der Seite verlinkt.
- Für Operatoren mit eigener Custom-Domain ändert sich nichts: Die Cluster-Startseite wird wie bisher auf eurer Domain ausgespielt.
- v1.1.0
Web-Analyse mit Opt-in — Cookie-Banner mit Wahlmöglichkeit
- Wir messen ab heute mit Google Analytics 4, wie das Portal genutzt wird (welche Seiten am häufigsten aufgerufen werden, wo es Bedienprobleme gibt). Das hilft uns, gezielt Verbesserungen vorzunehmen.
- Die Messung passiert NUR mit deiner Einwilligung: beim ersten Besuch siehst du unten einen Hinweis mit zwei Knöpfen. „Nur Notwendige“ lehnt die Messung ab — du wirst dann nicht gezählt und es werden keine Analyse-Cookies gesetzt. „Statistik zulassen“ gibt grünes Licht.
- Keine personalisierte Werbung, keine Weitergabe an Dritte, nur anonyme Reichweiten-Statistik. Deine IP wird vor der Verarbeitung verkürzt.
- Auf den öffentlichen Stations-Seiten (deine eigene Karriere-Site) findet KEINE Messung durch Energydesk statt — dort entscheidest du als Operator selbst, was du tracken willst.
- Datenschutzerklärung wurde entsprechend aktualisiert (§8.2). Du wirst beim nächsten Login einmalig zur Bestätigung der neuen Version umgeleitet.
- v1.0.0
Energydesk 1.0 — neuer Cloud-Server
- Energydesk läuft ab heute auf einer neuen Server-Infrastruktur in Nürnberg.
- Für dich ändert sich an der App nichts: gleiche Anmeldung, gleiche Stationen, gleiche Mitarbeiter, gleiche Tablets. Alle Dokumente, Fotos und Belehrungen sind unverändert da.
- Im Hintergrund: schnellere Server, automatische tägliche Backups, und wir sind jetzt vorbereitet, mit dir zu wachsen — ob 1 oder 1000 Stationen.
- Datenschutz bleibt: Server stehen in Deutschland, gleicher Anbieter (Hetzner Online GmbH) wie vorher, AVV unverändert gültig.
- v0.86.0
Dokumente und Fotos im Object Storage
- Alle hochgeladenen Dateien (Dokumente, Personalakte, Fotos, Bewerbungs-Unterlagen, Marketplace-Snapshots, Logos) liegen ab jetzt zentral im Hetzner Object Storage statt auf der Server-Festplatte.
- Für dich ändert sich nichts an Funktion oder Oberfläche — Uploads und Downloads laufen wie bisher.
- Vorteil im Hintergrund: versehentlich gelöschte Dateien sind 60 Tage lang wiederherstellbar (Bucket-Versionierung), und wir können die App jederzeit auf mehrere Server skalieren, ohne dass Dateien zwischen Servern synchronisiert werden müssen.
- Datenschutz: gleicher Anbieter (Hetzner Online GmbH, Gunzenhausen) wie bisher, derselbe Standort Deutschland. AVV gilt unverändert.
- v0.85.5
Releases-Seite zeigt Zeiten in Berlin-Zeit
- Auf /releases erschien die Uhrzeit jedes Eintrags zwei Stunden zu früh (z. B. 22:11 statt 00:11) — der Server-Render lief in UTC, der ISO-Offset wurde ignoriert. Jetzt explizit Europe/Berlin gesetzt.
- v0.85.4
Timeline-Mülleimer sitzt jetzt direkt an der Timetable
- Der Mülleimer auf der Wochen-Timeline klebt jetzt in der oberen rechten Ecke der Timetable (leicht über dem Stunden-Header) statt unten rechts auf dem Bildschirm. So liegt die Drop-Zone näher am Drag-Pfad und wandert beim Scrollen mit.
- v0.85.3
Timeline: Mülleimer als Drop-Zone zum Löschen
- Rechts unten auf der Wochen-Timeline schwebt jetzt ein Mülleimer-Icon. Wenn du eine Schicht draufziehst, wird sie gelöscht — kein Umweg über das Bearbeiten-Modal mehr.
- Während du gerade eine Schicht ziehst, pulsiert der Mülleimer rot; sobald du mit dem Cursor drüber kommst, leuchtet er voll auf (Drop-Targetierung).
- v0.85.2
Logo: gelber Punkt dreht sich
- Das Energydesk-Logo ist jetzt überall (Header im Backoffice, Tablet, Auth-, Consent- und About-Seiten sowie als Browser-Tab-Icon) leicht animiert: Der kleine gelbe Punkt dreht sich in 2 Sekunden einmal um den roten Kreis. Rein kosmetisch, keine funktionale Änderung.
- v0.85.1
Timeline: Tooltip nur noch über ⋯-Icon
- Auf der Wochen-Timeline-Ansicht öffnet das Schicht-Tooltip jetzt nur noch, wenn du den kleinen "⋯"-Button rechts in der Schicht antippst (oder mit der Maus drüberfährst). Vorher poppte das Tooltip bei jedem Hover irgendwo auf einem Balken — beim normalen Mausweg über die Woche war das zu nervös.
- Drag, Resize und Klick-zum-Zuweisen funktionieren unverändert.
- v0.85.0
Mitarbeiter-Anlage + Dienstplan: Live-Sync, Onboarding-Link, Klick-Neue-Schicht
- Mitarbeiter-Anlegen-Dropdown zeigt keine gelöschten Stationen mehr.
- Beim Anlegen eines Mitarbeiters kann der Stammdaten-Onboarding-Link direkt mitverschickt werden (neue Checkbox + E-Mail-Feld). Spart den Umweg über die Detailseite.
- Dienstplan (Wochen- und Timeline-Ansicht) syncht sich jetzt alle 10 Sekunden automatisch — Änderungen, die Kollegen in einem zweiten Browser machen, erscheinen ohne manuelles Neuladen. Aktive Edits (Modal offen, Drag in Bewegung) pausieren den Sync, damit nichts unter den Fingern weg-flackert.
- Wochenansicht: "Offene Schichten"-Zeile ist jetzt immer sichtbar, auch wenn nichts offen ist — vorher fehlte der Block dann komplett.
- Timeline-Ansicht: Klick in einen leeren Bereich öffnet einen "Neue Schicht"-Dialog mit der Klick-Uhrzeit als Startzeit (Default 4 Stunden Dauer).
- v0.84.3
Operator-Menü: Aufgaben/Checklisten/Belehrungen unter "Routinen"
- Die Menügruppe "Aufgaben" heißt jetzt "Routinen" und enthält im Dropdown alle drei Punkte: Aufgaben, Checklisten, Belehrungen. Vorher fehlte "Aufgaben" als eigener Eintrag, weil das Top-Level-Label selbst dorthin gezeigt hat.
- Die alten Links auf /operator/tasks, /operator/checklists und /operator/briefings funktionieren unverändert.
- v0.84.2
Favicon-Fallback: Brand-Initial statt Energydesk-Logo
- Operator ohne hochgeladenes Logo bekommen im Browser-Tab jetzt einen generierten Favicon mit dem ersten Buchstaben des Namens auf rotem Brand-Quadrat — vorher hat der Tab das Energydesk-Logo gezeigt.
- Wer ein Logo unter Operator-Einstellungen → Website hochlädt, sieht es weiterhin als Favicon.
- v0.84.1
Custom-Domain: Operator-Logo im Browser-Tab + Karte unter Header
- Auf Custom-Domains (z. B. momax-gmbh.de) zeigt der Browser-Tab jetzt das Operator-Logo (sofern gepflegt) statt der Energydesk-Marke.
- Die Stationen-Karte auf der Cluster-Startseite legt sich beim Scrollen nicht mehr über den oberen Menü-Balken — der Header bleibt zuverlässig im Vordergrund.
- v0.84.0
Karriere-Seite: Standort pro Job + Initiativbewerbung
- Auf der Karriere-Seite (/karriere) steht jetzt bei jeder Stelle, an welchem Standort sie ausgeschrieben ist — entweder die konkrete Station oder "Alle Standorte (<Cluster>)", wenn keine Station hinterlegt ist. Gleiche Anzeige zusätzlich auf der Operator-Übersichtsseite.
- Neuer Block unten auf der Karriere-Seite: "Nichts Passendes dabei? — Initiativbewerbung". Bewerber können sich auch dann melden, wenn aktuell keine Stelle ausgeschrieben ist. Die Bewerbung läuft in den normalen Posteingang unter "Initiativbewerbung" ein.
- Der "Jetzt bewerben"-Button im Header zeigt auf den Cluster-Unterseiten jetzt zuverlässig auf /karriere — vorher landete der Klick auf manchen Seiten ins Leere (#karriere-Anker).
- v0.83.10
BIC wird beim IBAN-Wechsel immer neu gesetzt
- Wenn du an einer schon befüllten IBAN etwas änderst, wird die BIC jetzt immer neu aus dem openiban-Lookup übernommen — auch wenn im BIC-Feld bereits ein Wert stand. Vorher wurde nur bei leerem BIC-Feld überschrieben.
- Begründung: eine geänderte IBAN gehört zu einer anderen Bank, ein alter BIC ist dann inkonsistent. Gilt im Operator-Stammdaten-Tab und im Mitarbeiter-Profil.
- v0.83.9
Steuer-ID + SV-Nummer: Schema-Prüfung mit deutlicher Warnung
- Sowohl im Operator-Stammdaten-Tab als auch im Mitarbeiter-Profil werden Steuer-IdNr. und SV-Nummer beim Eintippen normalisiert (Leerzeichen raus) und gegen das deutsche Schema geprüft.
- Steuer-IdNr.: 11 Ziffern, erste Ziffer ≠ 0, Wiederholungs-Regel + ISO-7064-Prüfziffer (Mod 11, Radix 10).
- SV-Nummer: 12 Zeichen (8 Ziffern + 1 Buchstabe + 3 Ziffern), Geburtsdatum-Plausibilität, Mod-10-Prüfziffer mit Standardgewichten.
- Bei ungültiger Eingabe: roter Warn-Block mit ⚠-Icon und konkreter Begründung. Die Eingabe wird trotzdem gespeichert.
- v0.83.8
Mitarbeiter-App: IBAN-Validierung + BIC-Auto-Lookup
- Im Mitarbeiter-Profil bekommt das IBAN-Feld jetzt die gleiche Logik wie im Operator-Backoffice: beim Speichern wird die IBAN geprüft (Mod-97 + openiban.com).
- Bei gültiger IBAN und leerem BIC-Feld wird der BIC automatisch eingetragen. Bei ungültiger IBAN gibt es eine deutliche rote Warnung, die Eingabe wird aber trotzdem gespeichert.
- v0.83.7
Stammdaten: IBAN-Warnung deutlicher
- Bei ungültiger IBAN gibt es jetzt einen klaren roten Warn-Block direkt unter dem Feld (mit ⚠-Icon, fettem Titel und konkreter Begründung), nicht nur eine winzige rote Zeile. Das Feld selbst bekommt einen kräftigeren roten Rahmen.
- Die Eingabe wird weiterhin gespeichert — der Hinweis weist nur darauf hin, dass Überweisungen mit der falschen IBAN nicht funktionieren.
- v0.83.6
Fix: Profilbild im Mitarbeiter-Profil wurde nicht angezeigt
- Nach Upload erschien nur ein kaputtes Bild-Icon mit dem Alt-Text Profilbild. Ursache: das Image-Tag verwies auf /<pfad> statt auf /api/public/site-assets/<pfad>. Behoben.
- v0.83.5
Stammdaten: IBAN-Validierung + BIC automatisch ermitteln
- Beim IBAN-Feld im Stammdaten-Tab wird die Eingabe nach 600 ms geprüft: Format, Land-Länge und ISO-13616-Prüfziffer (Mod-97). Bei Erfolg grünes Häkchen mit Bank-Name; bei Fehler rot mit konkreter Meldung.
- Ist die IBAN gültig und das BIC-Feld leer, wird der BIC automatisch eingetragen — Lookup über openiban.com (SEPA-Raum + Schweiz).
- IBAN wird beim Speichern auf Standard-Format normalisiert (ohne Leerzeichen, Uppercase). Manuell gesetzte BIC werden nicht überschrieben.
- v0.83.4
Stammdaten: alles speichert sich automatisch, kein Knopf mehr
- Im Stammdaten-Tab eines Mitarbeiters werden Änderungen jetzt automatisch debounced gespeichert (700 ms). Der Knopf Stammdatenblatt speichern ist weg — oben rechts in einer kleinen Sticky-Leiste siehst du den Status (✓ gespeichert, speichert …, oder Fehler).
- Eigene Speicher-Pfade für Felder, Lohnarten und Vorbeschäftigungen — jeder mit eigenem Debounce-Timer, damit du nicht bei jedem Tastenanschlag drei Requests schickst.
- Personalnummer ist jetzt das erste Feld in den Persönlichen Daten. Lässt du es leer und speicherst, vergibt das System automatisch die nächste freie Nummer. Bei Kollision mit einer bereits vergebenen Nummer wird die Änderung verweigert und der Operator bekommt eine klare Fehlermeldung.
- v0.83.3
Personalnummer: automatische Vergabe + im Stammdaten-Tab änderbar
- Neue Mitarbeiter bekommen automatisch die nächste freie Personalnummer im Operator-Scope (1, 2, 3 …). Lücken nach Austritten werden wieder aufgefüllt.
- Im Stammdaten-Tab des Mitarbeiter-Details (Operator-Backoffice) gibt es jetzt oben eine eigene Karte Operator-Kennung mit der Personalnummer — frei änderbar, UNIQUE pro Operator. Bei Kollision kommt eine klare Fehlermeldung.
- Operator kann beim Anlegen auch eine Wunsch-Nummer übergeben; wird sie genutzt und ist sie schon vergeben, kommt 409.
- v0.83.2
Mitarbeiter-Profil: Personalien direkt ändern
- Neue Sektion Personalien mit den Feldern Geburtsdatum, Geburtsort, Geschlecht und SV-Nummer — alle inline editierbar. Aus der read-only-Sektion Beschäftigung sind diese Felder entfernt.
- Beim Speichern wird dein Betreiber per Push informiert (alle vier zählen als lohnabrechnungs-/steuerrelevant), und jede Änderung steht im Audit-Log.
- v0.83.1
Fix: Mitarbeiter-Profil zeigte Server-Fehler
- Beim Aufruf von Mein Profil kam für manche Felder eine Server-Exception (Functions cannot be passed to Client Components).
- Ursache: Eine Renderer-Funktion wurde als Prop von der Server-Komponente an die InlineField-Client-Komponente übergeben — nicht serialisierbar in Next 14. Fix: Label-Mapping für Select-Felder läuft jetzt automatisch aus den options.
- v0.83.0
Mitarbeiter-Profil: Inline-Bearbeiten ohne Knöpfe
- Unter Mein Profil tippst du jetzt direkt auf einen Wert, um ihn zu bearbeiten. Enter speichert · Esc bricht ab · Tippen außerhalb speichert ebenfalls.
- Der frühere Bearbeiten-Button und das separate Formular sind weg. Jedes Feld wird einzeln und sofort gespeichert — kein gemeinsamer Speichern-Knopf mehr.
- Read-only-Felder zur Beschäftigung (Name, Stundenlohn, SV-Nummer, Stationszuordnung, …) bleiben unverändert nur lesbar.
- v0.82.7
Vertrags-Liste aktualisiert sich nach Löschen sofort
- Nach dem Löschen eines Entwurfs landetest du auf der Vertrags-Liste und sahst den gerade gelöschten Eintrag noch — erst ein manueller Reload entfernte ihn.
- Ursache: Next-14-RSC-Cache der Zielroute. Fix: router.refresh nach dem Navigate. Gleicher Fix auch beim Löschen einer Vertrags-Vorlage.
- v0.82.6
Vertrags-PDF: Geisterseiten wirklich weg
- Trotz 0.82.4 entstanden weiter Leerseiten am Ende — pdfkit-doc.text mit width + align (Watermark + Footer + Signatur-Block) konnte trotz lineBreak: false neue Pages anlegen, die unsere Decorate-Schleife dann auch noch dekorierte.
- Fix: Text-Breite manuell mit widthOfString berechnen und ohne width/align direkt an X/Y schreiben. Damit kann pdfkit keinen Boundary-Check mehr fehlinterpretieren.
- v0.82.5
Vertrags-PDF: Tabs in der Vorlage werden korrekt gerendert
- Vorlagentext mit Tab-Zeichen zwischen Absatz-Marker und Inhalt (z. B. `(1)\tNach § 2 Abs. 5 ...`) führte im PDF zu fehlendem oder verstümmeltem Text.
- Ursache: pdfkit mit Standard-Helvetica (AFM) hat keinen Glyph für Tab (0x09). Tabs werden jetzt vor dem Render durch normale Leerzeichen ersetzt; non-breaking spaces ebenfalls.
- v0.82.4
Vertrags-PDF: Geisterseiten am Ende endgültig weg
- Nach dem letzten inhaltlichen § fügte der PDF-Generator immer noch leere Seiten an.
- Ursache: der 72pt-DRAFT-Wasserzeichen-Text ohne lineBreak: false konnte pdfkit-intern eine neue Seite triggern, und die Decorate-Schleife arbeitete auf der wachsenden Seiten-Liste, was Endlos-Geister produzierte.
- Fix: Watermark mit lineBreak: false, doc.y/x nach jedem switchToPage zurücksetzen, Schleife arbeitet auf Snapshot der Seitenzahl.
- v0.82.3
Vertrags-PDF: Listen, Hervorhebungen und Seitenanzahl korrigiert
- Im generierten Arbeitsvertrags-PDF wurden Aufzählungen Buchstabe für Buchstabe in eigene Zeilen umgebrochen, Bold-/Italic-Markierungen erzeugten Garbage-Text und es entstanden leere Geisterseiten am Ende.
- Ursache: pdfkit mit continued-text + Font-Switches und falsche List-Item-Breiten. Inline-Markdown-Marker (**, *, `) werden in dieser Version entfernt statt formatiert; Hervorhebung kommt mit echter TrueType-Font-Einbindung später.
- Listen rendern jetzt korrekt mit Bullet-Marker + voller Textbreite. Footer wird in save/restore eingerahmt, damit pdfkit keine neuen Seiten startet.
- v0.82.2
Fix: Anlegen eines Arbeitsvertrags scheiterte mit Crash
- Beim Erstellen eines Arbeitsvertrags-Entwurfs ist der App-Container crashed (CompressionStream-Assertion im Node-zlib), Wizard zeigte „Anlegen fehlgeschlagen".
- Ursache: Der PDF-Generator nutzte einen pageAdded-Listener, der die DRAFT-Wasserzeichen- und Footer-Funktionen rekursiv triggerte. Umstellung auf pdfkit bufferPages + nachträgliches switchToPage über alle Seiten.
- Footer zeigt jetzt zusätzlich die Gesamtseitenzahl („Seite 2 / 4").
- v0.82.1
Vertrags-Wizard: Arbeitsort aus Stationsliste wählen
- Im Wizard zum neuen Arbeitsvertrag ist Arbeitsort jetzt ein Dropdown mit allen Stationen aus dem Cluster des Mitarbeiters — die Hauptstation steht vorausgewählt und ist als solche markiert.
- Für Sonderfälle (wechselnde Einsatzorte, Off-site) gibt es die Option Anderer Arbeitsort — dort kannst du den Ort wie bisher frei eintragen.
- v0.82.0
Arbeitsverträge ausstellen (Phase 2)
- Auf jedem Mitarbeiter-Detail gibt es jetzt den Button + Arbeitsvertrag. Der Wizard fragt Vorlage, Beginn/Ende, Probezeit, Wochenstunden, Lohn und Tätigkeit ab — alle Felder mit sinnvollen Defaults aus den Stammdaten.
- Beim Anlegen entsteht ein Entwurf mit DRAFT-Wasserzeichen im PDF (ENTWURF · NICHT UNTERSCHREIBEN). Solange der Vertrag im Entwurf ist, kannst du Daten anpassen und das PDF immer wieder neu öffnen.
- Mit Final ausstellen → PDF wird ein unbestempeltes PDF erzeugt und unveränderlich als Document in der Personalakte abgelegt (Zugriff nur Betreiber). Status wechselt auf Ausgestellt.
- Nach beidseitiger handschriftlicher Unterschrift markierst du den Vertrag mit Als unterzeichnet markieren (Datum für Arbeitgeber und Arbeitnehmer + optionaler Vermerk) — Status springt auf Unterzeichnet.
- Alles im neuen Menüpunkt Personal → Arbeitsverträge mit Filter nach Status. Stornieren ist jederzeit möglich (Grund-Pflicht). Body-Hash der aufgelösten §-Inhalte wird gespeichert (SHA-256, Beweismittel).
- v0.81.0
Mitarbeiter-App: eigene Stammdaten einsehen und ändern
- Unter Mein Profil siehst du jetzt alle Stammdaten, die der Betreiber über dich gespeichert hat — Beschäftigungsdaten inkl. Stundenlohn und Sollstunden, Kontaktdaten, Adresse, Familienstand, Bankverbindung, Steuer- und SV-Angaben.
- Bearbeiten-Button öffnet das Formular: Telefon, private E-Mail, Anschrift, Familienstand, Geburtsname, Staatsangehörigkeit, Bankverbindung, Steuer-ID, Steuerklasse, Kirchensteuer, Kinderfreibeträge, Krankenkasse — alles selbst änderbar.
- Beschäftigungsdaten wie Name, Geburtsdatum, SV-Nummer, Personalnummer, Stundenlohn, Eintrittsdatum, Stationszuordnung bleiben read-only — bei Änderungswunsch wendest du dich an die Stationsleitung.
- Bei Änderung sensibler Felder (Bankverbindung, Steuerklasse, Anschrift, Krankenkasse) wird dein Betreiber per Push informiert, damit die Lohnabrechnung passt. Jede Änderung steht im Audit-Log.
- v0.80.2
Vertrags-Editor: Platzhalter-Auswahl als Dropdown mit Suche
- Statt der ausgebreiteten Platzhalter-Liste gibt es jetzt einen Button Platzhalter einfügen, der ein Dropdown mit Suchfeld öffnet.
- Eingabe filtert über Name, Token oder Bereich (Mitarbeiter, Anschrift, Arbeitgeber, Cluster, Station, Vertragsdaten). Navigation mit ↑↓, Enter fügt an Cursor-Position ein, Esc schließt.
- Kompakter und übersichtlicher als die vorherige Vollansicht.
- v0.80.1
Vertrags-Editor: Platzhalter per Klick einfügen
- Im Vertrags-Vorlagen-Editor gibt es jetzt unter dem §-Inhalt einen Bereich Verfügbare Platzhalter — gruppiert nach Mitarbeiter, Anschrift, Arbeitgeber, Cluster, Station, Vertragsdaten.
- Klick auf einen Platzhalter fügt ihn direkt an der aktuellen Cursor-Position im Inhalt ein. Der Cursor steht danach hinter der Einfügung, du kannst direkt weiterschreiben.
- Tooltips zeigen Beispiel-Werte. Das bisherige {{-Autocomplete bleibt zusätzlich erhalten.
- v0.80.0
Arbeitsvertrags-Vorlagen (Phase 1)
- Unter Personal → Vertrags-Vorlagen kannst du jetzt wiederverwendbare Arbeitsvertrags-Vorlagen pflegen. Pro Vorlage: Name, Beschäftigungsart, beliebig viele §e mit Titel und Markdown-Inhalt.
- Im Editor: §e hinzufügen, löschen und per Pfeil-Buttons verschieben — die Nummerierung passt sich automatisch an. Live-Vorschau rechts mit einem Mock-Mitarbeiter zeigt sofort, wie der Vertrag wirken wird.
- Platzhalter wie {{employee.firstName}}, {{contract.start:date}} oder {{contract.grossHourlyWage:eur}} werden beim Generieren aus den Stammdaten gezogen. Tippst du im Editor {{ — bekommst du eine Liste aller verfügbaren Felder vorgeschlagen.
- NachweisG-Pflichtangaben (Parteien, Beginn, Arbeitsort, Tätigkeit, Probezeit, Vergütung, Arbeitszeit, Urlaub, Kündigung u. a.) können pro § getaggt werden. Eine Coverage-Anzeige im Header zeigt, wie viele der gesetzlich geforderten Punkte deine Vorlage abdeckt.
- Das tatsächliche Ausstellen eines konkreten Arbeitsvertrags inkl. PDF kommt in einer der nächsten Versionen — bis dahin pflegst du erst einmal deine Vorlagen.
- v0.79.2
Mobile-Zugang für Mitarbeiter aus dem Operator-Backoffice freischalten
- Auf der Mitarbeiter-Detail-Seite (Profil-Tab) gibt es jetzt einen Abschnitt Mobile-Zugang: dort die Email eingeben, der Mitarbeiter bekommt einen 7-Tage-Setup-Link gemailt und kann sich anschließend unter ma.energydesk.online mit Passwort oder Google einloggen.
- Status-Badge zeigt drei Zustände: noch nicht eingerichtet / Einladung verschickt, Setup ausstehend / aktiv. Re-Invite invalidiert den bisherigen Link.
- v0.79.0
Mitarbeiter-Login mit Google
- Mitarbeiter können sich ab sofort mit ihrem Google-Konto in der Mitarbeiter-App einloggen — kein Passwort merken mehr nötig. Voraussetzung: die Stationsleitung hat die Email-Adresse als Mobile-Login hinterlegt, und es ist genau eine Email = ein Mitarbeiter.
- Beim ersten Google-Login wird automatisch die Verknüpfung gespeichert (EmployeeOAuthAccount). Folge-Logins gehen direkt durch. Auch parallel zu Email + Passwort möglich.
- Sicherheits-/Compliance-Hinweise: Google ist als Sub-AV in der Datenschutzerklärung gelistet; eingerichtet via die bestehenden GOOGLE_OAUTH_*-Env-Vars. Multi-Cluster-Email-Auflösung im OAuth-Flow folgt in 0.79.1 (aktuell: Hinweis, das Passwort oder die Cluster-URL zu nutzen).
- Für Server-Admins: Authorized Redirect URI im Google Cloud Console ergänzen: https://ma.energydesk.online/api/me/auth/google/callback. Optional MOBILE_BASE_URL setzen, falls APP_BASE_URL auf die Operator-Domain zeigt.
- v0.78.0
Glossar im Einstellungs-Menü
- Unter Einstellungen → Glossar findest du jetzt alle im Portal verwendeten Begriffe — gruppiert nach Akteure, Beschäftigung, operativer Betrieb, Marktplatz, Billing, Technik und Recht.
- Mit Volltextsuche und Verlinkung auf verwandte Begriffe. So bleiben die Bezeichnungen für die gleichen Dinge bei dir, bei deinem Team und in unseren Mails konsistent.
- Insgesamt 83 Einträge — von „Operator" und „Cluster" bis „eAU", „auto_downgrade" und „DSFA".
- Plus: Legal-Bundle erweitert — AVV-Anlagen (Verarbeitungsverzeichnis, Sub-AV-Liste) und Vorlagen für Operatoren (Mitarbeiter-/Bewerber-Information, Geofence-Einwilligung, Betriebsvereinbarung, Verarbeitungsverzeichnis-Operator) als HTML-Dokumente unter /legal verfügbar. Plus interne Runbooks (Auskunft/Löschung/Datenpanne/Backup-Restore/Sub-AV) und der zentrale Compliance-Index LEGAL.md.
- v0.77.0
Persönliche Mitarbeiter-Dokumente mit Vertraulichkeitsstufe
- Mitarbeiter können unter Meine Dokumente eigene Unterlagen (Gesundheitszeugnis, AU-Sonderfall, Sonstiges) als PDF hochladen — max. 25 MB pro Datei.
- Jedes Dokument hat eine Vertraulichkeitsstufe: Stationsleitung + Betreiber (Standard für Gesundheitszeugnis) oder Nur Betreiber (Default für AU und Sonstiges; Stationsleitung sieht weder Inhalt noch Existenz). Schema-Feld Document.accessLevel; lib/documents/visibility.ts-Sichtbarkeits-Filter im Operator-Backoffice folgt in 0.77.1.
- Compliance-Hinweise klar im UI: AU nur in Sonderfällen wegen eAU-Pflicht 2023; Führungszeugnis ausdrücklich nicht in der App, bleibt Sichtvermerk-Prozess offline.
- v0.76.0
Nachrichten zwischen Mitarbeiter und Stationsleitung
- Mitarbeiter können über die Mitarbeiter-App Nachrichten an ihre Stationsleitung senden — Betreff + Text, optional auch an den Betreiber. Status-Modell: offen → in Bearbeitung → erledigt. Mehrere Antworten möglich; jeder Antwort-Beitrag aktualisiert das Ticket.
- Operator-Backoffice: neue Inbox unter Mitarbeiter-Nachrichten zeigt alle Tickets gefiltert nach Status. Detailseite mit Verlauf + Antwort-Form + Status-Wechsel (auch direkt Antwort + erledigen in einem Klick).
- Bewusst Ticket-Modell, kein Chat: asynchron, mit klarem Status, Audit-Log für alle Aktionen. Retention-Frist (typisch 2 Jahre nach Erledigung) wird in einem späteren Patch ergänzt.
- v0.75.0
Eigener Stundenzettel am Handy
- Im Mitarbeiter-Bereich gibt es jetzt unter Stundenzettel die eigene Monatsabrechnung: Plan / Ist / Differenz oben, darunter Tagesübersicht mit Wochentag, Pause und Netto-Stunden.
- Monatsnavigation mit Vor-/Nächster-Monat-Buttons; aktueller Monat wird als Default geladen. Pausen-Modus (gestempelt oder pauschal) wird transparent angezeigt.
- Read-only — Korrekturen läufst du weiter über die Stationsleitung oder das Tablet.
- v0.74.0
Persönliche Aufgaben am Handy ansehen
- Im Mitarbeiter-Bereich gibt es jetzt unter Meine Aufgaben eine Übersicht der dir persönlich zugewiesenen Aufgaben — getrennt in überfällig, offen und zuletzt erledigt. Station-Aufgaben (für das ganze Team) bleiben am Stationstablet, weil sie typischerweise dort erledigt werden.
- Die Übersicht ist in dieser Phase read-only: du siehst Titel, Beschreibung, Fälligkeit und welche Confirmation-Anforderungen die Aufgabe hat (Foto, Unterschrift, Checkliste, externes Portal). Erledigt wird weiter am Tablet — die Karte sagt dir transparent warum.
- v0.73.0
Belehrungen am Handy abarbeiten
- Im Mitarbeiter-Bereich kannst du jetzt unter Belehrungen offene Pflicht-Belehrungen direkt vom Handy aus abschließen: PDF lesen, Rechtstext bestätigen, mit dem Finger unterschreiben, mit deinem Mobile-Passwort bestätigen — fertig.
- Der erzeugte signierte PDF-Datensatz ist identisch zum Tablet-Pfad (gleicher Inhalt, gleiche Pfade, gleicher Audit-Eintrag). Im Audit wird der Mobile-Ursprung als source=mobile markiert.
- Übersicht zeigt drei Blöcke: überfällig, offen, zuletzt erledigt — mit Topic-Label und Fälligkeit. Funktioniert auch ohne Tablet, falls die Belehrung unterwegs gemacht werden soll.
- v0.72.0
Mitarbeiter-App: 3-Tage-Toggle, Gesamt-Dienstplan, Profilbild-Selfservice, Verfügbarkeits-Hinweis
- Dienstplan auf dem Handy hat zwei neue Toggles: 3 Tage vs. 7 Tage Zeitraum, sowie eine Auswahl zwischen den eigenen Schichten und allen Schichten der Stationen, an denen du arbeitest (Hauptstation + Springer-Berechtigungen).
- Verfügbarkeits-Wochenmuster: pro Eintrag kannst du jetzt einen Freitext-Hinweis dazuschreiben (z. B. nur Spätschicht oder nur wenn die Bahn fährt). Das landet im Datensatz und wird in einer späteren Phase im Schichtplaner sichtbar.
- Eigenes Profilbild hochladen: über /m/profile setzt du selbst dein Avatar-Bild (JPG/PNG/WebP, max. 5 MB). Wird in Mitarbeiter-Listen und im Schichtplan angezeigt.
- Stammdaten-Übersicht im Profil: Name, Email, Cluster, Hauptstation — read-only; Änderungen bleiben weiterhin bei der Stationsleitung.
- v0.71.2
Mitarbeiter-Login: Cluster-Picker bei mehrfach hinterlegter Email
- Wenn ein Mitarbeiter mit derselben Email an mehreren Clustern arbeitet (z. B. Aushilfe bei zwei Betreibern), zeigt der Login nach Email + Passwort eine Auswahl der passenden Cluster. Ein Klick wählt den Cluster und schließt den Login ab.
- Der Picker erscheint nur, wenn an mehreren Clustern dieselbe Email UND dasselbe Passwort hinterlegt sind — in der Praxis sehr selten, weil die Mitarbeiter pro Cluster ein eigenes Passwort setzen.
- Bei Cluster-spezifischen Login-URLs (ma.energydesk.online/<cluster>) bleibt der Picker aus — der Cluster steht bereits aus der URL fest.
- v0.71.1
Cluster-Login mit eigener URL und Branding
- Jeder Cluster hat jetzt seine eigene Mitarbeiter-Anlauf-URL: ma.energydesk.online/<cluster-slug> — z. B. ma.energydesk.online/momax-gmbh. Auf dieser Seite siehst du den Cluster-Namen, das Cluster-Logo (falls hinterlegt) und die passende Marken-Farbpalette.
- Wenn du dich über eine Cluster-URL anmeldest, prüft das System, dass deine Email tatsächlich zu diesem Cluster gehört — falsche Cluster-Email + richtiges Passwort wird abgewiesen mit „Email oder Passwort stimmt nicht“ (kein User-Enumeration).
- Unbekannte URLs auf ma.energydesk.online (z. B. Tippfehler im Cluster-Namen) leiten automatisch zurück auf das generische Login.
- Die generische URL ma.energydesk.online (ohne Cluster-Slug) bleibt parallel verfügbar und ermittelt den Cluster aus der Email.
- v0.71.0
Mitarbeiter-App unter eigener Subdomain ma.energydesk.online
- Die Mitarbeiter-App ist ab sofort unter https://ma.energydesk.online erreichbar — eigene Anlauf-Stelle für Mitarbeiter, getrennt von der Betreiber-Oberfläche. Beim Aufruf der Subdomain landest du direkt im Mitarbeiter-Login (statt im Betreiber-Marketing).
- Operator-, Admin- und Tablet-Pfade auf der Subdomain werden automatisch auf die Hauptdomain energydesk.online weitergeleitet — saubere Trennung, keine versehentlich vermischten Sessions.
- Bestehende /m/...-URLs auf der Hauptdomain bleiben vorerst weiterhin funktionieren; die Subdomain ist die neue empfohlene Adresse.
- Cluster-spezifische Login-URLs (ma.energydesk.online/<clusterslug>) leiten in dieser Phase auf das generische Mitarbeiter-Login. Branding pro Cluster folgt in 0.71.1.
- v0.70.0
Cluster-Slug: plattform-weit eindeutig + automatisch beim Anlegen
- Jeder Cluster hat ab sofort einen plattform-weit eindeutigen URL-Slug (vorher war er nur pro Betreiber eindeutig und konnte leer bleiben). Beim Anlegen eines neuen Clusters wird der Slug automatisch aus dem Namen generiert (z. B. „Shell Bayern Nord“ wird zu „shell-bayern-nord“). Du kannst ihn unter Cluster-Site-Settings ändern.
- Bestandscluster ohne Slug haben bei der Migration einen aus ihrem Namen erhalten — wenn dabei zwei Cluster auf denselben Slug fielen, wurde der jüngere mit einem Suffix (z. B. „-2“) versehen.
- Reservierte Slugs wie login, api, admin oder m sind ab sofort blockiert und können nicht gewählt werden. Format: 3–40 Zeichen, Kleinbuchstaben, Ziffern und Bindestriche.
- Hintergrund: Das ist die Grundlage für die kommende Mitarbeiter-App auf ma.energydesk.online/<clusterslug> (0.71.0).
- v0.69.0
Mitarbeiter sind jetzt fest an einen Cluster gebunden
- Jeder Mitarbeiter gehört von nun an genau zu einem Cluster (abgeleitet aus seiner Hauptstation). Springer-Berechtigungen können nur noch innerhalb desselben Clusters vergeben werden — vorher war es theoretisch möglich, einen Mitarbeiter cluster-übergreifend einzusetzen. Bestandsdaten wurden bei der Migration automatisch korrekt eingetragen (kein Bereinigungsbedarf in der Praxis).
- Wenn du im Mitarbeiter-Editor die Hauptstation auf eine Station in einem anderen Cluster ändern möchtest, kommt jetzt ein klarer Hinweis: das ist absichtlich blockiert, bitte den Mitarbeiter im Zielcluster neu anlegen.
- Hintergrund: Das ist die Grundlage für die kommende Mitarbeiter-App auf eigener Subdomain (ma.energydesk.online), damit ein Mitarbeiter dort ausschließlich Daten seines Clusters sieht.
- v0.68.5
Cluster-Site: Tab-Titel + Footer-Fixes, Bewerber-Onboarding immer sichtbar
- Browser-Tab zeigt jetzt den Cluster-Namen (z. B. „MOMAX GmbH“) statt überall „Energydesk“. Unterseiten ergänzen einen Präfix (Impressum · MOMAX GmbH, Karriere · MOMAX GmbH, …). Gilt sowohl unter /s/<op>/<cluster> als auch über Custom-Domains.
- Footer-Bug behoben: Auf Custom-Domains (z. B. momax-gmbh.de) waren Impressum- und Datenschutz-Links nach dem letzten Aufräumen ganz verschwunden — sie sind jetzt wieder rechts unten sichtbar und verweisen auf /impressum bzw. /datenschutz der jeweiligen Domain.
- Bewerber-Detail: „Einstellen & Onboarding starten“ wird jetzt für alle Status angezeigt, auch wenn der Bewerber bereits den Status „Eingestellt“ hat — bis dahin war der Bereich nach dem Hire sofort weg, sobald die Seite neu geladen wurde.
- v0.68.4
Mitarbeiter-Stammdaten: Speichern funktioniert wieder
- Beim Eintragen eines Geburtsdatums (oder anderer Datums-Felder) in der Stammdaten-Maske lehnte Prisma den Wert ab („Expected ISO-8601 DateTime“), was im Frontend als „Netzwerkfehler“ ankam. Die API konvertiert Datums-Strings jetzt korrekt in Date-Objekte vor dem DB-Update.
- v0.68.3
Bewerber-Detail: Anhang-Preview verdeckt andere Cards nicht mehr
- Beim Hover auf „Anhang öffnen“ wurde die PDF-Vorschau zwischen den folgenden Karten (Nachricht, Status, Interne Notizen) eingeschoben statt als Overlay darüber zu liegen. Jetzt schwebt sie als fixiertes Overlay neben dem Button und passt sich am Viewport-Rand an.
- v0.68.2
Hotfix: Dienstplan-Crash beim Aufruf der Tages-Ansicht behoben
- 0.68.0 hat die Dienstplan-Tages-Ansicht (/operator/shifts?…) crashen lassen — Ursache war ein onClick-Handler an einer Tabellenzelle, der in einer Server-Komponente nicht erlaubt ist. Ist jetzt entfernt; die Schicht-Zeile bleibt klickbar, der „Nicht erschienen“-Button stoppt die Klick-Weiterleitung selbst.
- v0.68.1
Cluster-Site: Impressum mittig, Footer ohne „Links“-Überschrift
- Impressum (Cluster- und Operator-Variante) ist jetzt mittig ausgerichtet — Überschrift, Trenn-Strich und Text.
- Footer: Die Überschrift „Links“ über den Pflicht-Links Impressum/Datenschutz ist entfernt, weil sie überflüssig war.
- v0.68.0
Schichten anklickbar, Stempel-Korrektur, Audit-Log, Zeitzonen-Fixes
- Dienstplan: Jede Schichtzeile in der Tages-Übersicht und jede Schichtkachel in der Wochen-Ansicht öffnet beim Klick einen Dialog. Für laufende und abgeschlossene Schichten lassen sich Einstempel- und Ausstempelzeit nachträglich eintragen oder korrigieren, mit optionalem Grund. Jeder „Jetzt“-Knopf stempelt sofort, jede Korrektur landet im Audit-Log.
- Audit-Log: Jeder Stempelvorgang (Mitarbeiter am Tablet, Mitarbeiter mobil, Korrektur durch Stationsleitung oder Betreiber, Korrekturfreigabe, No-Show, Schicht-Verschiebung, Schicht-Löschung) wird jetzt mit Konto, IP, Browser/Tablet-Label dauerhaft protokolliert. Operator-Aktionen wurden bisher als „system“ gespeichert — jetzt wird das jeweilige Operator-Konto korrekt mitgeführt.
- Zeitzonen-Bug behoben: In Dienstplan-Tabelle, Wochen-Grid, Stundenzetteln und Korrektur-Listen wurden Stempelzeiten teils ohne Europe/Berlin-Konvertierung angezeigt (z. B. 05:23 statt 07:23 nach Sommerzeit-Umstellung). Alle Zeit-Anzeigen rechnen jetzt zuverlässig auf Berliner Wanduhrzeit, ebenso die Eingabefelder für Schichtbearbeitung und Korrekturen.
- Bewerber-Detailseite: Telefonnummer kann nachträglich bearbeitet werden (Inline-Editor). Änderungen landen im Audit-Log.
- Stellenanzeigen-Editor: Tooltip mit „i“-Icon erklärt jetzt, was „Im Indeed-Feed listen“ technisch bewirkt (XML-Feed, Crawl-Verhalten, Verhältnis zu „Aktiv“).
- Tablet verbinden: Gelöschte Stationen werden nicht mehr im Pairing-Dropdown angeboten. Pairing-API lehnt Pairing-Versuche auf gelöschte Stationen ab.
- v0.67.1
Stationen-Karte: Auto-Geocoding von Adressen via OpenStreetMap
- Stationen ohne Shell-Stationsfinder-URL (z. B. Stationen ohne OBN oder mit anderen Marken) konnten bisher keine Lat/Lon bekommen — und tauchten deshalb nicht auf der Cluster-Karte auf. Neu: beim Speichern der Adresse wird automatisch ein Geocoding via Nominatim (OpenStreetMap, kostenfrei) ausgeführt, sobald lat/lon noch leer sind.
- Zusätzlich neuer Button „Koordinaten aus Adresse holen” pro Station im Site-Editor — damit lassen sich bestehende Stationen, die schon eine Adresse haben, nachträglich auf die Karte bringen.
- v0.67.0
Stationen-Karte auf der Cluster-Startseite
- Unter „Unsere Stationen” zeigt jetzt eine interaktive Karte alle Stationen des Clusters auf einen Blick. Click auf einen Pin öffnet ein kleines Popup mit Stationsname und Adresse. Auto-Zoom fängt alle Pins gleichzeitig ein.
- Implementiert mit Leaflet + OpenStreetMap-Tiles (kostenfrei, kein API-Key, keine Cloud-Anmeldung nötig). Stationen ohne Koordinaten erscheinen nicht in der Karte. Wenn keine Station Koordinaten hat, wird die Karte ganz weggelassen.
- v0.66.7
Shell-Import: Felder erscheinen sofort ohne Seiten-Neuladen
- Nach 'Daten übernehmen' und 'Shell-Daten neu laden' werden die Form-Felder (Anzeigename, Adresse, Öffnungszeiten, Services, Telefon) jetzt direkt mit den frisch importierten Werten gefüllt. Vorher musste man die Seite manuell neu laden, weil die Formular-States nur beim ersten Page-Load aus den Props initialisiert wurden.
- v0.66.6
Shell-Import überschreibt jetzt auch manuell editierte Felder
- Wenn du auf 'Daten übernehmen' klickst, kamen plötzlich keine Daten mehr an, obwohl die Shell-Antwort sauber gelesen wurde. Ursache: alle Felder, die du vorher mal manuell editiert hattest, waren als operator-overrides markiert und der Import respektierte das stillschweigend. Beim expliziten 'Daten übernehmen' überschreiben wir jetzt auch diese Felder und entfernen die Override-Markierung — du hast ja gerade aktiv um frische Stationsfinder-Daten gebeten.
- v0.66.5
Shell-Stationsfinder-Import: angepasstes JSON-Schema
- Shell hat das JSON-Schema auf der Stationsfinder-Seite umgebaut: das GasStation-Objekt steckt jetzt verschachtelt unter Organization.location, statt auf Top-Level. Unser Parser sucht den GasStation-Knoten jetzt rekursiv — der Import läuft wieder durch.
- Zusätzlich: Öffnungszeiten werden jetzt korrekt übernommen, wenn Shell mehrere Wochentage in einem Eintrag bündelt (z. B. [„Monday”, „Tuesday”, …]). Vorher gingen Di–Fr verloren, weil wir nur den ersten Tag aus dem Array gelesen haben.
- v0.66.4
Dienstplan: ← / → blättert wochenweise
- Auf der Wochenansicht (Tagesraster) und der Mitarbeiteransicht navigierst du jetzt mit den Pfeiltasten links/rechts durch die Wochen — kein Klick auf den Vorwoche/Nächste-Woche-Button mehr nötig. Pfeiltasten in Eingabefeldern, Selects und Textareas funktionieren normal weiter.
- v0.66.3
Karriere-CTA an Über-uns-Optik angeglichen
- Der Karriere-Hinweis-Block auf der Cluster-Startseite hatte noch das alte gelbe Banner-Layout. Jetzt: weiße Fläche, zentrierte Überschrift „Offene Stellen” mit rotem Akzent-Strich und zentriertem roten Button — gleicher Aufbau wie die „Über uns”- und „Unsere Stationen”-Sektionen.
- v0.66.2
Über-uns-Sektion: Operator-Fallback wieder aktiv
- Die „Über uns”-Sektion auf der Cluster-Startseite blieb unsichtbar, wenn der Operator den Text auf Operator-Ebene gepflegt hatte, aber nicht zusätzlich pro Cluster. Der mergeSiteContext propagierte siteAboutText gar nicht — jetzt: Cluster-Wert gewinnt, sonst Operator-Wert (gleiche Mechanik wie Headline/Logo/etc.).
- v0.66.1
Bewerbungs-Button wieder sichtbar + Operator-Datenleck geschlossen
- Bewerbungs-Seite auf der Custom-Domain (z. B. momax-gmbh.de/bewerben): der Abschicken-Button war unsichtbar, weil er auf eine CSS-Variable (--site-primary) zeigte, die im Custom-Domain-Layout nie gesetzt wird. Button und Buttons auf der Danke-Seite nutzen jetzt die etablierte rote Marken-Farbe statt der Variable.
- Sicherheits-Fix: der Bewerbungs-Form-Refactor aus 0.66.0 hatte den vollständigen Prisma-Operator-Datensatz (inkl. passwordHash und weiterer sensibler Felder) als RSC-Payload im HTML der Bewerbungs- und Karriere-Seite ausgeliefert. Form und Job-Card sind jetzt isolierte Client-Mini-Komponenten — Header/Hero/Footer rendern serverseitig und bekommen nur die gefilterten, nicht-sensiblen Felder.
- v0.66.0
Cluster-Site, Bewerber-Flow & Stundenzettel-Schliff
- Bewerbungs-Formular schickt jetzt clientseitig + landet zuverlässig auf der Danke-Seite (vorher blieb der Bewerber bei manchen Browsern still auf dem Formular hängen, obwohl die Bewerbung im Hintergrund schon raus war).
- Auf der Bewerbungs-Seite wird der „Jetzt bewerben”-Button im Header ausgeblendet — der war dort doppelt.
- Karriere-Seite: jede Stelle hat jetzt einen „Details”-Button neben „Jetzt bewerben”. Klick blendet Beschreibung, Anforderungen und „Was wir bieten” inline aus.
- Cluster-Startseite: „Über uns”-Sektion bekommt eine eigene Überschrift und einen Anker in der Navi, sobald Text gepflegt ist.
- Karriere-Seite-Layout angeglichen an „Über uns” und „Unsere Stationen” — gleiche Überschriften-Optik und roter Akzent-Strich.
- Stationen-Import aus dem Shell-Stationsfinder: Shell hat die alte Such-URL durch 404 ersetzt — wir nehmen jetzt die direkt vom Operator gepastete Stations-URL und füllen Adresse, Öffnungszeiten, Services und Telefon daraus.
- Bewerbungs-Liste: Click auf eine Zeile öffnet direkt die Details (wie bei Mitarbeiter-Liste); separater „Details”-Link entfällt.
- Bewerbungs-Detail: „Lebenslauf” → „Anhang”. Hover über den Anhang-Button zeigt eine Inline-PDF-Vorschau, Click öffnet das PDF in einem neuen Tab. Ein separater „Herunterladen”-Link bleibt für den klassischen Download daneben stehen.
- Onboarding-Formular (Self-Service-Stammdaten via Einmal-Token-Link): zusätzlich Schulabschluss, Berufsausbildung, AGS/Gemeindeschlüssel, Finanzamt-Nummer, VWL-Block und Vorbeschäftigungs-Liste — der Mitarbeiter kann jetzt das komplette DATEV-Stammdatenblatt selbst ausfüllen.
- Stundenzettel: Mitarbeiter-Auswahl lädt sofort beim Wechsel (kein extra „Anzeigen”-Klick). Zusätzlich ‹/›-Buttons, um durch die Mitarbeiter zu blättern. Jahr- und Monatswechsel ebenfalls auto-load.
- v0.65.4
Custom-Domain-Routing: Middleware nutzt internen Loopback statt HTTPS-Hop
- Cluster-Sites unter einer Custom-Domain (z. B. momax-gmbh.de) landeten plötzlich wieder auf der Energydesk-Anmeldeseite. Ursache war die Host-Map-Abfrage in der Edge-Middleware, die als HTTPS-Round-Trip über die eigene Custom-Domain lief — der Edge-Runtime-Fetch im App-Container scheiterte daran mit `fetch failed`. Middleware fragt die Map jetzt direkt über http://localhost:3000 ab (per INTERNAL_BASE_URL-Env-Var anpassbar). Cluster-Seiten auf Custom-Domain sind wieder erreichbar.
- v0.65.3
Dienstplan: gelöschte Stationen verschwinden aus der Auswahl
- Im Dienstplan tauchten in der Station-Auswahl (Heute und Mitarbeiteransicht) auch bereits gelöschte Stationen auf. Beide Seiten filtern jetzt zusätzlich nach `deletedAt: null`, so wie die Wochenansicht es schon tat.
- v0.65.2
Dienstplan-Tooltip: bleibt sticky offen statt Hover-Tracking
- Das Hover-Tracking aus 0.65.1 war in der Praxis weiter fragil — kleine Mausbewegungen ließen das Tooltip in der Wochenansicht ungewollt verschwinden. Neu: der Tooltip öffnet beim Hover und bleibt dann sticky offen, bis du außerhalb klickst, ein anderes Schicht-Feld anvisierst, Escape drückst oder einen Mitarbeiter zuweist. Im Tooltip-Header ist zusätzlich ein ✕-Button zum manuellen Schließen.
- v0.65.1
Dienstplan-Tooltip: bleibt erhalten, wenn Maus drüber wandert
- Im Hover-Tooltip der Wochenansicht konnte man die vorgeschlagenen Mitarbeiter nicht anklicken, weil der Tooltip beim Mausbewegen verschwand — Ursache war eine 12px-Lücke zwischen Schicht-Balken und Tooltip, in der der Cursor weder das eine noch das andere traf. Tooltip steht jetzt direkt am Balken an, eine unsichtbare „Brücke” am unteren Tooltip-Rand fängt den Cursor während des Übergangs ab und der Auto-Schließ-Delay wurde leicht erhöht.
- v0.65.0
Dienstplan-Schliff, DATEV-Stammdaten & Onboarding-Selfservice
- Mitarbeiter-Liste: Click auf eine Zeile öffnet jetzt direkt den Bearbeiten-Dialog — der separate „Bearbeiten”-Link fällt weg.
- Regelarbeitsstunden lassen sich jetzt wahlweise pro Woche oder pro Monat eintragen (Toggle neben dem Eingabefeld).
- Reiter im Mitarbeiter-Detail neu sortiert: „Profil” (Bild, Name, Station, PIN), „Stammdaten” (alle Lohnabrechnungs-Felder im DATEV-Personalfragebogen-Layout), „Lohnabrechnung” (PDFs vom Steuerberater), Belehrungen, Aufgaben.
- Neuer Stammdaten-Tab deckt den kompletten DATEV-Personalfragebogen ab: Befristung, Personengruppe, Kostenstelle, Schulabschluss, VWL, Arbeitspapier-Checkliste, Vorbeschäftigung im laufenden Jahr und mehrere Lohnarten pro Mitarbeiter.
- Ein-Klick-Export der Personalstammdaten als DATEV-kompatible CSV und als druckfertiger PDF-Personalfragebogen — direkt im Stammdaten-Tab.
- Neu im Stammdaten-Tab: Onboarding-Einladung. Operator schickt dem Mitarbeiter einen Einmal-Token-Link (14 Tage gültig); der Mitarbeiter füllt sein Stammdatenblatt selbst online aus.
- Bewerber-Detail: Button „Mitarbeiter anlegen + Onboarding-Link senden” — legt den Employee an, setzt den Status auf „Eingestellt” und mailt dem Bewerber direkt das Stammdaten-Formular.
- Dienstplan umbenannt: Seite heißt jetzt „Dienstplan” (statt „Schichten”), Reiter heißen „Heute”, „Wochenansicht” (vorher „Tagesraster”) und „Mitarbeiteransicht” (vorher „Wochenplan”).
- Wochenansicht (vormals Tagesraster): hover-Tooltip zeigt jetzt direkt die verfügbaren Mitarbeiter mit Wochen-/Monatsstunden und Auslastungs-Hinweisen — ein Click weist den Mitarbeiter zu, ohne extra Speichern-Schritt.
- Wochenansicht / Mitarbeiteransicht: Schichten werden sofort für die erste Station angezeigt, auch wenn die URL noch keine Station enthält (automatischer Redirect auf die Standard-Station).
- Menüpunkt „Offene Schichten” entfernt — offene Schichten erscheinen weiter im Dienstplan; die alte URL leitet auf den neuen Dienstplan weiter.
- v0.64.3
Custom-Domains: www-Variante funktioniert jetzt auch
- Aufrufe über die www-Variante einer Custom-Domain (z. B. www.momax-gmbh.de) zeigten die Energydesk-Landingpage statt der Cluster-Seite, weil in der Host-Map nur die Apex-Domain hinterlegt ist. Middleware stripped jetzt das www-Präfix beim Lookup; der nginx-Block deckt ohnehin schon beide Varianten ab, somit reicht der Apex-Eintrag im Cluster-Setting.
- v0.64.2
Custom-Domain-Routing: Hydration-Fix
- Beim Aufruf einer Custom-Domain wie momax-gmbh.de wurde im Browser unter Umständen die Energydesk-Landingpage angezeigt, obwohl der Server bereits die Cluster-Seite ausgeliefert hatte (Next.js-Hydration sprang auf das URL-Pfad-Route-Tree zurück). Routing umgebaut: Middleware setzt jetzt nur noch einen Request-Header, die Root-Pfade /, /karriere, /impressum, /datenschutz, /bewerben und /bewerben/danke rendern den Cluster-Inhalt direkt — keine URL-Diskrepanz mehr.
- v0.64.1
Custom-Domains: HTTPS-Auslieferung am Server aktiviert
- Cluster mit gesetzter Custom-Domain bekommen jetzt automatisch ein Let's-Encrypt-Zertifikat — typischerweise innerhalb von 5 Minuten nach dem ersten ‚DNS jetzt prüfen‘ mit grünem Ergebnis. nginx wird vom neuen Sync-Job um einen passenden Site-Block ergänzt und automatisch nachgeladen.
- v0.64.0
Custom-Domains: Cluster-Site liefert auf eigener Domain aus
- Cluster mit eingetragener Custom-Domain (z. B. momax.de) liefern jetzt auf dieser Domain ihre Site aus — sobald der DNS-Eintrag steht. Die Anfrage wird transparent auf /s/<operator>/<cluster> umgeschrieben; in der Browser-Adressleiste bleibt die Kunden-Domain stehen.
- Im Cluster-Einstellungs-Dialog gibt es jetzt einen ‚DNS jetzt prüfen‘-Button — wir lösen den A-Record und CNAME live auf und sagen sofort, ob er auf uns zeigt.
- HTTPS-Zertifikat-Ausstellung für die Custom-Domain folgt im nächsten Schritt (Server-Konfiguration). Aktuell läuft die Custom-Domain bis dahin nur via HTTP — der DNS-Check zeigt aber schon korrekt grün, sobald der Eintrag aktiv ist.
- v0.63.0
Eigene Site-Einstellungen pro Cluster, eigene Kunden-Domain möglich
- Jeder Cluster hat jetzt eine eigene Detailseite unter Cluster › Einstellungen mit allen Site-Parametern: Anzeigename, Logo, Hero-Bild, Kontakt, Karriere-Pitch, Hero-Pills, CTA, Social-Links, Impressum, Datenschutz, Primärfarbe und Copyright. Bestands-Cluster bekommen alle bisherigen Operator-Werte einmalig kopiert, damit nichts plötzlich leer ist — danach lässt sich pro Cluster individuell pflegen.
- Cluster-Liste zeigt pro Cluster den Site-Status (öffentlich, nicht öffentlich, ohne Slug) und verlinkt direkt zur Einstellungs-Seite.
- Cluster können eine eigene Domain (z. B. momax.de oder www.momax.de) hinterlegen. Im Cluster-Einstellungs-Dialog stehen die DNS-Anweisungen (A-Record für Apex, CNAME für www). Die eigentliche Auslieferung über die Custom-Domain folgt im nächsten Release — das Feld kann jetzt schon gesetzt werden.
- Operator-Startseite (/s/<slug>) leitet automatisch auf den Cluster weiter, wenn der Operator nur einen öffentlichen Cluster hat. Bei mehreren Clustern bleibt die Übersicht.
- Impressum und Datenschutz gibt es jetzt auch pro Cluster (/s/<op>/<cluster>/impressum und /datenschutz) — Cluster-Text gewinnt, Operator-Text dient als Fallback.
- v0.62.0
Site-Builder: aufgeräumter Header, Impressum/Datenschutz live, Jobs direkt auf der Startseite, Shell-Daten je Station nachladen
- Öffentliche Website: Der weiße Balken im Header ist weg. Standorte, Karriere/Jobs und Impressum stehen jetzt zusammen in der gelben Top-Leiste, und der ‚Jetzt bewerben‘-Button steht auf gleicher Höhe wie der Firmenname.
- Impressum und Datenschutz erscheinen jetzt als eigene öffentliche Seiten — Inhalte kommen aus deinen Site-Einstellungen, mit Fallback-Text wenn noch nichts hinterlegt ist.
- Auf der Operator-Startseite (/s/<dein-slug>) erscheint jetzt der Karriere-Block auch mit Job-Karten und direktem ‚Jetzt bewerben‘-Button — vorher war das nur die Pitch-Überschrift ohne Aktionsmöglichkeit.
- Im Site-Editor zeigt jetzt ein Warn-Banner oben, warum Stationen oder Jobs noch nicht öffentlich sichtbar sind (Cluster nicht öffentlich, Slug fehlt, etc.) — mit Sprung-Button zum passenden Tab.
- Shell-Stationsfinder-Import läuft jetzt pro Station und legt keine neue Station mehr an. In jeder Station-Karte kannst du eine find.shell.com-URL hinterlegen und die Daten (OBN, Adresse, Öffnungszeiten, Services) direkt in diese Station übernehmen.
- v0.61.0
Aufgeräumte Menüleiste, Profilbilder in Listen und reicher Mitarbeiter-Tooltip im Schichtplan
- Das Top-Menü hat nur noch fünf Punkte: Übersicht, Personal, Zeit & Schicht, Aufgaben, Inhalte. Stellen, Bewerbungen, Adressbuch sitzen jetzt unter Personal; Stundenzettel/Lohn unter Zeit & Schicht; Dokumente, Schwarzes Brett, Website und Marktplatz unter Inhalte. Tagesabschlüsse und Reports liegen unter Übersicht.
- Die Mitarbeiter-Liste zeigt das Profilbild als Avatar links vor dem Namen — fehlt eines, erscheinen die Initialen in einem Kreis.
- Schichtplan (Heute · Tagesraster · Wochenplan): Beim Hover über einen Mitarbeiter bzw. eine Schicht öffnet sich ein Tooltip mit Profilbild, Wochen- und Monatsstunden (inkl. Soll), dem nächsten Urlaub und dem Geburtstag (mit Hinweis ‚in X Tagen‘, wenn es nah ist).
- v0.60.0
Mitarbeiter-Stammdatenblatt für die Lohnabrechnung + Profilbild
- Schichtplan: Vorwoche / Diese Woche / Nächste Woche stehen jetzt auf allen drei Ansichten an gleicher Stelle — rechts neben dem Ansichts-Switch.
- Mitarbeiter-Karte: neuer Tab ‚Lohnabrechnung‘ mit allen Feldern, die ein typischer Personalfragebogen für ein externes Lohnbüro abfragt — persönliche Daten (Geburtsdatum, Geburtsort, Nationalität, Familienstand, …), Adresse, Telefon, private E-Mail, Steuer (IdNr., Klasse, Konfession, Kinderfreibetrag), Sozialversicherung (SV-Nummer, Krankenkasse), Bank (IBAN/BIC), Eintritts- und Austrittsdatum, Berufsbezeichnung, Schwerbehindert-Kennzeichen.
- Im Stammdaten-Tab kannst du jetzt ein Profilbild hochladen (JPG/PNG/WebP, max. 2 MB). Wird in Mitarbeiter-Listen und auf der Detailseite als Avatar angezeigt.
- v0.59.0
Schichtplan: einheitlicher Ansichts-Switch, Auto-Filter und Schicht-Dauer
- Auf allen drei Schichtplan-Seiten (Heute · Tagesraster · Wochenplan) steht jetzt der gleiche Ansichts-Switch direkt unter der Überschrift — die Station-Auswahl bleibt beim Wechsel erhalten.
- Die Heute-Liste hat keinen ‚Anzeigen‘-Button mehr. Station oder Datum wechseln genügt — die Liste lädt automatisch.
- Im Tagesraster zeigt jede Schicht-Kachel jetzt nach der Start–End-Zeit auch die Dauer in Stunden (z. B. ‚07:00–15:00 · 8 h‘).
- v0.58.1
Schnellerer Deploy-Build (npm- und Next.js-Cache)
- Interne Verbesserung am Docker-Build des App-Containers: npm- und Next.js-Caches überleben jetzt zwischen Builds, und die Layer-Reihenfolge ist feiner — `prisma generate` läuft nur noch, wenn sich das Schema ändert. Deployments werden dadurch spürbar schneller, ohne dass sich für dich am Ergebnis etwas ändert.
- v0.58.0
Schichtplan-Komfort: Auto-Filter, Drag-Drop, Stunden-Stats und Tooltip
- Auf den Schichtplan-Seiten (Tagesraster + Wochenplan) genügt jetzt das Wechseln der Station im Dropdown — kein ‚Anzeigen‘-Klick mehr.
- Im Mitarbeiter-Picker-Modal beim Klick auf eine Schicht warnt eine gelbe Banner, sobald die Schicht den Mitarbeiter über sein Wochensoll bringt. Zuweisen bleibt möglich.
- Im Wochenplan stehen pro Mitarbeiter jetzt direkt unter dem Namen die Plan-Stunden der Woche (mit Soll-Abgleich, gelb wenn überschritten) und die Plan-Stunden des Monats.
- Schichten lassen sich per Drag & Drop auf eine andere Mitarbeiter-Zeile oder einen anderen Tag ziehen — die Zeit-of-Day bleibt erhalten, Mitarbeiter und Datum werden serverseitig validiert (Konflikt-Warnungen + Sollstunden).
- Hover über die Mitarbeiter-Zelle blendet ein Tooltip mit Anstellungsart, Pausenmodus, Wochen-/Monats-Plan + Soll und Jahresurlaub ein.
- v0.57.0
Regelarbeitsstunden pflegen + Stunden-Auslastung im Zuweisungs-Modal
- In den Mitarbeiter-Stammdaten gibt es jetzt ein Feld ‚Regelarbeitsstunden / Woche‘ (0–60 h, Viertelstunden-Schritte). Leer = kein festes Pensum (z. B. Aushilfe).
- Beim Klick auf eine Schicht im Tagesraster zeigt das Mitarbeiter-Picker-Modal pro Person die in dieser Woche bereits verplanten Stunden, das Wochensoll und die verplanten Stunden im Kalendermonat. Übersteigt die geplante Auslastung das Wochensoll, erscheint ein ‚über‘-Hinweis.
- Berechnung schließt die gerade in Bearbeitung befindliche Schicht aus — du siehst also den Stand vor der Zuweisung. Über-Mitternacht-Schichten werden anteilig den jeweiligen Wochen/Monaten zugerechnet.
- v0.56.0
Default-Hero-Bild + Stations-Import direkt per Shell-URL
- Auf der öffentlichen Website erscheint jetzt automatisch ein Default-Hero-Bild (Tankstelle bei Nacht), solange du noch kein eigenes hochgeladen hast.
- Unter ‚Website → Stationen‘ gibt es einen neuen Block ‚Aus Shell-Stationsfinder importieren‘: Cluster wählen, Shell-Stationsfinder-URL einfügen, fertig. OBN, Adresse, Öffnungszeiten und Services werden automatisch übernommen.
- v0.55.0
Offene Schichten im Mitarbeiter-Wochenplan + Deploy-Fix für 0.54.0
- Im Mitarbeiter-Wochenplan erscheinen offene (unbesetzte) Schichten jetzt als zusätzliche Zeile ‚Offen‘ oben in der Tabelle — pro Tag eine Liste der unbesetzten Slots. Klick darauf öffnet den Schicht-Editor; beim Zuweisen eines Mitarbeiters wandert die Schicht automatisch in dessen Zeile.
- Im Schicht-Editor (Mitarbeiter-Wochenplan) gibt es zusätzlich die Option ‚Offen lassen‘, mit der eine zugewiesene Schicht zurück in den OPEN-Status geschoben werden kann.
- Behebt einen Build-Fehler in der vorherigen Release-Note, der das Deploy von 0.54.0 (Tagesraster-Klick zum Zuweisen + ArbZG-Warnung) verhindert hat — die Features von 0.54.0 gehen mit diesem Release live.
- v0.54.0
Schicht per Klick zuweisen + ArbZG-Warnung
- Klick auf eine Schicht im Tagesraster öffnet jetzt ein Mitarbeiter-Picker-Modal. Mitarbeiter, die zu der Zeit bereits eine andere Schicht oder einen genehmigten Urlaub haben, erscheinen ausgegraut und sind nicht wählbar. Mitarbeiter mit nur einer Ruhezeit-Warnung (< 11 h) bleiben wählbar, aber sichtbar markiert.
- Über das Modal kannst du auch eine Schicht wieder freigeben (Option ‚Offen lassen‘) — der Schicht-Kind wechselt automatisch zwischen Regulär und Offen.
- Beim Verschieben oder Verlängern einer Schicht über 10 h (ArbZG-Höchstgrenze) erscheint im Tagesraster eine gelbe Warnung. Die Schicht wird trotzdem gespeichert — die Warnung soll nur aufmerksam machen.
- v0.53.0
Schichtvorlagen über mehrere Stationen + Multi-Wochentag-Slots
- Eine Schichtvorlage kann jetzt auf mehrere Stationen gelegt werden. Beim Anwenden entstehen pro verknüpfter Station eigene offene Schichten. Im Vorlagen-Form wählst du die Stationen über antippbare Buttons (Mehrfachauswahl).
- Beim Anlegen eines Slots in einer Vorlage kannst du mehrere Wochentage auf einmal auswählen — der Slot erscheint dann an jedem markierten Tag. Bestehende Slots bleiben einzeln; du kannst sie beim Bearbeiten manuell zusammenfassen.
- Auf der Vorlagen-Detailseite gibt es beim ‚Anwenden' eine Stations-Auswahl (default: alle verknüpften Stationen). Aus dem Tagesraster / Wochenplan wird die Vorlage weiterhin nur auf die gerade angezeigte Station angewendet.
- v0.52.0
Schichtvorlage direkt aus Wochen- und Tagesraster anwenden
- Im Schichtplan-Tagesraster und im Mitarbeiter-Wochenplan kannst du jetzt oben eine Schichtvorlage auswählen und mit einem Klick auf die gerade angezeigte Woche anwenden — der Umweg über die Vorlagen-Detailseite entfällt.
- Die Auswahl zeigt nur Vorlagen der aktuell gewählten Station. Ist noch keine Vorlage vorhanden, wird ein Link zum Anlegen eingeblendet.
- v0.51.1
Sticky-Header der Public-Website wie bei Droste
- Der gelbe Bereich oben auf der öffentlichen Website ist jetzt deutlich größer (drei Bänder: Sekundär-Links, Logo, Nav) und bleibt beim Scrollen sticky.
- Die Nav-Leiste sitzt als weiße Inset-Box innerhalb des gelben Headers — Operator-Name in roter Schrift, Logo links, roter CTA-Button rechts.
- v0.51.0
Öffentliche Website im Droste-Style
- Komplett-Redesign der öffentlichen Betreiber-Website: gelbe Top-Bar mit Kontakt und Social-Links, weiße sticky Nav mit rotem CTA-Knopf, Vollbild-Hero-Foto mit roten Highlight-Pills und großer Headline, gelb gefüllter Footer.
- Neue Pflege-Felder unter ‚Website‘: Hero-Bild (max 4 MB), bis zu drei Hero-Highlight-Pills (komma-getrennt), CTA-Text und CTA-Ziel, Social-Links für Facebook/Instagram/LinkedIn und Copyright-Zeile.
- Auf der Public-Site erscheint kein Energydesk-Branding mehr — weder Versions-Footer noch Cookie-Hinweis.
- v0.50.1
Konkrete Fehlermeldungen beim Speichern der Website-Einstellungen
- Beim Speichern unter ‚Website‘ siehst du jetzt, welches Feld die Validierung blockiert — statt nur ‚Ungültige Eingaben‘.
- v0.50.0
Indeed-Feed + Kleinanzeigen-Text-Helper
- Deine aktiven Stellen sind unter /api/public/jobs/indeed-feed.xml als Indeed-crawlbarer Feed verfügbar. Bewerbungen kommen weiter direkt bei dir an.
- Im Stellen-Editor gibt es einen ‚Text für Kleinanzeigen kopieren‘-Knopf — den fertigen Text fügst du dort manuell ein.
- v0.49.1
Aushang als A4-PDF mit QR-Code
- Im Stellen-Bereich kannst du jetzt pro Cluster einen druckbaren A4-Aushang mit deinen offenen Stellen und einem QR-Code zur Karriere-Seite herunterladen.
- Bis zu 8 Stellen pro Aushang. Logo und Primärfarbe deines Betreibers werden übernommen.
- v0.49.0
Bewerbungsformular auf der Karriere-Seite
- Interessenten können sich direkt über deine Karriere-Seite auf eine offene Stelle bewerben. Du erhältst eine E-Mail-Benachrichtigung mit Link zum Bewerber-Detail im Backoffice.
- Der Bewerber-Lebenslauf wird als PDF (max. 10 MB) optional mitgeschickt; das Formular ist gegen Spam mit Honeypot + Rate-Limit (max. 3 Bewerbungen pro IP / 15 min) geschützt.
- v0.48.1
Bewerbungen verwalten
- Unter ‚Bewerbungen‘ siehst du eingegangene Bewerbungen, den Lebenslauf, deine Notizen und steuerst den Bewerbungsstatus von Neu bis Eingestellt.
- Abgelehnte Bewerbungen werden nach 180 Tagen automatisch gelöscht (DSGVO).
- v0.48.0
Offene Stellen pflegen
- Unter ‚Stellen‘ legst du offene Positionen pro Cluster oder Station an. Aktive Stellen erscheinen automatisch auf der Karriere-Seite deiner Website.
- v0.47.1
Inhalte für deine öffentliche Website pflegen
- Unter ‚Website‘ im Backoffice pflegst du dein Logo, deine Primärfarbe, deine ‚Über uns‘- und ‚Karriere‘-Texte, Impressum und Datenschutz.
- Pro Cluster und pro Station kannst du Anzeigetexte und Bilder individuell überschreiben — was du manuell setzt, bleibt auch bei einer Daten-Aktualisierung aus dem Shell-Stationsfinder erhalten.
- v0.47.0
Öffentliche Betreiber-Website ist live
- Jeder Betreiber kann jetzt unter energydesk.online/s/<dein-slug> eine eigene öffentliche Website bekommen — eine Übersichts-Seite und eine Seite pro Cluster. Die Seiten zeigen deine Stationen mit Adresse, Öffnungszeiten und Services.
- Die Pflege der Inhalte folgt im nächsten Release.
- v0.46.1
Stationsdaten aus dem Shell-Stationsfinder importieren
- Beim Anlegen einer Station mit OBN ziehen wir Adresse, Öffnungszeiten und Services automatisch aus dem Shell-Stationsfinder. Im Stations-Editor gibt es einen ‚Shell-Daten aktualisieren‘-Knopf, der die Daten manuell neu zieht.
- Felder, die du manuell überschreibst, bleiben beim erneuten Import erhalten.
- v0.46.0
Datenmodell für öffentliche Betreiber-Websites
- Vorbereitung für das neue Modul: jeder Betreiber bekommt eine eigene öffentliche Seite und kann offene Stellen + Bewerbungen pflegen. Das Modul wird in den nächsten Releases stückweise freigeschaltet.
- v0.45.4
Über-Mitternacht-Schichten im Tagesraster verschiebbar
- Schichten, die über Mitternacht laufen (z. B. Nachtschicht 22:00–06:00), kannst du jetzt im Tagesraster ebenfalls per Drag verschieben. Egal welches der beiden Tagessegmente du anfasst — die gesamte Schicht wandert mit.
- Verlängern bzw. verkürzen geht weiterhin nur am echten Schicht-Rand: der linke Rand-Griff erscheint nur auf dem Tagessegment mit dem Start, der rechte nur auf dem Tagessegment mit dem Ende.
- v0.45.3
Überlappende Schichten im Tagesraster stapeln
- Wenn an einem Tag mehrere Schichten zur gleichen Zeit laufen, werden sie jetzt untereinander gestapelt statt übereinander gezeichnet. Jede Schicht behält ihren Zeitabschnitt, bekommt aber eine eigene Reihe innerhalb des Tages, sodass beide Mitarbeiter sichtbar bleiben.
- Die Tageszeile wächst dynamisch mit der Anzahl der gleichzeitig laufenden Schichten — bei einer Schicht wie bisher, bei drei parallelen Schichten entsprechend höher.
- v0.45.2
Schichten im Tagesraster ziehen — Verschieben, Verlängern, Verkürzen
- Im Tagesraster lassen sich Schichten jetzt mit der Maus bearbeiten: Pack den Balken in der Mitte und schiebe ihn auf eine neue Uhrzeit, oder zieh am linken/rechten Rand, um Start oder Ende zu verschieben. Es wird automatisch auf 15-Minuten-Schritte eingerastet.
- Während des Ziehens zeigt sich unten rechts das aktuelle Zeitfenster mit Dauer in Minuten. Nach dem Loslassen wird die Änderung gespeichert; bei Konflikten (z. B. Überschneidung mit einer anderen Schicht desselben Mitarbeiters) erscheint ein Hinweis und nichts wird geändert.
- Gesperrt sind: bereits gestempelte Schichten, Krank-/Urlaubs-/No-Show-Schichten und Schichten, die über Mitternacht laufen — die müssen wie bisher im Wochenplan-Editor angepasst werden.
- v0.45.1
Schichtplan-Tagesraster (Gantt-Ansicht)
- Neue Ansicht „Tagesraster" im Schichtplan: Wochentage von oben nach unten, Stunden 0–24 von links nach rechts. Jede Schicht erscheint als farbiger Balken auf dem passenden Zeitfenster.
- Wenn du über einen Balken fährst, öffnet sich ein Tooltip mit allen Details: Mitarbeiter, Schichtart, Plan-Zeiten, Stempelung, Veröffentlichungs-Status und Notiz.
- Schichten, die über Mitternacht laufen (z. B. Nachtschicht 22–06 Uhr), werden korrekt auf zwei Tage gesplittet und nahtlos angezeigt. Offene Schichten erscheinen ohne Mitarbeiternamen mit eigenem Farb-Stil.
- v0.45.0
Lohn-Zuschläge, Minijob-Forecast und Lohnabrechnungs-Versand
- Neuer Bereich „Lohn-Zuschläge" (Einstellungen): mit einem Klick legst du die fünf Standard-Zuschläge an (Nacht 25 %, Spät 10 %, Sonntag 50 %, Feiertag 100 %, Rufbereitschaft 20 %) und kannst sie anpassen, deaktivieren oder neue ergänzen. Bei Überlappung gilt der höchste Prozentsatz (z. B. Sonntag fällt auf Feiertag → 100 %).
- Lohnabrechnungen kannst du als PDF hochladen — auch mehrere Dateien gleichzeitig pro Monat. Das System ordnet automatisch über Personalnummer oder Name zu und legt das PDF im Doku-Modul ab. Bei sicherem Treffer wird die Abrechnung je nach Workforce-Einstellung sofort für den Mitarbeiter freigegeben.
- Mitarbeiter sehen ihre Lohnabrechnungen im Mobile-Bereich unter „Lohnabrechnungen" und können sie als PDF herunterladen — sobald sie freigegeben sind.
- Im Mitarbeiterprofil zeigt sich für Minijobber jetzt ein Forecast für den laufenden Monat (Ist + geplante Restschichten × Stundenlohn) mit Warnung ab 85 % der Geringfügigkeits-Grenze.
- v0.44.0
Stundenfreigabe + Zeitkonto + ArbZG-Warnungen
- Neue Seite „Stundenfreigabe" unter Mitarbeiter: pro Tag und Mitarbeiter siehst du Soll/Ist/Pause-Stunden, ArbZG-Warnungen (Ruhezeit, 10-h-Grenze, Pausen, Sonntag, Feiertag) und Plan-Abweichungen.
- Workflow Tag-für-Tag: bei Warnungen quittierst du mit kurzer Begründung („korrigiert"), gibst dann frei („freigegeben"), übernimmst final in die Lohnabrechnung („abgerechnet"). Operator-Admin kann am Monatsende den Tag sperren oder bei Bedarf wieder öffnen — jede Aktion landet im Audit-Log.
- Mit jeder Freigabe wandert die Differenz Ist−Soll automatisch aufs Mitarbeiter-Zeitkonto (Plus- bzw. Minusstunden).
- Hintergrundlauf jede Nacht um 04:15 erzeugt neue Tages-Einträge aus den Stempelungen der letzten 14 Tage und schreibt Warnungen fort. Du kannst die Neuberechnung auch jederzeit manuell auslösen.
- Bestehende Stempelungen, Schichten und der alte Stundenzettel bleiben unverändert — die neue Seite kommt zusätzlich obendrauf.
- v0.43.0
Schichtuniversum komplett: Tausch, offene Schichten, Verfügbarkeit, AU-Bescheinigung
- Mitarbeiter können sich aus dem Mobile-Bereich (/m) auf offene Schichten bewerben. Die Stationsleitung sieht die Bewerbungen unter „Offene Schichten" und nimmt sie an oder lehnt sie ab; bei Annahme wird die Schicht dem Mitarbeiter zugewiesen.
- Schichttausch funktioniert jetzt vollständig: Mitarbeiter bieten eine eigene Schicht zum Tausch an (offen oder gezielt an eine Kollegin), andere übernehmen sie, die Stationsleitung gibt final frei.
- Im Bereich „Verfügbarkeit" hinterlegen Mitarbeiter ihr Wochenmuster (möchte gerne / kann / kann nicht pro Wochentag und Zeitfenster) und tragen konkrete Freiwünsche ein.
- Krankmeldungen mit AU: Mitarbeiter lädt die Arbeitsunfähigkeitsbescheinigung als PDF direkt aus der App hoch. Sie landet im Doku-Modul und ist mit der Krankmeldung verknüpft. Operator sieht in der Abwesenheitsliste, ob die AU vorliegt oder noch fehlt.
- Neue Cron-Erinnerung: ab dem im Workforce-Onboarding hinterlegten Tag ohne AU bekommt der Mitarbeiter automatisch einen Hinweis, dass die AU fehlt; die Stationsleitung erhält parallel eine Notiz.
- Stationsleitung kann eine geplante Schicht ohne Stempelung als „nicht erschienen" markieren — z. B. für die Dokumentation einer No-Show im Audit-Log.
- v0.42.0
Schichtvorlagen — Wochenmuster auf Knopfdruck
- Unter „Mitarbeiter → Schichtvorlagen" kannst du wiederverwendbare Wochenmuster pro Station anlegen: pro Wochentag ein oder mehrere Slots mit Start- und End-Zeit (z. B. Frühschicht 06:00–14:00, Spätschicht 14:00–22:00).
- Mit „Anwenden" erzeugst du daraus für eine oder mehrere Wochen auf einen Klick offene Schichten. Wendest du dieselbe Vorlage zweimal auf dieselbe Woche an, werden keine Duplikate erzeugt.
- Schichten aus einer Vorlage entstehen als offene Schichten — du kannst sie im Wochenplan einem Mitarbeiter zuweisen. Bereits erzeugte Schichten bleiben unverändert, wenn du die Vorlage später änderst oder löschst.
- v0.41.0
Cluster löschen
- In der Cluster-Übersicht kannst du jetzt einen Cluster löschen, sofern er keine aktiven Stationen mehr hat. Zur Bestätigung musst du den Cluster-Namen exakt abtippen — so passiert kein Versehen.
- v0.40.0
Schichtplan-Universum vorbereitet (Schema-Foundation)
- Im Hintergrund kennt das System jetzt verschiedene Schichttypen — regulär, offen, Rufbereitschaft, Schulung, Meeting, Springer, Urlaub, unbezahlter Urlaub, krank, unentschuldigt fehlend. Bestehende Schichten gelten weiterhin als reguläre Schichten, am Plan ändert sich für dich heute nichts.
- Drei neue Konzepte werden vorbereitet und kommen in den nächsten zwei Updates: Dienstplan-Vorlagen (wiederverwendbare Wochenmuster), Schichttausch zwischen Mitarbeitern und das Beanspruchen offener Schichten.
- Mitarbeiter werden bald in einem eigenen Bereich angeben können, wann sie gerne arbeiten möchten (oder eben nicht) und konkrete Freiwünsche eintragen können.
- Krankmeldungen lassen das System ab dieser Version eine Erinnerung mitlaufen, wenn die AU noch fehlt — der Erinnerungs-Cron selbst wird in einem Folge-Update aktiv geschaltet.
- v0.39.1
Mobile-Self-Service: Schichten, Urlaub, Krankmeldung mit AU
- Im Mobile-Bereich (/m) gibt es jetzt zwei neue Bereiche: Schichten (die nächsten 14 Tage) und Urlaub & Krank (eigene Anträge anzeigen, neue stellen).
- Urlaubsantrag und Krankmeldung gehen direkt vom Handy. Bei Krankmeldung kann der Mitarbeiter eine AU-Bescheinigung als PDF oder Foto mit hochladen — wenn der Betreiber ab Tag X eine AU verlangt, weist die App ab diesem Tag automatisch darauf hin.
- Operator und Stationsleitung bekommen wie bisher einen Push-Hinweis, sobald ein neuer Antrag eingeht.
- v0.39.0
Mitarbeiter-Mobile-Zugang: Einladung, Login, Stempeln vom Handy
- Du kannst pro Mitarbeiter einen Mobile-Zugang freischalten. Dazu hinterlegst du seine Email-Adresse und triggerst den Einladungs-Link — der Mitarbeiter setzt sich selbst ein Passwort und ist danach direkt eingeloggt.
- Neuer Mitarbeiter-Bereich unter /m: Login (Email + Passwort), Passwort vergessen-Flow, Setup-Seite für die Einladung. Mitarbeiter ohne Email haben weiterhin keinen Mobile-Zugang — die Bedienung am Stations-Tablet bleibt für sie unverändert.
- Über den Mobile-Zugang kann der Mitarbeiter sich ein-/ausstempeln, Pause starten/beenden und seine aktuelle Schicht-Übersicht sehen. Geofence-Regeln greifen identisch zum Tablet (Außerhalb-Verbieten blockt, Außerhalb-Warnen markiert nur im Audit).
- Self-Service für Urlaub, Krankmeldung mit AU-Upload, Schichten und Lohnabrechnungen folgt in 0.39.1 und 0.39.2.
- v0.38.0
Offline-Stempeln am Tablet
- Verliert das Tablet die Internetverbindung mitten in einer Schicht, gehen Stempel-Aktionen nicht mehr verloren: Ein-/Auschecken und Pause-Start/-Ende werden lokal gepuffert. Sobald die Verbindung zurückkommt (oder beim nächsten Page-Load), reicht das Tablet die Stempel automatisch nach.
- Im Stempel-Bereich erscheint ein Hinweis „⏳ X Stempel wartet auf Übertragung", solange die Puffer-Liste nicht leer ist. Nach erfolgreicher Übertragung verschwindet der Hinweis.
- Wenn der Betreiber Geofence-Modus aktiviert hat, fragt das Tablet beim Stempeln einmalig nach Standort-Zugriff. Verweigert der Mitarbeiter die Berechtigung im „Außerhalb verbieten"-Modus, schlägt der Stempel mit klarer Fehlermeldung fehl; im „Warn"-Modus geht er durch und wird im Audit als „kein Standort" markiert.
- Im Hintergrund: jeder Stempel bekommt eine eindeutige Ereignis-ID, damit Doppel-Übertragungen (z. B. nach Browser-Reload während einer Sync) niemals zu doppelten Einträgen führen.
- v0.37.0
Geofence: Stempeln nur in Stationsnähe (optional, dreistufig)
- Du kannst pro Station Mittelpunkt und Radius (20–5000 m) hinterlegen. Beim Stempeln am Tablet wird der Standort des Geräts gegen diesen Radius geprüft.
- Drei Strenge-Stufen pro Betreiber: „Überall" (Standard, kein Standortzugriff), „Außerhalb nur warnen" (Stempel geht durch, Auffälligkeit landet im Audit) und „Außerhalb verbieten" (Stempel wird blockiert, klare Fehlermeldung an den Mitarbeiter).
- GPS wird ausschließlich als Schnappschuss beim Stempel-Ereignis erfasst — keine Hintergrund-Ortung, keine Wegstrecken. Die Koordinaten werden nach 90 Tagen automatisch anonymisiert (folgt in einem Wartungs-Update).
- Wenn der Betreiber Geofence-Modus aktiviert, aber noch keine Stations-Koordinaten gepflegt hat, verhält sich das System wie „Überall" — der Stempel-Pfad bricht nicht.
- v0.36.0
Stempel mit Notiz + Vergessen-auszustempeln-Erinnerung
- Beim Einstempeln, Auschecken und Pause-Start kannst du jetzt optional eine Notiz hinterlassen — z. B. „Stationswechsel" oder „Mittag länger wegen Lieferung". Die Notiz erscheint im Stempel-Log und im Operator-Backoffice.
- Wer 2 Stunden nach Schichtende noch eingestempelt ist, löst automatisch eine Erinnerung an Stationsleitung und Betreiber aus (alle 10 Minuten, nur einmal pro Schicht). Kein automatisches Auschecken — der Stempel-Korrektur-Flow bleibt der saubere Weg, die Schicht nachträglich zu schließen.
- Im Hintergrund schreibt das System jetzt zusätzlich ein vollständiges Stempel-Ereignis-Log (Forensik + Offline-Vorbereitung für späteres Mobile-Stempeln). Für Mitarbeiter ändert sich nichts an der Bedienung.
- v0.35.0
Workforce-Vorbereitung: Personalnummer, Beschäftigungstyp, Stundenlohn
- Mitarbeiter-Stammdaten kennen jetzt drei neue Felder, damit das kommende Workforce-Modul (Lohnabrechnungen, Zeitkonto, Zuschläge) sauber andocken kann: Personalnummer (eindeutig pro Betreiber, optional), Beschäftigungstyp (Vollzeit, Teilzeit, Minijob, Midijob, Werkstudent, Aushilfe) und Stundenlohn in Cent.
- Zusätzlich kannst du pro Mitarbeiter Wochen- oder Monats-Sollstunden hinterlegen — wird in einem späteren Update für das Zeitkonto sichtbar.
- Neuer Bereich „Workforce-Einstellungen" pro Betreiber im Hintergrund angelegt (Geofence-Modus, ArbZG-Strenge, AU-Pflicht-Tag, Wochenstart, Approval-Frequenz, Sichtbarkeit von Lohnabrechnungen). Die Operator-UI dazu kommt in den nächsten Updates.
- Aufgaben-Wiederholungen rechnen jetzt korrekt mit deutscher Sommer-/Winterzeit — vorher konnte eine Aufgabe im Sommer eine Stunde zu spät fällig werden.
- v0.34.0
Dokumente, Aufgaben, Belehrungen & Mitarbeiter — sechs neue Funktionen
- Dokumente: ausgewählte Dokumente lassen sich in der Mehrfachauswahl jetzt direkt löschen — neuer Button „Löschen" neben „Label anhängen" in der gelben Auswahl-Leiste. Hard-Delete inklusive Datei.
- Dokumente: nach Aufruf eines Dokuments und Zurück geht es jetzt zurück in die exakt gleiche Filter-Ansicht (Labels, Suche, Sortierung).
- Aufgaben-Übersicht: zusätzlich zum Stationsfilter gibt es jetzt einen Mitarbeiter-Filter und eine Volltextsuche über Titel und Handlungsanweisung. Filter werden gemeinsam in der URL gehalten und gehen beim Wechseln nicht mehr verloren.
- Belehrungen: beim Anlegen kannst du jetzt ein Dokument aus der Bibliothek als Quelle wählen statt ein neues PDF hochzuladen. Die aktuelle Version wird als Version 1 der Belehrung eingefroren.
- Mitarbeiter im Backoffice: Detailseite hat jetzt drei Reiter — Stammdaten, Belehrungen (erledigt + anstehend) und Aufgaben (direkt zugewiesen offen/erledigt sowie quittierte Stations-Aufgaben).
- Aufgaben anlegen: neue Auswahl „Wenn am Tagesende noch offen…" — Aufgabe bleibt offen bis sie erledigt ist, oder verschwindet automatisch am Tagesende. Bei DAILY-Aufgaben mit „bleibt offen" wird zusätzlich am Folgetag eine neue Instanz erzeugt. Bestandsaufgaben behalten das bisherige Verhalten (bleibt offen).
- v0.33.2
Tagesabschluss-Label + idempotenter Re-Scan
- Sobald ein PDF als Tagesabschluss erkannt wird, taggt das System das Dokument automatisch mit dem Label „Tagesabschluss" — unter „Dokumente" lassen sich damit alle Tagesabschlüsse mit einem Klick filtern. Das Label wird einmalig pro Operator angelegt.
- Re-Scan-Knopf läuft jetzt idempotent: wird eine Datei erneut geprüft, deren Closing schon existiert, wird sie nicht erneut OCR-t — das Label wird trotzdem nachträglich gesetzt, falls es früher noch nicht aktiv war.
- v0.33.1
Tagesabschlüsse: OCR-Fix + nachträgliches Erfassen
- Tesseract läuft in Docker-Containern unter OpenMP gerne in einen Deadlock — der Spawn setzt jetzt OMP_THREAD_LIMIT=1 und einen 3-Minuten-Timeout pro Aufruf, dadurch werden hochgeladene EKW-PDFs zuverlässig erkannt.
- Wenn an einer Station nachträglich eine OBN-Nummer gepflegt wird, ordnet das System bestehende unzugeordnete Tagesabschlüsse mit passender OBN automatisch dieser Station zu — kein manuelles Nach-Zuordnen mehr nötig.
- Auf der Tagesabschluss-Übersicht gibt es einen neuen Knopf „Bestehende Dokumente erneut scannen" — alle PDFs der letzten 120 Tage werden im Hintergrund erneut geprüft. Praktisch, falls EKW-Abrechnungen schon vor dem Closings-Feature hochgeladen wurden oder eine frühere OCR-Verarbeitung fehlgeschlagen ist.
- v0.33.0
Tagesabschlüsse: automatische Erfassung, Vergleiche und KPIs
- Neuer Bereich „Tagesabschlüsse" im Operator-Backoffice. Lade die Shell-EKW-PDF wie gewohnt unter „Dokumente" hoch — die Datei wird im Hintergrund per OCR ausgelesen, anhand der OBN-Nummer der richtigen Station zugeordnet und als strukturierter Tagesabschluss gespeichert.
- Stations-Stammdaten haben jetzt ein OBN-Feld („Stationsnr." aus dem Brand-System). Wird ein Abschluss hochgeladen, dessen OBN keiner Station entspricht, fragt der Operator-Bereich, zu welcher Station er gehört — die OBN wird dann automatisch in den Stammdaten hinterlegt.
- Die Übersicht zeigt pro Station einen Monatskalender mit grünen (vorhanden) und roten (fehlend) Tagen, dazu die Lücken der letzten 30 Tage.
- Detail-Ansicht eines Abschlusses vergleicht jeden Artikel und jedes EKW-Konto gegen Vortag, Vorwoche und Vormonat (±%-Spalte mit Farb-Indikatoren).
- Korrektur-Abschlüsse werden erkannt: ein neuerer Abschluss für denselben Tag wird automatisch aktiv, der ältere bleibt zur Nachvollziehbarkeit als inaktiv erhalten.
- KPI-Konfiguration pro Station: Wochen-/Monatsziele auf Artikelgruppe oder EKW-Konto, getrackt als Menge oder Betrag; Dashboard zeigt Fortschritt und Plan-Soll-Marker.
- Doppel-Uploads derselben Datei werden weiterhin durch den bestehenden SHA-256-Schutz abgefangen; zusätzlich verhindert der UNIQUE-Constraint (OBN, Abrechnungsnr.), dass dieselbe Abrechnungsnummer zweimal gebucht wird.
- Bei zwei oder mehr Stationen erscheint auf der Übersicht eine Matrix „Stationen × letzte 14 Tage" mit grünen ✓ (Abschluss vorhanden, klickbar) und roten Punkten (fehlt) — auf einen Blick sichtbar, wo Lücken sind.
- v0.32.3
Übersicht: gelöschte Stationen verschwinden sofort
- Auf der Operator-Übersicht (/operator) blieben gelöschte Stationen weiterhin als Karten sichtbar und wurden im Zähler oben („X Stationen") mitgezählt. Die Liste filtert jetzt — wie alle anderen Stations-Listen — die soft-gelöschten Einträge weg.
- v0.32.2
Lizenz-Seite: Kündigungs-Status deutlicher
- Wenn dein Abonnement gekündigt ist, aber noch bis zum Periodenende läuft, zeigt die Lizenz-Seite das jetzt prominent an: Card-Titel „Abonnement — Kündigung läuft", gelber Hinweis-Block mit dem genauen End-Datum, „Endet am" statt „Nächste Abbuchung". Bisher stand dort nur unscheinbar im Status-Feld „Zum Periodenende gekündigt", was leicht übersehen wurde.
- v0.32.1
Hotfixes: Kündigungs-Anzeige + doppelte Stationen
- Wenn du dein Abonnement im Stripe-Kundenportal zum Periodenende kündigst, wird das jetzt korrekt auf der Lizenz-Seite als „Zum Periodenende gekündigt" angezeigt. Bisher blieb die Anzeige fälschlich auf „Aktiv", obwohl Stripe die Kündigung schon registriert hatte (Stripe nutzt zwei verschiedene interne Felder, von denen wir nur eines auslasen).
- Beim Anlegen einer kostenpflichtigen Station gab es eine seltene Doppel-Anlage, wenn unser Webhook und unsere Bestätigungs-Seite parallel liefen. Beide haben unabhängig voneinander dieselbe Station angelegt. Der Vorgang ist jetzt atomar — nur einer der beiden Pfade legt die Station wirklich an.
- Die monatliche Abbuchung wird beim ersten kostenpflichtigen Bezahl-Vorgang jetzt korrekt aus der Anzahl deiner bereits bestehenden Stationen berechnet — nicht mehr fest auf eine Station.
- v0.32.0
Sonderrabatte pro Betreiber
- In der Userverwaltung gibt es ab jetzt pro Betreiber den Button „Rabatt". Damit kannst du als Plattform-Admin einen im Stripe-Dashboard angelegten Coupon zuweisen — egal ob prozentual oder als fester Eurobetrag, einmalig, dauerhaft oder über mehrere Monate. Der Rabatt wird automatisch auf bestehende Abos und auf die nächste Checkout-Bezahlung angewendet.
- Dem Betreiber wird der aktive Sonderrabatt auf seiner Lizenz-Seite eingeblendet (z. B. „Starter — 90 % einmalig"). Der genaue Cent-Betrag erscheint auf der nächsten Stripe-Rechnung.
- In der Abrechnungs-Übersicht (Admin) und in der Userverwaltung ist eine neue Spalte „Rabatt" sichtbar — du siehst auf einen Blick, welche Operatoren auf Sonderkonditionen laufen. Optional kannst du beim Vergeben einen Vermerk hinterlegen (z. B. „Pilot-Programm bis Q3 2026"), der im Audit-Log mit gespeichert wird.
- Wenn ein Betreiber selbst einen Promo-Code eingeben darf (z. B. öffentlich beworbener Aktions-Code), kannst du den im Stripe-Dashboard als „Promotion code" anlegen — beim Bezahl-Vorgang erscheint dann automatisch ein Eingabefeld für den Code, ohne dass am Code etwas geändert werden muss.
- v0.31.0
Mahnstrecken-Hinweise + Abrechnungs-Übersicht
- Wenn eine monatliche Abbuchung fehlschlägt, erscheint ab sofort ein Banner im Backoffice mit einem Direkt-Link zur Abrechnung. Bis Tag 21 nach dem ersten Fehlschlag bleibt der Account voll nutzbar — du hast Zeit, im Stripe-Kundenportal eine andere Zahlungsmethode zu hinterlegen.
- Ab Tag 21 läuft der Account im Read-Only-Modus: Lesen ja, Stationen oder Daten ändern nein. Das Stationstablet bleibt aktiv, damit Mitarbeiter weiterhin arbeiten können. Ab Tag 30 wird der Account komplett gesperrt — auch das Tablet zeigt dann nur noch einen Hinweis-Bildschirm. Reaktivierung jederzeit über Einstellungen → Lizenz möglich.
- Eine vom Kunden im Stripe-Kundenportal vorgenommene Kündigung führt zur sofortigen Sperre, sobald die Periode endet. Wird hingegen die letzte bezahlte Station aus dem Account entfernt (Auto-Downgrade), bleibt der Account im kostenlosen Plan offen und nutzbar — keine Sperre.
- Für Plattform-Admins gibt es unter Einstellungen → Abrechnungs-Übersicht eine neue Seite mit MRR, Anzahl bezahlter Stationen pro Operator, nächste Abbuchung, letzte erfolgreiche Zahlung und Mahnstrecken-Status auf einen Blick. Pro Zeile öffnet ein Link den passenden Stripe-Customer im Stripe-Dashboard.
- v0.30.0
Stationen entfernen + automatische Sync mit Stripe
- Auf der Stations-Bearbeiten-Seite gibt es jetzt den Button „Station entfernen". Nach Bestätigung verschwindet die Station aus deinem Account; Aufgaben, Schichten und Tablets bleiben für Audit-Zwecke gespeichert, erscheinen aber nirgends mehr in den Listen.
- War die entfernte Station kostenpflichtig, reduziert sich die monatliche Abbuchung anteilig (Stripe schreibt die Differenz auf der nächsten Rechnung gut). Wird die letzte bezahlte Station entfernt, läuft das Abo bis zum Periodenende weiter und beendet sich dann automatisch — du landest wieder im kostenfreien Plan, ohne neue Bezahlung anstoßen zu müssen.
- Im Hintergrund hört Energydesk jetzt Stripe-Ereignisse mit (Zahlung erfolgreich, Zahlung fehlgeschlagen, Abo geändert, Abo gekündigt). Damit sind Lizenz-Status, nächstes Abbuchungsdatum und gespeicherte Zahlungsmittel auch dann aktuell, wenn du Änderungen über das Stripe-Kundenportal vornimmst — und bei Zahlungsausfällen entsteht eine Historie für die noch folgende Mahnstrecken-Anzeige.
- v0.29.3
Container-Healthcheck korrigiert
- Interne Konfigurations-Änderung: Der App-Container meldet sich wieder als „healthy" beim Docker-Daemon. Aus Operator- und Tablet-Sicht ändert sich nichts.
- v0.29.2
Hotfix: Bezahlung beim Anlegen der zweiten Station
- Beim Anlegen einer zweiten Station kam es zu einem „Netzwerkfehler" statt eines Bezahl-Vorgangs. Ursache: ein interner Konfigurations-Check verlangte ein Webhook-Geheimnis, das erst mit der noch ausstehenden Webhook-Verarbeitung gesetzt wird. Das Bezahl-Formular öffnet jetzt wie vorgesehen.
- Außerdem zeigt das Formular bei Server-Fehlern jetzt eine Klartext-Meldung statt eines generischen „Netzwerkfehler"-Hinweises.
- v0.29.1
Bezahl-Integration: Server-Konfiguration
- Interne Konfigurations-Änderung: Die Stripe-Variablen werden jetzt auch in Production an den App-Container weitergereicht. Aus Operator- und Tablet-Sicht ändert sich nichts.
- v0.29.0
Online-Bezahlung für zusätzliche Stationen
- Sobald du eine zweite (oder weitere) Station anlegst, führen wir dich automatisch durch die Bezahlung über Stripe. Du kannst per Karte, SEPA-Lastschrift oder PayPal bezahlen — die Methoden zeigt Stripe je nach Land an. Für die erste Station bleibt alles kostenfrei und ohne Karten-Eingabe.
- Auf der Lizenz-Seite siehst du jetzt dein aktives Abonnement: Anzahl bezahlter Stationen, monatlicher Netto-Betrag, nächste Abbuchung und Status. Über den Button „Abrechnung verwalten" öffnet sich das Stripe-Kundenportal, in dem du Zahlungsmethode tauschen, Rechnungen einsehen und kündigen kannst.
- Nach erfolgreicher Bezahlung wird die Station sofort angelegt und erscheint in deiner Liste. Wenn du den Bezahl-Vorgang abbrichst, kommst du zurück zum Formular mit einem Hinweis — die Station wird dann nicht angelegt und es entstehen keine Kosten.
- Hinweis: Diese Bezahl-Integration läuft aktuell im Stripe-Test-Modus. Mit echten Karten wird noch nichts abgebucht — wir schalten den Live-Betrieb in einem späteren Release scharf, sobald Webhook-Verarbeitung und Mahnstrecken stehen.
- v0.28.1
Vorbereitung Bezahl-Integration
- Interne Vorarbeit für die kommende Bezahl-Integration: Datenmodell für Abonnement-Status und Zahlungs-Historie ergänzt, Stationen können künftig archiviert statt gelöscht werden. Aus Operator- und Tablet-Sicht ändert sich noch nichts.
- v0.28.0
Lizenzen für Stationen
- Neue Seite „Lizenz" unter Einstellungen: Du siehst auf einen Blick, auf welchem Plan du unterwegs bist (standardmäßig „Free" mit einer Station inklusive), wie viele Stationen du gerade nutzt und wie viele du noch frei hast. Dort kannst du auch direkt per Email eine Lizenzerhöhung anfragen.
- Beim Anlegen einer neuen Station prüft das System jetzt dein Lizenz-Limit. Ist das Limit erreicht, bekommst du eine klare Meldung statt eine versehentlich entstehende Mehrbelastung.
- Bestehende Accounts behalten genau die Anzahl Stationen als Limit, die sie heute schon angelegt haben — niemand wird durch die neue Regel eingeschränkt.
- In der Userverwaltung (nur Admins) gibt es eine neue Spalte „Stationen (genutzt / Limit)" und einen Button „Lizenz", über den du das Lizenz-Kontingent eines Betreibers manuell hochsetzen kannst.
- v0.27.0
Compliance: Tooltip mit überfälligen Stationen
- Auf der Compliance-Seite siehst du beim Hover über die rote „Überfällig"-Zahl jetzt sofort, in welchen Stationen wie viele Belehrungen offen sind. So erkennst du auf einen Blick, wo nachgehakt werden muss, ohne erst die Vorlage öffnen zu müssen.
- v0.26.0
Cluster-ID + Direkt-Versand auf dem Marktplatz
- Jeder Cluster hat ab jetzt eine sechsstellige Cluster-ID (z. B. "347 821"). Sie wird automatisch beim Anlegen vergeben und ist system-weit eindeutig. Du findest die ID in der Cluster-Übersicht unter Zahnrad → Cluster.
- Auf dem Marktplatz kannst du Aufgaben, Checklisten, Kontakte, Dokumente und Belehrungs-Vorlagen jetzt nicht nur öffentlich, sondern auch direkt an einen einzelnen Cluster schicken. Dafür gib beim Veröffentlichen einfach die sechsstellige Cluster-ID des Empfängers ein. Direkt-Versand-Listings tauchen dann ausschließlich beim Empfänger auf, dort hervorgehoben mit „📨 An dich gerichtet" — der Empfänger kann annehmen oder ablehnen. Im Vergleich zu öffentlichen Listings entfällt die Brand-Beschränkung; ihr beide habt ja bewusst diesen Versand gewählt.
- Wer einen direkten Versand abgelehnt hat, sieht das Listing nicht mehr; der Anbieter sieht in seiner Übersicht den Status „abgelehnt" hinter der Empfänger-Cluster-ID.
- v0.25.0
Aufgaben-Übersicht zeigt heutigen Status, Tablets aktualisieren sich selbst
- Operator · Aufgaben-Vorlagen: Eine neue Spalte „Heute" zeigt pro Aufgabe, wieviele Instanzen heute schon erledigt sind und wieviele noch offen sind. Zusätzlich wird die ganze Zeile farblich hinterlegt — grün, wenn alle heutigen Instanzen erledigt sind; gelb, wenn noch etwas offen ist; neutral, wenn heute nichts ansteht. Die Übersicht aktualisiert sich automatisch alle 15 Sekunden, du musst nicht mehr neu laden.
- Tablet: Die Stations-Übersicht und der Mitarbeiterbereich aktualisieren sich jetzt automatisch alle 15 Sekunden im Hintergrund. Neue Aufgaben, die das Backoffice an die Station schickt, erscheinen jetzt zuverlässig — ohne dass jemand am Tablet manuell neu laden muss.
- v0.24.1
Fixes: Tablet-PDFs, Sammelnachweis, QR-Code, About-Seite
- Tablet · Dokumente: PDF-Vorschau lässt sich jetzt komplett durchblättern. Bisher war auf dem iPad-Browser nur die erste Seite zu sehen, weil das Tablet-Layout das Body-Scrollen unterbunden hat — die PDF-Anzeige hat jetzt einen eigenen Scrollbereich.
- Tablet · Sammelnachweise: Belehrungs-Sammelnachweise erscheinen jetzt auch auf den Tablets der Stationen, an denen erst NACH der ersten Erstellung des Sammeldokuments eine Belehrung abgeschlossen wurde. Bisher wurde die Sichtbarkeitsliste nur einmalig gesetzt; sie wird ab jetzt bei jeder Aktualisierung mitgepflegt. Bestehende Altdaten werden mit dem Update einmalig nachgezogen.
- Operator · Tablets: Beim Anlegen eines neuen Tablets wird der Pairing-QR jetzt automatisch ausgeblendet, sobald das Tablet den Code gescannt hat — die Detail-Seite pollt im Hintergrund alle paar Sekunden und aktualisiert sich, ohne dass du neu laden musst.
- Über Energydesk: Die Kontakt-E-Mail unter „Kontakt" lässt sich jetzt zuverlässig anklicken (der Cookie-Hinweis hat den Klick zuvor abgefangen). Außerdem: wenn du bereits angemeldet bist und die About-Seite öffnest, bleibt jetzt die gewohnte Operator-Kopfzeile sichtbar — der Klick aufs Logo führt zurück zur Übersicht statt zur Marketing-Landingpage.
- v0.24.0
Konsens-Fenster + Cookie-Hinweis
- Bevor du Energydesk nutzen kannst, brauchen wir einmalig deine Zustimmung zu den rechtlichen Grundlagen: Datenschutzerklärung (Kenntnisnahme), Nutzungsvertrag und AGB (Zustimmung), sowie Auftragsverarbeitungsvertrag inklusive TOM (Zustimmung). Das passiert bei Neuanmeldung direkt im Registrierungsformular und einmalig für alle Bestandsoperatoren beim nächsten Login. Ändert sich später eine Dokumentversion, fragen wir nur dann erneut. Datum, IP und Browser werden zum Zeitpunkt der Zustimmung mitprotokolliert.
- Außerdem: Ein dezenter Cookie-Hinweis weist beim ersten Besuch darauf hin, dass Energydesk ausschließlich technisch notwendige Cookies setzt. Es gibt kein Tracking, keine Werbung, keine Drittanbieter-Analyse. Ein Klick auf "Verstanden" schließt den Hinweis dauerhaft.
- v0.23.0
Rechtliche Dokumente sind jetzt live
- Die Platzhalter unter Über Energydesk → AGB, Datenschutz und Impressum verlinken jetzt auf die finalen Dokumente. Vollständig sind: Nutzungsvertrag, AGB, Datenschutzerklärung, Auftragsverarbeitungsvertrag (AVV) inklusive technisch-organisatorischer Maßnahmen (TOM), und das Impressum. Zusätzlich gibt es eine Vorlage zur Datenschutz-Folgenabschätzung (DSFA), die Partner-Geschäftsführer als Grundlage für ihre eigene DSFA verwenden können. Die Dokumente sind brandneutral formuliert — Marken wie Shell oder Aral werden ausschließlich als Cluster-Bezeichnung beschrieben, eine Autorisierung durch die Markeninhaber besteht nicht. Übersicht aller Dokumente: /legal/.
- v0.22.1
Über-Energydesk-Link im Footer + öffentlich zugänglich
- Im Footer rechts unten findest du jetzt neben der Versionsnummer auch einen dezenten Link "Über Energydesk". Die Info-Seite ist außerdem ohne Login erreichbar — du kannst den Link also auch externen Interessenten geben.
- v0.22.0
Über Energydesk: Preismodell + Info-Seite
- Im Zahnrad-Menü gibt es jetzt den Eintrag "Über Energydesk" mit Preismodell, Kontakt und Platzhaltern für AGB, Datenschutz und Impressum (folgen demnächst). Das Preismodell ist transparent: Registrierung und erste Station sind kostenfrei mit vollem Funktionsumfang. Jede weitere Station kostet 29,50 € pro Monat netto, monatlich kündbar von beiden Seiten — keine Mindestlaufzeit. Beim Anlegen einer zweiten oder weiteren Station erscheint jetzt ein Hinweis, dass diese kostenpflichtig ist.
- v0.21.0
Userverwaltung mit Live-Aktivität
- Die Userverwaltung ist als Admin nicht mehr auf der Übersicht, sondern direkt im Zahnrad-Menü oben rechts unter "Admin → Userverwaltung". Auf der Userverwaltung gibt es jetzt zusätzlich einen Live-Feed: du siehst in Echtzeit, wer (Betreiber oder Mitarbeiter am Tablet) gerade welche Seite aufruft. Der Feed aktualisiert sich automatisch alle 4 Sekunden, du kannst ihn pausieren, und ältere Einträge (über 7 Tage) werden automatisch aufgeräumt.
- v0.20.0
Neue URL: energydesk.online
- Energydesk ist jetzt unter https://energydesk.online erreichbar. Die alte Adresse https://station.dynkhues.com leitet automatisch dorthin weiter, deine bestehenden Bookmarks funktionieren also weiter — du musst aber nichts neu einrichten. Push-Benachrichtigungen, Login und Mails laufen unverändert.
- v0.19.0
Admin-Bereich auf der Übersicht
- Plattform-Admins (z. B. dynkhues) sehen auf der Übersicht jetzt einen eigenen Admin-Bereich. Darin gibt es die Userverwaltung: alle Betreiber-Accounts auf einen Blick mit Status, Email-Bestätigung und Registrierungsdatum. Admins können Passwörter zurücksetzen, Accounts löschen, ausstehende Verifikationsmails neu schicken und anderen Betreibern Admin-Rechte erteilen oder entziehen. Für reguläre Betreiber ändert sich nichts — der Admin-Bereich ist für sie nicht sichtbar.
- v0.18.2
Tablet-Dokumente: Label-Liste startet eingeklappt
- Auf der Tablet-Dokumentenseite ist der Label-Block jetzt standardmäßig eingeklappt — die Suche und der „Alle Dokumente"-Schalter sind oben sofort sichtbar, ohne erst über die Label-Liste scrollen zu müssen. Wenn bereits Labels aktiv sind, bleibt der Block geöffnet, damit du deine Auswahl direkt siehst.
- v0.18.1
Tablet-Suche findet auch Dokumente ohne Kategorie
- Auf der Tablet-Dokumentenseite hat die Volltext-Suche bisher Dokumente übersprungen, die keine Kategorie zugeordnet hatten — z. B. Treffer wie „Winter…" tauchten dann gar nicht erst in der Liste auf. Jetzt werden auch unkategorisierte Dokumente in den Suchergebnissen gezeigt.
- v0.18.0
Belehrungs-Wiederansicht, Dokument-Suche & Marktplatz-Bündel
- Tablet · Eigene Belehrungen: Beim erneuten Öffnen einer abgeschlossenen Belehrung wird das signierte PDF jetzt komplett angezeigt — inklusive der Seite mit deiner Unterschrift. Auf iPad-Safari ist die Vorschau bisher auf die erste Seite zusammengefallen; sie nutzt jetzt denselben mehrseitigen Renderer wie der Lese-Schritt.
- Tablet · Dokumente: Neuer „Alle Dokumente"-Filter analog zur Operator-Sicht. Wenn du etwas in das Suchfeld tippst, wird automatisch über alle für die Station sichtbaren Dokumente gesucht — bis du ein Label setzt, dann beschränkt sich die Suche wie gehabt auf das Label und seine Unter-Labels.
- Operator · Dokumente: Suche ohne aktiven Label-Filter durchsucht jetzt alle Dokumente; Label-Auswahl bleibt der Filter, der die Suche eingrenzt — das spart einen Klick beim Quer-Suchen.
- Marktplatz: Zurückgezogene eigene Items verschwinden aus der Übersicht. (Wer sie schon übernommen hat, behält seine Kopie.)
- Marktplatz: Wird eine Aufgabe mit hinterlegtem Dokument-Anhang veröffentlicht, reist das Dokument mit. Wer die Aufgabe übernimmt, bekommt eine eigene Kopie des Dokuments im Cluster und sieht es beim Tablet-Aufruf der Aufgabe direkt — vorher landete die Aufgabe ohne Anhang beim Bezieher.
- v0.17.0
Checklisten löschen wie Aufgaben
- Auf der Checklisten-Übersicht (`/operator/checklists`) gibt es jetzt Auswahl-Kästchen pro Zeile, eine Aktion „Löschen" und einen „Ausführen"-Button — analog zur Aufgaben-Übersicht. Mehrere Checklisten lassen sich auf einmal löschen.
- Gelöscht wird per Soft-Delete: bereits ausgefüllte Checklisten-Runs bleiben in der Historie sichtbar, offene Entwürfe werden entfernt.
- Wenn eine Checkliste noch in einer aktiven Aufgabe verlinkt ist, blockiert das System das Löschen mit einer Hinweismeldung — bitte erst die Aufgabe(n) anpassen oder löschen.
- v0.16.3
Aufgaben-Dokument: Suche findet jetzt alle Treffer
- Die Dokument-Suche beim Anlegen einer Aufgabe lief bisher gegen die ersten 500 alphabetisch sortierten Dokumente — alles dahinter (z. B. „Winter…") tauchte nicht in den Treffern auf.
- Jetzt sucht das Eingabefeld direkt in der Datenbank über alle aktiven Dokumente; die Treffer erscheinen in Echtzeit beim Tippen.
- v0.16.2
Marktplatz: Eigene Items direkt aus der Übersicht zurückziehen
- In der Marktplatz-Übersicht erscheint bei eigenen Listings rechts in der Zeile ein Link „Vom Marktplatz nehmen". Mit einem Klick wird das Listing zurückgezogen — bereits übernommene Kopien bei anderen Betreibern bleiben unangetastet (wie bisher).
- Eigene zurückgezogene Listings sind in der Übersicht weiterhin sichtbar, ausgegraut und mit dem Hinweis „zurückgezogen" markiert, damit der Anbieter eine vollständige Sicht auf seine Marktplatz-Aktivität hat.
- v0.16.1
Aufgaben-Dokument: Suche statt Pulldown
- Beim Anhängen eines Dokuments an eine Aufgabe gibt es jetzt ein Suchfeld statt einer langen Aufklapp-Liste — Titel eintippen, Treffer aus der Liste anklicken. Die Auswahl lässt sich mit „Entfernen" wieder lösen.
- v0.16.0
Aufgaben mit Dokument-Anhang
- Neue Aufgaben-Variante: An eine Aufgabe lässt sich ein Dokument (PDF) hinterlegen — der Mitarbeiter sieht das Dokument am Tablet beim Öffnen der Aufgabe und bestätigt es danach wie gewohnt mit PIN/Foto/Unterschrift.
- Pro Aufgabe ist ein Anhang möglich: externer Link, Checkliste oder Dokument. Die Eingabefelder im Operator-Backoffice schließen sich gegenseitig aus.
- Wird die Dokument-Version später aktualisiert, sehen Mitarbeiter ab dem nächsten Aufruf automatisch die neue Fassung; gelöschte Dokumente entfernen den Anhang aus der Aufgabe, ohne die Aufgabe selbst zu zerstören.
- v0.15.1
Betreiber-Accounts sofort aktiv
- Neue Betreiber-Accounts sind direkt nach der Registrierung aktiv — egal ob über Email/Passwort oder Google. Der manuelle Freischalt-Schritt durch einen Plattform-Admin entfällt.
- Bereits wartende Accounts (Status „wartet auf Freischaltung") wurden im Zuge dieses Updates automatisch aktiviert.
- Bei der Anmeldung mit Google wird man jetzt direkt nach der Bestätigung in das eigene Backoffice geleitet, nicht mehr auf eine Pending-Seite.
- v0.15.0
Anmeldung mit Google
- Du kannst dich als Betreiber jetzt mit deinem Google-Konto registrieren oder anmelden — auf den Seiten „Anmelden" und „Betreiber-Account anlegen" gibt es einen neuen Button „Mit Google fortfahren".
- Die Email gilt bei der Anmeldung mit Google direkt als verifiziert; danach schaltet ein Plattform-Admin den Account frei wie gehabt.
- Wer schon einen Email/Passwort-Account hat und sich später mit demselben Google-Konto anmeldet, bekommt das Konto automatisch verknüpft — es entsteht kein zweites Konto.
- Email/Passwort-Login bleibt parallel verfügbar. Backoffice-Logins (Super-Admin, Brand-Admin, Stationsleiter) gehen weiter ausschließlich per Email/Passwort.
- v0.14.2
Marktplatz: Inhalte vor dem Übernehmen sichtbar, Publish-Form vereinfacht
- Auf der Detail-Seite eines Marktplatz-Items wird jetzt der Inhalt sichtbar — bei Checklisten alle Items mit Typ, Pflicht-Markierung und Soll-Bereich, bei Aufgaben die Handlungsanweisung und Fälligkeit, bei Belehrungen der Rechtstext, bei Kontakten alle Felder. So kannst du vor dem Übernehmen prüfen, was du holst.
- Veröffentlichen-Form: „Titel auf dem Marktplatz" wird automatisch mit dem Namen des gewählten Quell-Items vorausgefüllt. Wer das Feld manuell editiert, bleibt von späteren Auto-Updates verschont.
- Veröffentlichen-Form: Die Cluster-Auswahl wird ausgeblendet, wenn du nur einen einzigen Cluster betreibst — das einzige Cluster ist dann automatisch gewählt.
- v0.14.1
Marktplatz: Veröffentlichen reparieren
- Fix: Der „Anonym veröffentlichen"-Button auf `/operator/marketplace/publish` schlug mit „Veröffentlichung fehlgeschlagen" fehl. Datenbank-Constraints werden jetzt in der korrekten Reihenfolge geschrieben — Veröffentlichungen klappen wieder.
- v0.14.0
Marktplatz: Vorlagen anonym mit Betreibern derselben Brand teilen
- Neuer Bereich „Marktplatz" im Backoffice (`/operator/marketplace`): Aufgaben, Checklisten, Adressbuch-Einträge, Dokumente und Belehrungs-Vorlagen können anonym mit anderen Betreibern derselben Brand geteilt werden. Items anderer Brands bleiben unsichtbar.
- Veröffentlichen über `/operator/marketplace/publish` — Item-Typ wählen, Quell-Item auswählen, Cluster (legt die Brand fest), Titel, Beschreibung, Tags. Der Anbieter wird als anonymer Alias („Brand-Betreiber #NNNN") angezeigt; deine Original-Daten ändern sich nicht.
- Mengen-Übernahme: Mehrere Items per Checkbox auswählen und in einem Schritt in den eigenen Cluster kopieren (cluster-weit oder gezielt einzelne Stationen). Mitgelieferte PDFs werden als neue Dokument-Versionen im eigenen Cluster angelegt.
- Bewertungen mit 1–5 Sternen + optionalem Kommentar; nur möglich nach Übernahme. Anbieter können einmal pro Bewertung antworten.
- Missbrauchsmeldung an den Super-Admin direkt aus dem Listing oder einer Bewertung. Super-Admin sieht alle Meldungen unter `/admin/marketplace/reports` und kann Inhalte verstecken oder die Meldung abweisen.
- Eigene Listings können jederzeit zurückgezogen werden — bereits übernommene Kopien bei anderen Betreibern bleiben unangetastet.
- v0.13.0
Stations-Filter, Tooltips, OMIS-Links, Belehrungs-Wiederansicht
- Erledigte Aufgaben (`/operator/completed-tasks`) lassen sich jetzt zusätzlich nach Station filtern (Multi-Select) — Standard zeigt alle zugänglichen Stationen.
- Beim Hovern über eine erledigte Aufgabe erscheint eine kompakte Vorschau (Titel, Datum, Mitarbeiter, Status); auf dem Tablet öffnet erster Tap die Vorschau, zweiter Tap die Vollansicht. Bei Foto-Aufgaben wird das Foto-Thumbnail mit angezeigt.
- Aufgaben-Vorlagen können jetzt eine externe URL (z. B. OMIS) hinterlegen. Das Tablet öffnet das Portal eingebettet, und falls das vom Portal blockiert wird, automatisch in einem neuen Tab. Die Bestätigungsart ist pro Vorlage wählbar: nur Klick, Klick + PIN, oder Klick + Pflicht-Notiz.
- Auf der Aufgaben-Übersicht im Backoffice gibt es eine neue Massen-Aktion „Löschen" — gelöscht wird per Soft-Delete; bereits erledigte Tablet-Aufgaben bleiben in „Erledigte Aufgaben" sichtbar.
- Mitarbeiter können bereits abgeschlossene Belehrungen am Tablet erneut ansehen — geöffnet wird stets die damals unterzeichnete PDF-Version.
- Beim Klick auf „zur Dokumentenliste zurück" auf der Dokumenten-Detailseite bleibt die Label-Auswahl jetzt erhalten (Browser-Zurück-Navigation).
- Im Label-Verwalten-Dropdown gibt es eine neue Aktion „verschieben" — ein Label kann unter einen anderen Parent gehängt werden, auch wenn es schon Dokumenten zugewiesen ist. Die Zuordnungen bleiben unverändert.
- v0.12.0
Dokumente: Filter „Alle Dokumente"
- Im Label-Dropdown der Dokumente-Übersicht gibt es jetzt oberhalb von „Ohne Label" den Eintrag „Alle Dokumente". Damit lassen sich sämtliche Dokumente eines Betreibers ohne Label-Einschränkung anzeigen — exklusiv zur normalen Label-Auswahl.
- v0.11.1
Fix: kurze Belehrungs-PDFs lassen sich wieder bestätigen
- Wenn die Belehrung so kurz war, dass sie komplett ins Vorschaufenster passte, blieb der „Bitte vollständig nach unten scrollen"-Hinweis hängen — der „Bestätigen"-Button war nie aktiv. Jetzt wird die Belehrung in dem Fall direkt als gelesen markiert.
- v0.11.0
Dokumente: Mehrfachauswahl für Labels + Pillen entfernen
- In der Dokumente-Übersicht steht jetzt eine Checkbox vor jeder Zeile (plus „Alle auswählen" oben). Bei Auswahl erscheint eine schwebende Aktionsleiste mit Label-Dropdown und „Label anhängen" — bestehende Labels bleiben erhalten, das gewählte Label wird ergänzt.
- Jede Label-Pille hat jetzt ein „×" — ein Klick entfernt das Label sofort vom Dokument, ohne die Detailseite öffnen zu müssen.
- v0.10.1
Belehrungs-Sammelnachweis enthält die Original-Belehrung + Rechtstext
- Das Sammel-PDF einer Belehrungs-Vorlage stellt jetzt die Original-Belehrung den Unterschriften voran — bei einer Compliance-Prüfung ist sofort ersichtlich, *was* unterzeichnet wurde.
- Über der Tabelle steht zusätzlich der von allen Aufgeführten unterschriebene Rechtstext.
- Auf der Vorlagen-Edit-Seite gibt es einen Button „Sammel-PDF neu erzeugen", um bestehende Sammelnachweise nach Layout-Updates ohne neue Unterschrift zu aktualisieren.
- v0.10.0
Belehrungen + Duplikats-Erkennung beim Dokumenten-Upload
- Neues Modul „Belehrungen" unter Aufgaben → Belehrungen: Vorlagen mit PDF, Pflicht-Typ (Erst- und/oder Folgebelehrung), Wiederholungsmuster, Geltungsbereich (Cluster oder einzelne Stationen), Rechtstext und eigenen Labels für Einzel-PDF und Sammel-PDF.
- Bei Anlage eines neuen Mitarbeiters werden alle aktiven Erstbelehrungen seiner Station automatisch als Tablet-Aufgabe verteilt; Folgebelehrungen werden nach Abschluss der vorherigen für jeden Mitarbeiter individuell terminiert.
- Tablet-Workflow: PDF lesen → Rechtstext akzeptieren → handschriftlich unterschreiben → mit PIN bestätigen. Das System erzeugt unmittelbar ein signiertes PDF (Original + Bestätigungsseite mit eingebetteter Unterschrift, PIN-Vermerk und Hash der Quell-Belehrung) und legt es in der Dokumenten-Verwaltung ab.
- Compliance-Report zeigt zwei neue KPIs (überfällige Belehrungen, in 30 Tagen fällig) und eine Tabelle pro Vorlage mit Erfüllt/Offen/Überfällig-Zahlen.
- Beim Hochladen eines PDFs wird der SHA-256-Hash gegen alle bestehenden Versionen des Operators geprüft — Duplikate werden mit einem Hinweis auf den ursprünglichen Speicherort abgewiesen, statt einfach kopiert zu werden.
- v0.9.0
Tablet-Checkliste: Foto-Pflicht respektiert + Auto-Save
- Wenn die Aufgabe „Foto erforderlich" gesetzt hat, fragt das Tablet jetzt auch im Checklisten-Lauf nach einem Foto, bevor PIN/Unterschrift starten. Vorher wurde diese Pflicht beim Checklisten-Pfad ignoriert; das Foto erscheint im PDF unter „Foto der Aufgabe". Die API lehnt Abschlüsse ohne Foto ab, wenn die Aufgabe es erfordert.
- Der Button „Zwischenspeichern" entfällt — jede Änderung wird nach kurzer Pause automatisch gespeichert. Statt des Buttons zeigt eine kleine Statuszeile „Speichere…" / „Gespeichert um HH:MM" an.
- v0.8.1
Aufgaben: Tagesübersicht + Station-Filter
- Auf /operator/tasks gibt es jetzt eine Sektion „Heute": pro Aufgabeninstanz mit Status (offen / erledigt), Fälligkeitszeit, Zuständigkeit, Erlediger und Uhrzeit, sowie direktem Link zum erzeugten PDF (falls die Aufgabe eine PDF-Checkliste hatte).
- Neuer Station-Picker oben rechts; auf der Übersichtsseite verlinken die Aufgaben-Zähler einer Station direkt in die gefilterte Ansicht (/operator/tasks?station=…). Vorlagen-Tabelle und „Neue Aufgabe"-Button respektieren den Filter.
- v0.8.0
Checklisten-PDF: Foto + Unterschrift inline
- Aufgenommene Fotos werden jetzt direkt im PDF unter dem jeweiligen Item eingebettet (statt nur eines „Foto liegt im System"-Hinweises).
- Wenn die Aufgabe „Unterschrift erforderlich" ist, erscheint die geleistete Unterschrift am Ende des PDFs.
- Auf /operator/checklists gibt es zusätzlich zum „Fehlende PDFs nachgenerieren" jetzt einen „Alle PDFs neu erzeugen"-Button — z. B. nach diesem Format-Update. Bestehende Dokumente bekommen eine neue Version, statt dupliziert zu werden.
- v0.7.1
Fix: Checklisten-PDFs werden wieder erzeugt
- Im Standalone-Build hat PDFKit seine eingebauten Schriftdateien nicht mehr gefunden — die PDF-Erzeugung beim Abschluss einer Checkliste schlug deshalb still fehl (kein Dokument im Archiv, aber auch kein Fehler am Tablet). Behoben durch Auslagerung von pdfkit aus dem Webpack-Bundle.
- Auf /operator/checklists erscheint jetzt ein Banner, wenn abgeschlossene Läufe ohne PDF im Archiv liegen. Ein Klick generiert die fehlenden PDFs nachträglich und legt sie unter /operator/documents ab.
- v0.7.0
Operator-Übersicht: Live-Status pro Station + Settings-Menü
- Die Übersichtsseite (/operator) zeigt jetzt pro Station den Live-Zustand: aktuell eingestempelte Mitarbeiter (mit Uhrzeit Clock-in), heute schon ausgestempelte Mitarbeiter (mit Schicht-Zeitfenster) und Aufgaben des Tages (offen/erledigt mit Link in die Aufgabenliste).
- Die Seite aktualisiert sich automatisch alle 30 Sekunden, solange das Fenster sichtbar ist.
- Im Header gibt es ein neues Zahnrad-Menü neben dem User: dort sind „Cluster", „Stationen" und „Tablets" zusammengefasst. Aus der Hauptnavigation wurden diese Punkte entsprechend entfernt; „Reports" bleibt als Unterpunkt von „Übersicht".
- v0.6.0
Tablet-Checkliste: Einzeln-Ansicht
- Neuer Toggle „Liste / Einzeln" oben rechts im Checklisten-Lauf: in der Einzelansicht wird jede Aufgabe einzeln dargestellt; bei Ja/Nein- und Auswahl-Items springt das Tablet automatisch zur nächsten Aufgabe weiter.
- Am Ende erscheint eine Übersicht aller Aufgaben mit Status (✓ beantwortet, ! Pflicht offen, ○ optional offen) — tippen springt direkt zur jeweiligen Aufgabe zurück.
- Die gewählte Ansicht (Liste oder Einzeln) bleibt pro Tablet gespeichert.
- v0.5.0
Checklisten-PDF: Wunschname + Inline-Label
- Beim Anlegen/Bearbeiten einer Checkliste mit PDF-Output gibt es jetzt ein Feld „Wunschname" — eine Vorlage mit Platzhaltern {name}, {datum}, {datum_zeit}, {station}, {mitarbeiter}, {aufgabe}. Leer = Default „Name – YYYYMMDD – Station".
- Direkt neben dem Label-Selector gibt es einen „+ Neu"-Button: neues Label inline anlegen, ohne die Seite zu verlassen — wird sofort ausgewählt.
- v0.4.1
Aufgaben editierbar
- Bestehende Aufgaben lassen sich jetzt bearbeiten: jede Zeile in /operator/tasks öffnet eine Detailseite, auf der Titel, Anweisung, Zuständigkeit, Wiederholung, Zeitfenster, Bestätigungs-Optionen, Eskalation, Checkliste und Aktiv-Status anpassbar sind.
- Werden Wiederholung, Datum oder Uhrzeit geändert, werden offene Tablet-Einträge ab jetzt neu materialisiert; bereits erledigte Einträge bleiben unangetastet.
- Die Station bleibt beim Bearbeiten fixiert — wer eine Aufgabe an einer anderen Station haben will, legt eine neue an.
- v0.4.0
Tablet: Dokumente nach Label filtern
- Auf dem Tablet gibt es in der Dokumentenübersicht jetzt einen Label-Filter — kombinierbar mit der Volltext-Suche. Wählst du ein Eltern-Label, sind auch Unter-Labels enthalten. Label-Chips an jeder Trefferzeile zeigen, was zugeordnet ist.
- Releases-Seite: ‚← zurück' nutzt jetzt die Browser-History statt fix auf ‚/' zu springen — angemeldete Operatoren landen wieder dort, wo sie hergekommen sind, ohne sich neu anzumelden.
- v0.3.1
Labels live + Dokumente löschen
- Neu angelegte Labels erscheinen sofort in der Liste (lokaler State + Refetch ohne Reload).
- Dokumente lassen sich jetzt löschen — auf der Detailseite per Button und in der Listenansicht per kleinem Inline-Link oben rechts. Versionen und Dateien auf Disk werden mit entfernt.
- v0.3.0
Labels statt Kategorien · Multi-Page-PDF auf dem Tablet
- Dokumente bekommen Gmail-artige Labels — beliebig verschachtelt, mehrere pro Dokument. Ablöse der bisherigen Kategorien beginnt; Labels verwalten direkt auf der Übersicht.
- Der Drag-&-Drop-Bereich ist jetzt einklappbar (Standard: zugeklappt) und der Cluster-Selector erscheint nur, wenn der Operator mehr als einen Cluster hat. Typ und der Button +PDF mit Details hochladen sind raus.
- Dokument-Detailseite: Titel umbenennen und Labels direkt setzen.
- Sortierung der Dokumentliste nach Datum oder Titel (auf-/absteigend).
- Tablet-Vorschau zeigt jetzt mit pdf.js wirklich alle Seiten — vorher hat iOS Safari nur Seite 1 gerendert.
- Checkliste bekommt ein Feld 'Label nach Erledigung' — beim PDF-Output wird dieses Label automatisch an das erzeugte Dokument geheftet.
- v0.2.0
Drag & Drop für Dokumente
- Neuer Drop-Bereich auf /operator/documents: PDFs einfach reinziehen, Cluster & Kategorie werden vorausgewählt.
- Mehrere Dateien gleichzeitig möglich, max. 50 MB pro PDF.
- Pro Datei wird der Upload-Status (lädt … · fertig · Fehler) angezeigt.
- v0.1.1
Versionierung eingeführt
- Versionsnummer im Footer jeder Seite, Klick öffnet diese Übersicht.
- Releases werden ab sofort mit Datum, Uhrzeit und kurzen Notizen gepflegt.