Feedback & Bugs
Hilf mir, die Website und Wiedisync zu verbessern
Eingeloggt bei Wiedisync? Dort Feedback geben
Was ist neu v1.17.0
Bei den Mädchenteams war die Karte leer
- Die Karten U18 und U16 Mädchen zeigten weder Training noch Coach noch Status. Der Verein hatte die beiden Mädchenteams in Directus umbenannt — auf DU18 Spark und DU18 Fire — und die Seite ordnete Teams über eine feste Namensliste zu. Nach der Umbenennung passte nichts mehr, und beide Karten leerten sich selbst. Es war die dritte Umbenennung dieser Teams, und jedes Mal leerten sie sich
- Die Seite führt gar keine Teamliste mehr: Sie zeigt eine Karte pro Team, das in Directus tatsächlich existiert, und leitet die Altersstufe aus dem Teamnamen her. Ein neues Team erscheint, ein aufgelöstes verschwindet, eine Umbenennung kommt an — ohne dass die Seite angefasst werden muss
- Damit stehen bei U18 neu beide Mädchenteams nebeneinander, jedes unter seinem eigenen Namen, und bei U16 steht kein Mädchenteam mehr — diese Saison hat der Verein keines. DU18 Fire ist ein U18-Team, das in der U16-Liga spielt. Die Teamübersicht auf der Basketball-Seite führt dieselben zwei Namen
- Wo der Name in Directus nur der Alterscode ist, bleibt die deutsche Bezeichnung: «U8 Mixed» liest sich besser als «MU8»
Mixed-Teams können Mädchen und Knaben getrennt aufnehmen
- U8 und U10 sind gemischt, das Team füllt sich aber pro Geschlecht — «offen für neue Spieler» war dafür zu grob: Es lud entweder alle ein oder niemanden. Trainer:innen können das Team in den Team-Einstellungen in Wiedisync neu für Mädchen und Knaben unabhängig öffnen
- Ist nur eines der beiden offen, teilt sich die Karte: Das aufgenommene Geschlecht erhält den grünen Hinweis und das Kontaktformular, das andere den goldenen «Team voll»-Hinweis und die Warteliste. Beide offen — oder keines, womit jedes Team startet — zeigt weiterhin die eine gewohnte Zeile
- Der Warteliste-Knopf ist neu golden statt blau, passend zum «Team voll»-Hinweis daneben
Die Beschreibungstexte im Nachwuchs sind weg
- Der Absatz unter jedem Nachwuchsteam («Unser U18-Knabenteam spielt in der regionalen Jugendliga …») wurde auf allen zehn Karten entfernt. Trainingszeiten, Coach und Aufnahmestatus bleiben — die kommen aus Directus und sind der Teil, der tatsächlich aktuell ist
Bei den Mitgliederbeiträgen war der Betrag abgeschnitten
- Die drei Tabellen auf Mitgliedschaft standen am Desktop nebeneinander, womit jede Spalte zu schmal für ihren eigenen Inhalt war. Die Beschreibungen konnten nicht umbrechen, die Tabellen liefen über ihre Spalte hinaus — und damit war der Beitrag selbst hinter einem Rollbalken verschwunden, ausgerechnet auf der Seite, die ihn nennen soll
- Volleyball und Basketball stehen neu nebeneinander, die Swiss-Volley-Lizenzgebühren darunter beim Volleyball, wo sie hingehören. Zwei Spalten über die volle Breite haben Platz für ihren Text, nichts wird mehr abgeschnitten. Auf dem Handy stehen die drei weiterhin untereinander
- Die Überschriften Kategorie / Beitrag waren dunkelgrau auf dem dunkelblauen Balken und praktisch unsichtbar. Sie sind jetzt weiss
Ein Mitglied, eine Schreibweise — die Akzent-Tabellen waren auseinandergelaufen
- Namen mit Akzent werden an drei Stellen umgeschrieben: in den Lizenzformularen aus dem Anmeldeformular, in denen aus dem Admin und im ClubDesk-Export. Jede Stelle hatte ihre eigene Tabelle dafür, welche Buchstaben ersetzt werden — und sie waren sich uneinig. Aus einer einzigen Anmeldung wurde so
Isikauf dem Lizenzformular undIs?kim Mitgliederregister. Betroffen:ı(türkisches i ohne Punkt),ħ,ŧ - Alle nutzen neu dieselbe Tabelle, und die ClubDesk-Synchronisation auf dem Server hat denselben Satz erhalten. Damit landet nichts mehr als
?im Register. Was CP1252 kann, bleibt wie immer unverändert (ä ö ü é à ç ß Š ž Ø Æ) - Tests halten die Tabellen in beiden Projekten gegeneinander fest: Wer eine ändert, ohne die anderen anzupassen, bekommt einen Fehlschlag — statt dass ein Mitglied still eine zweite Schreibweise erhält
Der ClubDesk-Export verstümmelte jeden Namen mit Akzent
- Die Datei wurde als UTF-8 geschrieben, die CSV-Schnittstelle von ClubDesk ist aber Windows-1252 — der eigene Export von ClubDesk ist CP1252, und die skriptgesteuerte Mitgliedersynchronisation rechnet vor dem Hochladen um. Wer unsere UTF-8-Datei von Hand importierte, machte aus
DürigeinDürigim Mitgliederregister; die vorangestellte Byte-Reihenfolge-Marke liess ausserdem die erste Spaltenüberschrift alsNachnameerscheinen, die womöglich gar nicht zugeordnet wird - Der Export ist neu CP1252 ohne Marke und verwendet dieselbe Umschrift wie die Synchronisation: Was CP1252 kann, bleibt unverändert (ä ö ü é à ç ß Š ž), das Wenige, was es nicht kann, verliert sein Diakritikum (ć → c, ł → l, đ → d) statt als Zeichensalat anzukommen. Beide Wege schreiben damit dieselbe Schreibweise ins Register
«Keiner» beim Herkunftsverband nennt jetzt den Verband
- Die Option hiess «Keiner / noch nie lizenziert» — mehrdeutig für jemanden, der sehr wohl lizenziert war, einfach nicht bei einem nationalen Verband. Italiens CSI, UISP und PGS sind CONI-Sportförderverbände, keine FIVB-/FIBA-Mitglieder — es gibt also gar keine Lizenz zu übertragen
- Solche Anmeldungen hätten naheliegend Italien gewählt, worauf der Club bei FIPAV eine Freigabe angefragt hätte, die es dort nicht gibt. Die Option heisst neu «Keiner / noch nie bei einem nationalen Verband lizenziert»
Die Verbandsauswahl nennt den Verband selbst — je nach Sportart
- «Herkunftsverband» fragt, welche Organisation dich zuerst lizenziert hat, und das ist je nach Sportart eine andere: Eine italienische Volleyballerin kommt von der FIPAV, ein italienischer Basketballer von der FIP. Die Auswahl zeigt neu den Namen des Verbands neben dem Land statt nur das Land. Die Liste ist bewusst nicht vollständig — was fehlt, fällt auf den Ländernamen zurück, was weiterhin eine richtige Antwort ist, nur weniger genau
- Beim Wechsel zwischen Volleyball und Basketball wird eine bereits getroffene Verbandsauswahl zurückgesetzt, statt eine Bezeichnung der anderen Sportart am gespeicherten Code hängen zu lassen
Doppelbürger:innen können alle ihre Staatsangehörigkeiten angeben
- Die Nationalität war eine Einfachauswahl — wer zwei Pässe hat, musste einen davon weglassen, und genau der weggelassene entscheidet oft darüber, welche Dokumente Swiss Basketball und die FIBA verlangen. Neu ist es eine Mehrfachauswahl mit Chips: Alle auswählen, die erste Wahl gilt als Hauptnationalität
- Ein Schweizer Pass irgendwo in der Liste macht die Person für die Dokumentenregeln zur Schweizerin — nicht nur dann, wenn er zufällig zuerst steht. Die FIBA behandelt Doppelbürger:innen mit Schweizer Nationalität als Schweizer:innen; wer CH/IT hatte und Italien zuerst nannte, wurde bisher nach Dokumenten für ausländische Spieler:innen gefragt, die niemand verlangt hat. Formular und Server wenden bewusst dieselbe Regel an — verlangt das Formular weniger als der Server, wird die Anmeldung erst abgewiesen, wenn alles bereits hochgeladen ist
- Im Lizenzantrag wird Schweiz angekreuzt, sobald ein Schweizer Pass vorliegt, unabhängig von der Reihenfolge: Gefragt ist, ob die Person Schweizerin ist, nicht welcher Pass zuerst kommt
Herkunftsverband
- Neues Feld für den ersten nationalen Verband, bei dem die Person eine Lizenz hatte — den braucht Swiss Basketball, um die Freigabe anzufordern. Nicht der zuletzt zuständige Verband: Das ist eine andere Frage mit einer anderen Antwort für alle, die mehr als einmal gewechselt haben
- «Keiner» ist eine echte Antwort, kein leeres Feld. Sie sagt, dass dies die erste Lizenz ist und nichts angefordert werden muss — genau das muss der Verein wissen. Ein leeres Feld sagt nur, dass niemand etwas eingetragen hat
Der Freibrief-Verzicht ist zurück — diesmal auf beiden Seiten
- Der Server setzt jetzt dieselbe Regel um, deshalb kann das Formular den Freibrief dort weglassen, wo Swiss Basketball ihn nicht verlangt: keine Lizenz in den letzten zwei Saisons oder Kategorie U12 und tiefer. Der Server war zuerst an der Reihe — genau darum geht es, denn 1.15.1 hatte nur die Formularhälfte ausgeliefert und damit ebendiese Leute ausgesperrt
- U12 und tiefer ergibt sich aus dem Geburtsdatum und fragt nichts zusätzlich ab. Alle anderen, die aus einem Schweizer Club wechseln, werden einmal gefragt, ob sie in den letzten zwei Saisons lizenziert waren; nur ein ausdrückliches Nein lässt den Freibrief entfallen. Ohne Antwort bleibt er Pflicht — im Formular wie auf dem Server, denn ein zu Unrecht erlassener Freibrief führt zu einem unvollständigen Dossier, das Swiss Basketball später zurückweist
- Die Antwort wird bei der Anmeldung gespeichert. Damit stimmen die Seite «Dokumente nachreichen» und die Freigabe im Admin mit dem überein, was das Formular verlangt hat, statt ein Dokument erneut einzufordern, das niemand schuldet
Korrektur: Der Freibrief-Verzicht aus 1.15.1 ist wieder ausgeschaltet
- 1.15.1 verlangte den Freibrief dort nicht mehr, wo Swiss Basketball darauf verzichtet — keine Lizenz in den letzten zwei Saisons oder Kategorie U12 und tiefer. Das war nur die halbe Änderung. Der Server prüft dieselbe Liste unabhängig davon und verlangt den Freibrief weiterhin bei jedem Wechsel aus einem Schweizer Club. Eine Anmeldung ohne ihn wird deshalb rundweg abgewiesen — mit «Erforderliche Dokumente fehlen. Bitte lade die Seite neu und versuche es erneut.», einem Hinweis, der nicht weiterhilft, weil Neuladen nichts ändert
- Die Wirkung war das Gegenteil der Absicht: Wer bisher bloss nach einem Dokument gefragt wurde, das er gar nicht schuldet, konnte sich überhaupt nicht mehr anmelden — und zwar genau die Gruppe, der die Änderung helfen sollte, was bei einem Juniorenverein häufig vorkommt
- Das Formular verlangt den Freibrief wieder von allen Wechseln aus einem Schweizer Club, wie vor 1.15.1, und die Frage nach der Lizenzgeschichte ist ausgeblendet. Die Regel selbst bleibt richtig und bleibt im Code — sie wird gemeinsam mit der passenden Änderung auf dem Server wieder eingeschaltet, nicht vorher
Ein ID-Download konnte das Original löschen, ohne es je gespeichert zu haben
- Beim Herunterladen eines Ausweises wird dieser anschliessend auf dem Server gelöscht — wir behalten den Scan nicht länger als nötig, was das Löschen zugleich unwiderruflich macht. Es lief pro Datei, ohne zu prüfen, ob der Download überhaupt geklappt hat: Bei abgelaufenem Token oder einem 401 wurde die Fehlermeldung unter dem Namen der Person gespeichert und der echte Scan eine Zeile später gelöscht. Neu wird alles vollständig geholt und geprüft, bevor irgendetwas entfernt wird
- Die gespeicherte Datei hatte zudem keine Dateiendung und liess sich deshalb auch bei erfolgreichem Download nicht per Doppelklick öffnen. Sie richtet sich neu nach dem tatsächlichen Dateityp
Auch die übrigen Downloads kommen nicht mehr abgeschnitten an
- Die letzte Version hat die Lizenzformulare behoben; derselbe Fehler steckte in vier weiteren Download-Wegen, darunter einzelne Spielblätter und das SVRZ-Paket — die grösste Datei, die der Admin erzeugt, und diejenige, bei der ein abgeschnittener Download am ehesten unbemerkt weitergeleitet wird. Alle Downloads laufen neu über eine Stelle, die die Datei so lange hält, bis der Browser sie geschrieben hat
Fotografierte Dokumente werden nicht mehr quer gespeichert
- Ein Handy hält die Drehung eines Fotos als Zusatzinformation fest, nicht in den Bildpunkten selbst — die Umwandlung ins PDF verwarf sie. Ein Upload konnte dadurch im PDF gedreht landen, obwohl er auf dem Handy aufrecht aussah
Ausserdem
- Der ClubDesk-Export ist neu durch Tests abgesichert. ClubDesk ordnet die Spalten nach ihrer Position zu: Wird eine Überschrift ergänzt oder entfernt, ohne die Datenzeile mitzuändern, verschiebt sich alles danach — der Nachname ins Feld Vorname, die Strasse in die PLZ — und die Datei sieht dabei völlig korrekt aus. Die Spaltenliste und der Schutz vor Formel-Einschleusung sind jetzt festgehalten
Die «National Team Declaration» ist weg — die FIBA nimmt sie nicht mehr
- Swiss Basketball hat am 23. Juli die Lizenzsaison 2026-27 eröffnet und die National Team Declaration durch das Acknowledgment of National Team Restriction ersetzt. Die FIBA akzeptiert ausschliesslich das neue Dokument. Wer bei uns als U18 mit ausländischem Pass ein Formular herunterlud, reichte damit ein Papier ein, das zurückgewiesen worden wäre — das alte PDF ist deshalb entfernt und steht nicht mehr daneben
- Das Vorausfüllen wurde auf die Felder des neuen Formulars umgestellt. Zwei bleiben bewusst leer: der Herkunftsverband, den wir nicht kennen können, und das Transferdatum, das Swiss Basketball und die FIBA setzen — eine plausible Vermutung im Feld ist schlimmer als ein leeres, das jemand ausfüllen muss
Lizenzformulare scheitern nicht mehr an Namen mit dem falschen Akzent
- Das Ausfüllen der Swiss-Basketball- und FIBA-Formulare schlug bei Namen wie Šarčević, Győző, Öztürk oder Łukasz komplett fehl. Die Schriften im PDF können nur WinAnsi, und ein einziger nicht darstellbarer Buchstabe brach das ganze Dokument ab — die anmeldende Person erhielt daraufhin wortlos ein leeres Formular. Akzente, die WinAnsi kann (ä ö ü é à ç ß Š ž), bleiben unverändert; nur die Zeichen, die es wirklich nicht trägt, verlieren ihr Diakritikum
- Scheitert das Vorausfüllen doch, steht das neu im Fehlerprotokoll, statt still ein leeres PDF auszuliefern
Downloads kommen nicht mehr abgeschnitten an
- Der Download gab die Datei im selben Moment wieder frei, in dem der Klick ausgelöst wurde — im Wettlauf mit dem Browser, der sie noch schrieb. Je grösser das Dokument, desto wahrscheinlicher ein halb geschriebenes, unlesbares PDF; das neue Acknowledgment ist mit rund 590 KB das grösste davon. Betroffen waren das öffentliche Formular und die im Admin erzeugten Dokumente
Der Lizenzantrag aus dem Admin hatte die Felder um eins verschoben
- Jeder im Admin erzeugte Lizenzantrag trug die Daten in den falschen Feldern: die E-Mail-Adresse im Feld NAME, der Nachname im Feld VORNAME, die Strasse im schmalen PLZ-Kästchen und so weiter durch das ganze Formular. Geprüft an den tatsächlichen Feldpositionen im PDF. Das öffentliche Formular war immer richtig — verschoben war nur die Kopie im Admin
Der Freibrief wird nicht mehr von Leuten verlangt, die keinen brauchen
- Swiss Basketball verzichtet auf den Freibrief, wenn in den letzten zwei Saisons keine Lizenz bestand oder die Kategorie U12 oder tiefer ist. Wir verlangten ihn von allen, die aus einem Schweizer Club wechseln — und schickten damit Leute los, um bei ihrem alten Club ein Dokument zu holen, das dieser gar nicht ausstellen muss. Das Formular fragt neu nach der Lizenzgeschichte, und zwar nur dann, wenn es überhaupt eine Rolle spielt; die Jugendkategorien ergeben sich aus dem ohnehin angegebenen Geburtsdatum. Fehlt das Geburtsdatum, bleibt der Freibrief Pflicht: ihn fälschlich zu erlassen, erzeugt ein unvollständiges Dossier
Ausserdem
- Die Formulare tragen neu die laufende Saison statt eines fest eingetragenen
2025/2026— der Wechsel erfolgt im Juli mit dem Verwaltungsjahr von Swiss Basketball
Anmeldungen: nach Nachname sortiert
- Die Anmeldeliste beginnt neu mit Nachname und ist danach sortiert. Bisher stand die neuste Anmeldung zuoberst — das ist die Reihenfolge des Eingangs und keine Ordnung, wenn man jemanden sucht. Sortiert mit Schweizer Sortierung: Dürig steht zwischen Demir und Mayer, nicht hinter Z
«E-Mail gesendet an …» als Toast
- Die Bestätigung stand bisher als winziger grauer Text in der Zeile und war beim nächsten Neuaufbau weg. Neu erscheint sie als Meldung unten rechts, mit der Adresse, an die tatsächlich gesendet wurde. Schlägt der Versand fehl, steht dort, dass das Ergebnis erfasst ist und nur die E-Mail nicht rausging — und die Meldung bleibt länger stehen
SVRZ-Wohnort: nachgeschlagen statt geraten
- PLZ und Wohnort werden aus den Mitgliederdaten ergänzt, wenn die Anmeldung keine enthält. Das Formular fragte «Adresse» in einem einzigen Feld, und die meisten lasen das als «Strasse»: 16 von 25 gaben gar keinen Ort an
- Ist nichts bekannt — weder aus der Anmeldung noch aus den Mitgliederdaten — steht auf der Liste «Zürich» ohne PLZ. Das ist eine Annahme und bewusst die letzte Stufe: Nur rund 70% der Mitglieder wohnen in Zürich. Die Suche fand unter anderem Wädenswil und Stallikon — Personen, die sonst fälschlich als Zürich auf der Liste gestanden hätten
- Der Export sagt es vorher. Fehlende Lizenznummern und geratene Wohnorte werden vor dem Herunterladen aufgelistet — ein geratener Ort sieht in einer Tabellenzelle sonst genau wie eine Angabe aus
- Das Formular ist inzwischen in Strasse / PLZ / Ort aufgeteilt und wird direkt gelesen. Ältere Anmeldungen werden weiterhin wie bisher ausgewertet
Spielblatt-Spalte: Symbol mit Farbe statt Häkchen
- Statt des Häkchens steht neu ein Matchblatt-Symbol, dessen Farbe den Stand zeigt: grau — kein Spielblatt, grün — Spielblatt vorhanden, blau — es gibt zusätzlich eine Korrektur. Eine Legende unter der Tabelle erklärt die Farben
- Das Symbol ist auch grau anklickbar. Spielblätter kommen auch per E-Mail oder auf Papier — bisher hatte die Spalte dafür keinen Platz. Neu gibt es «Spielblatt hochladen (selbst erhalten)», und es wird als das Blatt der Teilnehmer:in abgelegt, nicht als Korrektur von nichts
- Ist bereits ein Spielblatt da, wird das direkte Hochladen abgelehnt: Wer ein vorhandenes Blatt ändern will, lädt eine Korrektur hoch — die behält beides und hält fest, wer sie gemacht hat
Spielblatt herunterladen
- Neu im Menü: Spielblatt herunterladen — gespeichert als
schreiberpruefung_337646.pdf, gleich benannt wie im SVRZ-ZIP - Beim Anzeigen kommt neu immer ein PDF, egal was das Handy der Teilnehmer:in produziert hat. Vorher öffnete ein Handyfoto als blosses Bild, und «Speichern unter» schlug eine kryptische Blob-Nummer als Dateinamen vor. Die gespeicherte Originaldatei bleibt unverändert
Prüfungsergebnis: Ja / Nein — mit E-Mail und Anmerkung
- Das Häkchen «Prüfung bestanden» ist zwei Knöpfen gewichen: Ja und Nein. Ein Häkchen kannte nur zwei Zustände, die Frage hat aber drei — bestanden, nicht bestanden, und noch nicht angeschaut. Der dritte ist der häufigste, und er darf auf der SVRZ-Teilnehmerliste nicht als «Nicht bestanden» erscheinen
- Beide Antworten fragen zuerst nach und schicken der Teilnehmer:in danach automatisch eine E-Mail mit dem Ergebnis. Im Bestätigungsfenster lässt sich eine Anmerkung mitgeben — etwa was gefehlt hat oder worauf zu achten ist; sie wird in der E-Mail mitgeschickt
- Ein nochmaliger Klick auf die bereits gesetzte Antwort setzt das Ergebnis zurück auf «noch nicht entschieden» — ohne E-Mail, denn es gibt dann kein Ergebnis mehr zu melden
- Auf der Teilnehmerliste steht neu «Bestanden» oder «Nicht bestanden»; wer noch nicht geprüft wurde, bleibt leer
Korrigiertes Spielblatt hochladen
- Das grüne Häkchen in der Spalte «Prüfung hochgeladen» öffnet neu ein Menü: das Spielblatt anzeigen, ein korrigiertes Spielblatt hochladen — und, sobald eines existiert, beide nebeneinander anschauen
- Das Blatt der Teilnehmer:in wird dabei nie überschrieben: Es ist das, was sie eingereicht hat, und die Korrektur kommt oben drauf. Das Menü zeigt, wer korrigiert hat und wann, und das Häkchen wird orange — so sind korrigierte Zeilen auf einen Blick erkennbar
- Die Ergebnis-E-Mail hat das korrigierte Blatt als PDF im Anhang, sofern eines hochgeladen wurde
SVRZ-Export: Spielblätter als PDF, benannt nach Lizenznummer
- Im ZIP heissen die Spielblätter neu
schreiberpruefung_337646.pdf— nach der Lizenznummer statt nach dem Namen. Fehlt bei jemandem die Nummer, sagt der Export das vor dem Herunterladen, denn der SVRZ braucht sie ohnehin auf der Liste - Handyfotos werden für den Export in ein PDF umgewandelt, sodass der SVRZ durchgehend PDFs bekommt. Liegt eine Korrektur vor, wandert sie statt des Originals ins ZIP
Upload: kein HEIC mehr
- Beim Hochladen des Matchblatts sind PDF, JPG und PNG erlaubt — HEIC nicht mehr. Das iPhone-Format lässt sich weder im Admin anzeigen noch für den SVRZ in ein PDF umwandeln; wir hätten also eine Datei gespeichert, die niemand öffnen kann. Beim Hochladen über den iPhone-Fotozugriff wird ohnehin automatisch ein JPG daraus
Schreiberkurse: Anmeldeschluss
- Ein Schreiberkurs kann neu einen Anmeldeschluss haben — Datum und Uhrzeit, im Admin pro Kurs gesetzt. Bleibt das Feld leer, ist der Kurs wie bisher bis zum Kursdatum offen
- Solange der Anmeldeschluss in der Zukunft liegt, steht auf der Kurskarte «Anmeldung möglich bis 12.08.2026 00:00» — der Stichtag ist also sichtbar, bevor er greift
- Danach verschwindet die Karte nicht, sondern wird gesperrt: Statt des Anmeldeknopfs steht «Anmeldung geschlossen», während Datum, Ort und «Zum Kalender hinzufügen» bleiben — wer bereits angemeldet ist, braucht sie noch. Die Karte verschwindet erst nach dem Kursdatum, wie bisher
- Mit dem Speichern wird auch das Anmeldeformular selbst geschlossen: Eine verspätete Anmeldung wird damit wirklich abgewiesen und nicht nur ausgeblendet — der Link aus einer alten E-Mail nimmt also keine Anmeldungen mehr entgegen
Prüfung: Matchblatt selbst hochladen
- Neue Seite Schreiberkurse → Prüfung, auf der Kursteilnehmende ihr Matchblatt aus der praktischen Prüfung selbst hochladen — ohne Login, ohne Konto. Sie ist von der Schreiberkurs-Seite verlinkt
- Wer hochladen darf, entscheidet die Anmeldeliste: Du gibst die E-Mail-Adresse an, mit der du dich für den Kurs angemeldet hast — nur eine Adresse, die tatsächlich auf einer Kursliste steht, kommt durch. Danach begrüsst dich die Seite mit Namen und fragt bei mehreren Kursen nach, für welchen du hochlädst
- Die SVRZ-Lizenznummer wird beim Upload abgefragt — damit melden wir die Prüfung beim SVRZ an — und ist vorausgefüllt, wenn wir sie schon kennen. Leerzeichen und Punkte sind egal (337 646 → 337646)
- PDF, JPG, PNG oder HEIC bis 10 MB; ein Handyfoto des Matchblatts genügt. Der Dateityp wird am tatsächlichen Inhalt geprüft, nicht am Namen. Ein erneuter Upload ersetzt das bisherige Blatt
- Der Upload setzt das Prüfungsdatum auf den Tag des Uploads und trägt die Lizenznummer ein — wer sein Blatt hochlädt, vervollständigt damit seine eigene Zeile auf der SVRZ-Teilnehmerliste. Beides bleibt im Admin von Hand korrigierbar
- Matchblätter sind privat: Sie liegen ausserhalb des öffentlichen Dateibereichs und lassen sich nur aus dem Admin öffnen, nie über eine URL
Admin: «Prüfung bestanden» fragt nach und benachrichtigt
- Das Setzen von «Prüfung bestanden» fragt neu nach und schickt der teilnehmenden Person danach automatisch eine zweisprachige Bestätigungs-E-Mail. Die Adresse stammt aus ihrer Anmeldung, nie aus dem Browser. Das Entfernen des Häkchens ist still — es ist eine Korrektur und verschickt nichts
- Die Rückfrage warnt, wenn für diese Person nie ein Matchblatt hochgeladen wurde — das übliche Zeichen für ein Häkchen in der falschen Zeile
Schreiberkurse und Mitgliedschaft nutzen die ganze Breite
- Schreiberkurse: Einleitung und Anmeldetext klebten auf breiten Bildschirmen am linken Rand — sie sind neu zentriert, und die Ressourcen-Karten verteilen sich über die volle Breite statt in einer schmalen Spalte zu stapeln
- Mitgliedschaft: Die Seite lief in einer schmalen Spalte mit leerer rechter Bildschirmhälfte. Volleyball-Beiträge, Lizenzgebühren und Basketball-Beiträge stehen neu nebeneinander, die drei Anmeldeschritte lesen sich von links nach rechts, und «Als Gast mitmachen» / «Passivmitglied werden» stehen nebeneinander. Auf dem Handy bleibt alles gestapelt
Admin: Der Excel-Export ist neu die Teilnehmerliste des SVRZ
- Der Excel-Export eines Schreiberkurses erzeugt keine generische Tabelle mehr, sondern die «Schreiberkurs Teilnehmerliste» des SVRZ selbst: Briefkopf der RSK Swiss Volley Region Zürich, graues Kopfband und die 13 fixen Spalten (Kursdatum, Prüfungsdatum, Prüfungsresultat, Vereinsname, Lizenz-Nr., Name, Vorname, Strasse, PLZ, Wohnort, Telefon, E-Mail, Geb. Datum) — direkt weiterleitbar, ohne etwas abzutippen. Die Datei ist immer deutsch: Es ist das Formular des SVRZ, nicht unsere Oberfläche, und folgt deshalb nicht der Admin-Sprache. Der TSV-Export bleibt unverändert
- Jede Zeile wird mit dem Datum des Kurses hinter ihrem eigenen Anmeldeformular versehen — die kombinierte DE-+-EN-Ansicht listet also alle Teilnehmenden mit dem richtigen Kursdatum. Für rein englische, rein deutsche und kombinierte Kurse gleichermassen
- Das Anmeldeformular fragt die Adresse in einer Zeile ab; der Export teilt sie in Strasse / PLZ / Wohnort auf. Folgt eine Zeile nicht der üblichen Form «Strasse 1, 8001 Zürich», bleibt sie ganz in der Spalte Strasse — lieber das, als dass eine Hausnummer auf einer offiziellen Liste unter PLZ landet
- Prüfungsresultat zeigt «Bestanden» nur bei Teilnehmenden, die auch als bestanden markiert sind — niemand gilt als durchgefallen, bloss weil die Prüfung noch aussteht
- Neues Feld Schreiberexperte beim Schreiberkurs, das auf der Kopfzeile der Liste erscheint. In der kombinierten Ansicht bleibt es leer, solange nicht alle Kurse übereinstimmen — statt einen geratenen Namen auf ein offizielles Dokument zu setzen
Admin: Spielblätter der Prüfung
- Die Anmeldungstabelle hat neu eine Spalte Spielblatt, die zeigt, ob das Prüfungs-Spielblatt einer teilnehmenden Person hochgeladen wurde; in der ▸-Detailansicht lässt sich neu das Prüfungsdatum bearbeiten
- Der Excel-Export lädt die Teilnehmerliste neu zusammen mit allen hochgeladenen Spielblättern als ein einziges ZIP herunter
Admin: Excel-Export für Schreiberkurse — neu mit den Tracking-Spalten
- Die Anmeldungsansicht eines Schreiberkurses hat neben dem bisherigen TSV-Export neu einen Excel-Export: eine echte .xlsx-Datei mit fixierter, fetter Kopfzeile, Filter auf jeder Spalte und den Häkchen anwesend / Prüfung gesendet / Prüfung bestanden als echte Excel-Wahrheitswerte, die sich filtern und zählen lassen. Lizenznummern bleiben Text, eine führende Null geht also nie verloren
- Behoben: Beide Exporte liessen alles weg, was das KSCW selbst erfasst — anwesend, Prüfung gesendet, Prüfung bestanden, SV-Lizenz und Notizen. Der Export wurde allein aus den Formularantworten erzeugt, während das Tracking in einer separaten Sammlung liegt — eine vom Admin eingetragene SV-Lizenz (der Normalfall bei neuen Schiedsrichter:innen) landete damit nie in der Datei. Die Exporte enthalten neu genau das, was die Tabelle zeigt, inklusive der Änderungen kurz vor dem Export
Admin: Schreiberkurs-Anmeldungen — eine Angabe pro Zeile
- Die aufgeklappte Anmeldung (die ▸-Detailansicht in der Anmeldungstabelle) zeigt jede Angabe neu auf einer eigenen Zeile — Datum, Telefon, E-Mail, Adresse, Geburtsdatum, Sprache, Teilnahme, KSCW-Mitgliedschaft, Verein/Team und Notizen stehen untereinander statt mehrere pro Zeile umzubrechen, so lassen sich die Angaben einer Person leichter überblicken
Admin: Schreiberkurs-Anmeldungen — kompakte Zeilen, SVRZ-Vorbelegung & Sammel-E-Mail
- Die Anmeldungstabelle zeigt neu eine kompakte Zeile — Vorname, Nachname, die Häkchen anwesend / Prüfung gesendet / Prüfung bestanden, das Lizenzfeld und Löschen — und passt so ohne seitliches Scrollen auf den Bildschirm. Ein ▸-Pfeil (oder ein Klick auf den Namen) klappt die vollständige Anmeldung auf: Telefon, E-Mail, Adresse, Geburtsdatum, Teilnahme, Team, Notizen und alles Weitere sowie die bearbeitbare Tracking-Notiz
- Das Feld SV-Lizenz wird neu aus der Antwort «SVRZ-Lizenznummer» vorbelegt, wenn die Person eine angegeben hat und noch nichts erfasst wurde (ein bereits eingetragener Wert hat immer Vorrang). Gespeichert wird wie bisher nur beim Bearbeiten
- Neuer Button E-Mail senden: er blendet pro Anmeldung ein Häkchen ein (standardmässig alle ausgewählt, mit «alle»-Häkchen) und öffnet dann das Standard-Mailprogramm mit den gewählten Teilnehmenden als Empfänger — praktisch für «allen in diesem Kurs schreiben»
Admin: Schreiberkurs-Anmeldungen mit Anwesenheits- und Prüfungs-Tracking
- Der Website-Admin (/admin) merkt sich neu den offenen Bereich in der Adresszeile (z. B. /admin/?tab=scorer_courses). So lässt sich ein Tab als Lesezeichen speichern oder teilen, und Vor/Zurück im Browser wechselt zwischen den Bereichen
- Die Anmeldungen zu einem Schreiberkurs öffnen sich neu direkt in der Seite (kein Pop-up mehr) als bearbeitbare Tabelle. Pro Person lassen sich anwesend, Prüfung gesendet und Prüfung bestanden ankreuzen, eine Notiz erfassen und eine Swiss-Volley-Lizenznummer nachtragen, falls sie beim Anmelden gefehlt hat. Änderungen werden sofort gespeichert
- Die Anmeldedaten selbst bleiben unverändert; das Tracking wird auf unserer Seite gespeichert (das Formular-Tool bietet dafür keinen Platz)
Basketball-Anmeldung: vollständiger Swiss-Basketball-Dokumentenablauf
- Das Anmeldeformular fragt neu die Lizenz-Situation ab — neue Lizenz, Vereinswechsel aus einem Schweizer Club, Wechsel aus dem Ausland oder Rückkehr in die Schweiz — und verlangt genau die von Swiss Basketball geforderten Dokumente. Vorher war nur «neue Lizenz» abgedeckt, Vereinswechsel konnten ihren Freibrief gar nicht einreichen
- Neu werden je nach Situation der Freibrief (Vereinswechsel), das Einverständnis der Eltern (U18) und optional eine Schulbestätigung erhoben — jeweils mit vorausgefüllter Vorlage zum Herunterladen. Ob die U18-Dokumente nötig sind, ergibt sich aus dem Geburtsdatum
- Dokumente, die für deine Situation nicht relevant sind, werden nicht angezeigt und blockieren die Anmeldung nie; auch die optionale Schulbestätigung blockiert sie nicht
- Die Vorlage des Lizenzantrags wurde auf die aktuelle Version aktualisiert
Anmeldung: Teamliste zuverlässiger laden
- Bei Basketball-/Volleyball-Anmeldungen wurde die Teamliste erst nach Wahl von Sportart und Funktion geladen. Schlug diese Abfrage bei wackliger Verbindung fehl, blieb die Liste leer — ohne Fehlermeldung — und die Anmeldung liess sich nicht abschicken («kein Team gewählt»). Neu werden die Teams schon beim Öffnen des Formulars geladen; bei einem Fehler erscheint ein Hinweis mit «Erneut versuchen»
- Gemischte Nachwuchs-Kategorien (MU8, MU10, U12) wurden fälschlicherweise nur männlichen Anmeldenden angezeigt — Mädchen sehen sie jetzt ebenfalls
Kalender: nummerierte Schiedsrichter
- Schiedsrichter im Spiel-Popup erscheinen neu einzeln als «1. Schiedsrichter» / «2. Schiedsrichter»
Kalender: vollständige Spieldetails
- Das Spiel-Popup im Kalender zeigt neu Liga, offizielle Spielnummer und (Volleyball) die eingeteilten Schiedsrichter
Schreiberkurse: Unterlagen 2026
- Die Kursunterlagen (PDF) und die Kurspräsentation (PPT) verlinken neu auf die aktuellen Dateien 2026 — zwei Karten statt vier
Schreiberkurse: komplett im Admin-Bereich bearbeitbar
- Kursort, der Hinweis «Hosted by … / Powered by …» und die Kursdauer (Länge des Kalendereintrags) waren fest im Code hinterlegt. Sie sind jetzt pro Kurs im Admin-Bereich bearbeitbar — leere Felder blenden die entsprechende Zeile auf der Kurskarte aus
Kalender: schnelleres Monats-Blättern
- Der Kalender lud bei jedem Monatswechsel die Daten neu und zeigte dabei kurz einen Ladebalken. Jetzt werden alle Spiele und Hallenschliessungen einmal beim Öffnen geladen — das Blättern zwischen Monaten ist sofort, ohne Nachladen
Nachwuchs: aktueller Anmeldestatus
- Auf der Basketball-Nachwuchsseite zeigen die Teamkarten jetzt immer den aktuellen Stand — „Offen für neue Spieler“ mit Kontaktlink bzw. „Team voll“ mit Warteliste — und aktualisieren sich automatisch, sobald sich etwas ändert
Anmeldung repariert
- Das Anmeldeformular liess sich für jüngere Anmeldungen (unter 23/25 Jahren) nicht absenden — ganz ohne Fehlermeldung. Ursache war ein verstecktes Pflichtfeld; jetzt funktioniert die Anmeldung
- Die Bestätigung („Danke für deine Anmeldung") wurde nach erfolgreichem Absenden nicht angezeigt — sie erscheint jetzt korrekt
Anmeldeformular: Sicherheitsprüfung korrigiert
- Beim langen Ausfüllen des Anmeldeformulars (z. B. Basketball, mit Dokumenten zum Herunterladen und Hochladen) konnte die Sicherheitsprüfung (Captcha) ablaufen und das Absenden ohne Hinweis blockieren. Die Prüfung wird jetzt automatisch erneuert; falls sie doch einmal abläuft, erscheint eine klare Meldung zur erneuten Bestätigung
Hallenschliessungen im Kalender
- Der Kalender zeigt jetzt auch „Halle geschlossen“-Tage an — Schulferien, Feiertage und Hallensperrungen (z. B. für Turniere). Pro Tag eine Markierung mit den betroffenen Hallen; oben lässt sich die Anzeige ein- und ausblenden
- Kalender-Abo repariert und erweitert: der Abonnieren-/Herunterladen-Link funktioniert wieder, und Hallenschliessungen lassen sich neu als Quelle mit abonnieren (Termine wurden zuvor beim Abo versehentlich weggelassen)
Kalender- & Termindaten korrigiert
- Ganztägige Termine (z. B. der Photoday) wurden im Kalender und auf der Startseite einen Tag zu früh angezeigt. Daten werden jetzt immer in Schweizer Zeit (Europe/Zurich) gelesen und erscheinen am richtigen Tag — egal, wo du dich befindest
- News-Daten werden ebenfalls auf Schweizer Zeit festgelegt
Tabellen nach Saison
- Die Rangliste auf den Teamseiten hat jetzt eine Saison-Auswahl — aktuelle Tabellen, die Schlusstabelle der letzten Saison (2024/25 ergänzt) und das Archiv
- Für eine von Swiss Volley noch nicht veröffentlichte Saison erscheint ein kurzer Hinweis statt einer leeren Tabelle
Website & Navigation
- Zweisprachige Website (Deutsch / Englisch) mit einer kanonischen URL pro Seite und einer Sprachumschaltung, die deine Wahl merkt
- Live auf der vereinseigenen Domain kscw.ch
Teams
- Dynamische Teamseiten (Volleyball und Basketball) mit Live-Daten aus Directus: Spiele, Tabellen, Kader, Fotos und eine wöchentliche Trainingsübersicht aus dem echten Hallenplan
- Auf- / Abstiegsbänder in den Tabellen, saisonstabile Team-Zuordnung über den Jahreswechsel hinweg, und ein Basketball-Nachwuchsbereich mit echten Trainer*innen und Trainingszeiten
Spiele, Tabelle & Kalender
- Spielzeilen auf der Startseite und ein Spiel-Detailfenster mit Sätzen, Schiedsrichtern und Spielort
- Eine Anzeigetafel mit Umschaltung Absolut / pro Spiel, und ein Live-Kalender mit Event-Tooltips und Detailfenstern
Anmeldung & Mitgliedschaft
- Ein einheitliches Online-Anmeldeformular für Volleyball, Basketball und Passivmitgliedschaft, mit Ausweis-Upload, PDF-Vorausfüllung der Lizenzformulare und Turnstile-Spamschutz
- Ein Admin-Bereich für Anmeldungen mit Freigabe- / Ablehnungs-Workflow, ClubDesk-CSV-Export und automatischen Bestätigungs-E-Mails
News, Events & Kurse
- Vereinsnews auf der Startseite und eine eigene News-Seite mit RSS, Kalender-Events mit Anmeldelinks und Live-Anmeldezahlen, sowie Schreiberkurse mit „Zum Kalender hinzufügen“
Kontakt & Feedback
- Ein zentrales Kontaktformular, das die richtigen Trainer*innen erreicht, ohne deren E-Mail-Adressen preiszugeben
- Ein Feedback-Formular (Bug / Feature / Feedback) mit Screenshot-Upload, das automatisch ein GitHub-Issue erstellt
Inhaltsseiten
- Über uns mit Vereinsgeschichte und Karte, der Vorstand als Organigramm, Reglemente mit SVRZ-Einbettungen, Sponsoren, Impressum und Datenschutz
Design & Feinschliff
- Animiertes Hero, Scroll-Fortschrittsbalken, Karten-Spotlight, 3D-Tilt auf Team-Karten und bereichsabhängige Sparkle-Effekte — alle respektieren „Bewegung reduzieren“
- Schweizer Datumsformat tt.mm.jjjj und 24-Stunden-Zeiten überall, mit hellem / dunklem Theme
Admin & Infrastruktur
- Ein versteckter Admin-Bereich mit Bereichsberechtigungen pro Person, serverseitig durchgesetzt — nicht nur in der UI versteckt
- Gebaut mit Astro 6, Directus-REST-Backend, Cloudflare-Pages-Hosting und gehärteten CSP- / Sicherheits-Headern
Was ist neu v1.17.0
The girls' youth cards had gone blank
- The U18 and U16 Mädchen cards showed no training, no coach and no status at all. The club had renamed the two girls' squads in Directus — to DU18 Spark and DU18 Fire — and the page matched teams against a fixed list of names, so after the rename nothing matched and both cards emptied themselves. It was the third rename these teams have been through, and it emptied them every time
- The page no longer holds a list of teams at all: it renders one card per team Directus actually has, working out the age group from the team's own name. A squad added shows up, a squad dropped disappears, and a rename carries through — without the page being edited
- So U18 now has both girls' squads side by side, each under its own name, and U16 has no girls' card, because this season the club has no U16 girls' team — DU18 Fire is a U18 team that plays down in the U16 league. The team grid on the Basketball page follows the same two names
- Where a team's name in Directus is just its age code, the German label stays: "U8 Mixed" reads better than "MU8"
Mixed teams can take girls and boys separately
- U8 and U10 are mixed, but the squad fills up per gender, so "open for players" was too blunt: it either invited everyone or nobody. Coaches can now open the team for girls and boys independently from the team settings in Wiedisync
- With only one of the two open, the card splits: the gender being taken gets the green badge and the contact form, the other gets the gold "Team full" badge and the waiting list. Opening both — or neither, which is where every team starts — shows the single "open for players" row exactly as before
- The waiting-list button is now gold instead of blue, matching the "Team full" chip next to it
The Nachwuchs descriptions are gone
- The paragraph under each youth team ("Our U18 boys team plays in the regional youth league …") has been removed from all ten cards. The training times, coach and joining status stay — those come from Directus and are the part that is actually current
The membership fee tables were cut off on the right
- The three tables on Membership sat three across on a desktop, which left each column too narrow for its own content. The category descriptions could not wrap, so the tables overflowed their columns: the fee amounts were pushed out of sight behind a scrollbar, on the very page whose job is to state them
- Volleyball and basketball now sit side by side, with the Swiss Volley licence fees below volleyball, where they belong. Two full-width columns fit their text, so nothing is clipped. On a phone the three still stack in that order
- The Category / Fee headings were dark grey on the dark blue header bar and effectively invisible. They are white now
One member, one spelling — the accent tables had drifted apart
- Accented names are rewritten in three places: the licence PDFs from the sign-up form, the licence PDFs from the admin, and the ClubDesk export. Each had grown its own table of which letters to fold, and they disagreed — a Turkish member came out
Isikon the licence form andIs?kin the member register, from a single registration. Letters affected:ı(Turkish dotless i),ħ,ŧ - They now share one table, and the ClubDesk sync on the server was given the same set, so nothing lands in the register as a
?any more. Names CP1252 can carry are untouched as always (ä ö ü é à ç ß Š ž Ø Æ) - Tests pin the tables against each other in both repos: change one without the others and the build fails, rather than a member quietly acquiring a second spelling
The ClubDesk export was mangling every accented name
- The file was written as UTF-8, but ClubDesk's CSV interface is Windows-1252 — its own export is CP1252 and the scripted member sync transcodes before uploading. Importing our UTF-8 file by hand turned
DürigintoDürigin the member register, and the leading byte-order mark left the first column header readingNachname, which may not map at all - The export is now CP1252 with no mark, using the same transliteration the sync uses: letters CP1252 holds stay as they are (ä ö ü é à ç ß Š ž), and the few it cannot lose their diacritic (ć → c, ł → l, đ → d) rather than arriving as mojibake. Both writers now put the same spelling into the register
The "none" option in Federation of origin now names the federation
- It read "None / never licensed before" — ambiguous for someone who was licensed, just not with a national federation. Italy's CSI, UISP and PGS are CONI sports-promotion bodies, not FIVB/FIBA members, so no licence exists to transfer
- Such an applicant would reasonably have picked Italy, sending the club chasing FIPAV for a clearance FIPAV has no record to issue. It now reads "None / never licensed with a national federation"
The federation picker names the actual federation, per sport
- "Federation of origin" asks which body first licensed you, and that answer is sport-specific: an Italian volleyballer came from FIPAV, an Italian basketballer from FIP. The picker now shows the federation's own name next to the country rather than the country alone. The list is deliberately not exhaustive — anything not covered falls back to the country name, still a correct answer, just less specific
- Switching between volleyball and basketball clears a federation already picked, instead of leaving a label from the other sport attached to the stored code
Dual nationals can enter every passport they hold
- Nationality was a single choice, forcing anyone with two passports to pick one and discard the other — and the discarded one is often what decides which documents Swiss Basketball and FIBA want. It is now a multi-select with chips: pick all of them, and the first counts as the primary
- A Swiss passport anywhere in the list makes the applicant Swiss for the document rules, not only when it happens to be listed first. FIBA treats a dual national holding Swiss nationality as Swiss, so a CH/IT player who listed Italy first was asked for foreign-player documents nobody required. The form and the server apply the same rule deliberately — a form that asks for less than the server enforces rejects the submission after everything has already been uploaded
- The licence application ticks Schweiz for anyone holding a Swiss passport, whatever position it sits in: the form asks whether the player is Swiss, not which passport comes first
Federation of origin
- New field for the first national federation the player held a licence with — the one Swiss Basketball needs to request a transfer certificate. Not the most recent one, which is a different question with a different answer for anyone who has moved more than once
- "None" is an explicit answer, not a blank. It says this is a first licence and there is nothing to request, which is what the club needs to know; an empty field only says nobody filled it in
The Freibrief waiver is back, this time on both sides
- The server now implements the same rule, so the form can stop asking for the release letter where Swiss Basketball does not require it: no licence in the last two seasons, or category U12 and below. The server went first — that ordering is the whole point, since 1.15.1 shipped the form half alone and locked exactly those applicants out
- U12 and below follows from the date of birth and asks nothing extra. Everyone else transferring from a Swiss club is asked once whether they held a licence in the last two seasons; only an explicit no waives the document. Unanswered still requires it, on the form and on the server alike — waiving it wrongly produces an incomplete dossier that Swiss Basketball rejects later, so the cautious answer is the default
- The answer is stored with the registration, so the "documents still missing" page and the approval step in the admin agree with what the form asked for, rather than re-demanding a document nobody owes
Correction: the Freibrief waiver from 1.15.1 is switched off again
- 1.15.1 stopped asking for the Freibrief where Swiss Basketball waives it — no licence in the last two seasons, or category U12 and below. That was only half the change. The server checks the same list independently and still requires the release letter for every transfer from a Swiss club, so a submission without one is rejected outright with "Erforderliche Dokumente fehlen. Bitte lade die Seite neu und versuche es erneut." — advice that cannot help, since reloading changes nothing
- The effect was the opposite of the intent: applicants who were merely being asked for a document they did not owe could not register at all — and it applied to exactly the group the change was meant to help, which for a youth club is a common case
- The form asks every Swiss-club transfer for the Freibrief again, as it did before 1.15.1, and the licence-history question is hidden. The rule itself is still correct and stays in the code — it switches back on together with the matching server-side change, not before
An ID download could delete the original without ever saving it
- Downloading an applicant's ID deletes it from the server afterwards — we keep the scan no longer than we need it, which also makes the delete irreversible. It ran per file without checking that the download had actually worked: on an expired token or a 401 it saved the error message under the applicant's name and deleted the real scan a line later. Everything is now fetched and verified before anything is removed
- The saved file also had no extension, so even a successful download would not open on a double-click. It now follows the file's actual type
The remaining downloads no longer truncate
- The previous release fixed the licence forms; the same fault sat in four other download paths, including individual scoresheets and the SVRZ bundle — the largest file the admin produces, and the one where a truncated download is least likely to be spotted before it is passed on. Every download now goes through one helper that holds the file until the browser has written it
Photographed documents are no longer saved sideways
- A phone records a photo's rotation as metadata rather than in the pixels, and the conversion to PDF discarded it — so an upload could end up rotated in the PDF while looking upright on the phone that took it
Also
- The ClubDesk export is now covered by tests. ClubDesk maps columns by position, so a header added or removed without the matching change to the row shifts every field after it — surname into Vorname, street into PLZ — and the file still looks perfectly well-formed. The column list and the formula-injection guard are now pinned
The National Team Declaration is gone — FIBA stopped accepting it
- Swiss Basketball opened the 2026-27 licence season on 23 July and replaced the National Team Declaration with the Acknowledgment of National Team Restriction. FIBA accepts only the new document. Every U18 player with a foreign passport who used our form was filing a paper that would have been rejected, so the old PDF is removed rather than left sitting next to the new one
- The prefill was rewritten for the new form's fields. Two are deliberately left blank: the federation of origin, which we cannot know, and the date of transfer, which Swiss Basketball and FIBA set — a plausible guess in either box is worse than an empty one someone has to fill in
Licence forms no longer break on a name with the wrong accent
- Filling any Swiss Basketball or FIBA form failed outright for names like Šarčević, Győző, Öztürk or Łukasz. The fonts in these PDFs only speak WinAnsi, and a single unsupported letter aborted the whole document — the applicant then silently received a blank form. Accents WinAnsi does cover (ä ö ü é à ç ß Š ž) are kept exactly as written; only the characters it genuinely cannot carry lose their diacritic
- If the prefill does fail, it now says so in the error log instead of quietly handing over an empty PDF
Downloads no longer arrive truncated
- The download released the file the instant the click fired, racing the browser still writing it to disk. The bigger the document, the likelier a half-written, unreadable PDF — and the new Acknowledgment form is ~590 KB, the largest of them. This affected both the public form and the documents generated in the admin
The admin's Lizenzantrag had its fields off by one
- Every Lizenzantrag generated in the admin put the data in the wrong boxes: the email address in NAME, the surname in VORNAME, the street in the narrow PLZ box, and so on down the form. Verified against the actual field positions inside the PDF. The public form was always correct — only the admin's copy was shifted
The Freibrief is no longer demanded from people who owe none
- Swiss Basketball waives the release letter when there was no licence in the last two seasons or the category is U12 or below. We asked everyone transferring from a Swiss club, sending people off to chase a certificate their old club has no reason to issue. The form now asks about licence history — and only when it can actually matter; the youth categories follow from the date of birth already given. With no date of birth the Freibrief stays required: waiving it wrongly produces an incomplete dossier
Also
- Forms now carry the current season rather than a hard-coded
2025/2026, rolling over in July with Swiss Basketball's administrative year
Registrations sorted by surname
- The signup table now leads with Last name and is sorted by it. It was newest-first, which is the order they arrived in and no order at all when you're looking for a person. Sorted with Swiss collation, so Dürig sits between Demir and Mayer rather than after Z
"Email sent to …" is now a toast
- The confirmation used to be a few pixels of grey text in the row, gone on the next redraw. It now appears as a message in the corner, showing the address the server actually sent to. On a failure it says the result is recorded and only the email failed, and stays longer
SVRZ Wohnort: looked up, not invented
- Postcode and town are filled from the member records when a signup didn't give them. The form asked for "Adresse" in a single box and most people read that as "street": 16 of 25 gave no town at all
- Where nothing is known — not from the signup, not from the members — the list says "Zürich" with no postcode. That's a guess and deliberately the last resort: only about 70% of members live in Zürich. The lookup found Wädenswil and Stallikon among people who'd otherwise have been labelled Zürich
- The export says so first. Missing licence numbers and guessed towns are listed for confirmation before it downloads — a guessed town looks exactly like data once it's in a spreadsheet cell
- The form has since been split into Strasse / PLZ / Ort and is read directly. Older signups are still parsed as before
Scoresheet column: a coloured icon instead of a tick
- The tick is now a Matchblatt icon whose colour is the state: grey — no scoresheet, green — one is on file, blue — a correction exists on top of it. A legend under the table explains the colours
- The icon is clickable even when grey. Scoresheets also arrive by email or on paper, and the column had nowhere to put one. There is now "Upload scoresheet (received directly)", filed as the participant's own sheet rather than as a correction to nothing
- If a scoresheet is already there, uploading one directly is refused: to change an existing sheet you upload a correction, which keeps both and records who made it
Download a scoresheet
- New in the menu: Download scoresheet — saved as
schreiberpruefung_337646.pdf, the same name the SVRZ zip uses - Opening a sheet now always gives a PDF, whatever the participant's phone produced. Previously a phone photo opened as a bare image and "save as" offered a cryptic blob id as the filename. The stored original is left untouched
Exam result: Yes / No — with an email and a note
- The "Exam passed" checkbox has given way to two buttons: Yes and No. A checkbox knows two states and the question has three — passed, not passed, and nobody has looked yet. The third is the most common one, and it must not show up on the SVRZ Teilnehmerliste as "Nicht bestanden"
- Both answers ask first, then automatically email the participant the result. The confirmation box takes an optional note — what was missing, or what to watch out for — and it travels with the email
- Clicking the answer that is already set clears the result back to "not decided yet" — with no email, since there is no longer a result to report
- The Teilnehmerliste now reads "Bestanden" or "Nicht bestanden"; anyone not yet assessed stays blank
Upload a corrected scoresheet
- The green tick in the "Exam uploaded" column now opens a menu: show the scoresheet, upload a corrected one — and, once one exists, view both side by side
- The participant's own sheet is never overwritten: it is what they submitted, and the correction sits on top of it. The menu shows who corrected it and when, and the tick turns amber, so corrected rows are visible at a glance
- The result email carries the corrected sheet as a PDF attachment, when one has been uploaded
SVRZ export: scoresheets as PDFs, named after the licence number
- In the zip, scoresheets are now called
schreiberpruefung_337646.pdf— after the licence number rather than the person. If someone's number is missing, the export says so before it downloads, since SVRZ needs it on the list anyway - Phone photos are converted to PDF for the export, so SVRZ receives PDFs throughout. Where a correction exists, it goes into the zip instead of the original
Upload: no more HEIC
- Scoresheet uploads accept PDF, JPG and PNG — no longer HEIC. The iPhone format can be neither previewed in the admin nor converted to a PDF for SVRZ, so we would have been storing a file nobody can open. Uploading via the iPhone photo picker turns it into a JPG anyway
Scorer courses: sign-up deadline
- A scorer course can now carry a registration deadline — a date and time, set per course in the admin. Leave it empty and the course stays open right up to the course date, exactly as before
- While the deadline is still ahead, the course card reads "Sign-ups possible until 12.08.2026 00:00", so the cut-off is visible before it bites
- Once it passes the card locks rather than disappears: the sign-up button is replaced by "Registration closed", while the date, venue and "Add to calendar" stay — people who already signed up still need those. The card only leaves the page after the course date, as before
- Saving also closes the sign-up form itself, so a late sign-up is genuinely turned away rather than merely hidden — the link from an old email no longer quietly accepts submissions
Exam: upload your own scoresheet
- New page Scorer courses → Exam where course participants upload the scoresheet from their practical exam themselves — no login, no account. It's linked from the scorer courses page
- Who may upload is decided by the sign-up list: you enter the email address you registered the course with, and only an address actually on a scorer course's list gets through. The page then greets you by name and, if you're on more than one course, asks which one
- Your SVRZ licence number is asked at upload — it's what lets us register the exam with the SVRZ — and is pre-filled when we already have it. Spaces and dots are fine (337 646 → 337646)
- PDF, JPG, PNG or HEIC up to 10 MB; a phone photo of the sheet is fine. The file type is checked by its actual content rather than its name. Uploading again replaces the previous sheet
- The upload sets Prüfungsdatum to the day the sheet arrives and fills in the licence number — so uploading your sheet completes your own row on the SVRZ participant list. Admins can still correct both by hand
- Scoresheets are private: they're stored outside the public file area and can only be opened from /admin, never by URL
Admin: ticking "Prüfung bestanden" now confirms and notifies
- Ticking «Prüfung bestanden» now asks for confirmation and then automatically emails the participant a bilingual confirmation. The address comes from their sign-up, never from the browser. Unticking is silent — it's a correction, and sends nothing
- The confirmation warns if no scoresheet was ever uploaded for that person, which is the usual sign of a tick on the wrong row
Scorer courses and Membership use the whole screen
- Scorer courses: the intro and sign-up text sat hard against the left edge on a wide screen — they're now centred, and the resource cards spread across the full width instead of stacking in a narrow column
- Membership: the page ran down one narrow column with the right half of the screen empty. Volleyball fees, licence fees and basketball fees now sit side by side, the three registration steps read left-to-right, and «Als Gast mitmachen» / «Passivmitglied werden» sit next to each other. Everything still stacks on a phone
Admin: the Excel export is now SVRZ's own participant list
- The Excel export on a scorer course no longer produces a generic table — it produces SVRZ's own «Schreiberkurs Teilnehmerliste»: the RSK Swiss Volley Region Zürich letterhead, the grey header band and their 13 fixed columns (Kursdatum, Prüfungsdatum, Prüfungsresultat, Vereinsname, Lizenz-Nr., Name, Vorname, Strasse, PLZ, Wohnort, Telefon, E-Mail, Geb. Datum), ready to send on without retyping. The file is always in German — it is SVRZ's form, not our interface, so it does not follow the admin language. The TSV export is unchanged
- Each row is dated from the course behind its own sign-up form, so the combined DE + EN view lists every participant with the right course date. Works the same for an English-only, a German-only or a combined course
- The sign-up form asks for the address in one line; the export splits it into Strasse / PLZ / Wohnort. If a line doesn't follow the usual «Strasse 1, 8001 Zürich» shape it is left whole in the Strasse column rather than risk a house number landing under PLZ on an official list
- Prüfungsresultat reads «Bestanden» only for participants actually ticked as passed — nobody is labelled as having failed merely because they haven't sat the exam yet
- New Schreiberexperte field on a scorer course, printed on the list's header line. In the combined view it stays blank unless every course agrees, rather than putting a guessed name on an official document
Admin: exam scoresheets
- The registrations table gained a Spielblatt column showing whether a participant's exam scoresheet has been uploaded, and the ▸ detail view gained an editable Prüfungsdatum
- The Excel export now downloads the participant list together with every uploaded scoresheet as a single zip
Admin: Excel export for scorer courses — now including the tracking columns
- The scorer-course registrations view gained an Excel export next to the existing TSV one: a real .xlsx with a frozen, bold header row, a filter on every column, and the present / exam-sent / exam-passed ticks written as true Excel booleans so they can be filtered and counted. Licence numbers stay text, so a leading zero is never swallowed
- Fixed: both exports silently dropped everything KSCW tracks itself — present, exam sent, exam passed, SV licence and notes. The export was built from the sign-up form's answers alone, while the tracking lives in a separate collection, so an SV licence entered by an admin (the usual case for a new referee) never made it into the file. Exports now carry exactly what the table shows, including edits made just before exporting
Admin: scorer registration details — one field per row
- The expanded sign-up (the ▸ detail view in the scorer-course registrations table) now lists each field on its own line — date, phone, email, address, birthdate, language, participation, KSCW membership, club/team and notes stack vertically instead of wrapping several per line, so a registrant's details are easier to scan
Admin: scorer-course registrations — compact rows, SVRZ pre-fill & bulk email
- The registrations table now shows a compact row — first name, last name, the present / exam-sent / exam-passed toggles, the licence field and delete — so it fits on screen without sideways scrolling. A ▸ arrow (or a click on the name) expands the full sign-up: phone, email, address, birthdate, participation, team, notes and everything else, plus the editable tracking note
- The SV licence field is pre-filled from the sign-up's "SVRZ Licence Number" answer when the applicant provided one and it hasn't been tracked yet (a value you've already entered always wins). Saves as before, only when you edit it
- New Send email button: it reveals a per-registrant checkbox (all selected by default, with a select-all box), then opens your default mail program with the chosen participants pre-addressed — handy for "message everyone on this course"
Admin: scorer-course registrations, inline with attendance & exam tracking
- The website admin (/admin) now keeps the open section in the address bar (e.g. /admin/?tab=scorer_courses), so a tab can be bookmarked or shared and the browser Back/Forward buttons move between sections
- A scorer course's sign-ups now open inline (no pop-up) as an editable table. For each registrant you can tick present, exam sent and exam passed, add a note, and fill in a Swiss Volley licence number when it was missing from the sign-up. Changes save immediately
- The sign-up data itself stays read-only; the tracking is stored on our side (the form tool has no place for it)
Basketball registration: full Swiss Basketball document flow
- The form now asks basketball applicants which licensing situation applies — new licence, transfer from another Swiss club, coming from a club abroad, or returning to Switzerland — and requests exactly the documents Swiss Basketball's procedure needs. Previously only "new player" was handled, so transfers had no way to submit their release letter (Freibrief)
- Depending on the situation, the Freibrief, the FIBA parental consent (U18) and an optional school-enrolment certificate are collected, each with an auto-filled template to download. Whether the U18 documents are required is derived from the date of birth
- Documents that don't apply to your situation are never shown and never block submission; the optional school certificate never blocks it either
- The licence application (Lizenzantrag) template was updated to the current version
Registration: reliable team loading
- On basketball/volleyball registrations the team list was fetched only after sport and role were chosen; if that request failed on a flaky connection the list stayed empty with no error, and the form couldn't be submitted ("no team selected"). Teams now load when the form opens, and a "Try again" prompt appears if it fails
- Mixed youth categories (MU8, MU10, U12) were shown only to male applicants — girls now see them too
Calendar: numbered referees
- Referees in the game popup are now listed individually as "1st referee" / "2nd referee"
Calendar: full game details
- The game popup in the calendar now shows the league, the official game number and (volleyball) the assigned referees
Scorer courses: 2026 materials
- The course materials (PDF) and course presentation (PPT) now link to the current 2026 files — two cards instead of four
Scorer courses: fully editable in the admin panel
- The venue, the "Hosted by … / Powered by …" note and the course duration (length of the calendar entry) were hardcoded. They are now editable per course in the admin panel — leaving a field empty hides that line on the public course card
Calendar: instant month navigation
- The calendar reloaded its data on every month change, briefly flashing a loading bar. All games and hall closures now load once when the page opens, so switching between months is instant — no refetch
Youth: up-to-date sign-up status
- On the basketball youth page, the team cards now always show the current status — “Open for players” with a contact link, or “Team full” with a waiting list — updating automatically as soon as something changes
Registration fixed
- The membership form silently refused to submit for younger applicants (under 23/25) — with no error message at all. The cause was a hidden required field; sign-ups now go through
- The confirmation ("thank you for signing up") wasn't shown after a successful submit — it now appears correctly
Registration form security check fixed
- On a long registration (e.g. basketball, with documents to download and upload) the security check (captcha) could expire and silently block submitting. It now refreshes automatically while the form is open, with a clear "please re-confirm" message if it ever lapses
Hall closures in the calendar
- The calendar now also shows "hall closed" days — school holidays, public holidays and hall closures (e.g. for tournaments). One marker per day with the affected halls; a toggle at the top shows or hides them
- Calendar subscription fixed and extended: the subscribe / download link works again, and hall closures can now be subscribed to as a source (events were previously dropped from the subscription by mistake)
Calendar & event dates fixed
- All-day events (e.g. the Photoday) showed up one day too early in the calendar and on the homepage. Dates are now always read in Swiss time (Europe/Zurich), so they land on the correct day no matter where you are
- News dates are likewise pinned to Swiss time
Standings by season
- Team-page standings now have a season picker — current tables, last season's final standings (2024/25 added back) and the archive
- For a season Swiss Volley hasn't published yet, a short note appears instead of an empty table
Site & navigation
- Bilingual German / English site with a single canonical URL per page and a language toggle that remembers your choice
- Live on the club's own domain, kscw.ch
Teams
- Dynamic team pages (volleyball and basketball) with live data from Directus: games, rankings, roster, photos and a weekly training summary from the real hall schedule
- Promotion / relegation colour bands on rankings, season-stable team matching that survives the yearly rollover, and a basketball youth section with live coaches and training times
Games, scoreboard & calendar
- Homepage game rows and a game detail modal with sets, referees and venue
- A scoreboard with Absolute / Per-Game toggle, and a live calendar with event tooltips and detail modals
Registration & membership
- A unified online registration form for volleyball, basketball and passive memberships, with ID upload, PDF pre-fill of the licence forms and Turnstile spam protection
- An admin registrations tab with approve / reject workflow, ClubDesk CSV export and automatic confirmation emails
News, events & courses
- Club news on the homepage and a news page with RSS, calendar events with sign-up links and live submission counts, and scorer courses with an „add to calendar“ button
Contact & feedback
- A central contact form that reaches the right coaches without exposing their email addresses
- A feedback form (bug / feature / feedback) with screenshot upload that opens a GitHub issue automatically
Content pages
- About us with club history and a map, the board as an org chart, regulations with SVRZ embeds, sponsors, imprint and privacy policy
Design & polish
- Animated hero, scroll-progress bar, card spotlight, 3D-tilt team cards and section-aware sparkle effects — all respecting „reduce motion“
- Swiss dd.mm.yyyy dates and HH:MM times throughout, with a dark / light theme
Admin & infrastructure
- A hidden admin area with per-person area permissions enforced on the server, not just hidden in the UI
- Built on Astro 6 with a Directus REST backend, Cloudflare Pages hosting and hardened CSP / security headers