Handbuch, FAQ & Support
Die integrierte Hilfe gehört zur installierten Version 2.1.74-linux-test. Suche nach einer Funktion oder springe direkt zum passenden Kapitel.

Erste Schritte
Nach der Installation sollten zuerst Verein, Benutzer, Datensicherung und Sicherheitsstatus eingerichtet werden. Arbeite diese Punkte einmal vollständig ab, bevor ClubShot produktiv genutzt wird.
Mitgliederverwaltung
Die Mitgliederakte bündelt Stammdaten, Mitgliedschaft, Vorstand/Funktionen, Ehrungen, Lizenzen, Dokumente, Einwilligungen und sportliche Historie.
Mitglied anlegen
Mitglieder → Mitglied anlegen. Stammdaten eintragen, eindeutige Mitgliedsnummer verwenden und speichern. Danach stehen die weiteren Bereiche der Mitgliederakte zur Verfügung.
Daten ändern
Mitglied öffnen, Daten bearbeiten und speichern. Relevante Änderungen werden im Audit-/Änderungsprotokoll nachvollziehbar gehalten.
Austritt
Den vorgesehenen Austritts-Workflow verwenden. Dadurch bleiben Historie und notwendige Nachweise erhalten, ohne das Mitglied versehentlich sofort vollständig zu löschen.
Import
Aktuelle ClubShot-Vorlage verwenden. Mitgliedsnummern sind für die eindeutige Zuordnung besonders wichtig. Vorschau und Fehlermeldungen vor dem endgültigen Import prüfen.
Dokumente & Einwilligungen
Mitgliederbezogene Unterlagen direkt der Akte zuordnen. Nur erforderliche personenbezogene Unterlagen speichern und organisatorische Löschfristen beachten.
Historie
Vorstandsposten, Ehrungen, Lizenzen und weitere zeitbezogene Daten mit korrekten Start-/Enddaten pflegen. Das verbessert Auswertungen und Chronik.
Sport & Schießbetrieb
Schießbuch
Training oder Wettkampf auswählen, Mitglied und Disziplin zuordnen und Ergebnis erfassen. Für wiederkehrende Erfassungen Stammdaten konsistent halten.
Massenimport
Bei vielen Ergebnissen die aktuelle XLSX-Vorlage nutzen. Erst Vorschau prüfen, dann übernehmen. Mitgliedsnummer ist die bevorzugte Zuordnung.
Disziplinen & Kaliber
Unter den Sporteinstellungen zentral pflegen. Doppelte oder unterschiedlich geschriebene Disziplinen vermeiden, damit Auswertungen sauber bleiben.
Auswertungen
Jahr, Wettkampf und Disziplin filtern. Mindestteilnahmen und Wertungsregeln kontrollieren, bevor Platzierungen oder Urkunden verwendet werden.
Waffen & Munition
Bestände, relevante Unterlagen und Zuordnungen vollständig pflegen. Bei rechtlich relevanten Angaben immer die Originalunterlagen als maßgeblich behandeln.
Dokumente, Vorlagen & Designer
Der Dokumentdesigner erzeugt wiederverwendbare Schreiben aus ClubShot-Daten. Die Vorschau arbeitet mit festen A4-Seiten und einer festen Fußzeile; bei längerem Inhalt werden Folgeseiten angelegt.
Neue Vorlage
Name, Kategorie und Betreff vergeben. Inhalt im A4-Bereich schreiben und mit Fett/Kursiv, Überschriften, Listen und Ausrichtung gestalten.
Variablen
Platzhalter wie {{ vorname }}, {{ nachname }} oder {{ verein_name }} verwenden. Beim Erzeugen werden sie durch die konkreten Daten ersetzt.
Bilder
PNG/JPG/WebP hochladen und als Briefkopf oder in Text/Fußzeile einfügen. ClubShot begrenzt Dateitypen und Größe; für Druckqualität trotzdem keine extrem großen Originale verwenden.
Fußzeile
Die Fußzeile sitzt am unteren Rand jeder A4-Seite. Dort eignen sich Vereinsanschrift, Kontakt, Bankdaten oder kurze rechtliche Hinweise. Für sauber ausgerichtete Namen, E-Mail-Adressen und Anschriften kann eine rahmenlose Tabelle verwendet werden.
Tabellen & Listen
Tabellen können im Brieftext und in der Fußzeile eingefügt werden. Wähle zwischen ohne Linien, vollständigem Raster oder Außenrahmen. Rahmenlose Tabellen zeigen nur während der Bearbeitung Hilfslinien. Aufzählungen stehen als Punkte oder nummeriert zur Verfügung; Einzüge können verändert werden.
PDF prüfen
Vor dem Versand immer Empfänger, Variablenersetzung, Seitenumbrüche und Bilder kontrollieren. Die Bildschirmvorschau ist eine Annäherung an das erzeugte PDF.
So ist die A4-Struktur aufgebaut
Briefkopf und Empfänger stehen oben, der Textbereich endet oberhalb der festen Fußzeile. Reicht der Platz nicht, führt ClubShot den Inhalt auf einer weiteren A4-Seite fort.
Benutzer, Rechte, MFA & Sitzungen
Benutzerkonten
Jede Person erhält ein eigenes Konto. Konten ausscheidender Personen deaktivieren statt Zugangsdaten weiterzugeben.
Berechtigungen
Nur benötigte Bereiche auf Lesen oder Schreiben setzen. Administratorrechte nur Personen geben, die tatsächlich Systemadministration benötigen.
MFA
Für reguläre Administratoren verpflichtend. Secret/QR-Code nicht per ungeschützter Nachricht versenden oder im Vereinslaufwerk offen ablegen.
Login-Sperre
Zu viele Fehlversuche lösen eine temporäre Sperre aus. Ein Administrator kann das Benutzerkonto in der Benutzerverwaltung sofort wieder freigeben.
Auto-Logout
Die Sitzungsdauer wird in den Systemeinstellungen festgelegt. Aktivität verlängert die Sitzung; nach längerer Inaktivität erfolgt eine automatische Abmeldung.
Break-Glass
Nur für Notfälle. Zugang getrennt und sicher verwahren. Der Account wird nicht in der normalen Benutzerverwaltung angezeigt und seine Nutzung besonders protokolliert.
Backup & Wiederherstellung
Vollbackup
Eine .sdbackup-Datei enthält PostgreSQL-Dump und updatefeste Benutzerinhalte. Datenbankzugangsdaten werden bewusst nicht als Klartext-Backupbestandteil übernommen.
Automatik
Halbstündlich, stündlich oder mit größeren Intervallen sichern. Kurze Intervalle erzeugen viele Dateien; Speicher und Aufbewahrung regelmäßig kontrollieren.
NAS / UNC
Bei Windows-Dienstbetrieb UNC-Pfade verwenden. Gemappte Laufwerksbuchstaben des angemeldeten Administrators stehen dem Dienst normalerweise nicht zur Verfügung.
Restore
Vor Wiederherstellung nach Möglichkeit ein zusätzliches Backup erstellen. Nach Restore Anmeldung, Mitglieder, Dokumente und Systemstatus prüfen.
Restore-Test
Regelmäßig auf einer getrennten Testinstallation prüfen, ob eine aktuelle Sicherung tatsächlich wiederhergestellt werden kann. Ein erfolgreich erzeugtes Backup allein ist noch kein Restore-Nachweis.
System, Updates & Sicherheit
Vollständige Systemdokumentation öffnen
Systemstatus
Die Ampel bewertet technische Voraussetzungen wie Datenbank, Dienst, HTTPS/Proxy, Session-Sicherheit, MFA, Break-Glass, Backup, Speicher und Audit-Protokoll.
HTTPS / Reverse Proxy
Externen Zugriff nur über gültiges HTTPS bereitstellen. ClubShot selbst bleibt intern erreichbar; Reverse Proxy übergibt Host/Proto/Port kontrolliert.
Update
Installer verwenden und vorab Backup sicherstellen. Nach Update Version, Windows-Dienst, Login und Systemstatus kontrollieren.
Audit-Log
Sicherheits- und Änderungsereignisse filtern und bei Auffälligkeiten zeitnah prüfen. Keine Secrets in Freitextfelder schreiben.
Fehlerseiten
403/404/500 werden als verständliche ClubShot-Seiten angezeigt. Interne Tracebacks sollen nicht im Browser offengelegt werden.
Support & Diagnose
Bei einem Fehler zuerst Zeitpunkt, betroffene Funktion und genaue Schritte notieren. Administratoren können ein Diagnosepaket erzeugen, das Systeminformationen und begrenzte Logauszüge enthält, aber keine Datenbank, Passwörter, MFA-Secrets oder Break-Glass-Zugangsdaten.
Supportkontakt: info@clubshot.de
Häufige Fragen
Ein Benutzer kann sich nicht mehr anmelden.
Aktiv-Status und Login-Sperre in der Benutzerverwaltung prüfen. Eine durch Fehlversuche ausgelöste Sperre kann ein Administrator sofort freigeben.
Warum werde ich automatisch abgemeldet?
Nach der eingestellten Inaktivitätszeit beendet ClubShot die Sitzung. Das schützt insbesondere gemeinsam genutzte oder unbeaufsichtigte Arbeitsplätze.
Warum ist MFA für Administratoren verpflichtend?
Administratoren besitzen weitreichende Rechte. MFA reduziert das Risiko, dass ein bekannt gewordenes Passwort allein zur Kontoübernahme genügt.
Was mache ich, wenn kein Administrator mehr Zugriff hat?
Dafür existiert der Break-Glass-Notfallzugang. Nur im tatsächlichen Notfall verwenden und anschließend das Audit-/Security-Log prüfen.
Warum funktioniert ein NAS-Backup nicht?
Bei Dienstbetrieb insbesondere UNC-Pfad, Freigabe- und NTFS-Berechtigungen des Dienstkontexts prüfen. Gemappte Laufwerke sind häufig nur in der interaktiven Benutzersitzung vorhanden.
Wie oft sollte gesichert werden?
Das hängt von der Änderungsrate ab. Bei täglicher Verwaltungsarbeit kann stündlich sinnvoll sein; bei intensiver Erfassung auch halbstündlich. Entscheidend sind zusätzlich externe Kopie, genügend Speicher und getestete Wiederherstellung.
Was bedeutet Gelb oder Rot im Systemstatus?
Gelb zeigt einen Punkt mit Aufmerksamkeit/Verbesserungspotenzial. Rot kennzeichnet einen technischen Zustand, der zeitnah geprüft werden sollte. Die Ampel ersetzt keine vollständige Sicherheitsprüfung.
Was soll ich dem Support mitteilen?
Version, Zeitpunkt, Benutzerrolle, betroffenen Menüpunkt, genaue Fehlermeldung und Schritte zur Reproduktion. Keine Passwörter, MFA-Codes oder Break-Glass-Daten senden.
Vollständiger Changelog
Der Changelog wird direkt aus der mit dieser Installation ausgelieferten CHANGELOG.md geladen.
# ClubShot 2.1.70-linux-test
- Automatische Backup-Uhrzeiten werden verbindlich in `Europe/Berlin` ausgewertet, unabhängig von der Linux-Server-Zeitzone.
- „Nächstes Backup“ verwendet dieselbe lokale Zeitbasis wie der Scheduler; UTC/MESZ-Versatz und falscher Vortag behoben.
- Backup-Dateinamen verwenden die lokale ClubShot-Zeit.
- Nicht mehr entschlüsselbare gespeicherte NAS-/SFTP-Kennwörter verursachen keinen HTTP-500 mehr; ein neues Kennwort kann gespeichert werden.
- Grundlage für den realen Synology-SFTP-Test aus 2.1.69 übernommen.
# ClubShot 2.1.69-linux-test
- Erster Release für den vollständigen Online-Update-Test über updates.clubshot.de.
- Keine absichtliche Schemaänderung gegenüber 2.1.68; Fokus ist die Prüfung der neuen Update-Kette.
- Enthält den gehärteten Updater aus 2.1.68 mit atomarer Auftragsübernahme, Locking, Health-Check und automatischem App-Rollback.
- Statischer Update-Katalog über `/api/latest.json`.
- Online-Paketprüfung per HTTPS, SHA-256 und Paketversion.
- NAS-/SFTP-Backup bleibt enthalten.
# ClubShot 2.1.68-linux-test
- Updater gegen Endlosschleifen gehärtet: Installationsauftrag wird atomar übernommen und sofort aus dem Watch-Pfad entfernt.
- Prozess-Lock verhindert parallele Update-Läufe.
- Konsistenter App-Rollback bei fehlgeschlagenem Update.
- HTTP-Health-Check zusätzlich zu systemd-Status.
- Update-Status und Rollback-Ergebnis werden im Update-Center gespeichert/angezeigt.
- Dateirechte werden nach Installation und Rollback auf clubshot:clubshot korrigiert.
- Symbolische Links in Update-ZIPs werden abgelehnt.
- Warteseite verhindert den unmittelbaren 502-Eindruck beim Neustart.
- Statischer Online-Katalog über updates.clubshot.de/api/latest.json.
- Online-Download mit HTTPS, SHA-256- und Paketversionsprüfung.
- ClubShot-Linux-Update.sh installiert/aktiviert die Updater-systemd-Units mit.
- SFTP-/NAS-Backup aus 2.1.66 enthalten.
# ClubShot 2.1.66-linux-test
- Automatische Backups können jetzt wahlweise in einen Ordner/NAS-Pfad oder direkt per SFTP gesichert werden.
- SFTP-Konfiguration direkt in ClubShot: Server, Port, Benutzer, Kennwort und Zielordner.
- SFTP-Kennwort wird über den ClubShot Secret Store verschlüsselt gespeichert.
- „Backup-Ziel testen“ prüft Ordner/NAS bzw. SFTP mit Schreib-/Lese-/Löschtest.
- PostgreSQL-Vollbackups werden bei SFTP zunächst lokal erzeugt und validiert, danach übertragen.
- SFTP-Upload wird über die Dateigröße verifiziert; alte SFTP-Backups werden gemäß Aufbewahrungszeit gelöscht.
- Bestehende Windows-UNC/SMB-Backups bleiben kompatibel.
- Unter Linux kann ein bereits gemountetes NAS einfach als normaler Zielordner verwendet werden.
# ClubShot 2.1.65-linux-test
- Kommende Veranstaltungen stehen oben; vollständig vergangene Veranstaltungen werden automatisch in einen Historienbereich unten verschoben.
- Mehrere nicht zusammenhängende Veranstaltungstage möglich, z. B. 01.10. und 07.10.
- Bestehende Einzeldaten bleiben kompatibel.
- Kopierte Jahresveranstaltungen übernehmen alle Termine um ein Jahr versetzt.
- Veranstaltungs-Gesamt-PDF zeigt alle hinterlegten Termine.
- Offizielle PDFs verwenden das hinterlegte Vereinswappen statt des ClubShot-Produktlogos.
# ClubShot 2.1.64-linux-test
- Mannschafts-Ergebnisliste übersichtlicher: Schützen und Einzelergebnisse stehen jeweils in eigenen Zeilen untereinander.
- Gewertete Schützen und Streichergebnisse bleiben erkennbar.
- PDF-Kopf verwendet nun das in ClubShot hinterlegte Logo; falls keines vorhanden ist, wird das mitgelieferte ClubShot-Logo verwendet.
- Logo wird proportional skaliert und nicht verzerrt.
# ClubShot 2.1.63-linux-test
- Update-Center nutzt die native ClubShot-Adminprüfung; der 500-Fehler durch `current_user()` ist behoben.
- Sichtbarer Menüpunkt **System → Updates** für Administratoren.
- Einzel- und Mannschaftsauswertung bei Veranstaltungen mit deutlich sichtbaren **Drucken / PDF**-Aktionen.
- Ergebnislisten öffnen als PDF im Browser und können direkt gedruckt oder gespeichert werden.
- Update-Endpunkte zusätzlich als Admin-only abgesichert.
# ClubShot 2.1.61-linux-test
## Linux-Portierung
- Ubuntu/Debian- und openSUSE-Installer.
- systemd-Service statt Windows-Dienst.
- Plattformneutraler Secret Store: DPAPI unter Windows, Fernet-Keydatei unter Linux.
- Linux-Dienststatus in Systemstatus/Readiness.
- PostgreSQL/Python-Umgebung automatisiert.
- Linux-Update-Skript.
- NAS-Backup über vom Betriebssystem gemountete CIFS/NFS-Pfade.
- Bestehender Windows-Betrieb bleibt erhalten.
- Meyton/SSMDB2 bleibt read-only und wird vom Installer nicht verändert.
# ClubShot 2.1.59-test
## Veranstaltungen – Mannschaften sichtbar erreichbar
- Veranstaltungsseite erhält einen eigenen, deutlich sichtbaren Bereich „Teilnehmer, Mannschaften & Auswertung“.
- Direkte Schaltfläche „+ Mannschaft anlegen“.
- Weitere Direkteinstiege: Teilnehmer verwalten, Ergebnisse erfassen und Auswertung öffnen.
- Auswertungsseite erhält Bereichsnavigation für Teilnehmer, Mannschaften, Ergebnisse und Auswertung.
- Mannschaftsbereich erklärt den Ablauf und zeigt „+ Mannschaft anlegen“ prominent an.
# ClubShot 2.1.58-test
## Veranstaltungen – Mannschaften & flexible Pokalwertung
- Gastschützen ohne Mitgliedsdatensatz.
- Frei benennbare gemischte Mannschaften.
- Konfigurierbar: Wertungsschüsse, Scheiben, Schuss je Scheibe, Mannschaftsgröße und davon gewertete Schützen.
- Beispiel 4er-Team/beste 3 mit sichtbarem Streichergebnis.
- Einzel- und Mannschaftsranglisten.
- Ring- und Teilerwertung.
# ClubShot 2.1.57-test
## Meyton → Schießbuch
- Manuell bestätigte Übernahme zugeordneter Meyton-Ergebnisse.
- Eigener ClubShot-Schießbucheintrag plus vollständiger dauerhafter Meyton-Snapshot mit Serien, Einzelschüssen und Trefferkoordinaten.
- Nach Import unabhängig von der Meyton-Verbindung.
- SCHEIBENID verhindert Doppelimporte.
- SSMDB2 bleibt read-only.
# ClubShot 2.1.56-test
## Meyton – Mitgliedszuordnung sichtbar
- Behebt einen Template-Fehler aus 2.1.54/2.1.55.
- Die Karte „Mitgliedszuordnung“ war versehentlich im Fehler-Zweig der Meyton-Seite eingebaut und wurde bei regulär geladenen Ergebnissen deshalb nie angezeigt.
- Die Karte steht jetzt direkt unter den Ergebnisdaten.
- Automatische Zuordnung, manuelle Auswahl und gespeicherte Sportpass-Zuordnung bleiben unverändert.
- Performance-Hotfix aus 2.1.55 bleibt erhalten.
# ClubShot 2.1.55-test
## Meyton – Performance-Hotfix
- Mitgliederzuordnung der Ergebnisübersicht wird jetzt gebündelt statt pro Ergebnis einzeln abgefragt.
- Nur noch eine ClubShot-DB-Verbindung sowie je eine Abfrage für Mitglieder und manuelle Zuordnungen pro Seitenaufruf.
- Automatische und manuelle Zuordnungslogik bleibt unverändert.
# ClubShot 2.1.54-test
## Meyton-Mitgliederzuordnung
- Automatische Zuordnung über normalisierte Sportpass-/Mitgliedsnummer; führende Nullen sind unerheblich.
- Nur eindeutige Treffer werden automatisch verknüpft.
- Nicht zuordenbare Ergebnisse können manuell zugeordnet werden; die Zuordnung wird dauerhaft pro Sportpass gespeichert.
# ClubShot 2.1.53-test
## Meyton Detailansicht – struktureller Layout-Fix
- Ursache gefunden: Die Meyton-Detailseite verwendete versehentlich die globale CSS-Klasse `.layout`.
- `.layout` ist in ClubShot für das komplette Grundlayout Sidebar + Hauptbereich reserviert und hat die Meyton-Seite dadurch erneut in ein schmales Raster gezwungen.
- Der Meyton-Innenbereich verwendet jetzt die eigene Klasse `.meyton-shot-layout`.
- Der künstliche 1240-px-Zentrierungscontainer wurde entfernt.
- Ergebnis-, Schießbild- und Einzelschusskarten verwenden jetzt 100 % der normalen ClubShot-Hauptbreite.
- Das Schießbild wird wieder sichtbar und innerhalb seiner breiten Karte zusammen mit den Serien angeordnet.
- Keine Änderung an Meyton-Abfragen oder Ergebnisdaten.
# ClubShot 2.1.52-test
## Meyton Detailansicht – Layout neu aufgebaut
- Die Detailseite verwendet jetzt einen festen, zentrierten Inhaltsbereich bis 1240 px.
- Alle drei Karten (Ergebnis, Schießbild, Einzelschüsse) besitzen exakt dieselbe volle Breite.
- Schießbild und Serien werden innerhalb der Schießbild-Karte zentriert angeordnet.
- Alte überlagernde Breiten-/Zentrierungsregeln wurden vollständig ersetzt.
- Tabellen können horizontal scrollen, ohne die Seitenbreite zu verändern.
- Keine Änderung an SSMDB2-Abfragen, Ergebniszuordnung oder Schießbilddaten.
# ClubShot 2.1.51-test
## Meyton Detailansicht – Card-Breitenfix
- Behebt den Effekt, dass nur der Inhalt verschoben wurde, während die Karten selbst schmal blieben.
- Meyton-Karten füllen nun die Breite des zentrierten Inhaltscontainers.
- Schießbild und Serien werden innerhalb der breiten Karte gemeinsam zentriert.
- Keine Änderung an Meyton-Datenlogik oder Ergebniszuordnung.
# ClubShot 2.1.50-test
## Meyton Detailansicht – Zentrierung
- Gesamte Ergebnisansicht erhält einen zentrierten Inhaltscontainer.
- Kennzahlenkarten nutzen die zentrierte Seitenbreite.
- Schießbild und Serien werden als gemeinsame Einheit mittig im verfügbaren Inhaltsbereich angeordnet.
- Responsive Abstände für Desktop, Tablet und Mobil angepasst.
# ClubShot 2.1.49-test
## Meyton Detailansicht – Layout
- Behebt die schmale, links zusammengedrückte Ergebnisansicht.
- Ergebnis-Kennzahlen nutzen die verfügbare Seitenbreite.
- Schießbild wird deutlich größer dargestellt.
- Serien stehen sauber rechts neben dem Schießbild und brechen bei kleineren Displays responsiv um.
- Mobile/Tablet-Darstellung angepasst.
# ClubShot 2.1.48-test
## Meyton 500-Hotfix
- Behebt den 500-Fehler beim Öffnen der Meyton-Auswertung.
- Meyton-Felder werden case-insensitiv ausgelesen.
- Ergebniszeilen ohne gültige SCHEIBENID werden sicher übersprungen.
- Detailansicht verwendet dieselbe robuste Feldauflösung.
# ClubShot 2.1.47-test
## Meyton – Ergebnisdetails
- Echte Verknüpfung SCHEIBEN → SERIEN → TREFFER über SCHEIBENID.
- Hauptansicht mit Name, Datum, Disziplin und Ergebnis.
- Jedes Ergebnis anklickbar; Detailansicht lädt nur dessen Serien und Treffer.
- X/Y werden ausschließlich intern fürs Schießbild verwendet und nicht angezeigt.
- Einzelschüsse mit Ring, Teiler, Innenzehner und Zeit.
# ClubShot 2.1.46-test
## Meyton-Schießbilder
- Grafische Schießbilder aus echten SSMDB2-X/Y-Trefferkoordinaten.
- Nummerierte Treffer mit Ringwert, Teiler, X/Y und Zeit, soweit vorhanden.
- Automatische Gruppierung nach erkannter Scheiben-/Serienreferenz.
- Keine erfundenen Trefferpositionen; bei unbekanntem Schema wird ein Hinweis gezeigt.
- Meyton-Zugriff bleibt ausschließlich lesend.
# ClubShot 2.1.45-test
## Meyton-Einstellungen Hotfix
- Sichtbarkeit der Meyton-Konfiguration unter System → Systemeinstellungen korrigiert.
- Ursache in 2.1.43/2.1.44: Der Meyton-Abschnitt war versehentlich innerhalb des Titel-Blocks statt des Inhalts-Blocks platziert.
- Der Titel-Block des Einstellungs-Templates wurde ebenfalls sauber korrigiert.
- Der Menüpunkt „Meyton-Auswertung“ bleibt wie vorgesehen nur bei aktivierter Integration sichtbar.
# ClubShot 2.1.44-test
## Hotfix
- Startfehler aus 2.1.43-test behoben.
- Die Meyton-Auswertung verwendet jetzt wie alle übrigen ClubShot-Seiten die zentrale Berechtigungsprüfung.
- Der irrtümlich verwendete, nicht vorhandene `permission_required`-Decorator wurde entfernt.
- Meyton bleibt dem Berechtigungsbereich „Sport & Schießbetrieb“ zugeordnet.
# ClubShot 2.1.43-test
## Meyton-Integration
- Optionale direkte Meyton ShootMaster / SSMDB2-Anbindung.
- Aktiv/Deaktiv-Schalter; deaktiviert ist Meyton im Sportbereich vollständig unsichtbar.
- Server, Port, Datenbank, Benutzer und DPAPI-geschütztes Kennwort konfigurierbar.
- Verbindungstest mit Erkennung der Tabellen Scheiben, Serien und Treffer.
- Neue Meyton-Auswertung liest aktuelle Daten direkt aus SSMDB2; keine Schreiboperationen gegen Meyton.
- MySQL Connector als Abhängigkeit ergänzt.
# ClubShot 2.1.42-test
## Kassenwartin-PDF
- Drehrichtung querformatiger Aufnahmeanträge korrigiert.
- Der Antrag wird weiterhin automatisch auf A4 Hochformat gedreht und eingepasst, jetzt jedoch aufrecht statt um 180° verkehrt herum.
# ClubShot 2.1.41-test
## Kassenwartin-PDF
- Aufnahmeanträge werden jetzt nicht nur auf eine A4-Hochformatseite gesetzt, sondern bei querformatiger Quelle automatisch um 90° gedreht.
- Das gilt sowohl für PDF-Seiten als auch für JPG/PNG-Scans.
- Dadurch steht ein hochformatiges Antragsformular nicht mehr seitlich auf Seite 2, sondern wird aufrecht und möglichst groß auf A4 Hochformat eingepasst.
# ClubShot 2.1.40-test
## Performance
- Datenbankweite Mitgliedsstatus-Synchronisierung aus jedem HTTP-Request entfernt.
- Jugendbeitrags-Synchronisierung aus jedem HTTP-Request entfernt.
- Automatische Backup-Prüfung aus jedem HTTP-Request entfernt; der vorhandene Backup-Worker bleibt zuständig.
- Mitgliedsstatus und Jugendbeiträge laufen beim Start sowie stündlich im Hintergrund.
- Mitgliedsstatus-Synchronisierung von N+1-Abfragen auf wenige gebündelte Abfragen umgestellt.
- Angemeldeter Benutzer wird pro Request nur einmal aus der Datenbank geladen.
- Benutzerrechte werden pro Request gesammelt geladen; `can_access()` im Template erzeugt keine einzelne DB-Abfrage mehr je Menü/Button.
- Session-Timeout-Einstellung wird 60 Sekunden gecacht.
- Setup-Status wird nach erfolgreicher Initialisierung im Prozess gecacht.
## Kassenwartin-PDF
- Das mitgliedsbezogene Kassenwartin-PDF wird vollständig auf **A4 Hochformat** normalisiert.
- Auch angehängte Aufnahmeanträge im Querformat werden proportional verkleinert und mittig auf eine A4-Hochformat-Seite gesetzt.
- PDF-Seitenrotationen werden beim Einpassen berücksichtigt.
- Der kompakte Deck-/Berichtsbereich bleibt A4 Hochformat.
# ClubShot 2.1.39-test
- Korrektur des Restore-Neustarts: Nach einem erfolgreich verifizierten Vollrestore wird **nicht der Windows-Server**, sondern ausschließlich die betroffene ClubShot-Instanz neu gestartet.
- Der Instanzdienst wird aus `runtime_config.json` ermittelt, z. B. `ClubShot_5024` oder `ClubShot_5000`.
- Der Dienstneustart wird verzögert und in einem getrennten PowerShell-Prozess gestartet, damit die Restore-Erfolgsseite noch ausgeliefert werden kann und der Dienst sich anschließend zuverlässig selbst neu starten lässt.
- Andere ClubShot-Instanzen auf demselben Server bleiben unangetastet.
- Die Restore-Erfolgsseite nennt den neu gestarteten ClubShot-Dienst ausdrücklich.
# ClubShot 2.1.38-test
- Kritischer Vollrestore-Fix für PostgreSQL.
- Wiederherstellung ersetzt das `public`-Schema jetzt innerhalb **einer PostgreSQL-Transaktion**: Schema leeren + Backup importieren. Schlägt SQL fehl, wird die gesamte Änderung automatisch zurückgerollt und die bisherige Datenbank bleibt erhalten.
- `psql.exe` wird für den atomaren Vollrestore zusätzlich zu `pg_restore.exe` benötigt und automatisch neben den PostgreSQL-Clienttools gesucht.
- Neue Vollbackups enthalten eine eindeutige Snapshot-Kennung. Nach dem Restore prüft ClubShot, ob exakt diese Kennung in der aktiven Datenbank angekommen ist.
- Ältere `.sdbackup`-Dateien ohne Snapshot-Kennung werden über Datensatzanzahlen zentraler Tabellen (`users`, `members`, `app_meta`) gegen den Dump geprüft.
- Die Meldung „erfolgreich wiederhergestellt“ erscheint erst nach erfolgreicher Datenbank-Verifikation.
- `user_content` wird vollständig vorbereitet und erst nach erfolgreicher DB-Verifikation per Verzeichnis-Swap übernommen.
- Vor jedem Vollrestore wird weiterhin automatisch ein `ClubShot-Vor-Restore-*.sdbackup` erstellt.
- Nach einem erfolgreich verifizierten Vollrestore plant ClubShot automatisch einen Windows-Serverneustart nach ca. 20 Sekunden.
- Die Erfolgsseite zeigt Backup, Sicherheitskopie und Neustart-Hinweis. Kann der automatische Neustart nicht geplant werden, wird dies ausdrücklich gemeldet.
- Audit-Logging nach einem Vollrestore ist nun Best-Effort und kann einen bereits erfolgreichen Restore nicht mehr nachträglich fälschlich als fehlgeschlagen markieren.
# ClubShot 2.1.37-test
- Kritischer Multi-Instanz-Fix: Jede ClubShot-Instanz verwendet jetzt einen eigenen Session-Cookie-Namen anhand ihres Webports, z. B. `clubshot_session_5000`, `clubshot_session_5001`.
- Hintergrund: Browser trennen Cookies nicht nach TCP-Port. Mehrere ClubShot-Instanzen auf demselben Host konnten sich deshalb mit dem bisherigen Standard-Cookie `session` gegenseitig die Anmeldung und CSRF-Session überschreiben.
- Behebt insbesondere Login-/Break-Glass-Fehler mit `CSRF-Prüfung fehlgeschlagen ... expected=False supplied=True` bei parallelen oder zuvor verwendeten ClubShot-Instanzen.
- Der Server zeigt beim Start den verwendeten Session-Cookie-Namen an. Es werden keine Session-Inhalte oder Geheimnisse protokolliert.
# ClubShot 2.1.36-test
- Ersteinrichtung robuster gemacht: `/setup` verwendet jetzt einen stateless signierten Setup-CSRF-Token statt ausschließlich des Session-Cookies.
- Dadurch funktioniert die Ersteinrichtung auch dann zuverlässig, wenn beim allerersten Browseraufruf das Session-Cookie nicht zurückgesendet wird.
- Setup-POST und die einzelnen Einrichtungsschritte werden ohne Kennwörter in `logs/clubshot.log` protokolliert.
- Validierungs- und Datenbankfehler bleiben direkt auf der Ersteinrichtungsseite sichtbar; bereits eingegebene nicht sensible Felder bleiben erhalten.
- Globale CSRF-Fehler werden mit Endpoint und Token-Vorhandensein protokolliert, niemals mit Token-Inhalten.
# ClubShot 2.1.35-test
- Ersteinrichtung unter PostgreSQL gehärtet: Das initiale Administratorkonto, seine Rechte und die Vereins-Metadaten werden jetzt vor der optionalen Security-Protokollierung verbindlich gespeichert. Ein Fehler im Security-Log kann die Ersteinrichtung dadurch nicht mehr unbemerkt zurückrollen.
- PostgreSQL-Kompatibilität verbessert: Falls beim Anlegen des ersten Administrators keine `lastrowid` geliefert wird, wird die Benutzer-ID eindeutig über den Benutzernamen nachgeladen.
- Fehler in der Ersteinrichtung werden jetzt protokolliert und als sichtbare Fehlermeldung im Assistenten ausgegeben, statt wie ein scheinbar leeres Zurücksetzen des Formulars zu wirken.
# ClubShot 2.1.34-test
- PostgreSQL-Neuinstallation repariert: CREATE/ALTER ROLE verwendet Kennwörter jetzt als sicher quotierte SQL-Literale statt eines an dieser DDL-Stelle unzulässigen Bind-Parameters.
- Multi-Instanz-Auswahl im Updater erweitert: Pfad, Version, Port, Dienstname, DB-Server und Datenbank werden vor dem Update angezeigt.
- Bei mehreren Installationen muss eine gültige Instanz explizit ausgewählt werden.
- Neue separate Installation schlägt automatisch einen freien Pfad wie C:\\ClubShot-2 vor.
# ClubShot 2.1.33-test
- Benutzerverwaltung: neue Benutzer-/Rechteübersicht als PDF mit Rolle, Status, MFA und wirksamen Bereichsrechten.
- Systemdokumentation vollständig ergänzt: Installation, lokale/externe PostgreSQL-Datenbank, Update, Backup, Restore, Notfall, Reverse Proxy und Multi-Instanz-Betrieb.
- Integrierte Admin-Seite „Systemdokumentation“ sowie Download der mitgelieferten `SYSTEMDOKUMENTATION.md`.
- Hilfezentrum um direkten Einstieg in die Systemdokumentation ergänzt.
- Kassenwartin-PDF bleibt für die erste Datenseite ausdrücklich auf A4-Hochformat ausgelegt.
# ClubShot 2.1.32-test
- Aktion „PDF + E-Mail Kassenwartin“ wieder entfernt. Da Browser die erzeugte PDF nicht automatisch als Anhang an das lokale Mailprogramm übergeben können, bleibt nur der direkte PDF-Export für die Kassenwartin.
## V2.1.31-test
- Kassenwart-PDF pro Mitglied neu aufgebaut: Seite 1 enthält Name, Mitgliedsnummer, Mitgliedschaft/Familie sowie Kontoinhaber, IBAN und BIC.
- Der zuletzt hinterlegte Aufnahmeantrag wird ab Seite 2 an die Kassenwart-PDF angehängt (PDF/JPG/PNG). Fehlt er oder kann er nicht gelesen werden, wird auf Seite 2 ein eindeutiger Hinweis ausgegeben.
# ClubShot Changelog
## V2.1.30-test
- NAS-/UNC-Backup: geschützte SMB-Freigaben können jetzt mit eigenen Zugangsdaten angesprochen werden. Benutzername und Kennwort werden getrennt vom Pfad verwaltet; das Kennwort wird unter Windows per DPAPI (Local-Machine-Kontext) verschlüsselt gespeichert und nie im Klartext angezeigt oder protokolliert.
- NAS-/UNC-Backup: neuer Button `Backup-Ziel testen`. ClubShot meldet sich mit den angegebenen SMB-Zugangsdaten an, erstellt eine Testdatei, liest sie zurück und löscht sie wieder. Damit wird der tatsächliche Schreibzugriff des ClubShot-Dienstes geprüft.
- Automatische Backups verwenden dieselbe explizite UNC-Anmeldung wie der Zieltest und trennen die temporäre SMB-Verbindung nach dem Sicherungslauf wieder.
- NAS-Zugangsdaten können beibehalten, ersetzt oder vollständig gelöscht werden. Lokale Backup-Ziele funktionieren weiterhin ohne Zugangsdaten.
- Jubiläumsstufen wurden aus den allgemeinen Systemeinstellungen entfernt. Die Konfiguration liegt jetzt direkt bei der Jubiläumsplanung auf einer eigenen Seite `Jubiläumsstufen`.
- Navigation und Jubiläumsseite wurden aufgeräumt; Administratoren erreichen die Stufen direkt über die Jubiläumsplanung.
## V2.1.29-test
- Installer: lokale oder bestehende/externe PostgreSQL-Datenbank kann bei einer Neuinstallation ausgewählt werden. Im externen Modus ist keine lokale PostgreSQL-Installation bzw. `psql.exe` für den Anwendungsbetrieb erforderlich.
- Externe PostgreSQL-Einrichtung erfolgt über die Python-/psycopg-Verbindung mit Verbindungstest. Wahlweise kann der Installer Datenbank und eigenen Anwendungsbenutzer über einen PostgreSQL-Administrator anlegen oder vorhandene Zugangsdaten verwenden.
- Bei automatisch angelegten Testdatenbanken wird als Benutzer standardmäßig der Datenbankname vorgeschlagen. Dadurch verändern parallele Instanzen nicht gegenseitig das Kennwort eines gemeinsamen `clubshot`-Benutzers.
- Windows-Dienste sind nun instanzbezogen und heißen nach dem Webport, z. B. `ClubShot_5000`, `ClubShot_5001`. Updates von älteren Installationen migrieren den bisherigen Dienst `ClubShot` auf den portbezogenen Namen.
- Installer, Start/Stop, Recovery, Diagnose, Firewallregeln, Registry-Erkennung und Desktop-Verknüpfungen wurden für mehrere parallele ClubShot-Instanzen angepasst.
- Jubiläums-/Ehrungsstufen sind unter Einstellungen frei konfigurierbar. Standard: 10 Jahre Bronze, 25 Jahre Silber, 40 Jahre Gold, 50 Jahre Gold. Stufen können hinzugefügt, deaktiviert oder entfernt werden.
- Jubiläumsplanung und Benachrichtigungen berücksichtigen nur aktivierte Stufen; alte, nicht mehr konfigurierte 5-Jahres-Schritte werden nicht mehr als offene Planung angezeigt.
- PostgreSQL-Backupwerkzeuge werden zusätzlich über PATH bzw. optional `CLUBSHOT_PG_TOOLS_DIR` erkannt. Bei externer Datenbank bleiben `pg_dump`/`pg_restore` für native `.sdbackup`-Sicherungen erforderlich.
## V2.1.28-test
- Mitglieder: Fehler 500 beim Historisieren unter PostgreSQL behoben. Der Zeitstempel für archivierte private Sportgeräte wird jetzt backend-neutral als Textparameter gesetzt.
- Mitglieder: Digitale Unterschriften bei der Schlüsselausgabe direkt im Mitgliederformular werden wieder initialisiert; der fehlerhafte JavaScript-Aufruf auf eine nicht vorhandene Funktion wurde entfernt.
- E-Mail-Verteiler: Alle vorhandenen E-Mail-Adressen werden zusätzlich als Outlook-kompatible, semikolon-getrennte Liste angezeigt und können mit einem Klick kopiert werden.
- E-Mail-Verteiler: Neue E-Mail an alle öffnet den lokalen Mailclient mit den Gruppenadressen im BCC-Feld.
- Changelog: Versionsanzeige bereinigt, damit keine ältere V2.1.20-test-Sektion mehr oberhalb der aktuellen Version steht.
- Backup: Hinweise für UNC-/NAS-Ziele präzisiert; ein Windows-Dienst benötigt für geschützte Freigaben eine passende Dienstidentität bzw. Berechtigung.
## V2.1.27-test
- Mitglieder: Direkter Button `Mitglieder exportieren` in der Mitgliederübersicht.
- Mitglieder: CSV-Export verwendet für Mobilnummer jetzt exakt die Import-Spalte `Mobil` und kann dadurch direkt wieder importiert werden.
- Mitgliederimport: `Verstorben`, `Sterbedatum` und `Aufbewahrung prüfen` aus einem ClubShot-Export werden wieder eingelesen.
- Ehrungen: Neuer CSV-Export mit Mitgliedsnummer, Name, Geburtsdatum, Art, Titel, Datum und Bemerkung.
- Ehrungen: Neuer CSV-/XLSX-Import mit Vorschau vor dem Schreiben.
- Ehrungen: Sichere Mitgliederzuordnung über Mitgliedsnummer, vollständigen Namen und – sofern vorhanden – Geburtsdatum.
- Ehrungen: Mehrdeutige Zuordnungen müssen manuell entschieden werden; nicht gefundene Mitglieder werden nicht automatisch angelegt.
- Ehrungen: Bereits vorhandene identische Ehrungen werden erkannt und standardmäßig übersprungen; beim finalen Import erfolgt erneut eine Dublettenprüfung.
- Ehrungen: Importierte Ehrungen werden im Änderungsprotokoll dokumentiert.
- Datenmigration: Ein von ClubShot erzeugtes `ehrungen.csv` kann unverändert wieder importiert werden.
## V2.1.26-test
- PostgreSQL: SQLite-kompatible Named-Parameter wie `:member_no` werden bei Mapping-Parametern zentral in psycopg-kompatible Platzhalter `%(member_no)s` umgesetzt.
- PostgreSQL: `::text`-Casts bleiben von der Parameterkonvertierung unberührt.
- PostgreSQL: Constraint-/Integritätsfehler werden wieder als `sqlite3.IntegrityError` an die bestehende ClubShot-Validierungslogik weitergereicht.
- Mitglieder: Anlegen, Bearbeiten und CSV-Import verwenden damit auch unter PostgreSQL die bestehende Named-Parameter-Logik.
- Benutzerverwaltung: Bei Validierungsfehlern bleiben Benutzername, E-Mail, MFA/Admin-Auswahl und Bereichsrechte im Formular erhalten; Passwortfelder werden weiterhin bewusst geleert.
- Benutzer bearbeiten: Validierung erfolgt vor dem Datenbank-Update; bei Fehlern bleiben die eingegebenen Konto- und Berechtigungswerte sichtbar.
- Sicherheitscenter: Break-Glass wird nicht mehr als regulärer Benutzer mit `MFA aus` in die Sicherheitsbewertung aufgenommen.
- Sicherheitscenter: Der geheime Break-Glass-Benutzername wird in Login-/Security-Ansichten nur noch neutral als `Notfallzugang` dargestellt.
- Systemstatus: Die bereits vorhandene neutrale Break-Glass-Anzeige mit eingerichtet/letzte Verwendung bleibt unverändert.
## V2.1.25-test
- Installer: eigentliche Ursache der Python-Erkennung unter Windows PowerShell 5.1 behoben.
- Installer: Der Python-64-Bit-Test verwendet innerhalb von `python -c` nun einfache Python-Anfuehrungszeichen. Dadurch entfernt Windows PowerShell 5.1 die Zeichen um `P` nicht mehr beim Native-Argument-Passing.
- Installer: Derselbe Quoting-Fix wurde auf die Python-Versionsanzeige angewendet.
- Installer: Die bereits nachgewiesene Python-3.14-Installation unter `%LocalAppData%\Programs\Python\Python314\python.exe` kann dadurch korrekt validiert werden.
- Installer: Nicht vorhandene ClubShot-Pfade werden vor `Resolve-Path` mit `Test-Path` abgefangen; dadurch erscheinen auf frischen Systemen keine irrefuehrenden Resolve-Path-Fehler mehr im Setup-Protokoll.
## V2.1.24-test
- Installer: Python-Erkennung fuer frische Windows-Installationen grundlegend vereinfacht und korrigiert.
- Installer: Direkte CPython-Installationen unter `%LocalAppData%\Programs\Python\Python*\python.exe` werden zuerst geprueft.
- Installer: Jeder gefundene Interpreter wird direkt ausgefuehrt und muss Python 3.11+ in 64-Bit bestaetigen.
- Installer: Kandidaten werden nicht mehr ueber verschachtelte Hashtable-/ArrayList-Strukturen an den Prozessaufruf weitergereicht.
- Installer: PEP-514-Registry, Program-Files-Installationen, `py.exe` und direkte `python.exe`-Aliase bleiben als Fallback erhalten.
- Installer: Microsoft-Store-Aliase werden nur akzeptiert, wenn sie tatsaechlich einen gueltigen Interpreter starten.
## V2.1.23-test
- Installer: Python-Erkennung fuer aktuelle Windows-/Python-Installationen erweitert.
- Installer: PEP-514-Registry-Eintraege von klassischen Python-Installern werden ausgewertet.
- Installer: Python unter Program Files, Benutzerprofil und `%LocalAppData%\Python\bin` wird erkannt.
- Installer: Moderne Python-Install-Manager-Aliase unter WindowsApps werden nicht mehr pauschal ausgeschlossen.
- Installer: `pymanager exec` wird als zusaetzlicher Interpreter-Kandidat unterstuetzt.
- Installer: Legacy-`py.exe` und direkte `python`-/`python3`-Aliase werden weiterhin unterstuetzt.
- Installer: Es wird weiterhin nur ein tatsaechlich startbarer Python-Interpreter ab Version 3.11 in 64-Bit akzeptiert.
## V2.1.22-test
- Installer: Fehlende Python-/PostgreSQL-Voraussetzungen koennen nun installiert und anschliessend im selben Installerfenster erneut geprueft werden; das Setup bricht nach dem Oeffnen der Downloadseiten nicht mehr automatisch ab.
- Installer: Nach dem Oeffnen der Downloadseiten wartet das Setup auf ENTER und prueft danach erneut.
- Installer: Prozess-PATH wird vor der Erkennung neu aus Windows eingelesen, damit waehrend des laufenden Setups installierte Programme gefunden werden koennen.
- Installer: Python-Erkennung durchsucht zusaetzlich typische Installationspfade und ignoriert den Microsoft-Store-App-Alias.
- Installer: Python-Pruefausgaben werden unterdrueckt, damit keine fehlerhaft dargestellten Store-/Codepage-Meldungen im Setup erscheinen.
- Installer: Nur Python 3.11+ in 64-Bit wird als gueltige Voraussetzung akzeptiert.
## V2.1.21-test
- Installer: Fehler bei einer frischen Windows-Installation behoben, bei dem eine leere Trefferliste faelschlich als bestehende ClubShot-Installation erkannt wurde.
- Installer: Setup-Protokolldatei wird unmittelbar unter `C:\ProgramData\ClubShot\Logs\ClubShot-Setup.log` angelegt.
- Installer: Frische Installation prueft Python und PostgreSQL/psql vor dem Kopieren der Anwendung.
- Installer: Fehlende Voraussetzungen werden verstaendlich angezeigt; auf Wunsch werden die offiziellen Downloadseiten fuer Python und PostgreSQL geoeffnet.
- Installer: Gefundene Python- und PostgreSQL-Versionen werden vor der Neuinstallation angezeigt.
## V2.1.19-test
- Dauerhafte Produktionsabnahme in Systemstatus ergänzt: automatische technische Prüfungen plus dokumentierte praktische Abnahmetests.
- Restore-Test und Serverneustart/Autostart können durch Administratoren mit Benutzer und Zeitpunkt bestätigt und für eine erneute Prüfung zurückgesetzt werden.
- Produktionsbereitschaft erhält eine eigene Grün/Gelb/Rot-Ampel und bleibt auch nach der Erstfreigabe dauerhaft verfügbar.
- Session-Lebensdauer auf 24 Stunden angehoben; die tatsächliche Inaktivitätsabmeldung wird weiterhin durch die konfigurierbare Idle-Timeout-Funktion (15–240 Minuten) erzwungen. Damit funktionieren auch 120/240 Minuten korrekt.
## V2.1.18-test
- Dokumentdesigner: Schriftgröße für markierte Textbereiche frei aus festen pt-Stufen wählbar.
- Dokumentdesigner: Schriftart (Arial/Helvetica, Times New Roman, Courier New) auswählbar.
- Dokumentdesigner: Textfarbe individuell wählbar.
- Dokumentdesigner: Formatierung markierter Inhalte kann zurückgesetzt werden.
- PDF-Ausgabe übernimmt Schriftgröße, Schriftfamilie und Textfarbe aus dem Designer.
# ClubShot – Changelog
## 2.1.17-test - 11.09.2026
- Dokumentdesigner auf feste A4-Seiten umgestellt: Seiten wachsen nicht mehr endlos; längerer Inhalt wird auf Folgeseiten verteilt.
- Fußzeile in Vorschau und PDF fest am unteren Seitenrand; PDF wiederholt die Fußzeile auf jeder Seite und zeigt Seitenzahlen.
- Integriertes Hilfezentrum deutlich erweitert: Suchfunktion, ausführliche Kapitel, mehr FAQ, visuelle A4-Erklärung und funktionierende Schnellnavigation.
- Vollständiger mitgelieferter `CHANGELOG.md` wird direkt unter Hilfe & Support angezeigt.
- Neuer administrativer Download eines datensparsamen Support-/Diagnosepakets mit Systeminformationen und begrenzten Logauszügen; Datenbank und Zugangsdaten werden nicht aufgenommen.
- Eigene ClubShot-Fehlerseiten für 403, 404 und 500 ergänzt; interne Tracebacks werden nicht als normale Benutzeroberfläche ausgegeben.
- Security-Review durchgeführt: öffentliche/geschützte Endpunkte, CSRF, dynamische SQL-Stellen, Upload-/Download-Pfade, Session-/MFA-/Break-Glass-Flows und Secret-Logging statisch geprüft.
- MFA-Verifikation gehärtet: nach 8 falschen Codes wird die ausstehende Anmeldung verworfen und muss vollständig neu gestartet werden.
- Setup-Regression behoben: nicht definierter Wert `session_timeout_minutes` bei einer frischen Ersteinrichtung wurde auf sicheren Standard 30 Minuten korrigiert.
## 2.1.16-test - 11.09.2026
- Hilfe & Support grundlegend erweitert: Erste Schritte, Mitglieder, Sport/Schießbuch, Dokumente, Benutzer/MFA, Backup, System/Sicherheit und umfangreichere FAQ.
- Defekten/unklaren Hilfe-Schnellzugriff durch echte Sprungmarken ersetzt.
- Für angemeldete Benutzer zusätzliche Direktlinks in die wichtigsten ClubShot-Bereiche.
- Impressum und Systemstatus aus V2.1.15 unverändert beibehalten.
## 2.1.15-test - 11.09.2026
- Dark-Mode-Kontraste für Backup, Hinweise, Designer und ähnliche Oberflächen korrigiert.
- Dokumentdesigner um Rich-Text-Fußzeile mit Platzhaltern/Bildern erweitert.
- Briefkopf- und Fußzeilen-Ausrichtung links/mittig/rechts ergänzt.
- Doppelte Break-Glass-Anmeldewarnung entfernt; persistente Warnung rot hervorgehoben.
- Systemstatus-Template bereinigt.
- Datenschutzinformation und VVT auf Break-Glass/MFA sowie reale Backup-Eigenschaften aktualisiert.
## 2.1.13-test - 11.09.2026
- Windows-Dienst grundlegend robuster umgesetzt: Der Service Control Manager startet jetzt direkt die Python-venv mit `clubshot_service.py`; `pythonservice.exe` ist nicht mehr der registrierte Diensthost.
- Dienststart wird als Teil von Installation, Update und Reparatur verbindlich geprüft. Der Dienst muss im Status `Running` bleiben und der konfigurierte Webport muss erreichbar sein.
- Bei Dienstfehlern schreibt der Installer automatisch Dienststatus und aktuelle Service-Control-Manager-Ereignisse in das Setup-Protokoll.
- Update-Rollback erweitert: Der vor dem Update vorhandene Windows-Dienstzustand wird gesichert und bei Fehlern wiederhergestellt. Wurde erstmals ein Dienst angelegt, wird er bei einem Rollback wieder entfernt.
- Neuer installationsspezifischer Break-Glass-Administrator für Notfälle. Benutzername `breakglass-xxxxxxxx` und ein kryptografisch erzeugtes 40-stelliges Kennwort werden einmalig erzeugt.
- Der Break-Glass-Administrator hat vollständige Adminrechte, ist in der normalen Benutzerverwaltung verborgen und benötigt absichtlich keine MFA.
- Zugangsdaten werden nur einmalig in `ClubShot-Notfallzugang.txt` auf dem Desktop des installierenden Administrators ausgegeben und nicht im Klartext in der Datenbank gespeichert.
- Erfolgreiche und fehlgeschlagene Break-Glass-Anmeldungen werden gesondert im Sicherheitsprotokoll erfasst. Der Systemstatus zeigt nur Einrichtung und letzte Verwendung, niemals die Zugangsdaten.
- Ersteinrichtung bleibt trotz bereits vorhandenem Break-Glass-Konto möglich; für die Setup-Prüfung zählen nur normale Benutzerkonten.
- PowerShell-Installer bleibt strikt ASCII und CMD/BAT bleiben BOM-frei für Windows PowerShell 5.1.
## 2.1.11-test – Production Readiness
- Windows-Dienst `ClubShot`: automatischer Start ohne angemeldeten Benutzer; Installer richtet den Dienst ein und konfiguriert Wiederanlauf bei Fehlern.
- Manueller BAT-Start bleibt als Diagnoseweg erhalten.
- Persistentes, rotierendes Anwendungs-/Waitress-Log unter `logs\clubshot.log` (10 MB, 10 Rotationen).
- `logs` wird bei Updates und Programm-Rollbacks geschützt.
- Neue Admin-Seite **System → Systemstatus** mit Version, Dienst, PostgreSQL, Backupstatus, Speicher, `user_content`, Serverzeit und Laufzeit.
- DPAPI-Schutz der DB-Zugangsdaten auf Computer-Scope migriert, damit der LocalSystem-Dienst auf demselben Server sicher starten kann; Datei-ACL bleibt auf SYSTEM/Administratoren beschränkt.
- Neue `NOTFALL-ANLEITUNG.md` für vollständige Wiederherstellung nach Serverausfall.
## 2.1.10-test - 10.09.2026
- Installationssuche bereinigt: historische Pfade und frühere Produktnamen werden nicht mehr fest abgefragt; Standardpfad ist `C:\ClubShot`.
- Individuelle Installationen bleiben über Registry bzw. valide ClubShot-Struktur erkennbar.
- Briefmodul unter PostgreSQL korrigiert: LIKE-Muster in `letter_values()` werden als SQL-Parameter übergeben und kollidieren nicht mehr mit Psycopg-Platzhaltern.
- `ClubShot-V2-starten.bat` und `ClubShot-Installer.cmd` werden ohne UTF-8-BOM ausgeliefert; dadurch kein `´╗┐@echo off` mehr unter Windows CMD.
- README, Installations- und Update-Anleitung vollständig auf den aktuellen PostgreSQL-/Installer-Stand gebracht.
## 2.1.9-test - 10.09.2026
- Installer-Pfaderkennung korrigiert: Ein einzelner gefundener Windows-Pfad wird nicht mehr versehentlich auf den Laufwerksbuchstaben `C` reduziert.
- Installationssuche akzeptiert nur noch vollständige absolute Windows-Pfade mit gültiger ClubShot-Struktur.
- Gefundene Installationskandidaten werden vollständig im Setup-Protokoll ausgegeben.
- Versionserkennung, `.venv`, Pre-Update-Backup und Updatepfade verwenden zuverlässig den vollständigen Installationspfad.
# ClubShot Changelog
## 2.1.8-test - 10.09.2026
- Neuer komfortabler Setup-Start über **`ClubShot-Installer.cmd`**. Die CMD startet den PowerShell-Installer mit `-ExecutionPolicy Bypass` nur für diesen Prozess; ein manuelles `Set-ExecutionPolicy` ist nicht mehr erforderlich.
- Der Installer kann weiterhin aus einem beliebigen entpackten Ordner gestartet werden und fordert bei Bedarf Administratorrechte an.
- Setup-/Update-Protokoll unter `%ProgramData%\ClubShot\Logs\ClubShot-Setup.log`; bei Fehlern bleibt der Installer zur Diagnose geöffnet.
- Fehler in **Mitglied → Brief erstellen** behoben: `letter_values()` verwendet wieder die vorhandene zentrale Metadatenfunktion `get_meta()`.
- Schießbuch-Massenimport erkennt Mitgliedsnummern tolerant: vollständige Nummer wie `012364-0000145`, Kurznummer `0000145` sowie `145`, wenn die Zuordnung eindeutig ist. Bei Mehrdeutigkeit wird die Zeile mit verständlicher Fehlermeldung abgewiesen.
- Excel-Importvorlage und Hinweisblatt dokumentieren die Kurznummernlogik.
## 2.1.7-test - 10.09.2026
- Neuer intelligenter PowerShell-Installer mit Update-/Reparaturmodus.
- Bestehende ClubShot-Installationen werden unabhängig vom Startordner des Installers erkannt.
- Standardpfad für Neuinstallationen ist `C:\ClubShot`; vorhandene Installationspfade bleiben bei Updates erhalten.
- Vor jedem Update wird zwingend ein vollständiges PostgreSQL-`.sdbackup` inklusive `user_content` erstellt und validiert.
- Zusätzlich wird der bestehende Programmstand unter `backups\updates` für ein Datei-Rollback gesichert.
- Persistente Inhalte (`db_config.json`, `runtime_config.json`, `.venv`, `user_content`, `backups`) werden beim Programmupdate nicht überschrieben.
- ClubShot wird für den Dateiaustausch beendet und anschließend wieder gestartet; der lokale Webport wird geprüft.
- Python-Abhängigkeiten werden beim Update/Reparieren anhand `requirements.txt` nachgezogen.
- Downgrades werden standardmäßig blockiert.
- Installationspfad und Version werden künftig zusätzlich unter `HKLM\SOFTWARE\ClubShot` registriert.
# ClubShot – Changelog
## 2.1.6-test - 10.09.2026
- Schießbuch-Massenimport auf ein vereinfachtes Standardformat umgestellt: Datum, Mitgliedsnummer, Vorname, Nachname, Wettkampf, Disziplin, Ergebnis, Stand, Aufsicht und Bemerkung.
- Deutsches Datumsformat `TT.MM.JJJJ` ist jetzt das bevorzugte Format; `JJJJ-MM-TT` und weitere bisherige Werte bleiben lesbar.
- Disziplinen werden bevorzugt über die DSB-Kennzahl (z. B. `2.53`) oder alternativ über den exakten Stammdatennamen erkannt.
- Bei erkannter Disziplin wird das in den Sport-Einstellungen hinterlegte Standardkaliber automatisch übernommen.
- Die Excel-Vorlage enthält einen erweiterten Hinweis-Tab mit einer dynamisch erzeugten Liste aller aktiven Disziplinen, DSB-Kennzahlen und Standardkaliber.
- Alte Importspalten (`Wertungsart`, `Ringe`, `Anzahl 9er`, `Kaliber`) werden aus Gründen der Abwärtskompatibilität weiterhin verarbeitet.
- Einzelne fehlerhafte Importzeilen brechen den Gesamtimport nicht ab; Zeilennummer und Ursache werden nach dem Import angezeigt.
- Unbekannte ältere Freitext-Disziplinen werden weiterhin importiert, aber nicht automatisch als neue Stammdaten angelegt.
# Changelog
## 2.1.5-test - 10.09.2026
- Zentrale, pflegbare Kaliber-Stammdaten für Schießbuch, Munitionsbestand und Sportgeräte. Standardwerte: 4,5 mm (.177), .22 l.r., .32, 9 mm Luger, .357 Magnum, .44 Magnum, .45 ACP und 7,62–9,65 mm Zentralfeuer.
- DSB-nahe Standarddisziplinen mit Kennzahl, Waffenart und verknüpftem Standardkaliber ergänzt: 2.10, 2.40, 2.45, 2.53, 2.55, 2.58, 2.59, 2.60, 1.11, 1.36 und 1.41.
- Disziplinen und Kaliber sind unter **Sport & Schießbetrieb → Sport-Einstellungen** bearbeitbar, erweiterbar und ausblendbar. Bestehende Einträge bleiben erhalten.
- Bei Auswahl einer Disziplin im Schießbuch wird das hinterlegte Standardkaliber automatisch vorbelegt; das Kaliber kann weiterhin geändert werden.
- Bestehende Freitextwerte aus älteren Versionen werden bei der Migration in die Disziplinstammdaten übernommen und nicht gelöscht.
- Persönliche Rekorde in der Sportauswertung berücksichtigen nur noch das aktuelle Sportjahr.
## 2.1.5-test - 10.09.2026
- Automatische Backups vollständig in **System → Backup & Wiederherstellung** verschoben; allgemeine Systemeinstellungen sind davon bereinigt.
- Neuer Standardpfad für automatische Sicherungen: `backups\automatic` innerhalb der ClubShot-Installation. Frühere unveränderte Standardpfade werden beim Start automatisch migriert.
- Dashboard- und Backup-Hinweis, solange automatische Sicherungen nur im lokalen Standardordner liegen; externes Laufwerk/NAS wird empfohlen.
- MFA-Selbstverwaltung erweitert: bestehendes MFA kann für ein weiteres Gerät erneut angezeigt oder sicher ersetzt werden. Beim Wechsel bleibt das bisherige MFA aktiv, bis der neue TOTP-Code bestätigt wurde.
- Mitgliederübersicht: Mitgliedsname ist jetzt direkt anklickbar und öffnet die Mitgliederansicht; besonders für Mobilgeräte angenehmer.
- Berechtigungs-/Menü-Audit: Dokumentenmenü respektiert jetzt die Dokumentenberechtigung; Admin-only-Systembereiche werden normalen Benutzern nicht mehr angeboten; schreibende Schnellaktionen werden bei Read-only-Rechten ausgeblendet.
- Benutzerverwaltung erläutert klarer, dass Administratoren immer Vollzugriff besitzen und Bereichsrechte bei Admin-Konten keine Wirkung haben.
- Kleine Konsistenzkorrektur: Passwort-Hinweis auf 12 Zeichen angepasst.
## 2.1.3-test - 10.09.2026
- PostgreSQL-Automatikbackup repariert: geplante Sicherungen erzeugen jetzt vollständige `.sdbackup`-Pakete statt bei PostgreSQL ohne Sicherung abzubrechen.
- Mehrere frei wählbare Backup-Uhrzeiten pro Tag; jeder Slot wird höchstens einmal pro Kalendertag ausgeführt, verpasste Slots werden nicht nachgeholt.
- Backup-Zielordner unterstützt lokale Pfade und UNC-Freigaben; automatische Aufbewahrung/Löschung nach konfigurierbaren Tagen.
- Backup-Status erweitert um letzten Erfolg, Dateiname, Größe, nächsten geplanten Lauf und letzten Fehler.
- Backup-Fehler erscheinen zusätzlich im ClubShot-Hinweiscenter.
- Test-Backup kann unabhängig vom Aktivstatus des Zeitplans sofort ausgelöst werden.
- Mitglieder-Timeline nach Ereignistyp sowie Von-/Bis-Datum filterbar.
- Gefilterte Mitglieder-Timeline als gestaltetes PDF exportierbar.
- Reverse-Proxy-Einstellungsblock aus dem fehlerhaften Seitentitel in den regulären Einstellungsinhalt verschoben.
## 2.1.2-test - 10.09.2026
- Update-Start robuster gemacht: Der Windows-Starter prüft jetzt vor dem Start, ob die für den Dokumentdesigner benötigte Bibliothek `tinycss2` in der bestehenden `.venv` vorhanden ist.
- Fehlt `tinycss2`, installiert ClubShot automatisch die Abhängigkeiten aus `requirements.txt` in die vorhandene virtuelle Python-Umgebung.
- Verständliche Fehlermeldung, falls die Nachinstallation nicht möglich ist.
- Batchdatei weiterhin ohne UTF-8-BOM.
## 2.1.2-test - 10.09.2026
- Startfehler des Dokumentdesigners behoben: `tinycss2` ist jetzt als feste Abhängigkeit enthalten, da Bleach `CSSSanitizer` diese Bibliothek benötigt.
- Windows-Batchstarter wird jetzt ohne UTF-8-BOM ausgeliefert. Dadurch startet `@echo off` unter cmd.exe wieder korrekt und es erscheint kein `´╗┐@echo` mehr.
- Funktionsumfang von 2.1.0-test unverändert.
## 2.1.2-test - 10.09.2026
- Neues modernes Dashboard/Cockpit mit Schnellaktionen, Kennzahlen, Aufgaben, Terminen, letzten Schießergebnissen und ClubShot-Hinweisen.
- Neues internes Hinweis- und Erinnerungscenter ohne E-Mail-Versand; Hinweise u. a. für überfällige Aufgaben, auslaufende Lizenzen, offene Beiträge, offene Schlüssel, Geburtstage und anstehende Veranstaltungen.
- Mitglieder-Timeline deutlich erweitert: Mitgliedschaft, Vorstandsämter, Lizenzen, Hofstaat, Ehrungen, Schlüssel, Schießergebnisse, Dokumente, Briefe und Veranstaltungen.
- Dokumentdesigner für Briefvorlagen: A4-Vorschau, Formatierungen, Platzhalter, Akzentfarbe, Dokumentstil, Fußzeile sowie Bild-Upload und eigener Briefkopf.
- Reverse-Proxy-Unterstützung für Synology/Nginx ergänzt; ProxyFix wird nur bei expliziter Aktivierung verwendet. Externe HTTPS-URL kann in den Einstellungen hinterlegt werden.
- ClubShot-Branding und updatefeste Ablage neuer Designer-Bilder unter user_content beibehalten.
- Kein E-Mail-Versand in dieser Version.
# ClubShot – Changelog
## 2.0.23-test - 10.09.2026
### Modernes ClubShot-Login
- Loginseite vollständig im ClubShot-Design neu aufgebaut.
- ClubShot-Produktlogo wird jetzt prominent auf der Anmeldung verwendet; das Vereinswappen steht nicht mehr im Vordergrund.
- Moderne responsive Zwei-Bereich-Ansicht für Desktop und kompakte mobile Darstellung ergänzt.
- Login-Felder, Statusmeldungen, Dark Mode und Sicherheits-Hinweis optisch überarbeitet.
- Sichtbaren Hinweis `admin / admin123` vollständig von der Anmeldung entfernt.
- Frische Installationen verwenden weiterhin ausschließlich den Ersteinrichtungsassistenten zur Anlage des ersten Administrators; es gibt kein Standard-Administratorkonto.
- Alte Standard-Seitentitel `SchützenDesk`, `SchuetzenDesk` und `Vereinsverwaltung` werden auch bei abweichender Groß-/Kleinschreibung automatisch auf `ClubShot` migriert.
- `admin123` bleibt lediglich intern auf der Liste zu schwacher Kennwörter und kann daher nicht als neues Administratorpasswort gewählt werden.
## 2.0.22-test - 10.09.2026
### Umbenennung zu ClubShot
- Produktname vollständig von SchützenDesk auf **ClubShot** umgestellt.
- Neues ClubShot-Logo als App-Logo und Windows-Icon integriert.
- Standard-Seitentitel, Login, Navigation, Einstellungen, Hinweise und Systemtexte auf ClubShot angepasst.
- Installer in `ClubShot-Installieren.ps1` und Launcher in `ClubShot-V2-starten.bat` umbenannt.
- Desktop-Verknüpfung heißt künftig `ClubShot.lnk` und verwendet das neue ClubShot-Icon.
- Windows-Firewallregel wird künftig als `ClubShot TCP <Port> - LAN` angelegt; alte SchuetzenDesk-Regeln werden beim Installer-Lauf mit bereinigt.
- Neue PostgreSQL-Installationen verwenden standardmäßig Datenbank und Benutzer `clubshot`.
- Neue Vollbackups heißen `ClubShot-Backup-...sdbackup` und verwenden das ClubShot-V2-Manifest.
- Bereits vorhandene `.sdbackup`-Dateien mit altem `SchuetzenDesk-V2-Backup`-Manifest bleiben wiederherstellbar.
- Neue Umgebungsvariablen `CLUBSHOT_HOST` und `CLUBSHOT_PORT`; alte `SCHUETZENDESK_*`-Variablen bleiben als Fallback kompatibel.
- Bestehende `db_config.json`, `runtime_config.json`, `user_content` und PostgreSQL-Daten werden bei Updates weiterhin nicht überschrieben.
## 2.0.21-test - 10.09.2026
### PostgreSQL-Vollbackup Laufzeitfehler behoben
- `current_user_is_admin()` aus den neuen Backup-Routen entfernt; diese Funktion existiert in ClubShot nicht.
- Administratorprüfung läuft weiterhin über den bereits vorhandenen zentralen `ADMIN_ONLY_ENDPOINTS`-Schutz.
- Security-Logging der neuen Backup-/Restore-Routen an die bestehende Signatur `log_security_event(conn, ...)` angepasst.
- Falschen Aufruf von `app_meta(...)` im Backup-Manifest entfernt.
- Backup-Manifest schreibt die aktuelle ClubShot-Version jetzt direkt.
- Neue Backup-Funktionen gegen die tatsächlich vorhandenen Helper-Funktionen in `app.py` geprüft.
## 2.0.20-test - 10.09.2026
### Backup-Template repariert
- Jinja2-Fehler `unknown tag 'else'` auf der Backupseite behoben.
- Doppelt eingefügten PostgreSQL-Backupblock aus V2.0.18/2.0.19 entfernt.
- PostgreSQL- und SQLite-Backupansicht sauber in einen einzigen `if/else/endif`-Block getrennt.
- Template zusätzlich mit dem Jinja2-Parser validiert.
## 2.0.19-test - 10.09.2026
### Backup-Seite repariert
- Internal Server Error beim Öffnen von `System -> Backup & Wiederherstellung` behoben.
- Ursache: Die neuen V2-Backupfunktionen referenzierten fälschlich `db_backend.is_postgres()` bzw. `db_backend.load_config()`, obwohl diese Funktionen direkt importiert werden.
- Backupseite und V2-Vollbackup verwenden jetzt korrekt `is_postgres()` und `load_config()`.
- Zusätzlich alle verbliebenen `db_backend.`-Referenzen in `app.py` geprüft und entfernt.
## 2.0.18-test - 10.09.2026
### Ein-Datei-V2-Vollbackup (.sdbackup)
- Neues V2-Backupformat `.sdbackup`: PostgreSQL-Dump und kompletter Ordner `user_content` in einer einzigen Datei.
- PostgreSQL wird weiterhin nativ mit `pg_dump -Fc` gesichert; der Dump wird vor Abschluss mit `pg_restore --list` validiert.
- Backup-Bundle enthält `manifest.json`, `database.pgdump` und `user_content/`.
- PostgreSQL-Zugangsdaten und `db_config.json` werden bewusst nicht in das portable Backup aufgenommen.
- Restore akzeptiert eine einzelne `.sdbackup`-Datei und prüft ZIP-Struktur, Pfade, Manifest und PostgreSQL-Dump vor Änderungen.
- Vor jedem Restore wird automatisch ein neues `.sdbackup` des aktuellen Zustands als Rückfallsicherung erstellt.
- Nach erfolgreichem Datenbank-Restore wird `user_content` vollständig durch den Stand des Backups ersetzt.
- PostgreSQL-Backupoberfläche auf das neue Ein-Datei-Verfahren umgestellt.
- Alte SQLite-Backupoberfläche wird im PostgreSQL-Betrieb nicht mehr parallel angezeigt.
## 2.0.17-test - 10.09.2026
### LAN-Firewallregel korrigiert
- Programmbindung der automatischen Windows-Firewallregel an `.venv\Scripts\python.exe` entfernt.
- Fehler im Praxistest bestätigt: Waitress lauschte korrekt, das Netzwerkprofil war `Private`, aber die programmspezifische Regel blockierte den LAN-Zugriff.
- Die Firewallregel erlaubt jetzt nur den gewählten TCP-Port für `Domain` und `Private`.
- `Public` bleibt geschlossen.
- Keine zusätzlichen UDP-Ports oder ausgehenden Regeln erforderlich.
## 2.0.16-test - 10.09.2026
### Firewallprofil weiter gehärtet
- Public-Firewallfreigabe aus V2.0.15 wieder entfernt.
- ClubShot öffnet den gewählten TCP-Port automatisch nur für `Domain` und `Private`.
- Der Installer prüft aktive Windows-Netzwerkprofile über `Get-NetConnectionProfile`.
- Wird ein aktives Profil als `Public` erkannt, erscheint ein deutlicher Hinweis, das vertrauenswürdige Server-LAN auf `Privat` bzw. `Domain` zu setzen.
- Die Windows-Firewall muss für den LAN-Zugriff nicht deaktiviert werden.
- ClubShot-Icon und automatische Anzeige der lokalen IPv4-Adressen aus V2.0.15 bleiben enthalten.
## 2.0.15-test - 10.09.2026
### Desktop-Icon und LAN-Erreichbarkeit
- Echte Windows-Icondatei `logo.ico` aus dem ClubShot-Logo erzeugt und in das Paket aufgenommen.
- Desktop-Verknüpfung verwendet dadurch das ClubShot-Icon statt des Python-Symbols.
- Waitress-Start zeigt automatisch erkannte lokale IPv4-Adressen als direkt nutzbare Netzwerk-URLs an.
- Firewallkonfiguration erweitert: Domain/Private erlauben den gewählten TCP-Port wie bisher.
- Zusätzlich wird für das Windows-Profil `Public` eine eigene Regel erzeugt, jedoch bewusst mit `RemoteAddress LocalSubnet`.
- Dadurch funktioniert der LAN-Zugriff auch dann, wenn Windows Server die Netzwerkkarte als öffentlich klassifiziert, ohne den ClubShot-Port im Public-Profil pauschal für fremde Netze zu öffnen.
- Alte von ClubShot erzeugte Portregeln werden bei der Installation vor dem Neuaufbau entfernt.
## 2.0.14-test - 10.09.2026
### Python-Erkennung bei Erstinstallation korrigiert
- Fehler behoben, bei dem Python nach einer Installation während des bereits laufenden ClubShot-Installers trotz ENTER weiterhin nicht erkannt wurde.
- Machine- und User-PATH werden nach jeder Installationsrunde neu in den aktuellen PowerShell-Prozess geladen.
- Zusätzlich direkte Suche unter `%LOCALAPPDATA%\Programs\Python`, `Program Files\Python` und `Program Files (x86)\Python`.
- Konkrete Fallbacks für Python 3.11 bis 3.15.
- `py.exe -3` wird als Python-Launcher unterstützt.
- Jeder Kandidat wird real ausgeführt und auf Python >= 3.11 geprüft; Microsoft-Store-/App-Execution-Aliase werden dadurch nicht fälschlich akzeptiert.
- Der verwendete Interpreter und die erkannte Version werden im Installer angezeigt.
- Venv-Erstellung verwendet exakt den zuvor erfolgreich geprüften Interpreter.
## 2.0.13-test - 10.09.2026
### Bereinigtes V2-Paket und neue Installationsdokumentation
- Alte v1-Startdatei `ClubShot-starten.bat` aus dem V2-Paket entfernt.
- Alte `ClubShot-Verknuepfung.ps1` aus dem V2-Paket entfernt; die Desktop-Verknüpfung wird vom aktuellen Erstinstaller erzeugt.
- Veraltete PostgreSQL-Setupskripte aus dem V2-Paket entfernt.
- Für eine Neuinstallation gibt es damit nur noch einen eindeutigen Installer: `ClubShot-Installieren.ps1`.
- Regulärer Start bleibt eindeutig `ClubShot-V2-starten.bat` -> `server.py` -> Waitress.
- Installationsanleitung vollständig neu aufgebaut und auf den aktuellen V2-Installationsablauf reduziert.
- Neue PDF-Installationsanleitung V2.0.13-test erstellt.
## 2.0.12-test - 10.09.2026
### Desktop-Verknüpfung
- Erstinstaller erstellt nach erfolgreicher Einrichtung wieder automatisch `ClubShot.lnk` auf dem Desktop des aktuell angemeldeten Windows-Benutzers.
- Ziel der Verknüpfung ist der produktive Launcher `ClubShot-V2-starten.bat`.
- Arbeitsverzeichnis wird explizit auf den ClubShot-Installationsordner gesetzt.
- Installer prüft nach dem Speichern, ob die `.lnk` tatsächlich vorhanden ist, und gibt eine Erfolgs- oder Warnmeldung aus.
- Vorhandene `logo.ico` wird als Verknüpfungssymbol verwendet; andernfalls dient die Python-Executable als technischer Icon-Fallback.
- Fehler bei der Desktop-Verknüpfung verhindern nicht die eigentliche ClubShot-Installation.
## 2.0.11-test - 10.09.2026
### Variabler Webport und Windows-Firewall
- Erstinstallation fragt nach dem ClubShot-Webport; leere Eingabe verwendet weiterhin TCP 5000.
- Erlaubter Portbereich im Assistenten: 1024 bis 65535.
- Gewählter Port wird persistent in `runtime_config.json` gespeichert und von `server.py`/Waitress verwendet.
- Installer legt bei administrativer Ausführung automatisch eine eingehende Windows-Firewallregel für den gewählten Port an.
- Firewallfreigabe gilt bewusst nur für die Profile `Domain` und `Private`, nicht für `Public`.
- Firewallregel wird zusätzlich auf `.venv\Scripts\python.exe` beschränkt.
- Bei einer Portänderung werden ausschließlich zuvor von ClubShot angelegte Regeln (`ClubShot TCP ...`) ersetzt.
- Ohne Administratorrechte wird die Installation nicht unnötig abgebrochen; es erscheint ein klarer Hinweis, dass die Firewallfreigabe manuell erfolgen muss.
- Launcher zeigt keine fest verdrahtete Port-5000-Adresse mehr; Waitress gibt die tatsächlich verwendete Adresse aus.
## 2.0.10-test - 10.09.2026
### PostgreSQL Backup / Restore
- Native PostgreSQL-Sicherung mit `pg_dump` im Custom-Format (`.pgdump`) ergänzt.
- `user_content` wird passend zur Datenbanksicherung separat als ZIP gesichert.
- Sicherungen werden unter `backups/postgresql/` mit Metadaten abgelegt.
- PostgreSQL-Sicherungen können im Backup-Bereich heruntergeladen werden.
- Wiederherstellung vorhandener `.pgdump`-Sicherungen ergänzt.
- Externe `.pgdump`-Dateien können hochgeladen und wiederhergestellt werden; optional kann das zugehörige `user_content`-ZIP mitgegeben werden.
- Vor jedem Restore wird automatisch eine Sicherheitskopie des aktuellen Datenbank- und Dateistands erzeugt.
- Restore verwendet `pg_restore --clean --if-exists --no-owner --no-privileges`.
- PostgreSQL-Kennwort wird nur über die Prozessumgebung an `pg_dump`/`pg_restore` übergeben und nicht als Kommandozeilenargument geschrieben.
- ZIP-Wiederherstellung enthält Schutz gegen Pfadmanipulation (Zip-Slip).
- PostgreSQL-Backup-/Restore-Endpunkte sind ausschließlich für Administratoren vorgesehen.
### Hinweis
- V2.0.10-test ist weiterhin eine Testversion. Der PostgreSQL-Restore sollte vor einer produktiven Freigabe auf Windows mit realen Vereinsdaten end-to-end getestet werden.
## 2.0.9-test - 10.09.2026
### Neuinstallationsassistent und produktiver Start
- Startdatei startet nun eindeutig `server.py` und damit Waitress; der Flask-Development-Server wird im regulaeren Start nicht verwendet.
- Startkonsole zeigt explizit `Produktionsserver: Waitress` und die lokale Browseradresse.
- Neuinstallationsassistent prueft Python 3.11+ und PostgreSQL vor der Einrichtung.
- Fehlt Python, wird die offizielle Python-Windows-Downloadseite geoeffnet. Nach der Installation kann mit ENTER erneut geprueft und direkt weitergemacht werden.
- Fehlt PostgreSQL, wird die offizielle PostgreSQL-Windows-Downloadseite geoeffnet. Nach der Installation kann mit ENTER erneut geprueft und direkt weitergemacht werden.
- Der Installer aktualisiert nach einer Python-Installation den PATH der laufenden PowerShell und erkennt auch typische Python-3.14-Pfade.
- Mit `Q` kann die jeweilige Warteschleife abgebrochen werden.
- Eine vorhandene `db_config.json` wird vom Neuinstallationsassistenten nicht ueberschrieben; damit wird ein versehentliches Zuruecksetzen einer bestehenden V2-Datenbankkonfiguration verhindert.
- Die Windows/Python-3.14-Korrektur fuer die ACL-Haertung aus V2.0.8 bleibt enthalten.
## 2.0.8-test - 10.09.2026
### Windows/Python 3.14 Kompatibilität
- Störende `UnicodeDecodeError`-Threadmeldungen beim Absichern von `db_config.json` unter Windows beseitigt.
- Die Ausgabe von `icacls` wird nicht mehr als lokalisierter Text durch Python dekodiert, da sie für ClubShot nicht benötigt wird.
- Verhindert insbesondere CP1252/Unicode-Decodierungsfehler auf deutschen Windows-Servern mit Python 3.14.
- Die eigentliche DPAPI-Verschlüsselung und ACL-Härtung bleiben unverändert.
## 2.0.7-test - 10.09.2026
### Installer-Härtung
- Windows-Installer erkennt Python jetzt über `py.exe`, `python.exe` und typische Installationspfade.
- Der Microsoft-Store-App-Alias wird nicht mehr irrtümlich als funktionierende Python-Installation akzeptiert.
- Fehlt Python, beendet sich der Installer sauber vor dem Erstellen der virtuellen Umgebung und zeigt konkrete nächste Schritte an.
- PostgreSQL-Erkennung und Fehlermeldungen wurden verständlicher gemacht.
- Installationsskript wird mit UTF-8-BOM ausgeliefert, damit Windows PowerShell 5.1 deutsche Texte korrekt darstellt.
- Installationsanleitung überarbeitet: die drei PowerShell-Befehle werden ausdrücklich einzeln und nicht direkt hintereinander dargestellt.
## 2.0.6-test – 10.09.2026
### Produktions- & Security-Basis
- Waitress als regulärer WSGI-Server.
- Vereinfachtes Windows-Installationsskript `ClubShot-Installieren.ps1`.
- Kein Standardkonto `admin/admin123`; sichere browserbasierte Ersteinrichtung.
- Administratorkonten erzwingen MFA; Issuer aus Vereinsname.
- Passwort-Basisrichtlinie auf mindestens 12 Zeichen vereinheitlicht.
- PostgreSQL-Appkennwort per Windows-DPAPI geschützt; NTFS-ACL gehärtet.
- PostgreSQL-Approlle ohne Superuser-/CreateDB-/CreateRole-/Replication-Rechte.
- Berechtigungs-Härtung für sensible Admin-Endpunkte und Logging verweigerter Zugriffe.
- Neues Security-Log.
- Dateisignatur-/Größenprüfung für zentrale Uploads.
- Einstellungen zeigen den Kennwortspeicher an.
- `SECURITY_AUDIT.md` ergänzt.
## 2.0.5-test – 10.09.2026
### Behoben
- PostgreSQL: Mitgliederliste und Liste ehemaliger Mitglieder funktionieren mit den als ISO-Text gespeicherten Vorstands-Datumsfeldern.
- SQLite-Ausdruck `date('now')` wird im PostgreSQL-Adapter kompatibel als ISO-Datumstext (`YYYY-MM-DD`) übersetzt.
- Dieselbe Kompatibilitätskorrektur greift auch für weitere Abfragen, die `date('now')` verwenden.
### Neu
- Einstellungen zeigen einen Bereich **Datenbank** für Troubleshooting.
- Angezeigt werden Backend, Datenbankserver, Port, Datenbankname, Benutzername und PostgreSQL-Serverversion.
- Das Datenbankkennwort wird ausdrücklich nicht angezeigt.
## 2.0.4-test – 10.09.2026
### Behoben
- PostgreSQL-Migration: Prozentzeichen in der Sequenzermittlung für psycopg korrekt escaped.
- Die abschließende Suche nach `nextval(...)`-Spalten bricht nicht mehr mit `ProgrammingError: only '%s', '%b', '%t' are allowed as placeholders` ab.
- ID-Sequenzen können nach der SQLite-Datenübernahme vollständig synchronisiert werden.
### Verbessert
- Der PostgreSQL-Migrationslauf kann nach erfolgreicher Datenkopie nun bis zur abschließenden Sequenzkorrektur durchlaufen.
## 2.0.3-test – 10.09.2026
### Behoben
- PostgreSQL-Kompatibilität: Die `lastrowid`-Ermittlung prüft vor `pg_get_serial_sequence()` nun, ob die Zieltabelle tatsächlich eine `id`-Spalte besitzt.
- `INSERT ... ON CONFLICT` in Tabellen ohne `id`-Spalte, insbesondere `app_meta`, verursacht dadurch keinen `UndefinedColumn`-Fehler mehr.
- SQL mit eigener `RETURNING`-Klausel wird nicht zusätzlich über die Kompatibilitätsroutine ausgewertet.
### Verbessert
- Sequenz-/ID-Kompatibilität zwischen SQLite und PostgreSQL robuster umgesetzt.
## 2.0.2-test – 10.09.2026
### Behoben
- PostgreSQL-Initialisierung bricht nicht mehr durch ein blindes `SELECT lastval()` bei Tabellen ohne Sequenz ab.
- PostgreSQL-Zeilen unterstützen jetzt wie `sqlite3.Row` sowohl Spaltennamen als auch numerische Indizes.
- Mitgliedsnummern werden in PostgreSQL wie in der stabilen v1.x-Linie nicht technisch UNIQUE erzwungen.
- SQLite-Übernahme benötigt nicht mehr `session_replication_role=replica` und damit keine PostgreSQL-Superuser-Rechte.
- Tabellen werden anhand ihrer Fremdschlüsselabhängigkeiten in einer sicheren Reihenfolge geleert und importiert.
- Sequenzen werden nach dem Import korrekt auf die übernommenen IDs gesetzt.
### Verbessert
- SQL-Fehler zeigen jetzt sofort den betroffenen PostgreSQL-Befehl und den ursprünglichen Fehler an, statt erst einen `InFailedSqlTransaction`-Folgefehler zu melden.
- Migrationsausgabe wurde in Schema-Initialisierung, Leeren und Datenkopie gegliedert.
### Sicherheit
- `verein.db` bleibt bei der Migration weiterhin unverändert und dient ausschließlich als Quelle.
## 2.0.1-test – 10.09.2026
### Verbessert
- Windows-Setup für lokal oder extern installiertes PostgreSQL ohne Docker.
- Automatische Anlage von Datenbank und eigenem ClubShot-Datenbankbenutzer.
- Separater PostgreSQL-Verbindungstest.
- Anleitung für Installation, Datenkopie und Rückkehr zur unveränderten v1.x ergänzt.
### Sicherheit
- V2 bleibt eine isolierte Testlinie; die SQLite-Quelldaten werden bei der Migration nicht verändert.
- SQLite-basierte Backup-Automatik wird im PostgreSQL-Testbetrieb nicht ausgeführt.
## 2.0.0-test – 10.09.2026
### Experimentell
- Separate PostgreSQL-Testlinie; v1.x bleibt unverändert.
- Externe Datenbank über `db_config.json`.
- Kopiermigration aus `verein.db`, ohne die SQLite-Quelle zu verändern.
- Docker-/Windows-Testsetup und Installationsanleitung.
## 1.25.2 – 10.09.2026
### Verbessert
- Desktop-Seitenmenü ist jetzt fest am linken Bildschirmrand fixiert und scrollt unabhängig vom Seiteninhalt.
- Beim Öffnen eines Menübereichs werden andere aufgeklappte Bereiche automatisch geschlossen (Accordion-Verhalten).
- Beim Seitenwechsel wird der aktuell verwendete Menübereich automatisch geöffnet; andere Bereiche bleiben geschlossen.
- Die Position des aktiven Menübereichs bleibt im sichtbaren Bereich der Seitenleiste besser erreichbar.
## 1.25.1 – 10.09.2026
### Behoben
- Digitale Unterschrift bei Sporturkunden: Unterschriftenfeld wird nach Aktivieren des Hakens zuverlässig eingeblendet.
- Zeichnen per Maus, Touchpad, Stift und Touch über Pointer Events verbessert.
- Die Unterschrift wird vor dem PDF-Aufruf sicher in das Formular übernommen; leere Unterschriften werden bereits im Browser abgefangen.
- Benutzer ohne Leserecht für „System & Einstellungen“ sehen das System-Menü nicht mehr. Die serverseitige Zugriffssperre bleibt zusätzlich bestehen.
### Verbessert
- „Mein Konto / Passwort“ bleibt unabhängig vom Systemrecht erreichbar, damit Benutzer ihr eigenes Passwort verwalten können.
## 1.25.0 – 09.09.2026
### Neu
- Bereichsbasiertes Rechtesystem mit „Kein Zugriff“, „Nur lesen“ und „Lesen & schreiben“.
- Benutzerprofile um E-Mail, MFA-Pflicht, letzten Login, letzte Passwortänderung, Aktivstatus und Administratorstatus erweitert.
- MFA-Pflicht kann je Benutzer erzwungen werden.
## 2.1.15-test
- Production-Readiness-Systemampel mit Prüfungen für Dienst, Datenbank, HTTPS, Sessions, MFA, Break-Glass, Backup, Speicher und Audit.
- Login-Schutz erweitert: kontobezogene Sperre nach Fehlversuchen und administrative Freigabe in der Benutzerverwaltung.
- Konfigurierbarer Auto-Logout nach Inaktivität (15/30/60/120/240 Minuten).
- Automatische Backups zusätzlich stündlich oder alle 30 Minuten planbar; individuelle Uhrzeiten bleiben möglich.
- Audit-Log um Sicherheitsereignisse, Suche und Kategorien erweitert; Benutzer- und Einstellungsänderungen werden zusätzlich protokolliert.
- Integrierter Hilfe-&-Support-Bereich mit Kurzanleitungen und FAQ.
- Öffentlich erreichbares Impressum mit Anbieterangaben und rechtlichen Hinweisen.
Keine Treffer
Versuche einen allgemeineren Suchbegriff oder lösche die Suche.