Feedback & Bugs
Hilf mir, die Website und Wiedisync zu verbessern
Eingeloggt bei Wiedisync? Dort Feedback geben
Was ist neu v3.12.0
Geändert
- Vereinfachte Adressen: Jede Seite hat jetzt eine einzige Adresse — die Sprache wird direkt im Browser umgeschaltet (oben rechts), statt über getrennte
/de/- und/en/-Links. Bestehende Links und Lesezeichen funktionieren weiterhin (automatische Weiterleitung)
Behoben
- Neueste Resultate – Basketballspiele: Basketballspiele zeigten fälschlich das Volleyball-Icon und keinen Teamnamen. Jetzt erscheinen das richtige Basketball-Icon und der Teamname
Behoben
- Admin-Tabs auf dem Handy nicht erreichbar: die Bereichs-Tabs (News, Events, Anmeldungen, Sponsoren, Schreiberkurse, Mixed-Turnier, …) ragten auf dem Smartphone über den Bildschirmrand hinaus und liessen sich nicht erreichen. Die Tab-Leiste ist jetzt eine horizontal scrollbare, oben angeheftete Navigationsleiste — seitlich wischen, um jeden Bereich zu erreichen, und sie bleibt beim Scrollen oben fixiert
Behoben
- Startzeit Schreiberkurs: der englische Kurs am 08.07.2026 beginnt jetzt um 19:00 (statt 19:30); Ende bleibt 21:30 — der Kalendereintrag deckt damit 2,5 Stunden ab
- Deutscher Schreiberkurs: Uhrzeit wieder geleert — Datum und Zeit werden bis zur Bestätigung als noch offen (TBD) angezeigt
Neu
- Admin-Schnellzugriff: neben der Sprachumschaltung (oben rechts auf Desktop, im Mobile-Menü ganz oben) sitzt jetzt ein dezentes Schloss-Icon, das direkt zum Admin-Login führt — kein verstecktes Klicken im Footer mehr
- Sport-Buttons im Hero überarbeitet: die Volleyball- und Basketball-Buttons auf der Startseite haben jetzt klare Sport-Icons (Volleyball, Basketball), sauberere Verläufe (Volleyball: KSCW-Blau mit Mikasa-Gold-Akzent, Basketball: warmer Orange-Verlauf mit Highlight) und beim Überfahren rotiert das Icon leicht nach links
- Beide Effekte respektieren
prefers-reduced-motion
Neu
- Sparkles-Hero auf den Sport-Seiten: über Volleyball- und Basketball-Übersicht zieht jetzt ein dezenter Schwarm Lichtpunkte langsam durch das Hero — gold für Volleyball, orange für Basketball. Pausiert automatisch beim Wegscrollen
- Tracing-Beam auf "Über uns": ab 1280 px Bildschirmbreite verläuft links neben dem Inhalt ein vertikaler blau-goldener Balken, der mit dem Scroll-Fortschritt mitwächst — ein pulsierender goldener Punkt markiert den Anfang
- Beide Effekte respektieren
prefers-reduced-motion
Neu
- Cursor-Spotlight auf Karten: News- und Event-Karten auf der Startseite zeigen jetzt einen sanften goldenen Lichtkegel, der dem Mauszeiger folgt — gibt der Übersicht spürbar Tiefe
- 3D-Tilt auf Team-Karten: alle Team-Karten (Volleyball & Basketball) kippen beim Überfahren leicht in Richtung des Mauszeigers (max. 6° auf beiden Achsen). Subtil, aber lebendig. Auf Touch-Geräten unverändert
- Beide Effekte respektieren
prefers-reduced-motion
Neu
- Hero-Animationen auf der Startseite: sanft driftende Hintergrundverläufe in Vereinsblau und Gold, ein dezenter Goldglanz im Schriftzug "KSC Wiedikon", pulsierende Sportbuttons beim Überfahren — alles rein in CSS, ohne zusätzliches JavaScript
- Scroll-Fortschrittsbalken: ein dünner blau-goldener Balken oben am Bildschirmrand zeigt jetzt, wie weit man auf der aktuellen Seite gescrollt hat
- Sanftere Sektions-Einblendungen: neue Variante, die Inhalte beim Reinscrollen mit einem leichten Weichzeichner einblendet (statt nur Opazität)
- Belebte Zahlen-Counter: hochzählende Statistiken (z.B. auf "Über uns") bekommen während der Animation einen kurzen goldenen Glow
- Alle neuen Animationen respektieren
prefers-reduced-motion— wer im Betriebssystem reduzierte Bewegung eingestellt hat, sieht die Seite unverändert ruhig
Neu
- Admin – Bereichsberechtigungen pro Person: Manager sehen jetzt im Admin-Bereich einen neuen Tab "Admin". Dort lässt sich pro Website-Admin auswählen, welche Bereiche (News, Events, Anmeldungen, Sponsoren, Schreiberkurse, Mixed-Turnier) für diese Person sichtbar und bearbeitbar sind — mit echter Berechtigungsprüfung auf dem Server (kein reines UI-Verstecken)
Behoben
- Schreiberkurse "Zum Kalender hinzufügen": der Link funktioniert jetzt auch auf dem Handy. Statt einer `.ics`-Datei öffnet sich jetzt direkt das Google-Kalender-Erstellungsformular mit Titel, Datum/Zeit und Ort vorausgefüllt — der "Termin nicht gefunden"-Fehler nach dem Google-Login ist damit weg
- Admin – Geburtsdatum-Anzeige: Geburtsdaten werden jetzt im Schweizer Format `tt.mm.jjjj` angezeigt (ohne Uhrzeit), statt des rohen ISO-Strings mit Zeitzone
- Admin – Export "Anmeldungen": der Export erzeugt jetzt tab-getrennte Dateien (`.tsv`) statt komma-getrennt. Adressen mit Kommas brechen den Import damit nicht mehr
Neu
- Schreiberkurs "Zum Kalender hinzufügen": jeder Kurs hat jetzt einen Button (mit Kalender-Icon), der einen Kalender-Termin (.ics) mit Datum, Uhrzeit, Dauer und Veranstaltungsort herunterlädt
- Veranstaltungsort auf der Kurskarte: Präsenz-Kurse zeigen die Adresse (KSC Wiedikon, Goldbrunnenstrasse 80, 8055 Zürich) jetzt direkt auf der Karte
Geändert
- Schreiberkurs-Anmeldung: das Anmeldeformular wird nicht mehr eingebettet (gequetscht) in der Seite angezeigt. Ein klarer Button öffnet das Formular jetzt im Vollbild in einem neuen Tab — deutlich besser auf dem Handy
Behoben
- Admin – Aktiv-Schalter: Label und Schalter klebten aneinander; sie stehen jetzt korrekt links bzw. rechts mit Abstand dazwischen
Geändert
- Kontaktformular Team-Dropdown: zeigt nur noch Mannschaften, die aktuell für neue Spielende offen sind. Geschlossene Teams sind nicht mehr auswählbar. Über den Team-Button gelangt man weiterhin direkt mit vorgewählter Mannschaft ins Formular, das Dropdown bleibt änderbar
Geändert
- Kontakt-Button auf Team-Seiten: Der Button "Kontakt aufnehmen" öffnet jetzt das zentrale Kontaktformular mit vorausgefüllter Sportart und Mannschaft, statt eine E-Mail mit sichtbaren Coach- und TR-Adressen zu öffnen. Der Versand läuft serverseitig — die Empfängeradressen sind nirgends mehr im Browser sichtbar. Betreff der E-Mail: "Kontakt [Team]" (DE) bzw. "Contact [Team]" (EN), je nach Sprache der aufrufenden Seite
Behoben
- Vorstandsseite mobil: Organigramm jetzt als Fischgrätenstruktur — Präsidentin → Vize → zentrale Linie mit den beiden TKs links und Kassier/Aktuar rechts, Beisitz mittig unten. Alle Karten gleich gross (Höhe und Breite)
- Letzte Resultate / nächste Spiele: lange Team-Chips wie "Herren 3 (Unicorns) H4" sprengten die Tabelle auf dem Handy nicht mehr (Chip bricht an Wortgrenzen um). Auf dem Desktop sitzt der Chip jetzt auf einer zweiten Zeile unter jedem Spiel, damit die Begegnungsspalte mehr Platz hat
- Spieletabelle mobil: Jede Zeile ist jetzt gestapelt — Datum + Uhrzeit / Heim vs Auswärts / Ergebnis — wobei jedes Resultat genau unter der jeweiligen Mannschaft steht. Lange Teamnamen brechen um statt abgeschnitten zu werden
- Scoreboard mobil: Metrik-Bezeichnung hat eine eigene Zeile über Schnitt + Team, damit die Team-Spalte nicht mehr buchstabenweise umgebrochen wird
Geändert
- Vorstandsseite: neu als Organigramm dargestellt (Präsidentin → Vize → 5 Ressorts) mit Verbindungslinien. Jedes Mitglied zeigt Funktion und Name. Auf dem Handy stapeln sich die Karten. Daten aktualisiert auf den Vorstand 2026/27
Neu
- Event-Anmeldungen: Events können neu ein Anmeldeformular hinterlegen. Im Kalender erscheint ein "Anmelden"-Button mit Live-Zähler der Anmeldungen. Admins verwalten den Link direkt in
/adminund können die Antworten als Tabelle einsehen oder als CSV exportieren - OpnForm selbst gehostet auf
forms.kscw.ch: ersetzt die ClubDesk-Anmeldeseiten, die nach dem Umzug von kscw.ch nicht mehr funktionieren. KSCW-Branding (Blau, Logo) und wöchentliches automatisches Update gegen die Originalquelle - Probetrainings auf Team-Seiten: Teams, die für neue Spielende offen sind, zeigen jetzt die nächsten Probetrainings (Datum · Zeit · Halle) direkt beim "Kontakt aufnehmen"-Button
- Sprachpräferenz wird gespeichert: Wer einmal auf EN klickt, landet beim nächsten Besuch automatisch auf der englischen Version.
kscw.chbleibt standardmässig deutsch
Sicherheit
- Abhängigkeiten aktualisiert — 4 Sicherheitswarnungen behoben (Astro XSS, Vite Path-Traversal, defu Prototype-Pollution, PostCSS XSS)
News
- Externe Links werden in der News-Ansicht nicht mehr angezeigt — Ticket- und Aktionslinks sind ausschliesslich auf Wiedisync verfügbar. Bei Artikeln mit Links erscheint ein Hinweis mit Link zum Wiedisync-Loginbereich
- Blocksatz mit automatischer Silbentrennung als Standard. Admin-Ausrichtungen pro Absatz werden respektiert
- Leere News-Ansicht behoben — redundanter Filter führte zu 403-Fehler vom Directus (Homepage, News-Übersicht, RSS-Feed)
Rechtliches
- Datenschutz & Impressum: Hetzner-Hosting-Abschnitt hinzugefügt (Rechenzentrum Nürnberg)
- Benachrichtigungen werden nach 3 Tagen automatisch gelöscht
Anmeldeformular
- Nationalität: Suchbares Dropdown mit Favoriten (CH, DE, FR, AT, IT) + alle Länder
- Handynummer: Landesvorwahl-Auswahl mit allen Ländern (Standard +41 CH)
- Basketball-Beiträge: Aktiv Erwachsene, Junioren U18, Passiv, Familie
- Basketball-Lizenz: OTR 1, OTR 2, OTN Dropdown
- Swiss Basketball PDF-Dokumente mit automatischer Vorbefüllung
- Anrede wird automatisch vom Geschlecht abgeleitet
Sicherheit
- pdf-lib selbst gehostet (vorher unpkg CDN ohne SRI)
- Dateityp- und Grössenvalidierung vor Upload (JPG/PNG/WebP/PDF, max 10 MB)
- Turnstile CAPTCHA-Token wird bei fehlgeschlagenem Absenden zurückgesetzt
Anmeldeformular
- Neues einheitliches Anmeldeformular für Volleyball, Basketball und Passivmitglieder — ersetzt ClubDesk-Formular + Google Forms
- Admin-Tab «Anmeldungen» mit Statusfilter, Detail-Modal, Genehmigen/Ablehnen
- ClubDesk CSV-Export aus dem Admin-Bereich
- Basketball PDF-Vorbefüllung (Lizenzantrag, Player's Self Declaration, National Team Declaration)
- Datei-Upload für Ausweiskopien mit Download + Auto-Löschung im Admin
- Bestätigungs-E-Mails bei Anmeldung (sportartspezifisch)
- Admin-Benachrichtigung bei jeder neuen Anmeldung
- Datenschutzhinweis mit Einwilligungs-Checkbox (90-Tage Auto-Löschung)
- Automatischer Lösch-Flow in Directus — täglicher Cron löscht Anmeldungen + Dateien nach 90 Tagen
Backend-Migration
- Komplette Migration von PocketBase zu Directus API-Backend
- Neue modulare Datenabfrage — jede Seite lädt nur was sie braucht
- Admin-Bereich nutzt jetzt Directus REST statt PocketBase SDK
- 60 Dateien (Teamfotos, News-Bilder, Sponsor-Logos) zu Directus migriert
Testing
- Umfassende Test-Suite: Vitest (Unit) + Playwright (E2E), 170 Tests
- GitHub Actions CI-Pipeline bei Push auf dev/prod
Fehlerbehebungen
- Feedback-Formular Turnstile-Validierung behoben
- Fehlende EN-Übersetzungsschlüssel ergänzt
- Kalender und Leaflet-Karte: Overflow-Probleme behoben
- Theme-Toggle und Sponsor-Karussell: Funktion auf allen Seiten
Website
- Astro 6 statische Seite mit eigenem CSS Design System, zweisprachig (DE/EN)
- Directus API Backend, Hetzner Hosting (Rechenzentrum Nürnberg)
Teams, Spiele & Kalender
- Dynamische Team-Seiten mit Live-Daten (Spiele, Rangliste, Kader, Training, Fotos)
- Aufstiegs-/Abstiegsfarben in der Volleyball-Rangliste, Akkordeon-Navigation (Damen/Herren/Nachwuchs)
- Spiel-Modal mit Sätzen, Schiedsrichtern, Spielort. Scoreboard mit Absolut/Pro-Spiel Umschaltung
- Kalender-Raster mit Event-Tooltips
Feedback & Admin
- Feedback-Formular (Bug/Feature/Feedback) mit Turnstile CAPTCHA, Screenshot-Upload und automatischer GitHub-Issue-Erstellung
- Admin-Bereich mit Glassmorphism-Login, Passwort-Sichtbarkeit, Dark/Light Mode
Inhalt
- Geschichte mit Leaflet-Karte, Scorer-Kurs Ressourcen, Reglemente mit SVRZ-Einbettungen
- Impressum, Datenschutz, Sponsoren-Seite
Was ist neu v3.12.0
Changed
- Single-URL addresses: every page now has one address — the language is switched right in the browser (top right) instead of via separate
/de/and/en/links. Existing links and bookmarks keep working (automatic redirect)
Fixed
- Recent results – basketball games: basketball games incorrectly showed the volleyball icon and no team name. They now show the correct basketball icon and the team name
Fixed
- Admin tabs unreachable on mobile: the section tabs (news, events, registrations, sponsors, scorer courses, mixed turnier, …) overflowed off-screen with no way to reach them on phones. The tab bar is now a horizontally-scrollable sticky navbar — swipe sideways to reach every section, and it stays pinned to the top while you scroll
Fixed
- Scorer course start time: the English course on 08.07.2026 now starts at 19:00 (was 19:30); end stays 21:30, so the calendar event covers a 2.5-hour block
- German scorer course: time cleared back to blank — date and time now show as to-be-announced (TBD) until confirmed
Added
- Admin quick-access lock: a discreet padlock icon now sits next to the language toggle (top-right on desktop, at the top of the mobile menu) and links straight to the admin login — no more hunting for the hidden footer link
- Hero sport buttons refreshed: the Volleyball and Basketball buttons on the homepage now feature crisp sport icons (volleyball, basketball), cleaner gradients (volleyball: KSCW blue with a Mikasa-gold accent, basketball: warm orange gradient with a top highlight), and the icon tilts slightly on hover
- Both effects respect
prefers-reduced-motion
Added
- Sparkles hero on the sport pages: a subtle swarm of upward-drifting twinkles now floats across the volleyball and basketball landing heroes — gold for volleyball, orange for basketball. Pauses automatically when scrolled out of view
- Tracing beam on "About us": from 1280 px viewport width upward, a vertical blue-to-gold bar runs along the left side of the page content and fills in as you scroll — a pulsing gold dot marks the top
- Both effects respect
prefers-reduced-motion
Added
- Cursor spotlight on cards: news and event cards on the homepage now show a soft gold spotlight that follows the mouse cursor — gives the overview real depth
- 3D tilt on team cards: all team cards (volleyball & basketball) gently tilt toward the cursor on hover (max. 6° on each axis). Subtle but lively. Unchanged on touch devices
- Both effects respect
prefers-reduced-motion
Added
- Hero animations on the homepage: drifting blue/gold radial glows behind the hero, a subtle gold shimmer sweeping through the "KSC Wiedikon" title, and the sport buttons now pulse in their respective sport colors on hover — all pure CSS, no extra JavaScript
- Scroll progress bar: a thin blue-to-gold bar at the very top of the viewport now shows how far down the current page you've scrolled
- Softer section reveals: new variant that fades sections in with a gentle blur (not just opacity) as they enter the viewport
- Livelier number counters: the counting statistics (e.g. on "About us") now get a brief gold glow while they animate up
- All new animations respect
prefers-reduced-motion— users who have reduced motion enabled in their OS see the page completely still
Added
- Admin – per-user section permissions: managers now see a new "Admin" tab in the admin area. There you can choose, per Website Admin, which sections (News, Events, Registrations, Sponsors, Scorer Courses, Mixed Tournament) that person can see and edit — with real backend permission checks (not just UI hiding)
Fixed
- Scorer course "Add to calendar": the link now works on mobile too. Instead of an `.ics` file, it opens Google Calendar's event-creation form pre-filled with title, date/time and venue — the "Termin nicht gefunden" error after Google login is gone
- Admin – birthdate display: birthdates now render in Swiss `dd.mm.yyyy` format (no time component), instead of the raw ISO string with timezone
- Admin – "Registrations" export: the export now produces tab-separated files (`.tsv`) instead of comma-separated. Addresses containing commas no longer break the import
Added
- Scorer course "Add to calendar": every course now has a button (with a calendar icon) that downloads an `.ics` event with the title, date/time, duration and venue. The sign-up button got an icon too
- Venue on the course card: in-person courses now show the address (KSC Wiedikon, Goldbrunnenstrasse 80, 8055 Zürich) directly on the card
Changed
- Scorer course sign-up: the sign-up form is no longer shown as a cramped embedded frame inside the page. A clear button now opens the form full-screen in a new tab — much better on mobile
Fixed
- Admin – Active toggle: the label and switch were stuck together; they now sit correctly on the left and right with spacing between them
Changed
- Contact form team dropdown: only lists teams that are currently open to new players. Closed teams are no longer selectable. Pre-selecting a team via the team-page button still works and the dropdown remains changeable
Changed
- Team contact button: the "Get in touch" button on team pages now opens the central contact form with sport and team pre-filled, instead of opening an email with visible coach and TR addresses. Delivery happens server-side — recipient addresses are no longer exposed in the browser. Email subject: "Contact [Team]" (EN) or "Kontakt [Team]" (DE), based on the language of the originating page
Fixed
- Board page on mobile: org chart now renders as a fishbone — President → Vice → central spine with TKs on the left and Kassier/Aktuar on the right, Beisitz centered at the bottom. All cards share the same width and height
- Recent results / upcoming games: long team chips no longer push the table off-screen on mobile (chips wrap at word boundaries). On desktop the chip moved to its own row beneath each game, giving the matchup column more breathing room
- Games table on mobile: each row now stacks as date+time / home vs away / score, with each score centered under its respective team. Long team names wrap instead of being truncated
- Scoreboard on mobile: metric label sits on its own line above the average + leading team so the team chip column stops being squeezed character-by-character
Changed
- Board page: redesigned as a hierarchical org chart (President → Vice → 5 Ressorts) with CSS-drawn connector lines. Each card shows role and name. Stacks on mobile. Data updated to the 2026/27 board
New
- Event signups: events can now host a signup form. Calendar shows an "Sign up" button with a live count. Admins paste the form URL in
/adminand can view all responses as a table or one-click CSV export - Self-hosted OpnForm at
forms.kscw.ch: replaces the ClubDesk-hosted signup pages that will break after the kscw.ch migration. KSCW-branded (color, logo) with weekly auto-update against upstream - Trial trainings on team pages: teams open for new players now show their next Probetrainings (date · time · hall) right next to the "Get in touch" CTA
- Language preference remembered: clicking EN once routes future visits to the English site automatically.
kscw.chstill defaults to German
Security
- Dependencies upgraded — cleared 4 security advisories (Astro XSS, Vite path traversal, defu prototype pollution, PostCSS XSS)
News
- External links are no longer shown in the public news view — ticket and action links are reserved for Wiedisync (members area). Articles with links now display a CTA pointing members to the Wiedisync login
- Justified alignment with automatic hyphenation is now the default. Admin per-paragraph overrides are honored
- Fixed empty news view — a redundant filter caused 403 errors from Directus (homepage, news list, RSS feed)
Legal
- Privacy Policy & Imprint: Added Hetzner hosting section (Nuremberg datacenter)
- Notifications auto-deleted after 3 days
Registration Form
- Nationality: Searchable dropdown with favorites (CH, DE, FR, AT, IT) + all countries
- Phone: Country code selector with all countries (default +41 CH)
- Basketball fees: Active Adults, Juniors U18, Passive, Family
- Basketball licence: OTR 1, OTR 2, OTN dropdown
- Swiss Basketball PDF documents with auto pre-fill from form data
- Salutation auto-derived from gender selection
Security
- Self-hosted pdf-lib (was unpkg CDN without SRI)
- Client-side file type + size validation before upload (JPG/PNG/WebP/PDF, max 10 MB)
- Turnstile CAPTCHA token reset on failed submission
Registration System
- Unified registration form for Volleyball, Basketball and Passive memberships — replaces ClubDesk form + Google Forms
- Admin "Registrations" tab with status filters, detail modal, approve/reject workflow
- ClubDesk CSV export from admin panel
- Basketball PDF pre-fill (licence application, Player's Self Declaration, National Team Declaration)
- File uploads for ID copies with download + auto-delete from admin
- Sport-specific confirmation emails on registration
- Admin notification email on each new registration
- Privacy notice with consent checkbox (90-day auto-deletion)
- Auto-deletion Flow in Directus — daily cron deletes registrations + files after 90 days
Backend Migration
- Complete migration from PocketBase to Directus API backend
- New modular data fetching — each page loads only what it needs
- Admin panel now uses Directus REST instead of PocketBase SDK
- 60 files (team photos, news images, sponsor logos) migrated to Directus
Testing
- Comprehensive test suite: Vitest (unit) + Playwright (E2E), 170 tests
- GitHub Actions CI pipeline on push to dev/prod
Bug Fixes
- Feedback form Turnstile validation fixed
- Missing EN translation keys added
- Calendar grid and Leaflet map: overflow issues fixed
- Theme toggle and sponsor carousel: working across all pages
Website
- Astro 6 static site with custom CSS design system, bilingual (DE/EN)
- Directus API backend, Hetzner hosting (Nuremberg datacenter)
Teams, Games & Calendar
- Dynamic team pages with live data (games, rankings, roster, training, photos)
- Promotion/relegation color bands on volleyball rankings, accordion navigation (Women/Men/Youth)
- Game modal with sets, referees, venue. Scoreboard with Absolute/Per-Game toggle
- Calendar grid with event tooltips
Feedback & Admin
- Feedback form (Bug/Feature/Feedback) with Turnstile CAPTCHA, screenshot upload, automatic GitHub issue creation
- Admin area with glassmorphism login, password visibility toggle, dark/light mode
Content
- History page with Leaflet map, scorer course resources, regulations with SVRZ embeds
- Imprint, Privacy Policy, Sponsors page