Was ist neu v1.31.1

v1.31.1 — 2026-10-16

Lizenzantrag beim Nachreichen

  • Dokumente nachreichen: Fehlte bei einer Basketball-Anmeldung der Lizenzantrag, nannte die Seite zwar fehlende Dokumente, bot den Lizenzantrag aber weder zum Herunterladen noch zum Hochladen an. Er erscheint jetzt wieder. Anmeldeformular und Vereinsverwaltung verwenden für den Lizenzantrag den neuen Feldnamen der Datenbank
v1.31.0 — 2026-10-16

Neues Erscheinungsbild und Anmeldung mit den neuen Feldnamen

  • Neues Erscheinungsbild: ruhigere Schrift, hellere Neutraltöne und weichere Karten; Überschriften in Satzschreibweise. Vereinsfarben und der dunkle Standardmodus bleiben
  • Anmeldung: Hielt der Browser die Anmeldung wegen eines fehlenden Felds an, sah man oft keinen Hinweis – bei einem ausgeblendeten Feld gar keinen. Das Formular nennt jetzt das betroffene Feld und scrollt dorthin. Der Hinweis zur AHV-Nummer sagt, wo sie steht (Krankenkassenkarte, 756…)
  • Anmeldung und Vereinsverwaltung: Anmeldungen werden mit den neuen Feldnamen der Mitgliederdatenbank gespeichert. In der Vereinsverwaltung zeigte der Anmeldungen-Tab danach leere Namen; er liest und speichert jetzt wieder alle Angaben. «Dokumente nachreichen» listet einen fehlenden Freibrief wieder auf
  • Anlässe: Die Anlass-Typen heissen in der Datenbank jetzt englisch (club, training_weekend). Website und Vereinsverwaltung lesen und schreiben die neuen Werte; angezeigt wird weiterhin «Verein» bzw. «Trainingsweekend»
v1.30.0 — 2026-09-28

Sicherheits- und Fehlerbereinigung nach einem Audit

  • Feedback-Formular: Meldungen mit Screenshot gingen wahrscheinlich verloren. Das Formular sendet jetzt an einen eigenen, geschützten Endpunkt (mit Captcha, Grössen- und Mengenbegrenzung); Screenshots landen in einem privaten Ordner
  • News: Ein archivierter oder als Entwurf gespeicherter Artikel war weiterhin öffentlich sichtbar. «Archivieren» nimmt einen Artikel jetzt wirklich von der Website
  • Teamseiten: Kommende Spiele zeigten im Spiel-Fenster ein Resultat von «0 : 0», als wären sie gespielt. Heute gespielte Spiele erscheinen nicht mehr bei den kommenden Spielen
  • Schreiberkurse: Eine Kurszeit wie «18.00» liess die ganze Kursliste verschwinden. Sie wird jetzt erkannt, und ein fehlerhafter Kurs blendet nicht mehr alle anderen aus. Eine bereits bewertete Prüfung kann nicht mehr überschrieben werden
  • Anmeldung: Ausweis-Uploads brauchen ein kurzlebiges Upload-Ticket; der Dateityp wird am Inhalt geprüft, nicht am Dateinamen
  • Newsletter: Ein ungültiger Abmelde- oder Bestätigungslink meldet jetzt einen Fehler, statt fälschlich «abgemeldet» anzuzeigen
  • Sprache & Datum: Ein schneller Doppelklick auf den Sprachumschalter konnte die falsche Sprache hinterlassen; die News-Liste zeigt Daten jetzt im Format TT.MM.JJJJ; «heute» richtet sich überall nach Schweizer Zeit
  • Hinter den Kulissen: strengere Content-Security-Policy (nur noch die tatsächlich genutzten CDN-Dateien), sichere Weiterleitung der alten /de/- und /en/-Adressen, Fehlerberichte ohne Links mit persönlichen Angaben, und die Live-Website wird erst nach bestandenen Tests veröffentlicht
v1.29.0 — 2026-09-24

Gespielte Spiele erscheinen sofort unter den Resultaten

  • Ein Spiel erschien bisher erst unter «Letzte Resultate», wenn Swiss Volley bzw. Swiss Basketball das Resultat übermittelt hatte — ein Spiel von gestern stand weder bei den kommenden Spielen noch bei den Resultaten
  • Neu steht jedes gespielte Spiel sofort in den Resultaten, auf der Startseite und auf der Teamseite
  • Wurde das Spiel auf der Hallen-Anzeigetafel geführt, steht deren Resultat schon da — kursiv und leicht abgeblendet, weil es noch nicht offiziell ist. Sobald das offizielle Resultat eintrifft, ersetzt es dieses automatisch
v1.28.2 — 2026-09-11

Die Volleyball-Tabelle nennt nur noch den Gesamtbeitrag

  • Die Spalte «Davon Lizenz» ist weg. Zwei Beträge nebeneinander liessen offen, ob die Lizenz zum Beitrag dazukommt — sie ist enthalten, und die Tabelle zeigt jetzt nur den Betrag, der auf der Rechnung steht
  • Die Swiss-Volley-Lizenzgebühren stehen weiterhin in der eigenen Tabelle direkt darunter
v1.28.1 — 2026-09-11

Die Beitragstabellen passen wieder aufs Handy

  • Auf Mitgliedschaft liefen die drei Beitragstabellen am Handy über den rechten Bildschirmrand hinaus: Vom Beitrag war nur noch «CHF 2» zu sehen, und die Spalte «Davon Lizenz» fehlte ganz
  • Neu passen sie sich der Breite an: Auf schmalen Telefonen steht bei Volleyball die Kategorie oben und darunter auf einer eigenen Zeile Beitrag und Davon Lizenz, je mit Beschriftung. Die Lizenz- und Basketballtabellen behalten ihre zwei Spalten mit engeren Zellen und leicht kleinerer Schrift
  • Am Computer sieht die Seite aus wie bisher
v1.28.0 — 2026-09-07

Ein volles Team sagt es — und sammelt keine Anfragen mehr ein, die es nur absagen kann

  • Ein volles Team trug bisher trotzdem den goldenen Knopf «Kontakt aufnehmen» — direkt unter dem Satz, dass es voll sei. Wer ihn drückte, schrieb Trainer:innen, die nur absagen konnten. Der Knopf erscheint bei einem vollen Team nicht mehr
  • Neu steht ein goldenes «Team voll» direkt neben dem Teamnamen — auf der Teamseite und auf den Übersichtsseiten Volleyball und Basketball. Dasselbe Abzeichen wie im Nachwuchs, damit ein Signal überall dasselbe heisst
  • Im Kontaktformular taucht ein volles Team gar nicht mehr in der Team-Auswahl auf. Für alles, was keine Anfrage nach einem Platz im Team ist, bleibt «Allgemein»
  • Volle Nachwuchs-Basketballteams bleiben in der Auswahl: Dort führt sie weiterhin zur Warteliste, und die ist der eigentliche nächste Schritt
  • Damit ändert sich eine Regel aus v1.26.0: Teams, die niemanden suchten, blieben dort bewusst direkt kontaktierbar. Neu heisst «offen für neue Spieler:innen» für alle Teams dasselbe
v1.27.2 — 2026-08-27

Auf der Teamseite sagt jede Spielzeile, um welches Team es geht

  • Auf der Seite eines Teams stand bei jedem Spiel nur KSCW. Am Handy sind die Heim/Auswärts-Markierung und das Team-Kürzel ausgeblendet — wer über den Seitenkopf hinausgescrollt hatte, las eine Liste von Begegnungen, in der keine Zeile mehr verriet, welches Team da spielt. Neu steht das Kürzel in der Zeile: KSCW H3 vs VBC Wetzikon H1
  • Bei einem Spiel zweier Vereinsteams stand derselbe Verein in einer Zeile zweimal verschieden geschrieben — «KSC Wiedikon H1 vs KSCW». Beide Seiten heissen jetzt gleich: KSCW H1 vs KSCW H3
  • Das Kürzel kommt aus der Vereinsdatenbank, nicht aus der Adresse der Seite: Tauschen zwei Teams die Liga, folgt die Beschriftung dem Team. Gegnerische Vereine werden unverändert so geschrieben, wie der Verband sie führt
v1.27.1 — 2026-08-20

Die Vereinsverwaltung lässt sich jetzt am Handy bedienen

  • Die Seite /admin war für einen Bildschirm gebaut, den ein Handy nicht hat. Am deutlichsten bei den Schreiberkursen: Die Anmeldeliste hat neun Spalten und braucht rund 940 Pixel — auf einem Telefon sah man Nachname, Vorname und einen Rest. Genau die Felder, die man am Kurs selbst braucht (anwesend, Prüfung bestanden, SV-Lizenz), lagen ausserhalb des Bildschirms. Neu wird jede Zeile zu einer Karte mit einer beschrifteten Zeile pro Feld; am Computer bleibt die Tabelle unverändert
  • Drei weitere Tabellen — Mixed-Turnier, Teams und die Rechtevergabe — liefen über den Bildschirmrand hinaus. Weil die Website seitliches Überlaufen abschneidet, waren die rechten Spalten dort nicht bloss ausserhalb des Bildes, sondern gar nicht erreichbar. Sie scrollen jetzt in ihrem eigenen Rahmen
  • Dazu: Schaltflächen sind gross genug für einen Finger, Formularfelder zoomen auf dem iPhone nicht mehr ungefragt die ganze Seite heran, Dialoge nutzen die volle Breite statt zwei Drittel davon für Ränder, und das + taucht nicht mehr auf Reitern auf, auf denen es nichts zu erstellen gibt
v1.27.0 — 2026-08-20

Die Kurspräsentation für Schreiber:innen gibt es jetzt auf Deutsch

  • Auf der Seite Schreiberkurse öffnete der Knopf «Kurspräsentation (PPT)» für alle die englische Ausgabe — auch auf der deutschen Website, ohne dass etwas darauf hinwies. Neu öffnet sich auf Deutsch die deutsche Ausgabe des Kurses, auf Englisch weiterhin die englische
  • Dafür brauchte es etwas Neues: Die Website übersetzte bisher Texte, aber keine Verlinkungen — ein Knopf zeigte immer auf dieselbe Datei. Jetzt kann ein Link der Sprache folgen wie jeder andere Text, und die Adresse wird vorher geprüft
  • Die Kursunterlagen als PDF bleiben vorerst auf Englisch — davon gibt es noch keine deutsche Fassung
v1.26.0 — 2026-08-18

Volle und offene Teams richten sich wieder nach dem Schalter der Trainer:innen

  • Auf der Nachwuchsseite stand bei DU12 «Team voll» samt Warteliste, obwohl das Team offen für neue Spielerinnen war — der Schalter der Trainer:innen wurde von einem alten Link in der Vereinsdatenbank überstimmt. Bei MU8 verdeckte derselbe Link, dass das Team Mädchen aufnimmt und nur bei den Knaben voll ist
  • Der Link war bei allen Teams dieselbe Warteliste — er sagte nichts aus, überstimmte aber den Schalter. Neu entscheidet einzig «offen für neue Spieler:innen» über grün oder golden; die Warteliste ist für alle dieselbe und wird automatisch angehängt
  • Das Kontaktformular folgt derselben Regel: Bei einem vollen Nachwuchsteam führt es weiterhin zur Warteliste, Aktiv- und Volleyballteams bleiben direkt kontaktierbar. Und der Warteliste-Knopf bei HU14 übersetzt jetzt mit
v1.25.0 — 2026-08-14

Fehlende Unterlagen: die Formulare kommen jetzt ausgefüllt

  • Die Seite zum Nachreichen listete zwar auf, welche Dokumente fehlen, sagte aber nirgends, woher man sie bekommt — die leeren Formulare sind nur im Anmeldeformular verlinkt. Neu steht bei jedem fehlenden Dokument ein Knopf «Vorausgefülltes Formular herunterladen»: Name, Adresse, Geburtsdatum und Nationalität sind schon eingetragen, es bleibt ausdrucken, unterschreiben, hochladen
  • Ausgefüllt wird auf dem Server — die Angaben verlassen den Verein nur als fertiges PDF, dessen Inhalt die Familie ohnehin selbst geliefert hat. Die Seite erfährt weiterhin nur, ob ein Dokument vorliegt

Das Formular zum Nachreichen war im dunklen Design unlesbar

  • Das Feld für die Referenznummer war weisse Schrift auf weissem Grund, die Knöpfe nicht als Knöpfe erkennbar — und zwar in der Standarddarstellung. Betroffen war ausgerechnet die Seite, auf die der Verein Familien mit fehlenden Unterlagen schickt. Behoben, hell wie dunkel
v1.24.0 — 2026-08-13

Die beiden U18-Mädchenteams nennen ihre eigenen Jahrgänge

  • Bei DU18 Spark und DU18 Fire standen dieselben Jahrgänge, weil die Website sie aus der Alterskategorie ausrechnet. Spark spielt aber mit einem Jahrgang 2008. Neu stehen dort die Jahrgänge, die der Verein selbst angibt: Spark 2008–2012, Fire 2009–2012 — und sie rücken jeden 1. August automatisch um ein Jahr weiter

Die Nachwuchsseite geht nicht mehr halb leer online

  • Am 13.08. war die Nachwuchsseite eine Stunde lang ohne Teamnamen, ohne Trainingszeiten und ohne Trainer:innen zu sehen, weil beim Erstellen der Website die Vereinsdatenbank nicht antwortete — und eine Erstellung ohne Daten sah aus wie eine erfolgreiche. Neu bricht sie in diesem Fall ab, und die letzte vollständige Fassung bleibt online
v1.21.0 — 2026-08-13

Falsche Adressen zeigen nicht mehr einfach die Startseite

  • Wer sich vertippt hat oder einem alten Link folgte, landete wortlos auf der Startseite — die Seite meldete dem Browser sogar «alles in Ordnung». Das betraf auch echte, früher existierende Seiten: Teamseiten wechseln bei jedem Saisonwechsel im Juni, und jeder Link auf ein altes Team führte still auf die Startseite. Neu gibt es eine richtige «Seite nicht gefunden»-Seite mit Wegweisern zu Volleyball, Basketball, Startseite und Kontakt

Das Vereinswappen ist wieder das Vereinswappen

  • Das kleine Symbol im Browser-Tab war seit dem allerersten Tag das Logo des verwendeten Programmier-Werkzeugs, nicht das KSCW-Wappen. Jetzt kommt das Wappen — zusätzlich als App-Symbol für «Zum Startbildschirm hinzufügen»
  • Wer einen Link zu kscw.ch in WhatsApp, Instagram oder Facebook teilt, bekam eine graue Kachel ohne Bild. Neu erscheint das Vereinswappen als Vorschaubild

Die Datenschutzerklärung stimmt wieder

  • Impressum und Datenschutz nannten Hetzner als Hoster. Die Website läuft auf Cloudflare — eine Auskunftsanfrage wäre an eine Firma gegangen, die gar nichts über einen weiss. Korrigiert; Hetzner bleibt, richtig benannt als Standort der Vereinsdatenbank
  • Neu beschrieben: der Spam-Schutz der Formulare, der Newsletter und die Vereinsanmeldung — letztere sammelt AHV-Nummer, Zahlungsverbindung und teils ein Ausweisdokument und stand bisher überhaupt nicht in der Erklärung
  • Der Cookie-Abschnitt beschrieb Cookies, die es gar nicht gibt. Die Website setzt keine Cookies und verwendet keine Statistik-Werkzeuge; gespeichert werden nur Farbschema, Sprache und Kaderansicht. Deshalb braucht sie kein Cookie-Banner — das steht jetzt auch so da. Die Erklärung trägt neu ein Datum
  • Instagram-Feeds auf Teamseiten wurden sofort geladen, obwohl die Datenschutzerklärung ausdrücklich das Gegenteil versprach. Jetzt wird erst nach Zustimmung geladen

Teamseiten sagen endlich, wann und wo trainiert wird

  • Trainingszeiten, Wochentag und Halle stehen jetzt direkt in der Seite statt erst nach dem Laden. Die Daten waren immer schon da — sie wurden nur weggeworfen. Das ist die meistgestellte Frage auf der ganzen Website
  • Bei Google hiessen alle 16 Teamseiten nur «D1 — KSC Wiedikon» und hatten keinen Beschreibungstext. Jetzt stehen dort voller Teamname, Sportart und Liga
  • Basketball-Ligen erschienen als Verbandskürzel («H3LS», «D1LRA»). Jetzt steht dort «3. Liga» bzw. «1. Liga»

Mitgliedschaft: keine widersprüchlichen Angaben mehr

  • Es stand dort, man bekomme das Anmeldeformular auf Papier vom Trainer — zwanzig Zeilen über vier Knöpfen, die zum funktionierenden Online-Formular führen. Der Text beschreibt jetzt den tatsächlichen Weg
  • Der Zuschlag von CHF 100 ohne erfüllte Offiziellen-Pflicht im Basketball war formuliert und übersetzt, wurde aber auf keiner Seite angezeigt. Wer mit CHF 520 rechnete, konnte CHF 620 verrechnet bekommen. Er steht jetzt bei den Beiträgen

Kleinere Dinge, die grösser waren als sie klingen

  • Nach einem Fehler beim Absenden des Kontakt- oder Feedback-Formulars war jeder weitere Versuch zum Scheitern verurteilt — der Spam-Schutz gibt seinen Prüfcode nur einmal aus. Jetzt funktioniert der zweite Versuch
  • Das Kontaktformular ragte auf dem Handy rechts aus dem Bild — genau dort, wo Interessierte den ersten Schritt machen sollen
  • Beim Ausdrucken war die Seite praktisch leer: weisse Schrift auf weissem Papier. Wer Hallenadressen fürs Anschlagbrett druckt, bekommt jetzt ein lesbares Blatt
  • Im dunklen Design waren Spielzeiten, News-Daten und Tabellenköpfe zu blass; zwei Libero-Rückennummern waren im hellen Design weiss auf weiss
  • Die Startseite hat neu einen Knopf für ein Probetraining — vorher führte von dort kein einziger Weg zum Mitmachen. Der Untertitel nennt jetzt Zürich-Wiedikon
  • Die Teamzahl wurde an drei Stellen unterschiedlich angegeben. Jetzt einheitlich. Neu gibt es ausserdem eine sitemap.xml für Suchmaschinen
v1.20.0 — 2026-08-12

Die Seite lädt nicht mehr zuerst auf Deutsch und springt dann auf Englisch

  • Wer die Website auf Englisch liest, bekam zuerst die fertige deutsche Seite zu sehen und erst danach die Übersetzung. Nicht den Bruchteil einer Sekunde, wie es auf einer schnellen Leitung aussieht: gemessen 1,7 bis 2,7 Sekunden bei normaler Mobilverbindung. Auf der Startseite ist die deutsche Fassung jetzt in keinem einzigen Bild mehr zu sehen, auf den übrigen Seiten bleiben rund 0,25 Sekunden
  • Der Grund war die Reihenfolge, nicht die Geschwindigkeit: die Übersetzungsdatei wurde erst angefordert, wenn die ganze Seite fertig geladen war — inklusive einer 398 KB grossen Icon-Datei. Sie wird jetzt als Erstes angefordert
  • Drei Texte waren dauerhaft falsch, nicht nur kurz: hier auf Feedback stand «WAS IST NEU» über dem englischen Änderungsprotokoll, und die Spieltabellen auf der Startseite blieben in jeder Sprache deutsch («Laden…», «Keine Spiele gefunden.»)
  • «Keine News vorhanden.» stand auf der Startseite und auf News, solange die News noch geladen wurden — eine Aussage, die in dem Moment niemand kennen konnte. Sie erscheint jetzt nur, wenn es wirklich keine gibt

Teamseiten sind sofort da, statt zu springen

  • Die Teamseiten (z. B. Damen 1, HU20) waren im ersten Moment leer und füllten sich erst, wenn die Daten eintrafen — Titel, Liga und Mannschaftsfoto sprangen dabei unter der Leserin weg. Das war der mit Abstand grösste Sprung auf der ganzen Website. Titel, Liga, Saison, Jahrgänge und Foto sind jetzt von Anfang an da, auch ohne JavaScript
  • Der Sprachumschalter hat auf Teamseiten bisher die halbe Seite geleert und alles neu geladen — Foto inklusive. Jetzt werden nur die Bezeichnungen ausgetauscht
  • Spielplan, Kader, Rangliste und Kurse werden jetzt gleichzeitig mit den Übersetzungen geladen statt danach. Beim Kalender waren es sogar drei Ladevorgänge hintereinander

Schrift und Icons kommen nicht mehr von Google

  • Die Schrift Inter wird jetzt vom eigenen Server geliefert statt über zwei Umwege zu Google. Damit verschwindet das Umbrechen des Textes bei jedem ersten Besuch — der einzige dieser Sprünge, den auch deutschsprachige Besucher gesehen haben
v1.19.0 — 2026-08-12

Jedes Nachwuchsteam sagt jetzt, welche Jahrgänge mitspielen können

  • Auf jeder Nachwuchs-Karte steht neu die Jahrgangs-Zeile — Basketball U18 «Jahrgänge: 2009, 2010» bis U8 «Jahrgänge: 2019, 2020». Die Frage, die Eltern zuerst stellen, stand bisher nirgends auf der Website
  • Die Zeile rechnet sich selber weiter: am 1. August verschiebt sich jede Kategorie um ein Jahr, und zwar auch dann, wenn die Website in dem Moment gar nicht neu gebaut wird. Sie muss also nie jemand nachtragen
  • Bei den U18-Mädchen steht 2009–2012, weil es diese Saison kein U16-Mädchenteam gibt und die beiden U18-Teams diese Jahrgänge mittragen. Das ist keine Eigenheit von U18, sondern eine des aktuellen Kaders — die Zeile liest den Kader aus Directus, und sobald es wieder ein U16-Mädchenteam gibt, wird sie von selbst wieder schmaler
  • Volleyball rechnet eine Jahrgangsgrenze anders als Basketball: Swiss Volley zählt vom zweiten Kalenderjahr der Saison, Swiss Basketball vom ersten, weshalb dieselbe U-Zahl in den beiden Sportarten ein Jahr auseinanderliegt. Swiss Volley setzt zudem keine untere Grenze — ein U20-Team spielt tatsächlich mit 15-Jährigen. Darum steht dort «Jahrgang: 2008 und jünger» statt zwei Jahrgängen
  • Zu sehen auf Basketball → Nachwuchs, bei den Nachwuchs-Karten auf der Volleyball-Seite und auf den Teamseiten von DU23, HU23 und HU20
v1.18.0 — 2026-08-11

Texte auf der Website lassen sich jetzt selber ändern

  • Im Website-Admin gibt es neu den Bereich Seitentexte: Seite auswählen, den Text auf Deutsch und Englisch anpassen, speichern. Die Änderung ist nach wenigen Sekunden live — ohne Umweg über den Code und ohne auf einen Neuaufbau der Seite zu warten
  • Der Originaltext bleibt immer erhalten. «Original» holt die ursprüngliche Formulierung zurück, auch Monate später — eine Änderung im Browser kann die ausgelieferte Fassung nicht überschreiben
  • Es stehen alle Texte der Website zur Auswahl, nach Seite geordnet und in der Reihenfolge, in der sie auf der Seite vorkommen. Wer den Text kennt, aber nicht die Seite, findet ihn über die Suche. Header, Footer und die Meldungen der Formulare stehen als eigene Gruppen
  • Was hier nicht geht: ein Link oder Fettschrift mitten im Satz. Texte werden bewusst als reiner Text eingesetzt — das ist der Grund, warum ein editierbarer Text keine Sicherheitslücke aufreissen kann

«Die meisten Heimspiele» stimmte nicht

  • Auf der Spielplanungs-Seite stand, an Spielsamstagen fänden die meisten Heimspiele statt. Das trifft nicht zu — und die Aussage stand an drei Stellen: im Einleitungstext, im Abschnitt «Spielsamstage» und bei der Halle Kantonsschule Wiedikon
  • Alle drei beschreiben Spielsamstage jetzt ohne Mengenangabe, auf Deutsch und Englisch
v1.17.0 — 2026-08-08

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
v1.16.4 — 2026-07-30

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
v1.16.3 — 2026-07-25

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 Isik auf dem Lizenzformular und Is?k im 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
v1.16.2 — 2026-07-25

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ürig ein Dürig im Mitgliederregister; die vorangestellte Byte-Reihenfolge-Marke liess ausserdem die erste Spaltenüberschrift als Nachname erscheinen, 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»
v1.16.1 — 2026-07-25

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
v1.16.0 — 2026-07-25

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
v1.15.4 — 2026-07-25

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
v1.15.3 — 2026-07-25

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
v1.15.2 — 2026-07-25

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
v1.15.1 — 2026-07-25

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
v1.15.0 — 2026-07-17

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
v1.14.0 — 2026-07-17

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
v1.13.0 — 2026-07-17

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
v1.12.0 — 2026-07-16

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
v1.11.0 — 2026-07-16

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
v1.10.0 — 2026-07-16

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
v1.9.0 — 2026-07-13

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
v1.8.1 — 2026-07-09

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
v1.8.0 — 2026-07-09

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»
v1.7.0 — 2026-07-09

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)
v1.6.0 — 2026-07-09

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
v1.5.2 — 2026-07-07

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
v1.5.1 — 2026-07-06

Kalender: nummerierte Schiedsrichter

  • Schiedsrichter im Spiel-Popup erscheinen neu einzeln als «1. Schiedsrichter» / «2. Schiedsrichter»
v1.5.0 — 2026-07-06

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
v1.4.0 — 2026-07-06

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
v1.3.1 — 2026-06-30

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
v1.3.0 — 2026-06-26

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
v1.2.2 — 2026-06-26

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
v1.2.1 — 2026-06-25

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
v1.2.0 — 2026-06-25

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)
v1.1.1 — 2026-06-24

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
v1.1.0 — 2026-06-20

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
v1.0.0 — 2026-06-19

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.31.1

v1.31.1 — 2026-10-16

Licence application when submitting documents later

  • Submit documents later: When a basketball registration was missing its licence application, the page said documents were missing but offered the licence application neither to download nor to upload. It shows again. The registration form and the club admin use the database's new field name for the licence application
v1.31.0 — 2026-10-16

New look, and registration on the new field names

  • New look: calmer type, lighter neutrals and softer cards; sentence-case headings. Club colours and the dark default stay
  • Registration: When the browser stopped a registration over a missing field, there was often no visible hint — none at all for a hidden field. The form now names the field and scrolls to it. The AHV number hint says where to find it (health insurance card, 756…)
  • Registration and club admin: Registrations are stored under the member database's new field names. The admin Registrations tab then showed empty names; it reads and saves every detail again. «Submit documents later» lists a missing release letter again
  • Events: Event types are English in the database now (club, training_weekend). The website and the admin read and write the new values; they still show as «Verein» and «Trainingsweekend»
v1.30.0 — 2026-09-28

Security and bug clean-up after an audit

  • Feedback form: reports with a screenshot were probably being lost. The form now posts to its own protected endpoint (captcha, size and volume limits); screenshots are stored in a private folder
  • News: an archived or draft article stayed publicly visible. “Archive” now really takes an article off the site
  • Team pages: upcoming games showed a “0 : 0” result in the game window, as if already played. Games played today no longer appear under upcoming games
  • Scorer courses: a course time like “18.00” made the whole course list disappear. It is now understood, and one broken course no longer hides all the others. An exam that has already been graded can no longer be overwritten
  • Registration: ID uploads need a short-lived upload ticket; the file type is checked from its content, not its name
  • Newsletter: an invalid unsubscribe or confirmation link now reports an error instead of wrongly saying “unsubscribed”
  • Language & dates: a fast double click on the language toggle could leave the wrong language; the news list now shows dates as DD.MM.YYYY; “today” follows Swiss time everywhere
  • Behind the scenes: a stricter Content Security Policy (only the CDN files actually used), safe redirects for the old /de/ and /en/ addresses, error reports without links carrying personal details, and the live site is only published after the tests pass
v1.29.0 — 2026-09-24

Played games appear under results right away

  • A game used to appear under “Recent results” only once Swiss Volley or Swiss Basketball had delivered the result — a game played yesterday was in neither the upcoming games nor the results
  • Every played game now shows up in the results straight away, on the homepage and on the team page
  • If the game was kept on the hall scoreboard, its score is already shown — in italics and slightly faded, because it is not official yet. The official result replaces it automatically once it arrives
v1.28.2 — 2026-09-11

The volleyball table shows only the total fee

  • The “Of which licence” column is gone. Two amounts side by side left open whether the licence comes on top of the fee — it is included, and the table now shows only the amount that appears on the invoice
  • The Swiss Volley licence fees remain in their own table directly beneath
v1.28.1 — 2026-09-11

The fee tables fit a phone again

  • On Membership the three fee tables ran past the right edge of a phone screen: of the fee only “CHF 2” was left, and the “Of which licence” column was missing entirely
  • They now adapt to the width: on narrow phones the volleyball table puts the category on top and Fee and Of which licence on a row of their own beneath it, each with its label. The licence and basketball tables keep their two columns with tighter cells and slightly smaller type
  • On a computer the page looks as it did
v1.28.0 — 2026-09-07

A full team says so — and stops collecting requests it can only turn down

  • A full team still carried the gold “Get in touch” button — directly beneath the sentence saying it was full. Anyone who pressed it wrote to coaches who could only say no. That button is gone for a full team
  • A gold “Team full” badge now sits next to the team's name — on the team page and on the Volleyball and Basketball overview pages. It is the same badge the youth cards wear, so one signal means one thing everywhere
  • In the contact form a full team no longer appears in the team list at all. For anything that isn't asking for a place in a team, “General” remains
  • Full basketball youth teams stay in the list: there, picking one still leads to the waiting list, which is the real next step for a family
  • This changes a rule from v1.26.0: teams that weren't recruiting stayed directly contactable there on purpose. “Open for new players” now means the same thing for every team
v1.27.2 — 2026-08-27

Every fixture on a team page now says which team is playing

  • On a team's page each fixture read just KSCW. On a phone the home/away marker and the team chip are both hidden — so once you had scrolled past the page header, not a single row still said which of the club's teams it belonged to. The short name is now in the line: KSCW H3 vs VBC Wetzikon H1
  • When two club teams meet, the same club was spelled two different ways in one line — “KSC Wiedikon H1 vs KSCW”. Both sides now read alike: KSCW H1 vs KSCW H3
  • The short name comes from the club database rather than the page's address, so if two teams swap leagues the label follows the team. Opposing clubs are still written exactly as the federation lists them
v1.27.1 — 2026-08-20

The club admin page now works on a phone

  • The /admin page was built for a screen a phone does not have. Worst on scorer courses: the signup list has nine columns and needs around 940 pixels — on a phone you saw the surname, the first name and a sliver. The very fields you need at the course itself (present, exam passed, SV licence) sat off the right edge. Each row is now a card with one labelled line per field; on a computer the table is unchanged
  • Three more tables — mixed tournament, teams and the permission grid — ran off the edge of the screen. Because the site clips sideways overflow, those right-hand columns were not merely off-screen but impossible to reach at all. They now scroll inside their own frame
  • Also: buttons are big enough for a thumb, form fields no longer zoom the whole page in on an iPhone, dialogs use the full width instead of spending two thirds of it on margins, and the + no longer floats over tabs that have nothing to create
v1.27.0 — 2026-08-20

The scorer course presentation is now available in German

  • On the Schreiberkurse page the “Course presentation (PPT)” button opened the English edition for everyone, German visitors included, with nothing on the card to say so. The German site now opens the German edition of the course; the English site still opens the English one
  • This needed something new: the site translated text but never links — a button always pointed at the same file. A link can now follow the language like any other string, and the address is vetted before it is used
  • The course materials PDF stays English for now — there is no German version of it yet
v1.26.0 — 2026-08-18

Full and open teams follow the coaches' switch again

  • The youth page showed DU12 as “Team full” with a waiting list even though it was open for new players — the switch the coaches set was overruled by a stale link in the club database. The same link hid that MU8 is taking girls and is only full for boys
  • That link was the same waiting list on every team — it carried no information yet outranked the switch. Now only “open for new players” decides whether a card is green or gold; the waiting list is shared by all teams and is attached automatically
  • The contact form follows the same rule: a full youth team still points at the waiting list, while senior and volleyball teams that simply are not recruiting stay directly contactable. HU14's waiting-list button now translates too
v1.25.0 — 2026-08-14

Missing documents: the forms now arrive already filled in

  • The page for submitting documents late listed which ones were missing but never said where to get them — the blank forms are only linked from the registration form itself. Every missing document now carries a “Download prefilled form” button: name, address, date of birth and nationality are already entered, so all that is left is print, sign, upload
  • The filling happens on the server — the details leave the club only as a finished PDF whose contents the family supplied in the first place. The page itself still learns only whether a document is on file

The document form was unreadable in the dark theme

  • The reference-number field was white text on a white box and the buttons did not look like buttons — in the default rendering, not some edge case. Of all pages, this is the one the club sends families to when their documents are missing. Fixed, in both light and dark
v1.24.0 — 2026-08-13

The two U18 girls' teams now state their own birth years

  • DU18 Spark and DU18 Fire showed the same birth years, because the site works them out from the age category. Spark, though, fields a player born in 2008. The cards now carry the years the club itself states — Spark 2008–2012, Fire 2009–2012 — and they move up by a year every 1 August on their own

The youth page no longer goes live half empty

  • On 13.08. the youth page was live for an hour without team names, training times or coaches, because the club database did not answer while the site was being built — and a build with no data looked exactly like a successful one. It now stops instead, and the last complete version stays online
v1.21.0 — 2026-08-13

A wrong address no longer just shows the homepage

  • Mistype a URL or follow an old link and you landed silently on the homepage — the site even told your browser everything was fine. That included pages that really had existed: team pages change at every June season rollover, so every link to a retired team quietly led to the homepage. There is now a proper “page not found” page pointing to volleyball, basketball, home and contact

The club crest is the club crest again

  • The little icon in the browser tab had, since day one, been the logo of the development tool the site was built with, not the KSCW crest. It is now the crest — and also an app icon for “add to home screen”
  • Sharing a kscw.ch link on WhatsApp, Instagram or Facebook produced a blank grey tile. It now shows the club crest as a preview image

The privacy policy is accurate again

  • The imprint and privacy policy named Hetzner as the website host. The site runs on Cloudflare — so a data-access request would have gone to a company holding nothing about you. Corrected; Hetzner stays, correctly described as the home of the club database
  • Newly described: the form spam protection, the newsletter, and club registration — the last of which collects an AHV number, payment details and sometimes an identity document, and was not mentioned in the policy at all
  • The cookie section described cookies that do not exist. The site sets no cookies and uses no analytics; it stores only your colour scheme, language and roster view. That is why it needs no cookie banner — which the policy now says plainly. It also carries a date now
  • Instagram feeds on team pages loaded immediately, even though the privacy policy explicitly promised the opposite. They now load only after you agree

Team pages finally say when and where the team trains

  • Training times, weekday and venue are now in the page itself instead of appearing after loading. The data was always there — it was simply discarded. This is the most asked question on the whole site
  • On Google all 16 team pages were titled just “D1 — KSC Wiedikon” with no description. They now carry the full team name, the sport and the league
  • Basketball leagues showed as federation codes (“H3LS”, “D1LRA”). They now read “3. Liga” and “1. Liga”

Membership: no more contradictory instructions

  • The page said you get a paper registration form from your coach — twenty lines above four buttons linking to the working online form. It now describes what actually happens
  • The CHF 100 surcharge for an unfulfilled officials duty in basketball was written and translated but displayed on no page. Someone budgeting CHF 520 could be invoiced CHF 620. It is now shown with the fees

Small things that were bigger than they sound

  • After a failed submit of the contact or feedback form, every retry was doomed — the spam protection issues its check code only once. The second attempt now works
  • The contact form ran off the right edge on phones — exactly where a prospective member is meant to take the first step
  • Printing a page produced a near-blank sheet: white text on white paper. Anyone printing hall addresses for a noticeboard now gets something readable
  • In the dark theme, fixture times, news dates and table headers were too faint; in the light theme two libero shirt numbers were white on white
  • The homepage now has a trial-session button — previously nothing on it led to joining. The subtitle now names Zürich-Wiedikon
  • The team count was stated three different ways. Now consistent. There is also a sitemap.xml for search engines
v1.20.0 — 2026-08-12

The page no longer loads in German and then jumps to English

  • Reading the site in English meant seeing the finished German page first and the translation only afterwards. Not the split second it looks like on a fast connection: measured at 1.7 to 2.7 seconds on a normal mobile link. On the home page the German version is now not visible in a single frame; elsewhere about 0.25 seconds remain
  • The cause was ordering, not speed: the translation file was not requested until the whole page had loaded — including a 398 KB icon bundle. It is now the very first thing requested
  • Three texts were permanently wrong rather than briefly: this Feedback page said "WAS IST NEU" above the English changelog, and the home page's game tables stayed German in every language ("Laden…", "Keine Spiele gefunden.")
  • "No news available." appeared on the home page and on News while the news was still loading — a claim nobody could know at that moment. It now shows only when there genuinely is none

Team pages are there immediately instead of jumping

  • Team pages (Damen 1, HU20 and the rest) started out empty and filled in once the data arrived — the title, league and team photo moved out from under the reader. It was by far the largest shift on the site. Title, league, season, birth years and photo are now there from the start, even without JavaScript
  • The language switch used to empty half of a team page and reload everything, photo included. Now only the labels change
  • Fixtures, rosters, standings and courses are now loaded at the same time as the translations rather than after them. The calendar was doing three loads one after another

Fonts and icons no longer come from Google

  • The Inter typeface is now served from our own server instead of via two detours to Google. That removes the text re-flow on every first visit — the one shift German-speaking visitors saw as well
v1.19.0 — 2026-08-12

Every youth team now states which birth years can play

  • Every youth card carries a birth-years line — basketball U18 "Birth years: 2009, 2010" down to U8 "Birth years: 2019, 2020". The first question a parent asks was not answered anywhere on the site
  • The line moves on by itself: on 1 August every category shifts by a year, and it does so even if the site is not rebuilt at that moment. Nobody has to keep it up to date
  • The U18 girls read 2009–2012, because there is no U16 girls' team this season and the two U18 squads carry those years as well. That is not a fact about U18 but about this season's roster — the line reads the roster from Directus, so it narrows again by itself once there is a U16 girls' team
  • Volleyball draws the line one year later than basketball: Swiss Volley counts from the season's second calendar year and Swiss Basketball from its first, so the same U-number sits a year apart in the two sports. Swiss Volley also sets no lower bound — a U20 squad really does field 15-year-olds — which is why it reads "Birth year: 2008 and younger" instead of two years
  • Visible on Basketball → Nachwuchs, on the youth cards on the Volleyball page, and on the DU23, HU23 and HU20 team pages
v1.18.0 — 2026-08-11

The website's text can now be changed by us

  • The website admin has a new Page texts section: pick a page, adjust the text in German and English, save. The change is live within seconds — no detour through the code, and no waiting for the site to be rebuilt
  • The original wording is always kept. "Original" brings it back, even months later — nothing done in the browser can overwrite the wording the site shipped with
  • Every text on the website is available, grouped by page and listed in the order it appears on that page. If you know the text but not the page, the search finds it. Header, footer and the forms' messages are their own groups
  • What is not possible here: a link or bold text mid-sentence. Text is deliberately applied as plain text — which is exactly why an editable text cannot open a security hole

"Most home games" was not true

  • The game scheduling page said that most home games take place on game Saturdays. That is not the case — and the claim appeared in three places: the intro text, the "Game Saturdays" section, and the Kantonsschule Wiedikon hall
  • All three now describe game Saturdays without claiming how many games fall on them, in German and English
v1.17.0 — 2026-08-08

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
v1.16.4 — 2026-07-30

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
v1.16.3 — 2026-07-25

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 Isik on the licence form and Is?k in 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
v1.16.2 — 2026-07-25

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ürig into Dürig in the member register, and the leading byte-order mark left the first column header reading Nachname, 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"
v1.16.1 — 2026-07-25

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
v1.16.0 — 2026-07-25

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
v1.15.4 — 2026-07-25

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
v1.15.3 — 2026-07-25

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
v1.15.2 — 2026-07-25

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
v1.15.1 — 2026-07-25

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
v1.15.0 — 2026-07-17

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
v1.14.0 — 2026-07-17

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
v1.13.0 — 2026-07-17

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
v1.12.0 — 2026-07-16

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
v1.11.0 — 2026-07-16

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
v1.10.0 — 2026-07-16

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
v1.9.0 — 2026-07-13

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
v1.8.1 — 2026-07-09

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
v1.8.0 — 2026-07-09

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"
v1.7.0 — 2026-07-09

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)
v1.6.0 — 2026-07-09

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
v1.5.2 — 2026-07-07

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
v1.5.1 — 2026-07-06

Calendar: numbered referees

  • Referees in the game popup are now listed individually as "1st referee" / "2nd referee"
v1.5.0 — 2026-07-06

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
v1.4.0 — 2026-07-06

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
v1.3.1 — 2026-06-30

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
v1.3.0 — 2026-06-26

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
v1.2.2 — 2026-06-26

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
v1.2.1 — 2026-06-25

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
v1.2.0 — 2026-06-25

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)
v1.1.1 — 2026-06-24

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
v1.1.0 — 2026-06-20

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
v1.0.0 — 2026-06-19

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