Skip to content

Releases: Abiturientia-am-GymSL-e-V/GymSLunity

GymSLunity v1.0.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 21:24
Immutable release. Only release title and notes can be modified.
c8c6bb3

Erste stabile Version von GymSLunity. Nach neun Beta-Releases ist der Funktionsumfang für den Einsatz im Verein vollständig, geprüft und dokumentiert.

Versionierung ab 1.0.0

GymSLunity folgt ab jetzt Semantic Versioning:

  • Minor-Versionen (1.1.0, 1.2.0, …) bringen neue Funktionen und bleiben abwärtskompatibel. Nötige Datenbankänderungen erledigt php artisan migrate --force wie gewohnt.
  • Patch-Versionen (1.0.1, …) enthalten nur Fehlerbehebungen und Sicherheitskorrekturen.
  • Eine neue Hauptversion (2.0.0) gäbe es nur bei Änderungen, die ein bestehendes Update brechen würden.

Die Versionsanzeige unter Konfiguration → System bietet einer stabilen Installation nur noch stabile Releases an. Sicherheitskorrekturen gibt es für die jeweils neueste 1.x-Version (siehe SECURITY.md).

Funktionsumfang

  • Mitgliederverwaltung: Mitglieds- und Kontaktdaten, konfigurierbare Zusatzfelder, zeitliche Zuordnungen zu Abteilungen, Ämtern und Ehrungen, Suche, Filter, Massenbearbeitung, CSV-Import, Export, Dokumente und Änderungshistorie.
  • Beiträge: Beitragskonten, Forderungsläufe, Rechnungen, SEPA-Mandate und -Exporte, Bankimport, Rücklastschriften und manuelle Buchungen.
  • Buchhaltung: Rechnungen mit mehreren Zahlungsarten, GiroCode, Kleinunternehmerregelung, verknüpften Stornorechnungen, Erstattungen, unveränderlicher Dokumentablage und PDF/A-3 mit eingebetteter XRechnung.
  • Spenden: Geld- und Sachzuwendungen, Spendenbuch sowie Zuwendungsbestätigungen.
  • Formulare: Quittungen erfassen, digital oder per Faksimile unterzeichnen, archivieren und versenden.
  • Kommunikation: Serien-E-Mails und Serienbriefe mit Empfängerfiltern, einheitlichen Platzhaltern, Anhängen, Vorlagen und Versandverlauf.
  • Auswertungen, Inventar, Kalender und Buchungssystem.
  • Selfservice: Mitgliederzugang per Einmallink oder Passkey, Pflege eigener Daten, digitaler Beitritt mit SEPA-Mandat und persönliche Kalender-Links.
  • Sicherheit und Betrieb: Rollen und Rechte, Zwei-Faktor-Pflicht für privilegierte Konten, Auditlog, signierte Backups, Installskript und Browser-Installer.

Änderungen seit v1.0.0-beta.9

  • Anwenderhandbuch: Ein Handbuch mit Screenshots für Vorstand und Mitglieder liegt in docs/handbuch/ und im GitHub-Wiki. Der Menüpunkt Dokumentation führt dorthin.
  • Einheitlicher Platzhalter für die Gläubiger-ID: Die SEPA-Gläubiger-ID heißt in allen Texten {{verein.glaeubiger_id}}. Der bisherige Name {{verein.creditor_id}} funktioniert weiter. Gespeicherte Texte der Vereinskonfiguration stellt eine Migration um.
  • Zwei-Faktor-Abfrage auf Deutsch: Die Seite für den Code aus der Authenticator-App und den Wiederherstellungscode ist übersetzt.

Fehlerbehebungen

  • Offene Zuwendungsbestätigungen: Der Tab brach außerhalb der Produktionsumgebung ab zwei offenen Spenden mit einem Serverfehler ab und war in Produktion unnötig langsam.
  • Konfiguration → Buchhaltung zeigte die Platzhalter für den Mandatstext in einer Schreibweise mit Leerzeichen, die nicht ersetzt wird.
  • Die Brotkrumen der SEPA-Mandate zeigten „SEPA-FinanceMandate“.

Update von v1.0.0-beta.9

Backup erstellen und wie in docs/installation.md unter „Updates“ beschrieben aktualisieren, einschließlich php artisan migrate --force. Die neue Migration stellt den Platzhalter der Gläubiger-ID in gespeicherten Texten um.

Update von älteren Versionen

Zuerst die Hinweise in den Release-Notizen der übersprungenen Versionen beachten, besonders:

  • v1.0.0-beta.1 beim Update von v0.1.0-alpha.1 (IBAN-Verschlüsselung, APP_KEY nicht ändern),
  • v1.0.0-beta.6 und v1.0.0-beta.7 beim Update von v1.0.0-beta.5 oder älter (Umstellung der Ämter auf zeitliche Zuordnungen),
  • v1.0.0-beta.9 beim Update von v1.0.0-beta.8 oder älter (Zwei-Faktor-Pflicht, einmalige Abmeldung privilegierter Konten).

Danach direkt auf v1.0.0 aktualisieren.

Installation

Das Archiv (tar.gz oder zip) enthält bereits die PHP-Abhängigkeiten und das gebaute Frontend. Die Anleitung steht in docs/installation.md, die schnellste Variante ist das Installskript scripts/install-server.sh.

Fehler bitte über die GitHub-Issues melden, Sicherheitslücken vertraulich wie in SECURITY.md beschrieben.

GymSLunity v1.0.0-beta.9

Pre-release

Choose a tag to compare

@github-actions github-actions released this 01 Oct 00:44
Immutable release. Only release title and notes can be modified.
66c73ee

Neuntes Beta-Release von GymSLunity 1.0. Es schließt eine Sicherheitslücke bei der verpflichtenden Zwei-Faktor-Anmeldung für privilegierte Konten. Ein Update wird dringend empfohlen.

Sicherheit

  • Zweiter Faktor für privilegierte Konten: Bisher galt die Pflicht als erfüllt, sobald ein Passkey eingerichtet war. Ein Konto mit Passkey, aber ohne TOTP, konnte sich dadurch mit dem Passwort allein anmelden. Jetzt muss bei jeder Anmeldung tatsächlich ein zweiter Faktor benutzt werden: Anmeldung per Passkey, Passwort mit TOTP-Code oder Passwort mit anschließender Passkey-Bestätigung. Nach einem Passwort-Login fragt eine neue Seite den Passkey ab.
  • Solange die Anmeldung nicht bestätigt ist, lassen sich keine weiteren Passkeys oder TOTP einrichten. So kann die Abfrage nicht durch Registrieren eines eigenen Passkeys umgangen werden.

Fehlerbehebungen

  • Der Begrüßungstext der Startseite erwähnt den Mitgliederbereich nur noch, wenn der Selfservice aktiv ist.

Update von v1.0.0-beta.8

Backup erstellen und wie in docs/installation.md unter „Updates“ beschrieben aktualisieren. Es gibt keine neuen Migrationen.

Angemeldete Nutzerinnen und Nutzer privilegierter Rollen, die nur TOTP eingerichtet haben, werden nach dem Update einmalig abgemeldet und müssen sich neu anmelden. Wer nur Passkeys eingerichtet hat, wird beim nächsten Seitenaufruf um eine Passkey-Bestätigung gebeten.

Da die Lücke bestehende Sitzungen betreffen kann, im Sicherheitsprotokoll prüfen, ob es unerwartete Anmeldungen privilegierter Konten gab.

Update von v1.0.0-beta.7 oder älter

Zuerst die Hinweise in den Release-Notizen von v1.0.0-beta.8 beachten und dann direkt auf v1.0.0-beta.9 aktualisieren.

Installation

Das Archiv (tar.gz oder zip) enthält bereits die PHP-Abhängigkeiten und das gebaute Frontend. Die Anleitung steht in docs/installation.md, die schnellste Variante ist das Installskript scripts/install-server.sh.

Dies ist eine Beta-Version. Bitte vor dem produktiven Einsatz mit eigenen Testdaten prüfen und Fehler über die GitHub-Issues melden.

GymSLunity v1.0.0-beta.8

Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Sep 22:57
Immutable release. Only release title and notes can be modified.
1fbb436

Achtes Beta-Release von GymSLunity 1.0. Es behebt Fehler, die nur mit MariaDB oder MySQL auftreten, macht den Browser-Installer robuster und bietet das Release zusätzlich als ZIP-Archiv an.

Fehlerbehebungen

  • Update auf v1.0.0-beta.6/beta.7 und Neuinstallation mit MariaDB/MySQL: Die Migration für zeitliche Zuordnungen brach mit SQLSTATE[42000] 1059 Identifier name … is too long ab, weil ein automatisch erzeugter Indexname die erlaubten 64 Zeichen überschritt. Der Index hat jetzt einen kürzeren Namen. Die Migration lässt sich nach dem abgebrochenen Lauf einfach wiederholen.
  • Mitgliedsdokumente mit DB_CONNECTION=mariadb: Die Spalte für hinterlegte PDF-Dokumente fasste nur 64 KB, größere Dokumente konnten nicht gespeichert werden. Eine neue Migration vergrößert sie auf LONGBLOB. Installationen mit DB_CONNECTION=mysql oder SQLite waren nicht betroffen.
  • Browser-Installer: Der erste Schritt prüft die Datenbankverbindung, bevor er die .env schreibt, und meldet falsche Zugangsdaten direkt im Formular. Bis die Tabellen angelegt sind, leiten alle Seiten auf /install um, statt mit einem Serverfehler abzubrechen.

Neu

  • Jedes Release enthält das Archiv zusätzlich als gymslunity-v…zip mit Prüfsumme, etwa für Webhosting, das nur ZIP-Dateien entpacken kann.
  • Die automatischen Tests laufen jetzt zusätzlich gegen MariaDB 10.11.

Update von v1.0.0-beta.7

Backup erstellen und wie in docs/installation.md unter „Updates“ beschrieben aktualisieren.

Update mit MariaDB/MySQL nach abgebrochener Migration

Ist ein Update auf v1.0.0-beta.6 oder v1.0.0-beta.7 an der Migration 2026_09_30_030000_create_member_assignments abgebrochen, steht die Datenbank noch vor der Umstellung auf zeitliche Zuordnungen; die Spalten department_role und club_role sind unverändert vorhanden. Auf v1.0.0-beta.8 aktualisieren und php artisan migrate --force erneut ausführen. Damit laufen die Umstellung aus v1.0.0-beta.6 und das Entfernen der alten Spalten aus v1.0.0-beta.7 in einem Schritt. Die übernommenen Ämter anschließend wie in den Release-Notizen von v1.0.0-beta.6 beschrieben prüfen.

Ist eine Neuinstallation im Browser-Installer an dieser Stelle abgebrochen, die neue Version hochladen (.env und storage/ behalten) und /install erneut aufrufen.

Update von v1.0.0-beta.5 oder älter

Mit SQLite bitte zuerst auf v1.0.0-beta.6 aktualisieren und dessen Release-Notizen beachten. Mit MariaDB/MySQL direkt auf v1.0.0-beta.8 aktualisieren, da v1.0.0-beta.6 und v1.0.0-beta.7 dort nicht installierbar sind.

Installation

Das Archiv (tar.gz oder zip) enthält bereits die PHP-Abhängigkeiten und das gebaute Frontend. Die Anleitung steht in docs/installation.md, die schnellste Variante ist das Installskript scripts/install-server.sh.

Dies ist eine Beta-Version. Bitte vor dem produktiven Einsatz mit eigenen Testdaten prüfen und Fehler über die GitHub-Issues melden.

GymSLunity v1.0.0-beta.7

Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Sep 20:41
Immutable release. Only release title and notes can be modified.
c67b1fc

Siebtes Beta-Release von GymSLunity 1.0. Es schließt die Umstellung auf zeitliche Zuordnungen ab und entfernt die alten Spalten für „Funktion in der Abteilung“ und „Funktion im Hauptverein“.

Änderungen

  • Die Spalten members.department_role und members.club_role werden entfernt. Seit v1.0.0-beta.6 stehen ihre Werte als Zuordnungen in den Amtsfeldern gleichen Schlüssels; die Spalten blieben dort ein Release lang als Rückfallebene erhalten und wurden nicht mehr gelesen oder beschrieben.
  • An der Bedienung ändert sich nichts. Platzhalter wie {{mitglied.club_role}}, Filter, Kalender- und Buchungsfreigaben verwenden weiterhin die Amtsfelder.

Update von v1.0.0-beta.6

  1. Vor dem Update prüfen, ob die übernommenen Ämter stimmen: Vorstand / Ämter (/aemter) oder in der Mitgliederakte der Bereich „Abteilungen, Ämter & Ehrungen“. Die übernommenen Einträge tragen die Notiz „Aus Altdaten übernommen“.
  2. Backup erstellen und wie in docs/installation.md unter „Updates“ beschrieben aktualisieren. php artisan migrate --force entfernt die beiden Spalten.

Rücknahme: php artisan migrate:rollback legt die Spalten wieder an und füllt sie aus den übernommenen Zuordnungen, soweit diese noch vorhanden sind.

Update von v1.0.0-beta.5 oder älter

Bitte zuerst auf v1.0.0-beta.6 aktualisieren und dessen Release-Notizen beachten. Wer direkt aktualisiert, erhält dieselbe Umstellung, verzichtet aber auf die Möglichkeit, die übernommenen Daten vor dem Entfernen der Spalten zu prüfen; das Backup ist dann die einzige Rückfallebene.

Installation

Das tar.gz-Archiv enthält bereits die PHP-Abhängigkeiten und das gebaute Frontend. Die Anleitung steht in docs/installation.md, die schnellste Variante ist das Installskript scripts/install-server.sh.

Dies ist eine Beta-Version. Bitte vor dem produktiven Einsatz mit eigenen Testdaten prüfen und Fehler über die GitHub-Issues melden.

GymSLunity v1.0.0-beta.6

Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Sep 20:29
Immutable release. Only release title and notes can be modified.
fc70280

Sechstes Beta-Release von GymSLunity 1.0. Es bringt zeitliche Zuordnungen: Abteilungen, Ämter und Ehrungen werden mit Zeitraum beziehungsweise Datum erfasst, statt nur als aktueller Einzelwert. Die bisherigen Felder „Funktion in der Abteilung“ und „Funktion im Hauptverein“ werden beim Update automatisch umgestellt.

Neu

Abteilungen, Ämter und Ehrungen mit Zeitraum

Unter Konfiguration → Mitgliedsfelder gibt es drei neue Datentypen:

  • Abteilung (mit Zeitraum), etwa Sparten mit Eintritt und Austritt
  • Funktion / Amt (mit Zeitraum). Je Option lassen sich „Vorstand“, „Pflichtamt“ und „Höchstens gleichzeitig“ festlegen, je Feld „Mehrere Ämter gleichzeitig erlaubt“
  • Ereignis / Ehrung (mit Datum), wahlweise „Mehrfach vergebbar“ und mit der Regel „Fällig nach … Mitgliedsjahren“

Die Zeiträume sind tagesgenau und schließen Beginn und Ende ein. Ein fehlender Beginn bedeutet „unbekannt“, ein fehlendes Ende „läuft noch“.

Mitgliederakte

  • Neuer Bereich „Abteilungen, Ämter & Ehrungen“ mit aktuellen, künftigen und aufklappbar früheren Zuordnungen
  • Aktionen Hinzufügen, Beenden, Wechseln (die neue Zuordnung beginnt am Folgetag), Korrigieren und Löschen. Jede Aktion erscheint in der Änderungshistorie
  • Dubletten, direkt anschließende Wiederholungen, unzulässige gleichzeitige Ämter und doppelte Ehrungen werden abgelehnt. Bei überschrittener Höchstzahl oder einer Zuordnung außerhalb der Mitgliedschaft erscheint eine Warnung
  • Die Karteikarte zeigt die Zuordnungen mit Zeitraum, das Mitgliederportal auf Wunsch je Feld nur lesend

Einbindung in die Bestandsfunktionen

Maßgeblich sind jeweils die heute gültigen Zuordnungen.

  • Mitgliederliste: eine Spalte je Feld und Filter „Aktuell: X“, „Aktuell: beliebige/keine“, „Jemals: beliebige“ und „Jemals: X“
  • Kommunikation und Unterschriftenlisten filtern mit denselben Werten. Platzhalter {{mitglied.<schlüssel>}} liefern die aktuellen Zuordnungen, mit Komma getrennt
  • Export, Kalender- und Buchungsfreigaben, Beitragsläufe berücksichtigen die aktuellen Zuordnungen
  • Massenbearbeitung: „Zuordnung“ fügt für bis zu 250 ausgewählte Mitglieder eine Abteilung, ein Amt oder eine Ehrung hinzu oder beendet laufende Zuordnungen zu einem Datum
  • CSV-Import: Spalten typisierter Felder erzeugen Zuordnungen ab dem Importdatum. Zusätzlich übernimmt Mitglieder → „Zuordnungen importieren“ Zuordnungen vorhandener Mitglieder mit Von, Bis und Notiz aus einer CSV-Datei, mit Vorschau und nur fehlerfrei vollständig

Neue Übersichten

  • Vorstand / Ämter (/aemter): Tabs „Aktuell“ mit unbesetzten Pflichtämtern, „Verlauf“ als Liste oder Zeitstrahl und „Stichtag“
  • Abteilungen (/abteilungen): Mitglieder am Ende eines Zeitraums, Eintritte und Austritte. Ein Klick zeigt die Mitglieder einer Abteilung
  • Ereignisse / Ehrungen (/ehrungen): chronologische Liste mit Filtern und der Tab „Fällige Jubiläen“, aus dem ausgewählte Mitglieder die Ehrung gemeinsam erhalten
  • Alle Übersichten lassen sich als CSV und PDF exportieren
  • Der Platzhalter {{verein.vorstand}} liefert die aktuellen Vorstandsämter als „Name (Amt)“, etwa für das Impressum

Auswertungen

  • Auswertungen → Mitglieder zeigt den Bestand je Abteilung zum Stichtag und die Abteilungsentwicklung als Liniendiagramm
  • Die Bestandsstruktur nach Geburtsjahr lässt sich auf eine Abteilung einschränken, etwa für Meldungen an Fachverbände

Installskript

scripts/install-server.sh kann neben lokalem MariaDB und SQLite eine vorhandene, leere externe Datenbank (MariaDB oder MySQL) nutzen. Das Skript fragt die Zugangsdaten ab, testet sie und unterstützt TLS mit eigenem CA-Zertifikat (MYSQL_ATTR_SSL_CA, gilt auch für Backups). Beschreibung: docs/installation.md.

Fehlerbehebungen und Änderungen

  • „Funktion in der Abteilung“ und „Funktion im Hauptverein“ sind jetzt gewöhnliche Amtsfelder. Die festen Filter der Mitgliederliste entfallen; alte Links mit department_role= oder club_role= werden auf den neuen Filter übertragen
  • Konfigurationsbackups haben das Format 3. Backups im Format 1 und 2 werden weiterhin eingelesen

Update von v1.0.0-beta.5

Dieses Update ändert die Datenbank. Vorher unbedingt ein Backup erstellen.

  1. Backup erstellen und wie in docs/installation.md unter „Updates“ beschrieben aktualisieren. php artisan migrate --force legt die Tabelle member_assignments an und stellt die beiden Altfelder um.
  2. Jeder gespeicherte Wert von „Funktion in der Abteilung“ und „Funktion im Hauptverein“ wird zu einer Zuordnung mit unbekanntem Beginn und der Notiz „Aus Altdaten übernommen“. Bei ausgetretenen oder verstorbenen Mitgliedern endet sie an diesem Tag. Jedes betroffene Mitglied erhält einen Historieneintrag von „System (Migration)“.
  3. Gespeicherte Werte ohne passende Option werden als deaktivierte Option übernommen. Vorhandene Platzhalter {{mitglied.department_role}} und {{mitglied.club_role}} funktionieren weiter und liefern die aktuellen Ämter.
  4. Danach unter Konfiguration → Mitgliedsfelder bei den Ämtern festlegen, welche zum Vorstand gehören und welche Pflichtämter sind. Die Migration setzt beides nicht.
  5. Die alten Spalten members.department_role und members.club_role bleiben in diesem Release unverändert als Rückfallebene erhalten. Sie werden mit v1.0.0-beta.7 entfernt. Bitte die umgestellten Daten vor jenem Update prüfen.

Rücknahme: php artisan migrate:rollback stellt die Auswahlfelder wieder her, solange nach dem Update keine Zuordnungen für diese beiden Felder erfasst oder geändert wurden. Andernfalls bricht es mit einer Meldung ab; dann das Backup zurückspielen.

Beim Update von älteren Versionen gelten zusätzlich die Hinweise aus deren Release-Notizen.

Installation

Das tar.gz-Archiv enthält bereits die PHP-Abhängigkeiten und das gebaute Frontend. Die Anleitung steht in docs/installation.md, die schnellste Variante ist das Installskript.

Dies ist eine Beta-Version. Bitte vor dem produktiven Einsatz mit eigenen Testdaten prüfen und Fehler über die GitHub-Issues melden.

GymSLunity v1.0.0-beta.5

Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Sep 01:26
Immutable release. Only release title and notes can be modified.
44610a1

Fünftes Beta-Release von GymSLunity 1.0. Es bringt ein Installskript, das eine produktive Instanz mit einem Befehl einrichtet, und korrigiert die Liste der benötigten PHP-Erweiterungen.

Neu

Installation mit einem Befehl

Auf einem frischen Server mit Debian 12/13 oder Ubuntu 22.04/24.04 richtet scripts/install-server.sh das neueste Release als produktive Instanz ein:

curl -fsSLO https://raw.githubusercontent.com/Abiturientia-am-GymSL-e-V/GymSLunity/main/scripts/install-server.sh
sudo bash install-server.sh
  • Fragt Domain, HTTPS-Variante (Let's Encrypt, vorhandenes Zertifikat oder Reverse Proxy), Datenbank (MariaDB oder SQLite), Absender und das erste Administratorkonto ab
  • Installiert fehlende Pakete, ohne bestehende zu aktualisieren; PHP 8.4 kommt neben eine vorhandene PHP-Version, deren Standard bleibt
  • Richtet eigenen Systembenutzer, PHP-FPM-Pool, Nginx, Datenbank, .env, Queue-Worker, Scheduler und tägliche Backups ein. Der Code gehört root, PHP darf nur storage/, bootstrap/cache/ und das Backup-Verzeichnis beschreiben
  • Macht bei einem Fehler alle Änderungen rückgängig; --uninstall entfernt die Instanz später wieder und behält die Daten, außer ihre Löschung wird bestätigt

Beschreibung: docs/installation.md, Abschnitt „Automatische Installation“. Für die öffentliche Demo gibt es analog scripts/install-demo-server.sh (docs/demo.md).

Unbeaufsichtigte Einrichtung

  • php artisan app:create-user akzeptiert --name, --email und --password-file (- liest das Passwort von der Standardeingabe)
  • php artisan app:install legt mit --admin-name, --admin-email und --admin-password-file das Administratorkonto an und sperrt den Browser-Installer in einem Schritt

Fehlerbehebungen und Änderungen

  • PHP-Erweiterung intl: Quittungen schreiben den Betrag mit intl in Worten aus. Die Erweiterung fehlte in der Installationsanleitung und in der Prüfung von app:install. Ohne sie schlägt das Ausstellen von Quittungen fehl
  • Updates ohne Rechte-Korrekturen: Der Update-Ablauf in docs/installation.md lässt bootstrap/cache/ aus und leert die Caches mit optimize:clear. Die Dateirechte müssen danach nicht mehr neu gesetzt werden
  • Buchungen und Vereinskalender verwenden dieselbe Seitenbreite wie die übrigen Seiten
  • Öffentliche Demo: Installskript für den Demo-Server, Deployments per workflow_dispatch

Update von v1.0.0-beta.4

Es gibt keine Datenbankänderungen.

  1. Prüfen, ob die PHP-Erweiterung intl geladen ist: php -m | grep -i intl. Falls nicht: sudo apt install php8.4-intl und PHP-FPM neu laden.
  2. Backup erstellen und wie in docs/installation.md unter „Updates“ beschrieben aktualisieren. Der Ablauf dort ist neu: rsync bekommt zusätzlich --exclude=bootstrap/cache/, danach folgt php artisan optimize:clear.

Beim Update von älteren Versionen gelten zusätzlich die Hinweise aus deren Release-Notizen.

Installation

Das tar.gz-Archiv enthält bereits die PHP-Abhängigkeiten und das gebaute Frontend. Die Anleitung steht in docs/installation.md, die schnellste Variante ist das Installskript oben.

Dies ist eine Beta-Version. Bitte vor dem produktiven Einsatz mit eigenen Testdaten prüfen und Fehler über die GitHub-Issues melden.

GymSLunity v1.0.0-beta.4

Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Sep 23:19
Immutable release. Only release title and notes can be modified.
70f737e

Viertes Beta-Release von GymSLunity 1.0. Es bringt Willkommens- und Zugangsmails, einen E-Mail-Adressfilter für den Mitgliederbereich und einen Demo-Modus für öffentliche Live-Demos.

Neu

E-Mail-Adressfilter für den Mitgliederbereich

  • Unter Konfiguration → Selfservice & Formulare lässt sich festlegen, welche E-Mail-Adressen beim Online-Beitritt und bei der Adressänderung im Portal zulässig sind: als Allowlist oder Blocklist mit einem Muster pro Zeile, zum Beispiel *@gymsl.de.
  • Passt eine gespeicherte Adresse nicht mehr zu den Regeln, zeigt das Portal nur noch die Aufforderung, die Adresse zu ändern. Die bisherige Adresse bleibt bis zur Bestätigung gültig.
  • Manuelle Anlage, Bearbeitung und CSV-Import in der Verwaltung dürfen den Filter übergehen; die Mitgliederansicht weist dann darauf hin. Konten von Verwaltungsbenutzern sind nicht betroffen.

Willkommensmail für Mitglieder

  • Neue Willkommensmail mit Hinweisen zur Anmeldung im Mitgliederbereich, Anmeldeadresse und Mitgliedsnummer. Der Text ist unter Konfiguration → Startseite anpassbar und kennt dieselben {{mitglied.*}}-Platzhalter wie Serien-E-Mails.
  • Versand als Massenaktion in der Mitgliederliste oder einzeln auf der Mitgliederseite, mit Filter „Willkommensmail erhalten / noch nicht erhalten“. Jeder Versand steht im Kommunikationsverlauf.
  • Automatischer Versand bei Freigabe eines Beitrittsantrags, bei sofort wirksamem Online-Beitritt und bei manueller Anlage eines aktiven Mitglieds. Die Automatik ist standardmäßig an und in der Selfservice-Konfiguration abschaltbar. Der CSV-Import verschickt keine Willkommensmails.
  • Die bisherige „Willkommen“-Mail heißt jetzt „Antragsbestätigung“.

Zugangsmail für neue Benutzerkonten

  • Beim Anlegen eines Verwaltungskontos kann eine Zugangsmail verschickt werden (standardmäßig aktiv). Das Passwort ist dann optional: Die Person legt es selbst über einen Link fest, der 72 Stunden gültig und nur einmal verwendbar ist. Passwörter werden nie per E-Mail verschickt.
  • Administratoren können die Zugangsmail aus der Benutzerliste erneut senden; frühere Links werden dabei ungültig.

Öffentliche Demo

  • Mit DEMO_MODE=true wird eine Instanz zur öffentlichen Demo: Musterverein mit Beispieldaten für alle Module, Zugangsdaten auf der Anmeldeseite, Demo-Postfach unter /demo/postfach statt E-Mail-Versand, nächtliche Zurücksetzung und gesperrte Funktionen wie Passwortänderung, Backups und Vereinsdaten.
  • Einrichtung des Servers und der automatischen Deployments: docs/demo.md. Der Demo-Modus ist nur für Instanzen ohne echte Vereinsdaten gedacht, weil er alle Daten löscht.

Fehlerbehebungen

  • Die Datumsfilter von Mandatsbuch und Auditlog richten sich nach dem lokalen Kalendertag. Bisher erschien ein Eintrag von 00:30 Uhr beim Vortag.
  • Im Spendenbuch war bei schmalen Bildschirmen die Spalte mit „Ausstellen“, „PDF“ und „Widerrufen“ abgeschnitten.

Update von v1.0.0-beta.3

Es gibt drei neue Datenbankmigrationen (Einladungslinks, Demo-Postfach, Index für den Kommunikationsverlauf).

  1. Backup erstellen.
  2. Wie in docs/installation.md unter „Updates“ beschrieben aktualisieren (Release-Archiv oder Git), einschließlich php artisan migrate --force.
  3. Queue-Worker neu starten (php artisan queue:restart), damit sie die neuen Mails kennen.
  4. Neue Mitglieder erhalten ab jetzt automatisch eine Willkommensmail. Wer das nicht möchte, schaltet die Automatik vorher unter Konfiguration → Selfservice & Formulare ab.

DEMO_MODE bleibt ohne Eintrag in der .env ausgeschaltet. An bestehenden Installationen ändert sich dadurch nichts.

Beim Update von älteren Versionen gelten zusätzlich die Hinweise aus deren Release-Notizen.

Installation

Das tar.gz-Archiv enthält bereits die PHP-Abhängigkeiten und das gebaute Frontend. Die Schritt-für-Schritt-Anleitung steht in docs/installation.md.

Dies ist eine Beta-Version. Bitte vor dem produktiven Einsatz mit eigenen Testdaten prüfen und Fehler über die GitHub-Issues melden.

GymSLunity v1.0.0-beta.3

Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Sep 17:25
Immutable release. Only release title and notes can be modified.
5a2c2bc

Drittes Beta-Release von GymSLunity 1.0. Es korrigiert die angegebene PHP-Mindestversion und bringt die Abhängigkeiten auf den aktuellen Stand.

Wichtig: PHP 8.4.1 erforderlich

GymSLunity benötigt PHP 8.4.1 oder neuer. Bisher war PHP 8.3 angegeben. Das war falsch: Laravel 13 baut auf Symfony-8-Komponenten auf, die PHP 8.4.1 voraussetzen. Unter PHP 8.3 startet die Anwendung nicht, das gilt auch für v1.0.0-beta.1 und v1.0.0-beta.2.

  • Debian 13 bringt PHP 8.4 mit.
  • Unter Ubuntu 24.04 ist PHP 8.3 der Standard. PHP 8.4 lässt sich dort aus dem PPA ondrej/php installieren. Die Befehle stehen in docs/installation.md, Schritt 2.

Aktualisierte Abhängigkeiten

  • Frontend: Vite+ 0.3.3, TypeScript 6, vue-tsc 3, VueUse 15, vue-input-otp 0.4. Die Code-Eingabe für die Zwei-Faktor-Anmeldung wird dadurch nicht mehr vom Browser-Übersetzer verändert.
  • Tests: PHPUnit 13.

Update von v1.0.0-beta.2

Es gibt keine Datenbankänderungen.

  1. Prüfen, dass der Server PHP 8.4.1 oder neuer verwendet: php -v.
  2. Backup erstellen und wie in docs/installation.md unter „Updates“ beschrieben aktualisieren (Release-Archiv oder Git). Bei einer Git-Installation sind composer install --no-dev --optimize-autoloader, npm ci und npm run build nötig, weil sich Abhängigkeiten geändert haben.

Beim Update von v0.1.0-alpha.1 gelten zusätzlich die Hinweise aus den Release-Notizen zu v1.0.0-beta.1.

Installation

Das tar.gz-Archiv enthält bereits die PHP-Abhängigkeiten und das gebaute Frontend. Die Schritt-für-Schritt-Anleitung steht in docs/installation.md.

Dies ist eine Beta-Version. Bitte vor dem produktiven Einsatz mit eigenen Testdaten prüfen und Fehler über die GitHub-Issues melden.

GymSLunity v1.0.0-beta.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Sep 16:07
Immutable release. Only release title and notes can be modified.
5e661fa

Zweites Beta-Release von GymSLunity 1.0 mit einer kleinen Korrektur gegenüber v1.0.0-beta.1.

Fehlerbehebungen

  • Über GymSLunity: Die Badges entsprechen jetzt denen der README. Das Versions-Badge zeigt auch Vorabversionen an und verlinkt auf die Releases. Neu ist das Lizenz-Badge (EUPL-1.2).

Update von v1.0.0-beta.1

Es gibt keine Datenbankänderungen. Vor dem Update trotzdem ein Backup erstellen und dann wie in docs/installation.md unter „Updates“ beschrieben vorgehen (Release-Archiv oder Git).

Beim Update von v0.1.0-alpha.1 gelten zusätzlich die Hinweise aus den Release-Notizen zu v1.0.0-beta.1.

Installation

Das tar.gz-Archiv enthält bereits die PHP-Abhängigkeiten und das gebaute Frontend. Die Schritt-für-Schritt-Anleitung steht in docs/installation.md.

Dies ist eine Beta-Version. Bitte vor dem produktiven Einsatz mit eigenen Testdaten prüfen und Fehler über die GitHub-Issues melden.

GymSLunity v1.0.0-beta.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Sep 15:57
Immutable release. Only release title and notes can be modified.
76789c5

Erstes Beta-Release von GymSLunity 1.0. Die Versionsnummer springt damit von 0.1 auf 1.0: Der Funktionsumfang ist der, mit dem GymSLunity im Verein eingesetzt werden soll. Bis zur stabilen Version 1.0.0 folgen nur noch Fehlerbehebungen und Feinschliff.

Gegenüber v0.1.0-alpha.1 wurde der Code auf Sicherheit und fachliche Korrektheit geprüft, gefundene Probleme sind behoben, und die offenen Funktionen für die Beta sind umgesetzt.

Neue Funktionen

  • Buchungssystem: Ressourcen, Buchungsserien, Freigaben und Buchungen im Mitgliederportal.
  • Kalender: Vereinskalender mit persönlichen Abonnement-Links für Mitglieder.
  • Inventar: Inventarbereich mit gefiltertem PDF-Export und Abschreibungen.
  • Belege zu Kontobuchungen: Buchungsbelege und Zahlungsbestätigungen als PDF, in der Verwaltung und im Mitgliederportal.
  • Erstattungen: Rückzahlungen für stornierte, bereits bezahlte Rechnungen können erfasst werden. Offene Erstattungen erscheinen in den Summen.
  • Kommunikation:
    • Empfänger lassen sich Feld für Feld filtern, wie bei den Unterschriftslisten.
    • Die Empfängervorschau ist seitenweise.
    • Frühere Sendungen können als Vorlage wiederverwendet werden.
    • Zu jeder Sendung gibt es einen PDF-Bericht.
  • Auditlog: Ein neuer Bereich führt Sicherheitsereignisse, Änderungen an Mitgliedern, Konfiguration und Spenden zusammen. Er ist filterbar und als CSV, Excel oder PDF exportierbar.
  • Passkeys im Mitgliederportal: Mitglieder können sich mit Passkey statt E-Mail-Link anmelden.
  • Abweichendes Geschäftsjahr: Das Geschäftsjahr kann in einem beliebigen Monat beginnen. Dashboard, Zeitraumvorlagen für Beiträge und Auswertungen richten sich danach. Nummernkreise und Zuwendungsbestätigungen bleiben beim Kalenderjahr.
  • Rechtstexte: Impressum und Datenschutzerklärung sind vollständiger. Dazu gibt es neue Vereinsdaten unter „Rechtliches“. Zeilen, deren Angaben fehlen, werden ausgeblendet.
  • Versionsanzeige: Unter Konfiguration → System stehen die installierte Version und, falls vorhanden, ein neueres Release. Die Abfrage bei GitHub lässt sich mit GYMSLUNITY_UPDATE_CHECK=false abschalten.
  • Neutrale Standardfelder: Neuinstallationen legen die schulspezifischen Zusatzfelder Abschluss, Jahrgang und „Ehemalige Schülerin / ehemaliger Schüler“ nicht mehr an. Vereine können sie bei Bedarf unter Konfiguration → Mitgliedsfelder selbst anlegen. Bestehende Installationen behalten ihre Felder.

Sicherheit

  • Backups: Datenbank- und Konfigurationssicherungen werden signiert und beim Einspielen streng geprüft. Manipulierte Sicherungen können dadurch keine Befehle auf dem Server ausführen.
  • Erneute Passwortabfrage: Vor Exporten, Backups, der Benutzerverwaltung und den Mail-Einstellungen wird das Passwort erneut abgefragt.
  • IBANs: IBANs von Mitgliedern und SEPA-Mandaten werden verschlüsselt gespeichert.
  • Geburtstagskalender: Er kann nicht mehr öffentlich abonniert werden.
  • Kalender-Links: Persönliche Kalender-Links funktionieren nur für aktuelle Mitglieder mit aktivem Portal und lassen sich im Portal erneuern.
  • Passwortänderung: Eine Änderung des Passworts beendet alle anderen Sitzungen.
  • Web-Installer: Er ist nach der Installation gesperrt und verlangt für die Erstinstallation einen Einrichtungscode.
  • Links zur Mandatsunterschrift: Sie laufen ab.

Fehlerbehebungen

  • Bankimport: Eine Zahlung wird nur noch bei eindeutigem Verwendungszweck zugeordnet. Beträge mit Tausenderpunkt werden richtig gelesen.
  • Datumswerte: Datum und Nummernjahr von Belegen richten sich nach der Vereinszeitzone. Das gilt auch rund um Mitternacht an Silvester.
  • Nummernvergabe: Belegnummern werden über einen gemeinsamen, gesperrten Zähler ohne Duplikate vergeben.
  • Doppelbuchungen: Ein Doppelklick bucht manuelle Zahlungen, Forderungen und Rücklastschriftgebühren nur einmal. „Als bezahlt markieren“ ist gegen parallele Änderungen gesperrt.
  • Validierungsfehler: Fehler in Formularen werden immer angezeigt. Vorher gingen manche verloren, zum Beispiel beim Anlegen von Buchungsressourcen.

Dokumentation

  • docs/installation.md ist jetzt eine Schritt-für-Schritt-Anleitung mit allen Befehlen, von der Paketinstallation über Zertifikat, Queue-Worker und Cron bis zu Updates per Release-Archiv oder Git.
  • Neu ist docs/konfiguration.md mit allen Einstellungen der .env. Die .env.example ist kommentiert.
  • Die ungenutzte AWS-Konfiguration ist entfernt.

Update von v0.1.0-alpha.1

  1. Vorher ein vollständiges Backup erstellen. Die Migration verschlüsselt die gespeicherten IBANs mit APP_KEY. Ohne diesen Schlüssel sind sie danach nicht mehr lesbar. APP_KEY und PASSKEYS_USER_HANDLE_SECRET dürfen nicht geändert werden.
  2. Neue Version einspielen (Release-Archiv oder git pull), dann php artisan migrate --force ausführen. Bei einer Git-Installation vorher composer install --no-dev und npm ci && npm run build ausführen.
  3. Caches erneuern und den Queue-Worker neu starten: php artisan optimize und php artisan queue:restart.
  4. Bestehende öffentliche Links zu Geburtstagskalendern werden durch die Migration widerrufen.
  5. Unter Konfiguration → Vereinsdaten die neuen Angaben unter „Rechtliches“ und bei Bedarf den Beginn des Geschäftsjahres ergänzen. Bereits angepasste Rechtstexte bleiben unverändert. Die neuen Vorlagen lassen sich unter Konfiguration → Startseite mit „Auf Standard zurücksetzen“ übernehmen.

Installation

Das tar.gz-Archiv enthält bereits die PHP-Abhängigkeiten und das gebaute Frontend.

  1. Archiv entpacken und den Webserver einrichten.
  2. /install im Browser aufrufen. Beim ersten Aufruf wird ein Einrichtungscode in storage/app/setup-token erzeugt; diesen per SSH oder FTP auslesen und eingeben.
  3. Die Installation im Browser abschließen.

Die vollständige Anleitung steht in docs/installation.md. Installation und Updates sind auch per Git möglich.

Dies ist eine Beta-Version. Bitte vor dem produktiven Einsatz mit eigenen Testdaten prüfen und Fehler über die GitHub-Issues melden.