Changelog
Alle Änderungen an SHIFTDECK – klar gekennzeichnet was neu ist, was repariert wurde und was verbessert wurde.
🆕 Neu Neue Funktion
🐛 Bugfix Fehler behoben
⚡ Verbessert Verbesserung
🔧 Technisch Interne Änderung
🎨 Major Großes Update
🐛 Bugfix · FAQ-Wissensdatenbank
- Software zeigte nur 5 statt 68 zentraler FAQs – Frontend hat den alten Endpoint
/api/tickets/faq_public.php (Webseiten-MariaDB, 5 Alt-Einträge) statt den neuen /api/faq-kb/list.php (zentrale Wissensdatenbank, 68 published) abgerufen.
- Fix – Frontend pullt jetzt von
https://shiftdeck.de/api/faq-kb/list.php. Vom Admin auf shiftdeck.de beantwortete FAQs sind sofort in jeder Software-Instanz sichtbar.
- Live-Sync – Wenn der Admin eine pending Frage beantwortet oder eine neue FAQ anlegt, erscheint sie binnen Sekunden in jeder Software unter „Hilfe & FAQ".
🐛 Bugfix · Hilfe & FAQ
- Default-FAQs waren unsichtbar – „Hilfe & FAQ" zeigte keine Antworten an, weder als User noch als Admin. Die 65 Default-FAQs (Stempeluhr, Urlaub, etc.) waren in MongoDB als
status: 'pending' markiert, aber das Backend zeigt nur status: 'published'-Einträge.
- Auto-Migration beim Start – Nach dem Update korrigiert die Software automatisch alle Default-FAQs (ohne
submitted_by) von pending auf published. User-eingereichte Fragen bleiben korrekt pending.
- Seed-Code gefixt – Neue Installationen seeden Default-FAQs jetzt direkt mit
status: 'published' — Bug kann nicht wiederkommen.
🆕 Neu · Zentrale FAQ-Wissensdatenbank
- Eigene FAQ-Datenbank auf shiftdeck.de – Alle Fragen + Antworten zentral. Jede Software zieht denselben aktuellen Stand.
- „Frage stellen" mit Customer-Kontext – Submit übergibt Lizenz-Key, Customer-E-Mail/Name, Organisation, Software-Version. Admin sieht den passenden Kunden sofort.
- Neues Admin-UI auf
/admin-faq-wissensdatenbank.html – Tabs Pending/Beantwortet/Abgelehnt, Volltext-Suche, automatische Customer-Anzeige zur Lizenz.
- 66 Default-FAQs gespiegelt – Bisherige Software-Defaults sind einmalig in die zentrale DB importiert und dort vom Admin pflegbar.
- Externer Server entfernt – Keine externe IP mehr im FAQ-Pfad. Alles über shiftdeck.de.
🐛 Bugfix · FAQ & Support
- „Frage stellen" landet jetzt auch im SHIFTDECK Hersteller-Support – Eine Frage aus dem Mitarbeiter-Hilfecenter geht jetzt parallel an den lokalen Vorgesetzten und an die FAQ-Verwaltung auf shiftdeck.de.
- Neuer Webseiten-Endpoint –
POST /api/faq/submit.php auf shiftdeck.de speichert die Frage als is_published=0. Sichtbar im Admin-Bereich unter Support Center → FAQ-Verwaltung → Unbeantwortete.
- Best-effort beim externen Call – Bei Netzwerkfehler oder Wartung bleibt der lokale Erfolg bestehen, kein nerviger 400-Dialog mehr für den User.
- Hintergrund – Der CHANGELOG-Eintrag von v6.81 hatte den externen Call irrtümlich als „Whitelabel-Altlast" entfernt. Tatsächlich war der externe Weg gewollt — er war nur an den falschen Endpoint gerichtet (Ticket-Endpoint statt FAQ-Endpoint).
🐛 Bugfix · update.sh
- „Cannot change ownership"-Fehler beim Update behoben –
curl -fsSLk https://shiftdeck.de/download/update.sh | bash brach mit tar: Cannot change ownership to uid 197108, gid 197121: Invalid argument ab.
- Ursache – Die tar-Archive enthielten Windows-NTFS-Pseudo-IDs (UID 197108/GID 197121), die unter Linux nicht existieren. Tar versuchte diese IDs auf die entpackten Dateien zu setzen → Fehler → Skript-Abbruch.
- Fix – tar-Pakete werden jetzt mit
--owner=0 --group=0 --numeric-owner gepackt. Dadurch enthalten die Archive root:root statt Windows-Pseudo-IDs und entpacken auf jedem Linux-System sauber.
- Update wiederholen – Wer beim Update auf v6.82 abgebrochen wurde, kann den Befehl jetzt erneut ausführen — er zieht v6.83 ohne Fehler.
🔧 Workflow-Test
- Test der neuen Versions-Erstellung – Diese Version dient ausschließlich dem Test des neuen Direkt-Upload-Workflows. Es wurden keine inhaltlichen Änderungen am Quellcode vorgenommen — funktional identisch mit v6.81.
- Hintergrund – Erster Durchlauf mit dem neuen Build- und Auslieferungs-Ablauf: Versionsnummer +0.01 in allen Dateien, CHANGELOG aktualisiert, tar.gz-Pakete neu gebaut, Spiegel-Sync direkt auf den Live-Server, Versions-Archive lokal abgelegt.
- Update nicht erforderlich – Wenn Sie bereits v6.81 nutzen, können Sie v6.82 überspringen.
🐛 Bugfix · Hilfe & FAQ
- „Frage stellen" funktioniert wieder – Im Mitarbeiter-Hilfecenter warf das Modal „Request failed with status code 400". Ursache: ein Whitelabel-Altlast-Call an einen externen Support-Server. Frage geht jetzt ausschließlich an den Vorgesetzten — exakt wie es die UI verspricht.
- Push-Notification an Admins – Sobald ein Mitarbeiter eine neue Frage einreicht, bekommen alle Admins der Organisation eine Push-Benachrichtigung mit Absender und Vorschau-Text.
- Pending-Fragen im Glocken-Badge – Offene Mitarbeiter-Fragen erscheinen jetzt im Notifications-Badge oben rechts, neben Urlaub/Überstunden/Korrektur-Anträgen.
- Klartext-Fehlermeldungen – Statt der nichtssagenden Axios-Meldung zeigt das Modal jetzt das tatsächliche Backend-
detail (z. B. „Frage darf nicht leer sein").
- Duplikat-Hinweis – War die Frage schon einmal gestellt, sieht der Mitarbeiter jetzt eine eindeutige Meldung statt eines stillen „Ok".
- Handbuch & Onboarding – Neues Kapitel „Hilfe & FAQ" im Handbuch, neuer Onboarding-Step „Antworten finden — oder Fragen stellen", FAQ-Bot um 2 Einträge erweitert.
🐛 Bugfix
- Kein GPS-Dialog mehr beim Logout – Beim Klick auf „Abmelden" erschien der GPS-Consent-Dialog fälschlicherweise erneut. Das ist jetzt gefixt.
- Strikte Consent-Prüfung –
getCurrentLocation() bricht ab, wenn der User noch keine Entscheidung getroffen hat. Keine impliziten Browser-Prompts mehr.
- Auth-Awareness – Der Consent-Dialog erscheint niemals ohne gültiges Login. Auf dem Login-Screen wird garantiert keine GPS-Abfrage ausgelöst.
- Redundante Speicherung – Consent wird zusätzlich in
sessionStorage gesichert, falls localStorage kurz nicht zugänglich ist.
- Dialog-Cleanup beim Logout – Wenn ein Dialog offen ist und der User sich abmeldet, wird dieser sauber geschlossen.
🎨 Rich-Content FAQ
- FAQ mit Bildern und Rich-Text – Du kannst auf shiftdeck.de FAQs jetzt mit formatiertem Text (fett, kursiv, Listen, Überschriften) und Hauptbild erstellen. Diese werden 1:1 in der Software angezeigt.
- Neuer Admin-Editor:
https://shiftdeck.de/admin-faq.html mit Markdown-Toolbar, Live-Vorschau und Bild-Upload bis 10 MB (JPG/PNG/GIF/WebP/SVG).
- Markdown-Renderer in Software – XSS-sicherer Mini-Renderer (3 KB, ohne externe Dependencies). Rendert
**fett**, Listen, Überschriften, Inline-Bilder, Links, Code-Blöcke, Zitate.
- Hauptbild oben – FAQs mit
featured_image zeigen das Bild prominent über der Antwort.
- Webseite v4.39: Neue Datenbank-Felder (
featured_image, summary, answer_format) + REST-API für Admin-CRUD + Bild-Upload. SQL-Migration migration_v4_39_faq_rich.sql einmal ausführen.
- Backwards-compatible – Alte FAQs ohne Bild und ohne Markdown funktionieren weiter wie gewohnt.
🔄 FAQ-Sync
- FAQs auf shiftdeck.de → sofort in Software – Neuer „Aktualisieren"-Button in Hilfe & FAQ. Wenn du auf shiftdeck.de eine neue FAQ anlegst, Klick auf Aktualisieren → erscheint sofort in der Software.
- Canned Responses aus FAQ entfernt – Interne Admin-Ticket-Vorlagen (Begrüßung, Ticket geschlossen) werden nicht mehr als FAQ ausgeliefert. Nur echte, in der FAQ-Verwaltung gepflegte Einträge.
- Webseite v4.38:
api/tickets/faq_public.php filtert jetzt korrekt nur faq_entries mit is_published = 1.
- Cache-Buster: Browser zeigt garantiert frische Daten, nicht die gecachte Version.
- Refresh-Timestamp: Zeigt wann zuletzt aktualisiert wurde.
🛡️ Selbstheilung
- Host-Updater + Watchdog — Update-System endgültig robust – Nach 7 Versuchen das Update-System zu fixen gibt es jetzt die strukturelle Lösung: Zwei unabhängige Host-Tools außerhalb des Containers.
- Host-Updater:
/opt/shiftdeck/bin/shiftdeck-update — echtes Bash-Skript, nicht mehr vom Backend generiert. Kann manuell aufgerufen werden, funktioniert auch wenn das Backend buggy ist.
- Container-Watchdog: systemd-Service der alle 2 Minuten prüft, ob alle Container laufen. Startet fehlende Services automatisch neu und räumt verwaiste Prefix-Container weg.
- Selbstheilung: Max. 2 Minuten Downtime nach hängenden Updates. Keine manuellen SSH-Eingriffe mehr nötig.
- Installation:
bash /opt/shiftdeck/bin/install-host-tools.sh (einmalig nach v6.67-Update).
📍 UX-Verbesserung
- GPS-Berechtigung nur noch einmalig abgefragt – Bisher löste jeder Stempel-Klick den Browser-Prompt aus. Jetzt gibt's einen schönen einmaligen SHIFTDECK-Dialog.
- Neue GPS-Einstellung unter Konto – Mitarbeiter können im Konto-Menü „GPS-Standort" jederzeit ein-/ausschalten. Toggle-Button analog zu Push-Benachrichtigungen.
- Zentrale Logik in
lib/gpsConsent.js – getGpsConsent(), setGpsConsent(), getCurrentLocation() respektieren die User-Wahl. Bei „denied" wird gar nicht erst gefragt.
- Schöner Consent-Dialog – Mobile-first mit Slide-up, Amber-Gradient, klarer Info: „Nur beim Stempeln" + „Jederzeit widerrufbar unter Konto → GPS-Standort".
- Live-Sync – Änderungen in den Einstellungen wirken sofort im Dashboard und umgekehrt — via Custom-Event
shiftdeck-gps-consent-changed.
- Browser-Blockade erkannt – Wenn der User im Browser den Zugriff dauerhaft blockiert, wird Consent auf „denied" gesetzt und ein passender Hinweis in den Einstellungen angezeigt.
✨ Redesign
- Hilfe & FAQ komplett neu gestaltet – Statt 34 Kategorie-Badges gibt's jetzt 6 sinnvolle Themen-Gruppen: Arbeitsalltag, Planung & Abwesenheit, Konto & Login, Administration, System & Export, Hilfe & Support.
- Hero-Suche mit ⌘K-Shortcut – Große, prominente Suchleiste mit editorialer Gestaltung. Strg+K / ⌘K fokussiert die Suche wie in modernen Dokus.
- Beliebte Fragen als Quick-Cards – Auf der Startseite werden 6 populäre Fragen als schnell klickbare Cards gezeigt — basierend auf häufigen Keywords wie „stempeln", „passwort", „urlaub".
- Themen-Karten mit Gradient-Icons – 6 farbige Karten (Amber, Indigo, Rose, Violet, Slate, Emerald) mit Icon, Subtitel und Anzahl-Badge. 3-Spalten-Grid auf Desktop.
- Accordion-Liste mit farbiger Zuordnung – Jeder FAQ-Eintrag bekommt das Icon seiner Gruppe in passender Farbe. Nur eine Frage gleichzeitig offen — viel übersichtlicher.
- Dunkler CTA-Footer – „Keine passende Antwort gefunden?" mit direktem Support-Ticket-Button am Ende der Seite.
- Dark Mode optimiert – Alle Komponenten sauber in hell und dunkel.
🐛 Bugfix
- Hilfe & FAQ zeigte nur 10 Einträge statt 64 – Falsche URL-Konstruktion:
api.get('/faq') traf den Pfad /faq statt /api/faq (404). Lokale FAQs waren komplett unsichtbar.
- Fix: URL korrekt mit
${API}/faq-Prefix aufgebaut, wie in allen anderen API-Aufrufen der Codebase.
- Neue Quellen-Statistik in der UI – Über der Suche wird jetzt angezeigt: „Lokal: 64 | shiftdeck.de: 32 | Gesamt: 96". So sieht man auf einen Blick ob beide Quellen geladen wurden.
- Bessere Diagnose – Console-Log beim Laden zeigt Anzahl der Einträge, HTTP-Status bei Fehlern.
🔧 Root-Cause-Fix
- Update-Modul hing bei 98% — echte Ursache gefunden: Der Backend-Endpoint
/api/updates/status las eine andere Status-Datei als das Bash-Skript schrieb. Frontend erkannte den Erfolg nie.
- Backend-Endpoint vollständig überarbeitet – Liest jetzt zuerst die neue
updates/status.json (Bash-Script-Status) und fällt auf den alten Mechanismus zurück.
- Neuer „Reparieren"-Button in Server-Updates – Amber-Button oben rechts. Räumt verwaiste Container weg und startet fehlende Services neu — direkt aus der Software heraus, kein SSH nötig.
- Neuer Backend-Endpoint
/api/updates/auto/recover – Läuft via nsenter auf dem Host, docker compose up -d, Status-Reset, vollständiger Bash-Output als Diagnose.
- Stale-Detection – Status-Files, die länger als 15 Minuten nicht aktualisiert wurden, werden automatisch als
stale markiert.
- Rückwärts-kompatibel – Alte Installationen, die noch
_update_status.json nutzen, funktionieren weiter.
🎫 Neue Funktion
- Tickets schließen direkt in der Software – Neuer grüner Button „Ticket schließen" im Ticket-Header. Mit Confirm-Dialog gegen versehentliches Klicken.
- Tickets wieder öffnen – Bei geschlossenen Tickets erscheint ein „Wieder öffnen"-Button. Falls der Kunde doch noch eine Frage hat.
- Bidirektionale Synchronisation mit shiftdeck.de – Status-Änderungen werden sofort an die Webseite gesendet. Admin sieht den geänderten Status in der Ticket-Übersicht.
- System-Nachrichten im Verlauf – Bei jedem Schließen/Öffnen wird eine System-Nachricht eingefügt: „Ticket wurde vom Kunden geschlossen/wieder geöffnet."
- Lizenz-Berechtigungsprüfung – Nur der Kunde, der das Ticket erstellt hat, darf es schließen oder öffnen. Der Backend-PHP-Endpoint validiert dies.
- Webseite v4.37 – Neue PHP-Actions
close und reopen in api/tickets/software_submit.php.
🔧 Kritischer Fix
- Update-System hing bei 98% „Neu starten" – Das Update lief zwar erfolgreich durch, aber die UI erkannte den Erfolg nicht und Container fehlten teilweise. Drei Ursachen im Zusammenspiel.
- Ursache 1: Container-Namens-Kollision –
docker compose up -d --force-recreate vergab den neuen Containern Prefix-Namen wie f7576088bd53_admin-server-backend. Die Verifikation docker exec admin-server-backend scheiterte dadurch.
- Ursache 2: UI-Polling erkannte Erfolg nicht – Die
Updates.js-Seite prüfte data.step === 'complete', aber das Bash-Skript schreibt stage === 'success'. Key-Mismatch → Reload wurde nie getriggert.
- Ursache 3: Backend-Restart als Fehler interpretiert – Während der Container gerade neu startet, antwortet das Backend kurz mit 502. Das UI wertete das als kritischen Fehler statt als „warte ab".
- Fix 1: Saubere Container-Restart-Sequenz – Erst
docker compose stop + rm -f, dann up -d ohne --force-recreate. Container haben jetzt garantiert die erwarteten Namen.
- Fix 2: Vollständige Stage-Erkennung – Polling akzeptiert
success/done/complete als Erfolg und failed/rolled_back/stale als Fehler. Neue Dialog-Labels für alle Bash-Stages.
- Fix 3: Error-Tolerance während Restart – Polling toleriert bis zu 40 konsekutive Backend-Ausfälle (≈ 3-4 Minuten), bevor „Keine Verbindung"-Meldung erscheint. Restart-Phase läuft unsichtbar durch.
- Bonus: Paranoid-Cleanup – Verwaiste Container mit Prefix-Namen (von früheren gescheiterten Updates) werden vor dem Neustart explizit entfernt.
📚 Verbessert
- Auto-Seed für 64 Default-FAQs – Die Hilfe & FAQ-Seite zeigte nur 10 Einträge, weil der manuelle „Standard-FAQs laden"-Button im Admin-Panel auf den meisten Installationen nie geklickt wurde. Jetzt läuft der Seed automatisch beim Backend-Start.
- Neue JSON-Datei
backend/data/default_faqs.json – Enthält alle 64 Einträge in 24 Kategorien (Stempeluhr, Urlaub, Dienstplan, Passwort, Krankmeldung, App, Einstellungen, Mitarbeiter, DATEV, Projekte, GPS, DSGVO, Backups, uvm.).
auto_seed_faqs() beim Startup – Prüft: Wenn die DB weniger als 20 FAQ-Einträge hat, werden die 64 Defaults automatisch importiert. Duplikate (gleiche Frage+Kategorie) werden übersprungen, keine bestehenden Einträge überschrieben.
- Neuer Admin-Endpoint
POST /api/admin/faq/seed-defaults – Zum sofortigen Nachladen ohne Backend-Neustart. Response: {imported, skipped, total_in_db}.
- Ergebnis: Die Hilfe-Seite zeigt jetzt ca. 64 lokale + ca. 30 shiftdeck.de-Einträge = 90-100 FAQ-Antworten nach Duplikat-Merge.
🚨 Kritisch
- Auto-Updater crashte mit
KeyError: 'print $1*1024' – Beim Klick auf „Update starten" im Web-UI scheiterte der Backend-Code beim Generieren des Update-Bash-Scripts. Der Updater fiel auf v6.29 zurück, was zu „keine gzip-Datei"-Fehler führte.
- Ursache: Das Bash-Template in
simple_updater.py wird mit Python's .format() zusammengebaut. Die geschweiften Klammern in awk '{print $1*1024}', docker --format '{{.Size}}' und Bash-Variablen wie ${CACHE_SIZE_MB} wurden als Python-Platzhalter interpretiert.
- Fix: Alle echten
{}-Klammern im Template verdoppelt ({{...}}). Template rendert jetzt alle 6.767 Zeichen ohne Exception.
- Manuelles Update nötig: Weil der Auto-Updater selbst kaputt war, muss v6.59 einmalig per SSH mit
bash update.sh + docker compose build --no-cache backend eingespielt werden. Ab v6.59 läuft der Web-UI-Updater wieder.
🏷️ Bugfix + Aufräumen
- Sidebar-Übersetzungen ergänzt – Unter „System" wurden die rohen i18n-Keys
nav.help und nav.support angezeigt statt der deutschen Labels. Drei Sprachen (DE/EN/TR) um „Hilfe & FAQ" und „Support Tickets" erweitert.
- Duplikate entfernt – Im Sidebar-Footer tauchten „Hilfe & FAQ" und „Tickets" nochmal auf, weil sie historisch nur dort existierten. Seit v6.53/v6.54 gibt es sie im System-Menü — die Footer-Einträge wurden entfernt.
- Footer sauber – Nur noch Konto + Abmelden. Jeder Menüpunkt erscheint nur noch an einer Stelle.
🎯 Verbessert + Bugfix
- FAQ-System mit 69+ Einträgen endlich verbunden – Hilfe & FAQ-Seite rief bisher den falschen Endpoint (
/tickets/faq) auf. Jetzt wird korrekt /faq geladen mit allen 69 Einträgen aus der lokalen Datenbank.
- 18 neue Kategorie-Labels – Allgemein 💡, Erste Schritte 🚀, Zeiterfassung ⏱️, Dienstplan 📅, Abwesenheit 🏖️, Mitarbeiter 👥, Berechtigungen 🔐, Stundenzettel 📋, GPS 📍, DSGVO 🛡️, Einstellungen ⚙️, Integrationen 🔌, Problemlösung 🔧, Lizenz 🗝️, usw.
- Ticket „Keine Lizenz aktiv"-Fehler ENDGÜLTIG behoben – Der
/admin/license/status-Endpoint liefert den Lizenz-Key MASKIERT (SHIF...PAYN) für die UI-Sicherheit. Dadurch sendete die Software diesen maskierten String an shiftdeck.de — der dort nicht gefunden wurde.
- Neuer Backend-Endpoint
/admin/license/key-full – Liefert den kompletten, unmaskierten Lizenz-Key. Nur für eingeloggte Admins zugänglich (require_admin-Guard). Die Support-Seite nutzt jetzt diesen Endpoint.
- Shiftdeck.de-FAQ bleibt als sekundäre Quelle – Mischt sich zu den lokalen FAQs dazu, Globus-Badge zeigt die Quelle an, Duplikate werden Case-insensitive gemerged.
🔧 Bugfix
- Support-Ticket „Keine Lizenz aktiv"-Fehler behoben – Die Support-Seite las den Lizenz-Key nur aus
localStorage, der bei vielen Installationen leer war (Aktivierung über Docker-ENV, Browser-Cache-Reset, ältere Installationen).
- Fix: Support-Seite ruft jetzt beim Mount
getLicenseStatus() auf und holt den aktuell aktiven Lizenz-Key direkt vom Backend. Fallback auf localStorage bleibt für Offline-Fälle.
- Bonus: Der vom Backend geholte Key wird in localStorage gespiegelt, damit auch andere Komponenten (z.B. FAQ-Ticket-Button) ihn nutzen können.
🚨 Hotfix
- Build-Fehler in v6.54 behoben – Falscher Import-Pfad
../../hooks/useAuth in der neuen Support-Seite führte dazu, dass der Docker-Build mit Module not found scheiterte und der alte Container weiter lief.
- Fix: Korrekter Pfad
../../context/AuthContext (wie in allen anderen Admin-Seiten).
- Alle v6.54-Features bleiben erhalten: Support-Chat, Datei-Uploads, bidirektionaler Flow mit shiftdeck.de, Live-Polling alle 20 Sek.
- Nach
bash update.sh sollte der Build jetzt erfolgreich mit Compiled successfully durchlaufen.
💬 Neu
- Komplett neue Support-Oberfläche – Eigene Seite unter „Support Tickets" im Admin-System-Menü (auch über
/support). Inbox mit Stat-Karten, Suche, Filter, und modernem Chat-Layout im Detail.
- Datei-Anhänge – Bilder (JPG/PNG/GIF/WEBP) und PDFs, max 5 Dateien à 5 MB. Als Base64 übertragen und auf shiftdeck.de unter
/uploads/tickets/ gespeichert.
- Bidirektionaler Ticket-Flow – Software-Tickets landen jetzt korrekt in
tickets+ticket_messages mit UUID. Admin-Antworten auf shiftdeck.de fließen über Polling alle 20 Sek zurück in die Software.
- Chat-Bubbles im Messenger-Stil – Kunde rechts (dunkel), Support links (amber), Avatar-Kreise mit Icons, menschenlesbare Zeitstempel.
- Live-Polling – Inbox aktualisiert sich alle 20 Sek, „Neu"-Karte pulsiert wenn Support geantwortet hat. Im offenen Ticket werden neue Admin-Antworten ohne Reload sichtbar.
- Hilfe & FAQ aufgeräumt – „Frage an Support senden"-Buttons leiten jetzt zur vollwertigen Support-Seite weiter statt zum alten Mini-Formular.
💬 Neu
- Hilfe & FAQ mit shiftdeck.de verbunden – Die FAQ-Seite zieht jetzt Einträge aus zwei Quellen parallel: lokale Wissensdatenbank UND shiftdeck.de (neuer öffentlicher Endpunkt
api/tickets/faq_public.php kombiniert faq_entries + ticket_canned_responses).
- Ticket direkt senden wenn nichts gefunden – Bei 0 Treffern erscheint prominent „Frage an Support senden". Formular mit Betreff + Nachricht, sendet an
shiftdeck.de/api/tickets/index.php mit User-Name, E-Mail, Firma und Lizenz-Key aus localStorage.
- Globus-Badge – FAQ-Einträge von shiftdeck.de werden mit 🌐 gekennzeichnet, damit man die Quelle sieht.
- Duplikate-Erkennung – Gleiche Fragen aus beiden Quellen werden nur einmal angezeigt (Case-insensitive).
- Admin-Sidebar-Eintrag – „Hilfe & FAQ" ist jetzt auch im Admin-Bereich unter „System" verfügbar.
🎨 Verbessert
- „Modul in Entwicklung"-Seite für alle Branchenmodule – Klick auf „Kita & Soziales", „Pflege", „Transport" usw. in der Sidebar landete bisher auf dem Dashboard. Jetzt erscheint die schöne Platzhalter-Seite mit Icon, Gradient-Banner, Beschreibung und Hinweis auf das zukünftige Update.
- Routen-Fix in
App.js – Routen /admin/module/<id> sind jetzt sowohl für kurze IDs (kita, projekte, handwerk) als auch für lange Legacy-IDs (kita_soziales, projekterfassung, handwerk_bau) registriert.
- Alias-Mapping in
ModulePage.js – Kurze IDs werden intern auf die MODULE_INFO-Schlüssel gemappt, damit Icon, Farbverlauf und Beschreibung immer korrekt geladen werden.
- Projekte bleibt Ausnahme – „Projekte & Baustellen" öffnet weiterhin
/admin/projects (echte Seite), weil als einziges Branchenmodul bereits implementiert.
🗂️ Verbessert
- „Projekte" jetzt unter „Module" statt „Verwaltung" – Der Menüpunkt lag historisch hart unter Verwaltung, obwohl Projekte & Baustellen längst ein lizenzabhängiges Branchenmodul ist.
moduleEntries erweitert – Module können jetzt einen eigenen path definieren (z.B. /admin/projects), der Vorrang vor dem generischen /admin/module/<id> hat.
- Sichtbar nur mit Buchung – Nur Admins, deren Lizenz
projekte freigeschaltet hat, sehen den Eintrag. Andere sehen die Gruppe „Module" ohne diesen Punkt.
🔄 Verbessert
- Sidebar-Module aktualisieren sich endlich automatisch – Nach Klick auf „Synchronisieren" wurden gebuchte Module zwar korrekt in den Kachel-Karten angezeigt, die linke Navigations-Sidebar blieb aber veraltet bis zum nächsten F5-Reload.
- Neues Event
sd-modules-updated – Die Lizenz-Seite feuert nach erfolgreichem Sync dieses Browser-Event. Layout.js hört darauf und lädt Module sofort neu – ohne Reload.
- Zusätzlich Auto-Refresh – Alle 2 Minuten im Hintergrund + beim Zurückkehren zum Tab (focus-Event). Damit ist die Sidebar immer synchron mit der Webseite und den Karten.
- Ausgelagerter Loader –
loadActiveModules() ist jetzt eine eigenständige Funktion, nicht mehr inline im useEffect – mehrfach aufrufbar.
🐛 Bugfixes
- Module doppelt & falsch benannt – Nach v6.48 erschien die Karte „Gebuchte Module" mit bis zu 5 statt 2 Kacheln, wenn die DB historisch sowohl kurze IDs (
kita, projekte) als auch Langformen (kita_soziales, projekterfassung) enthielt.
- Alias-Map & Deduplizierung –
server.py, License-UI und Sidebar-Layout vereinheitlichen jetzt alle Module auf die kanonischen kurzen IDs, die auch shiftdeck.de/api/license/verify liefert. Doppeleinträge werden zu EINEM zusammengeführt (ODER für aktiv, MAX für user_count).
- Kanonische Module-IDs –
projekte, kita, handwerk, gastronomie, pflege, einzelhandel, transport.
✨ Neu
- Karte „Gebuchte Module" unter Einstellungen → System & Lizenz – Vollständige Übersicht aller auf shiftdeck.de gebuchten Branchenmodule mit Icon, Status-Badge (aktiv/inaktiv), Nutzeranzahl und Kurzbeschreibung. Direkter Link ins Kundenportal zum Dazubuchen.
- Handbuch-Kapitel „Lizenz & Module" – Neuer Abschnitt mit Erklärung aller Lizenz-Kennzahlen, Schritt-für-Schritt-Anleitung zur Aktivierung, Modul-Übersicht und Fehlersuche (HARDWARE_MISMATCH, Sperren, User-Anzahl).
- Einführungs-Assistent: neuer Schritt „Branchen-Module" – Mitarbeiter werden jetzt zwischen Baustellen- und Dienstplan-Schritt kurz über die Branchen-Module und die Sidebar-Gruppe „Module" informiert.
🐛 Bugfixes
- Module verschwanden nach Lizenz-Sync/-Aktivierung – Beim Klick auf „Synchronisieren" oder „Aktivieren" wurde das
license_state ohne das modules-Feld neu aufgebaut. Module waren bis zum nächsten Hintergrund-Check (bis zu 60 Min) nicht mehr sichtbar. Behoben in allen drei Endpoints.
- Einheitliche Modul-Normalisierung –
/api/admin/license/status normalisiert jetzt Listen ["projekte"], Dicts {"key": true} und JSON-Strings einheitlich ins Dict-Format {id: {active, user_count}}.
- Frontend-Hook
useLicenseCheck – Liefert jetzt modules mit in den React-Context, sodass Komponenten außerhalb der Sidebar ebenfalls darauf zugreifen können.
✨ Neu
- Lizenz-Module als aufklappbare Sidebar-Gruppe – Aktivierte Module erscheinen jetzt wie „Planung", „System" als eigene Menügruppe mit Chevron, Highlight und professionellen Lucide-Icons (Hammer, Baby, HeartPulse, Truck etc.).
- 7 Branchen-Module – Projekterfassung, Kita & Soziales, Handwerk & Bau, Gastronomie, Pflege, Einzelhandel, Transport. Jedes Modul hat eine Platzhalter-Seite und wird nur angezeigt wenn es in der Lizenz aktiviert ist.
- Modul-Format-Normalisierung – Unterstützt sowohl
{"key": {"active": true}} als auch {"key": true} Format.
🐛 Bugfixes
- Ticket-Validierung verbessert – Getrennte Fehlermeldungen statt einer kombinierten. Minimum für Beschreibung von 5 auf 3 Zeichen reduziert.
- get_license_key() gefixt – Sucht jetzt in ENV, license_cache.json, .env und MongoDB.
- Frontend-Build-Fixes – BookOpen-Duplikat, Named Imports, CI=false für ESLint-Warnings.
✨ Neu
- Komplett neues Ticket-System – Direkte Anbindung an shiftdeck.de Shop. Vollständiger Dialog hin und her. Tickets erstellen, beantworten, schließen und löschen – alles synchronisiert.
- FAQ-Wissensdatenbank – Eigener Sidebar-Eintrag „Hilfe & FAQ" für alle User. FAQs werden im Shop verwaltet, in der Software nur angezeigt.
- News-Bereich entfernt – „Tickets & News" heißt jetzt nur noch „Tickets".
- Neue Berechtigung
manage_tickets – Support-Tickets verwalten unter Berechtigungen → Kommunikation.
- Floating-Frage-Button entfernt – FAQ ist jetzt über Sidebar erreichbar.
⚡ Verbessert
- Update-Performance: 10 Min → 2-3 Min – Parallele Builds mit BuildKit, Docker-Layer-Cache aktiv, Frontend NODE_OPTIONS=1536MB, Source-Maps deaktiviert, Auto-Cache-Cleanup wenn > 5 GB.
✨ Neu
- Backup-Verwaltung – Einzelne Backups löschen, Auto-Cleanup (behält 5), manueller Cleanup-Button.
- Update-Historie klickbar – Detail-Dialog mit Paket-Liste, Output und Fehlermeldung.
- Changelog live von shiftdeck.de – Immer aktuell, lokaler Fallback, beide Formate unterstützt.
🐛 Bugfixes
- Auto-Update-Einstellungen – Docker-Cleanup und E-Mail-Benachrichtigung werden jetzt korrekt gespeichert.
✨ Neu
- Kalender: Mobile Ansicht – Auf Mobilgeräten wird der Mitarbeiter-Kalender als kompakter Wochen-Strip mit Tagesansicht dargestellt. Farbige Punkte zeigen Termine pro Tag, „Kommende Termine"-Sektion zeigt die nächsten 14 Tage.
- Dienstplan: Erweiterter „Woche kopieren"-Dialog – Mitarbeiter-Auswahl (Quelle & Ziel), freie Ziel-Woche per Kalender, Schichten zwischen Mitarbeitern übertragen, Live-Vorschau mit KW-Nummer und Schicht-Anzahl.
🔧 Verbessert
- Update-Script Pfaderkennung – Erkennt jetzt auch
/root/admin-customer, /root/admin-server, /opt/webwi und durchsucht /root, /opt, /home intelligent nach docker-compose.yml. Bessere Fehlermeldung mit Lösungsvorschlägen.
- Update-Script Fallback-Versionen – Aktualisierte Versions-Erkennung bis v6.06.
✨ Neu
- Meldungen: Eigene Tabs für Kind krank & Unbezahlter Urlaub – Separate Filter-Tabs statt alles unter "Urlaub" zusammenzufassen. Kind krank hat ein eigenes oranges Icon.
- Mitarbeiter: Namensreihenfolge umschalten – Neuer Button (↔) neben dem Archiv-Button. Wechselt zwischen "Vorname Nachname" und "Nachname, Vorname". Sortierung passt sich automatisch an.
🐛 Bugfixes
- Favicon doppeltes SVG – Zwei zusammengeklebte SVGs im index.html verursachten eine weiße Seite in manchen Browsern.
- Versionsanzeige korrigiert – Unter Einstellungen → Updates wurde Version 5.21 statt der installierten Version angezeigt.
- SKIP_LICENSE_CHECK – Wird jetzt korrekt über docker-compose.yml an den Backend-Container übergeben.
- Datenbank-Migration – Alte Installationen ohne org_id werden korrekt migriert (Default-Organisation).
🔧 Verbessert
- Logo vergrößert – Desktop-Sidebar: 150px → 200px, Mobile Header: 130px → 180px. Bessere Sichtbarkeit und mittige Zentrierung.
- Update Server Bereich entfernt – Der "Verbindung testen" Abschnitt unter Einstellungen → Updates wurde entfernt.
- Update-Script Auto-Detection – update.sh erkennt automatisch das Installationsverzeichnis.
✨ Neu
- Neues Logo (Variante A) – Modernes Amber-Gradient Squircle mit weißem Anker-Icon. Durchgängig in App, Login, Webseite und Browser-Favicon.
- SHIFTDECK-Branding im Footer – Permanentes Mini-Logo mit Link zu shiftdeck.de in der Sidebar.
- DarkMode als Menüpunkt – "Helles/Dunkles Design" jetzt als eigener Menüpunkt statt Icon neben dem Logo.
🐛 Bugfixes
- QR-Code Login – Telefonnummern-Suche durchsucht jetzt
phone_mobile und phone_landline mit erweiterter Normalisierung.
🔧 Verbessert
- Logo ohne Toggle-Symbol – DarkMode-Toggle neben dem Logo entfernt, Logo jetzt sauber lesbar.
- Custom-Logo – Admin-Logo aus Einstellungen/Firmendaten wird überall verwendet.
- Lizenzen verwalten entfernt – Nur noch über Webseite erstellbar.
- Update-Server → shiftdeck.de – Verbindungstest prüft Lizenz- & Update-Server.
- Archiv-Kategorien – Unbezahlter Urlaub (365d), Kinderkrank (30d, bearbeitbar), Sonstige (7d).
✨ Neu
- Archiv-Kategorien in Meldungen – Das Archiv ist jetzt unterteilt: Unbezahlter Urlaub (365 Tage), Kinderkrankheitstage (30 Tage, bearbeitbar), Sonstige (7 Tage). Alle Einträge manuell löschbar.
🐛 Bugfixes
- QR-Code Login Fix – Telefonnummern-Suche war auf falsche Felder eingeschränkt. Jetzt werden
phone_mobile und phone_landline durchsucht, alle Varianten normalisiert (±49, ±0).
- Docker Build Fix –
npm ci schlug fehl wegen fehlender qrcode-Abhängigkeiten. Package-Lock regeneriert.
- Doppelte Lizenz-Karte entfernt – Lizenz-Verwaltung war doppelt im UI.
🔧 Verbessert
- Lizenzen verwalten entfernt – Lizenzen können nur noch über die Webseite erstellt werden, nicht aus SHIFTDECK heraus.
- Update-Server bereinigt – Kein statisches Display mehr, nur noch "Verbindung testen" zu shiftdeck.de als Lizenz- & Update-Server.
✨ Neue Features
- QR-Code Auto-Login: Mitarbeiter scannen den QR-Code und werden sofort erkannt – nach einmaliger Registrierung per Telefonnummer wird das Gerät gespeichert. Beim nächsten Scan: automatische Anmeldung ohne Eingabe!
- QR-Geräte verwalten: Admins sehen unter Einstellungen → Sicherheit alle registrierten Geräte mit Name, Letzte Nutzung, Nutzungsanzahl und können einzelne Geräte widerrufen.
- Mobile User UI: Automatische Handy-Erkennung – Mitarbeiter bekommen auf dem Smartphone eine optimierte Oberfläche mit Bottom-Navigation, größeren Touch-Targets und App-ähnlichem Design. PWA-fähig.
- Integrationen-Seite: Neue Admin-Seite für Drittanbieter-Anbindungen – DATEV Export, Personio HR-Sync, Lightspeed Kassensystem, generische HR-API. Konfiguration mit API-Keys und Aktivierung pro Integration.
- Spezial-Tag Typen verwalten: Typen können jetzt direkt im Team-Kalender erstellt und gelöscht werden (Name + Farbe).
- Lizenzen erstellen & verwalten: Admins können eigene Lizenzschlüssel generieren, kopieren, widerrufen und löschen – ohne externen Server.
🐛 Bugfixes
- Docker Build Fix:
npm ci schlug fehl weil qrcode und Abhängigkeiten in der Lock-Datei fehlten. Package-Lock regeneriert.
- Urlaubstage-Berechnung korrigiert: Wochenenden (Sa/So) werden jetzt automatisch nicht mehr mitgezählt – nur Werktage (Mo–Fr) werden als Urlaubstage abgezogen.
- Unbezahlter Urlaub genehmigen/ablehnen: Admins können jetzt Anträge auf unbezahlten Urlaub genehmigen, ablehnen und löschen.
- Team-Kalender Typen auf Deutsch: „training" → „Weiterbildung", „closing" → „Schließtag", „bridge" → „Brückentag" usw.
- Spezial-Tag erstellen: Fehler beim Erstellen behoben – Pydantic-Modell mit korrekten Default-Werten.
🔧 Verbesserungen
- Werktage-Vorschau: Im Urlaubsformular wird sofort angezeigt wie viele Werktage abgezogen werden.
- Logo-Größe Login Desktop: Maximale Breite auf 800px erhöht, Eingabe jetzt in Pixel (z.B. 500px).
- Dashboard-Widgets Scroll: Alle Widgets mit Scroll-Funktion bei vielen Einträgen.
- Update-Server Anzeige: Sauber "update.shiftdeck.de · XXms ● Erreichbar" statt URL.
- Download-Seite Status: Live-Prüfung ob Download-Server erreichbar ist mit Latenz-Anzeige.
- QR-Login Sicherheit: Device-Token System mit SHA-256, Geräte-Übersicht für Admins.
- Spezial-Tag Formular: Beschreibungsfeld hinzugefügt, Typ-Dropdown komplett auf Deutsch.
✨ Neue Features
- Badge-Zähler Meldungen & Nachrichten: Ungelesene Anzahl als rote Badges in der Sidebar (Desktop + Mobile). Automatische Aktualisierung alle 60 Sekunden.
- Bundesland-Feiertage: Alle 16 Bundesländer mit korrekten regionalen Feiertagen (Einstellungen → Firma → Bundesland-Auswahl).
- Projekt PDF-Auswertung: Abgeschlossene Projekte als PDF mit Kosten, Arbeitszeiten, Material und Fotos/Belegen exportierbar.
🐛 Bugfixes
- Dienstplan verschieben: Drag & Drop sendet jetzt korrekt die Ziel-Gruppe mit.
- Bulk Shift _id: MongoDB ObjectId wird korrekt aus Response entfernt.
- MongoDB Serialisierung: SafeJSONResponse + .pop("_id") auf 42 Endpoints.
🎨 Major UI Redesign – Komplett neue Oberfläche
- Gruppierte Sidebar-Navigation: Das Menü ist jetzt in aufklappbare Gruppen sortiert. Admins haben 5 Gruppen (Übersicht, Planung, Verwaltung, Berichte, System), Mitarbeiter 3 Gruppen (Haupt, Arbeitszeit, Weiteres). So finden Sie alles viel schneller.
- KPI-Dashboard (Admin): 5 farbige Kennzahlen-Karten ganz oben: Anwesend (grün), Krank (rot), Urlaub (orange), offene Anträge, ungelesene Nachrichten. Aktualisieren sich alle 60 Sekunden automatisch.
- Neue Stempeluhr (Mitarbeiter): Große Echtzeit-Uhr als Herzstück des Dashboards. Die Farbe wechselt je nach Status – Grün wenn Sie arbeiten, Orange bei Pause, Blau bei Feierabend.
- 4er-Button-Reihe: Kommen, Pause, Weiter, Gehen – direkt neben der Uhr, groß und leicht zu treffen.
- Status-Timeline: Alle heutigen Einträge mit farbigen Punkten direkt unter der Stempeluhr sichtbar.
- PageHeader mit Breadcrumbs: Einheitliche Seitenköpfe auf allen Seiten – Sie sehen immer wo Sie sind.
- Onboarding erweitert: Neuer Schritt „Neue Navigation" erklärt neuen Benutzern die Menügruppen.
⚡ Verbessert
- Moderneres Design: Abgerundete Karten, bessere Schatten, verbesserte Dark Mode Kontraste
- Mobile Ansicht: Stempeluhr ist auf dem Handy besser bedienbar
🐛 Bugfix – Weiße Seite beim Mitarbeiter bearbeiten
- Problem: Beim Klick auf „Mitarbeiter bearbeiten" erschien eine weiße Seite. Auch „Als Mitarbeiter anmelden" war nicht sichtbar.
- Ursache: Der Docker-Build schlug wegen eines Build-Tool-Fehlers fehl – dadurch lief alter Code weiter.
- Lösung: Build-Prozess korrigiert, alle Kontaktdaten (Adresse, Telefon, Notizen) werden jetzt vollständig geladen und gespeichert.
- Zusätzlich behoben: PIN-Validierung beim Erstellen neuer Mitarbeiter, Dreiteilige Versionsnummern in Updates.
🐛 Bugfix – Mitarbeiter-Dialog
- Problem: „Mitarbeiter bearbeiten" und „Mitarbeiter erstellen" zeigten eine weiße Seite.
- Lösung: Fehlende Code-Importe ergänzt. Alle Funktionen wie Erstellen, Bearbeiten und „Als Mitarbeiter anmelden" funktionieren jetzt wieder.
🆕 Neu – Dokumenten-Management
- Admin: Neuer „Dokumente"-Tab in den Mitarbeiter-Details. Arbeitsverträge, Lohnabrechnungen, Krankmeldungen und sonstige Dokumente hochladen.
- Mitarbeiter: Neuer Menüpunkt „Dokumente" – Mitarbeiter sehen ihre Lohnabrechnungen und freigegebene Dokumente zum Download.
- Sichtbarkeit: Pro Dokument einstellen ob der Mitarbeiter es sehen darf (Auge-Symbol). Krankmeldungen sind nur für den Admin sichtbar.
- Formate: PDF, JPG, PNG, DOC, DOCX, XLS, XLSX. Maximal 10 MB pro Datei.
🆕 Neu – Baustellen-Management
- Projekte erstellen (Admin): Auftraggeber, Adresse, Budget (Stunden + Euro), Status (Offen → In Arbeit → Abgeschlossen). Google Maps Navigation direkt zum Einsatzort.
- Material-Datenbank (Admin): 12 Kategorien (Sanitär, Elektro, Heizung...), 14 Einheiten (Stück, Meter, m²...). Preise und Artikelnummern hinterlegen.
- Baustellen-App (Mitarbeiter): Fotos hochladen, Belege fotografieren, Material zuordnen, Notizen schreiben – alles mit automatischem GPS-Standort.
- Projekt-Reports (Admin): Stunden pro Mitarbeiter, Materialkosten, Lohnkosten, Gesamtkosten mit Monatsfilter.
🆕 Neu – Mitarbeiter-Archivierung
- Was ist das? Gekündigte Mitarbeiter können archiviert statt gelöscht werden. Alle Daten bleiben erhalten, aber der Login wird gesperrt.
- So geht's: Mitarbeiter öffnen → „Archivieren" klicken → Bestätigungsdialog erklärt alle Auswirkungen.
- Wiederherstellung: Archivierte Mitarbeiter können jederzeit über den „Archiv"-Button in der Liste reaktiviert werden.
🐛 Bugfix
- Build-Fehler in Projekten, Audit-Log und DATEV-Export behoben (falscher Import)
⚡ Verbessert – Admin-Handbuch
- 8 neue Handbuch-Sektionen: DATEV Export, Projekte, Push-Benachrichtigungen, Drag & Drop Schichtplanung, Audit-Log, Notizen-Widget, Team-Kalender Löschen, Vollbild-Dialog
- Arbeitsplatz-Assistent: Neuer Schritt „Darstellung & Konto" (Dark Mode, persönliche Einstellungen)
🆕 Neu – DATEV-Export, Projekte, Push & mehr
- DATEV-Export: Monatliche Arbeitszeitdaten für den Steuerberater. 3 Formate: DATEV Lohn & Gehalt, DATEV LODAS, CSV für Excel.
- Projektbezogene Zeiterfassung: Projekte & Kostenstellen erstellen. Mitarbeiter wählen beim Einstempeln ein Projekt aus. Budget-Tracking mit Fortschrittsbalken.
- Push-Benachrichtigungen: Benachrichtigungen direkt aufs Gerät bei neuen Schichten, Urlaubsgenehmigungen und Nachrichten – ohne App Store.
- Schichtplanung Drag & Drop: Schichten per Ziehen verschieben, Bulk-Erstellung, ganze Woche kopieren.
- Audit-Log: Vollständiges Protokoll aller Admin-Aktionen mit Filter und Suche.
🆕 Neu
- Dashboard Notizen-Widget: Sticky Notes auf dem Admin-Dashboard. 5 Farben, Pin-Funktion, Inline-Bearbeitung. Jeder Admin sieht nur seine eigenen Notizen.
- Team-Kalender Löschen: Abwesenheiten können jetzt im Kalender gelöscht werden. Urlaub und Überstunden werden automatisch gutgeschrieben.
- Mitarbeiter-Dialog Vollbild: Der Bearbeitungs-Dialog ist jetzt fast so groß wie der Bildschirm – mit 6 übersichtlichen Karten-Sektionen.
- Strukturierte Changelogs: Updates zeigen jetzt den vollständigen Changelog mit Emojis und Sektionen an.
⚡ Verbessert
- Logo-Größen optimiert: Firmenlogo wird jetzt in Login, Sidebar und Mobile jeweils perfekt skaliert.
🆕 Neu – Update-Seite
- Versions-Info: Neue Karte auf der Update-Seite zeigt installierte Version mit Changelog direkt aus der Software heraus.
🆕 Neu – Schnelleintrag für Abwesenheiten
- Schnelleintrag-Button (Admin): Telefonische Krankmeldung? Klicken Sie „Schnelleintrag" im Team-Kalender. 4 Typen: Krankmeldung, Kind krank, Urlaub nachtragen, Freizeitausgleich.
- Automatische Buchungen: Urlaubstage werden sofort abgezogen. Bei Krankmeldung wird überlappender Urlaub automatisch zurückerstattet.
- Kalender-Klick: Leere Zelle anklicken → Schnelleintrag öffnet sich vorausgefüllt mit Mitarbeiter und Datum.
🆕 Neu – Team-Kalender Komplett-Redesign
- Neues Grid-Layout: Kompakte Tabellenansicht (Woche + Monat) für 100+ Mitarbeiter. Aufklappbare Gruppen mit Farbbalken.
- Zusammenfassung: Zeile unten zeigt pro Tag: Arbeitende / Urlauber / Kranke.
- Farbcodes: Blau = Schicht, Gelb = Urlaub, Rot = Krank, Pink = Kind krank, Violett = Freizeitausgleich.
- Spezial-Tage: Feiertage und Schließtage als Karten unterhalb des Kalenders.
⚡ Verbessert – Lizenzschlüssel-Format
- Neues Format:
SHIFTDECK-XXXX-XXXX-XXXX. Eingabefeld formatiert automatisch mit Bindestrichen.
🐛 Bugfix – Deployment
- MongoDB: Fehlende Authentifizierungsvariablen in der Konfiguration ergänzt. Kein Fehler mehr bei Neuinstallation.
- Installations-Script: Dateien werden jetzt korrekt aus dem Archiv entpackt. Kein „Datei nicht gefunden"-Fehler mehr.
🆕 Neu – Lizenz-System
- Was ist das? SHIFTDECK validiert jetzt Lizenzen über shiftdeck.de. Hardware-gebundene Aktivierung mit Offline-Toleranz (5 Tage).
- Alte Server entfernt: Alle Lizenz-Prüfungen laufen über die neue shiftdeck.de API. Keine Verbindung mehr zu alten Servern nötig.