# Versionshinweise ## Zusammenfassung Dieses Update bringt wesentliche Workflow‑Verbesserungen, darunter die Integration von Kalender‑Feeds, eine neue TransPas‑Reservierungsoberfläche und die Möglichkeit für Stallnutzer, eigene Pferde und Mitreiter hinzuzufügen. Die Performance wird durch das Laden von Pferde‑ und Kontakt‑Summaries gesteigert, und die Bundle‑Größe der App wurde deutlich reduziert. Diverse Sicherheits‑ und Stabilitäts‑Fixes erhöhen die Zuverlässigkeit bei Rechnungsstellung, Speicher und Edge‑Funktionen. ## Highlights - Kalender‑Feed‑Integration ermöglicht das Synchronisieren von Aktivitäten mit externen Kalendern - Stallnutzer können jetzt eigene Pferde hinzufügen und Mitreiter zuweisen - TransPas‑Einrichtungs‑reservierungs‑UI bietet eigene Bearbeitungs‑ und Verschiebe‑Bildschirme - Pferde‑ und Kontaktlisten laden jetzt leichte Summaries und beschleunigen die Seiten - App‑Bundle‑Größe reduziert, verkürzt die Download‑Zeit für native Apps - Rechnungen können jetzt eine personalisierte WhatsApp‑Nachricht enthalten ## Neue Funktionen - **Synchronisieren Sie Ihren Kalender mit externen Kalendern** Sie können jetzt iCal‑Feeds für Ihre Aktivitäten erzeugen und in Kalender wie Google oder Outlook einbinden, um Ihren Zeitplan einfach zu synchronisieren. - **Kontaktliste zeigt jetzt Rollen, Duplikat‑Zähler und Filter** Die Kontaktübersicht enthält Roll‑Badges, einen Duplikat‑Zähler und neue Filteroptionen, die auf einen Blick mehr Informationen liefern. - **Neue UI für TransPas‑Einrichtungsreservierungen** Bietet eigene Formulare zum Bearbeiten, Verschieben und Anzeigen von TransPas‑Reservierungen, mit verbesserter Rasteransicht und Farb‑Codierung nach Bein‑Nummer. - **Tag‑Aktionen direkt aus der Kalender‑Kopfzeile öffnen** Ein Klick auf die Tages‑Kopfzeile öffnet das Aktionsmenü, und leere Spalten‑Kopfzeilen werden in der mobilen Voll‑Tages‑Ansicht ausgeblendet. - **Einladungs‑Flow fordert jetzt bestehende Nutzer zur Anmeldung auf** Wenn eine Einladung an eine bereits im System vorhandene E‑Mail gerichtet ist, wird statt des Anmelde‑Formulars ein Login‑Bildschirm angezeigt, was die Annahme vereinfacht. - **Stallnutzer können eigene Pferde hinzufügen und Mitreiter zuweisen** Ein neuer Button ‚Eigene(r) Pferd(e) hinzufügen‘ erlaubt Nutzern, Pferde zu erstellen, die ihnen gehören, und die Mitreiter‑Verwaltung ermöglicht das Hinzufügen von Reitern zu diesen Pferden. - **Ausgaben‑Modul unterstützt jetzt das Erstellen von Rechnungspositionen und hat eine klarere UI** Neue Badges, neu gestaltete Ausgabenliste und die Möglichkeit, direkt aus Ausgaben Rechnungspositionen zu erzeugen, vereinfachen Finanz‑Workflows. - **Wiederkehrender Aktivitäts‑Text beachtet jetzt Ihre Sprache** RRule‑Beschreibungen werden in der Sprache der App angezeigt, mit übersetzten Tages‑ und Monatsnamen. - **Einladungen fordern Login an, wenn die E‑Mail bereits ein Konto hat** Die Einladungsseite zeigt ein Login‑Bildschirm und leitet Nutzer nach dem Anmelden zur Annahme der Einladung. - **WhatsApp‑Rechnungsnachrichten enthalten jetzt den Namen des Empfängers** WhatsApp‑Rechnungen begrüßen Kunden mit dem Vornamen, was die Personalisierung verbessert. - **Pferde‑Dateien besitzen jetzt einen SharePoint‑ähnlichen Browser mit Ordnern** Sie können Ordner erstellen, umbenennen, verschieben und löschen, Vorschauen sehen und Dateien direkt aus dem Pferdefile‑Kachel teilen. - **Futter‑Report zeigt jetzt Mengen, Summen und Export nach Excel** Der monatliche Futter‑Report beinhaltet detaillierte Mengen pro Pferd, Gesamtsummen und eine herunterladbare XLSX‑Datei. - **Aufgaben können jetzt einem konkreten Teammitglied zugewiesen werden** Beim Erstellen einer Aufgabe können Sie einen verantwortlichen Mitarbeitenden auswählen. - **Kontakte können jetzt eine separate Rechnungs‑E‑Mailadresse haben** Ein optionales Rechnungs‑E‑Mail‑Feld wurde zu den Kontaktformularen hinzugefügt, sodass Rechnungen an eine andere Adresse gesendet werden können. - **Beschäftigungs‑Datensätze enthalten jetzt ein Einstellungs‑Datum** Beim Anlegen eines Beschäftigungs‑Eintrags können Sie das ursprüngliche Eintrittsdatum des Mitarbeitenden im Stall angeben. - **Wiederkehrende Leistungen können nach Kunde gefiltert werden** Ein neuer Filter ermöglicht die Anzeige wiederkehrender Leistungs‑Einträge für einen ausgewählten Kontakt, was die Finanzübersicht verbessert. - **API liefert jetzt den Commit‑Hash der vorherigen Version** Der Endpunkt /api/version enthält ein Feld previousCommitHash für einfacheres Änderungs‑Tracking. - **Sie können jetzt eine bestimmte Menge Sperma‑Bestand löschen** Der Dialog zum Bestands‑Zerstören erlaubt das Eingeben einer benutzerdefinierten Portionen‑Anzahl statt des kompletten Restbestands. - **Release‑Notes werden in Englisch, Deutsch und Niederländisch erstellt** Der Notizen‑Generator erzeugt mehrsprachige Releases und leitet Nutzer zu den Notizen in ihrer Sprache. ## Verbesserungen - **Länderauswahl ist jetzt durchsuchbar mit Flaggen** Alle Länderauswahl‑Komponenten wurden durch ein durchsuchbares Element ersetzt, das Flaggen zeigt und für geleerte optionale Felder undefined zurückgibt, wodurch Validierungs‑Probleme behoben werden. - **Pferde‑Liste funktioniert jetzt reibungslos auf mobilen Geräten** Ein‑Tap‑Navigation, verfeinerte Auswahl‑Handhabung, Scroll‑Wiederherstellung und besserer Abstand verbessern das mobile Erlebnis. ## Fehlerbehebungen - **Tag‑Teil‑Fehler erscheinen jetzt neben der richtigen Zeile** Validierungsfehler der API werden inline in der jeweiligen Tag‑Teil‑Zeile angezeigt, sodass klar ist, welcher Eintrag korrigiert werden muss. - **Kontakt‑Initialen immer sichtbar und in Seiten‑Avataren verwendet** Das Initialen‑Feld wird beim Bearbeiten von Kontakten immer angezeigt, und Profil‑Avatare zeigen nun die Initialen des Kontakts für schnelle Identifikation. - **Suchergebnisse zeigen jetzt den korrekten Quell‑Namen** Das Multi‑Result‑Modal zeigt nun ein generisches Quell‑Label und listet korrekt auf, welche Quellen jedes Ergebnis geliefert haben. - **Abgeschlossene Rechnungen sperren jetzt die Währung und synchronisieren Änderungen** Wenn eine Rechnung finalisiert wird, wird das Währungsfeld deaktiviert und Änderungen am Kunden werden im PDF übernommen, wodurch Konsistenz gewährleistet ist. - **Rechnungs‑Versand zeigt jetzt Fortschritt und warnt bei Fehlschlag** Das System pollt den Sendestatus und benachrichtigt Sie, wenn die Rechnung nicht bestätigt wurde, wodurch Wartezeiten reduziert werden. - **Fehlende öffentliche Rechnungen zeigen eine freundliche 404‑Seite** Bei einer ungültigen öffentlichen Rechnungs‑URL sehen Nutzer eine klare Nicht‑Gefunden‑Seite anstelle einer generischen Fehlermeldung. - **Auswahlliste zeigt kein Sperma mehr an, das nach dem Bestelldatum gesammelt wurde** Es werden nur Bestände angezeigt, die bis zum Versanddatum der Bestellung verfügbar sind, wodurch die Auswahl zukünftiger Bestände verhindert wird. - **Nicht erlaubte CORS‑Ursprünge geben jetzt 404 statt Fehler zurück** Edge‑Funktionen lehnen unbekannte Ursprünge sauber mit einem 404 ab und akzeptieren nun Anfragen von Shop‑Domains. - **Lokaler und Session‑Storage-Zugriff ist jetzt gegen Sicherheits‑Fehler geschützt** Die App behandelt sicher Fälle, in denen Browser‑Storage nicht verfügbar ist, und verhindert Abstürze. - **Telefone sind auf Hochformat gesperrt, Tablets bleiben im Querformat nutzbar** Die mobile App erzwingt jetzt das Hochformat auf Telefonen, was die Layout‑Stabilität auf Handgeräten verbessert. - **Speichern eines Einrichtungs‑Events ohne Pferd behält dessen Slots** Das Formular leert die Slots nicht mehr, wenn kein Pferd ausgewählt ist, und bewahrt somit die Event‑Details. - **Netzwerk‑Fehler beim Versions‑Check werden als Warnungen geloggt** Fehlgeschlagene Min‑Version‑Abrufe erzeugen keine Sentry‑Fehler mehr, wodurch harmloser Netzwerk‑Fehler‑Lärm reduziert wird. - **Fehlgeschlagene Sound‑Wiedergabe löst keine Fehlerberichte mehr aus** Audio‑Wiedergabefehler werden als Warnungen geloggt, wodurch unnötige Fehlermeldungen vermieden werden. - **Bilder‑Upload greift auf die Originaldatei zurück, wenn EXIF fehlschlägt** Falls die Ausrichtungs‑Daten nicht gelesen werden können, wird das Originalbild verwendet und eine Warnung geloggt. - **Aktivitäts‑Formular‑Validierung zeigt jetzt Fehler in‑App statt im Log** Benutzer‑sichtbare Validierungs‑Meldungen ersetzen Sentry‑Fehlerberichte für Aktivitäts‑Formular‑Probleme. - **Profil‑Ladung vermeidet übermäßige Stall‑Abfragen** Wenn ein Nutzer zu vielen Organisationen gehört, stoppt die App das Abrufen von Ställen, um Ressourcenauslastungs‑Fehler zu verhindern. - **Sticky‑Elemente bleiben über dem Impersonations‑Banner sichtbar** Layout‑Offsets stellen nun sicher, dass Sticky‑Header und -Seitenleisten nicht vom fixierten Impersonations‑Bar verdeckt werden. - **API‑Cache schließt jetzt veraltete Verbindungen und timeout bei Versions‑Änderungen** Datenbank‑Verbindungen werden korrekt geschlossen und timeout‑behandelt, wodurch Seiten nicht mehr beim Laden hängen bleiben. - **KMAR‑Phase erscheint jetzt in Pferdestatus‑Dialogen** Das fehlende KMAR‑Label wurde hinzugefügt, sodass die Phase ausgewählt und korrekt angezeigt werden kann. - **Feld Box‑Nummer akzeptiert jetzt numerische Eingabe** Das Bearbeitungs‑Formular parst Box‑Nummern korrekt als Zahlen, wodurch Validierungs‑Fehler entfallen. - **Einrichtungs‑Events behalten Slots bei Speicherung ohne Pferd** Das Formular leert die Slots nicht mehr, wenn kein Pferd ausgewählt ist, und bewahrt somit die Slot‑Informationen des Events. - **Dünge‑Berechnungs‑Broschüre jetzt intern gehostet** Der defekte externe Link wurde durch eine interne Kopie der RVO‑Broschüre ersetzt. - **Futter‑Reports zeigen Mengeneinheiten in der ausgewählten Sprache** Abkürzungen werden durch lokalisierte Begriffe ersetzt, was die Klarheit in Futter‑Plänen erhöht. - **Web‑App‑Manifest enthält jetzt eine Text‑Beschreibung** Das Beschreibungs‑Feld ist ein String, wodurch Browser‑Warnungen entfallen. - **Pferde‑Auto‑Complete läuft jetzt nur, wenn Sie den Button drücken** Die Suche gegen externe Datenbanken wird manuell ausgelöst, wodurch unnötige Backend‑Aufrufe reduziert werden. - **Kalender‑Reiter‑Filter zeigt jetzt nur Reiter aus dem gewählten Stall** Wird ein Stall ausgewählt, ist die Standard‑Reiter‑Liste auf die Pferde dieses Stalls begrenzt. - **Verbinden von Buchhaltungs‑Diensten erfordert jetzt das Accounting‑Modul** Der Versuch, Moneybird, Exact, Snelstart oder Yuki hinzuzufügen, löst ein Upgrade‑Modal aus, wenn das Abonnement das Accounting‑Feature nicht enthält. - **Anmeldung zeigt Fehler, wenn Passwörter nicht übereinstimmen** Das Wiederhol‑Passwort‑Feld zeigt jetzt korrekt eine Fehlermeldung bei Nicht‑Übereinstimmung. - **Übersetzungs‑Job bricht bei Parser‑Fehlern ab und Schlüssel für Ordner‑Datei‑Zahl korrigiert** Das CI‑Script stoppt jetzt den Build, wenn die Übersetzungs‑Extraktion fehlschlägt, und ein fehlender Default‑Wert für folder‑file‑count wurde hinzugefügt. - **Zu‑Rechnungs‑Liste auf Mobilgeräten zeigt jetzt mehr Details** Kompakte Zeilen zeigen zusätzliche Infos, und Header werden korrekt ausgerichtet, was die mobile Rechnungsstellung klarer macht. - **Frische Portionen‑Zeile bleibt sichtbar, obwohl Bestand null ist** Die Zeile zeigt jetzt einen Bindestrich statt zu verschwinden, wodurch das Layout konsistent bleibt. ## Sicherheit - **Verhindern von Open‑Redirect‑Angriffen und Verstecken des PDF‑Tokens in Logs** Redirect‑URLs werden validiert, um Open‑Redirects zu blockieren, und die PDF‑Generierung protokolliert das Auth‑Token nicht mehr, was die Sicherheit erhöht. ## Leistung - **Native‑App‑Bundles sind jetzt deutlich kleiner** Start‑Bilder und Source‑Maps wurden aus nativen Builds entfernt, wodurch die iOS‑IPA‑Größe von bis zu 39 MB auf rund 11 MB und die Android‑APK‑Größe ähnlich gesenkt wird. - **Pferde‑Listen laden Summaries statt voller Datensätze** Filter und Suchen holen jetzt leichte Pferde‑Summary‑Daten, was Seiten beschleunigt, die zuvor alle Pferdefelder geladen haben. ## Sonstiges - **Wiederholte Bestellungen verwenden jetzt standardmäßig die letzte Bestellung** Beim Erstellen einer Wiederholungs‑Bestellung füllt das System die Felder mit Daten der letzten Bestellung voraus, wodurch der Bestellprozess strafft. - **Android‑Build unterstützt jetzt R8‑Optimierung** Das Android‑Projekt ist so konfiguriert, dass es den R8‑Code‑Shrinker verwendet. - **TS‑Konfiguration zielt jetzt auf ESNext‑Module** Das TypeScript‑Projekt nutzt jetzt ESNext‑Modul‑Syntax. - **feat(breedingPlans): filter on plans without agent / insemination station** - **ResizeObserver‑Loop‑Fehler werden im Error‑Tracking ignoriert** Harmlosere ResizeObserver‑Warnungen erzeugen keine Sentry‑Alarme mehr. - **TS‑Ziel auf ES2022 gesetzt und PDF‑Worker aus Paket geladen** Das Projekt kompiliert jetzt zu ES2022 und verwendet pdfjs-dist für die PDF‑Verarbeitung. - **Release‑Notes‑Generator verwendet jetzt alternative Ollama‑API‑Schlüssel** Wird der primäre Schlüssel abgelehnt, versucht das System weitere Schlüssel, sodass die Erstellung der Release‑Notes weiterläuft.