v1.7
Květen 2026
Aktuální
- NOVÉ Skupiny hráčů (🔢) — nová stránka pro sestavení startovních skupin pro turnaje mimo iDiscgolf
- NOVÉ Náhodné rozdělení hráčů do skupin pomocí crypto.getRandomValues — stejný přístup jako losovačka
- NOVÉ Nastavení počtu skupin a maximálního počtu hráčů ve skupině (2–8)
- NOVÉ Drag & drop — hráče lze přetahovat mezi skupinami i do/z čekárny
- NOVÉ Čekárna — hráči bez skupiny seřazení podle kategorie ve sloupcích vedle sebe
- NOVÉ Skupiny lze povolit při vytvoření nebo editaci turnaje — tlačítko 🔢 Skupiny se v registraci zobrazí jen pro turnaje kde je povoleno
- NOVÉ Tisk skupin — pouze jména hráčů centrovaná, bez ratingu a kategorií
- NOVÉ Tlačítko Reset — vrátí všechny hráče do čekárny s potvrzovacím dialogem
- ZLEPŠENÍ Skupiny zahrnují Přítomné i Registrované hráče — vynechají jen Nepřítomné a Waiting list
- ZLEPŠENÍ Auto-save po každé změně (drag & drop, generování, reset) — toast "Ukládám..." → "✓ Uloženo" zeleně
- ZLEPŠENÍ Badge ✈️ Flighty přejmenován na 🔢 Skupiny — letadlo nedává smysl pro diskgolf
- ZLEPŠENÍ Karta turnaje zobrazuje badge 🔢 Skupiny pokud jsou povoleny
- ZLEPŠENÍ Přidána kategorie MA0 do všech míst (filtr, modal, badge, parser iDiscgolfu)
- BACKEND Worker v2.6 — nové akce get-flights a save-flights, flights_enabled v create-turnaj a update-turnaj
- DATABÁZE Nová tabulka flights (turnaj_id, data, updated_at) — skupiny uloženy jako JSON per turnaj
- DATABÁZE Migrace tabulky turnaje — přidán sloupec flights_enabled (INTEGER)
v1.6
Květen 2026
Stabilní
- NOVÉ Nastavení portálu v UI — záložka ⚙️ Nastavení v administraci (jen pro adminy) umožňuje přizpůsobit portál bez zásahu do kódu
- NOVÉ Konfigurovatelný název ligy, zkratka, název portálu a sezóna
- NOVÉ Tři nezávislé barvy — header portálu, primární tlačítka a pozadí přihlašovací stránky — každá nastavitelná zvlášť
- NOVÉ URL loga — klub může nahrát vlastní logo které se zobrazí na přihlašovací stránce místo textové zkratky
- NOVÉ Live náhled ve dvou sloupcích — vlevo header portálu, vpravo miniatura přihlašovací stránky včetně loga a barev
- ZLEPŠENÍ Barva headeru a primárních tlačítek se aplikuje dynamicky na všech stránkách po načtení z KV
- ZLEPŠENÍ config.js slouží jako okamžitý fallback — stránka se zobrazí správně i před načtením konfigurace z API
- ZLEPŠENÍ config.js rozšířen o headerColor, buttonColor, loginBgColor a logoUrl
- BACKEND Worker v2.5 — get-portal-config (veřejná akce, volá se před přihlášením) a save-portal-config (jen admin, validace všech polí)
- DATABÁZE Konfigurace uložena v Cloudflare KV pod klíčem portal_config — žádná DB migrace
- AUDIT Každá změna konfigurace portálu je zaznamenána v audit logu včetně výčtu změněných polí
v1.5
Květen 2026
Stabilní
- NOVÉ Třístavové zaplaceno — ✗ Nezaplaceno / ✓ Zaplaceno / ? K ověření. Hodí se na situace, kdy hráč tvrdí že zaplatil přes noc, ale platba ještě nedorazila
- NOVÉ Cyklování v tabulce — kliknutím na zaplaceno se postupně mění ✗ → ✓ → ? → ✗
- NOVÉ Filtr "K ověření" v registraci — jedním klikem zobrazí všechny hráče, jejichž platbu je potřeba zkontrolovat
- NOVÉ Počítadlo "K ověření" ve stats baru — zobrazí se jen pokud jsou nějaké platby k ověření (oranžová barva)
- NOVÉ Karta "K ověření" v bilanci — samostatný přehled částek, které čekají na ověření platby. Tyto částky se nepočítají do reálně vybráno
- NOVÉ Nový sloupec "K ověření" v tabulce bilance + v CSV exportu
- NOVÉ Import hráčů přímo z iDiscgolf.cz — tlačítko "📥 Načíst z iDiscgolf" v Import/Export modalu stáhne registrované hráče (jména, nicky, iDG Rating, kategorie, ČADG, status, zaplaceno) z oficiální stránky turnaje
- NOVÉ URL turnaje na iDiscgolf.cz se ukládá k turnaji v DB — stačí zadat jednou při vytvoření, pak je import jedno kliknutí
- NOVÉ Editace existujícího turnaje — tlačítko "Upravit" na kartě turnaje umožní změnit název, zkratku, datum, místo i URL iDiscgolf
- NOVÉ Volba při importu — pokud už jsou v registraci hráči, modal nabídne "Nahradit vše" nebo "Přidat k existujícím" (duplicity podle jména přeskočí)
- NOVÉ Badge "iDG ✓" na kartě turnaje signalizuje že má URL iDiscgolf nastavené
- ZLEPŠENÍ Modal úpravy hráče — checkbox "Zaplaceno" nahrazen selectem se třemi hodnotami pro intuitivnější ovládání
- ZLEPŠENÍ Při zaškrtnutí "Zaplaceno předem 🔒" se select automaticky uzamkne na ✓ Zaplaceno — zachována konzistence dat
- ZLEPŠENÍ Řazení podle "Zaplaceno" má logické pořadí: Nezaplaceno → K ověření → Zaplaceno
- ZLEPŠENÍ Karta "K ověření" v bilanci se zobrazuje jen když má smysl — nezavazí když všichni mají platbu vyřízenou
- ZLEPŠENÍ Přeskládané sloupce v registraci — Status, Zaplaceno a AcePol nyní hned za jménem hráče pro lepší přehled při odbavování na turnaji
- ZLEPŠENÍ Tlačítka "+ Přidat hráče" a "Vymazat vše" přesunuta doprava — oddělená od filtrů
- ZLEPŠENÍ Nové tlačítko "✕ Smazat filtr" — jedním klikem zruší všechny filtry (hledání, kategorie, status, zaplaceno)
- ZLEPŠENÍ Hráči zaplacení přes iDiscgolf se importují jako "Zaplaceno předem" (se zámkem 🔒) — protože platba online je platba předem
- ZLEPŠENÍ Po importu z iDiscgolfu se Import modal automaticky zavře a výsledek se zobrazí jako toast — uživatel rovnou vidí novou tabulku
- BEZPEČNOST Worker stahuje pouze z domény idiscgolf.cz (validace URL přes regex) — žádné SSRF na jiné servery, URL pochází z DB, ne od klienta
- BEZPEČNOST Parser striktně používá prefix gvRegistrovani_ — bere data jen z hlavní registrační tabulky, ne z dalších tabulek na stránce (waitlist, výsledky)
- BACKEND Worker v2.3 — nové akce update-turnaj a fetch-idiscgolf-players, parser HTML stránky iDiscgolf (jména, nicky v uvozovkách, kategorie, ČADG ✓, status, zaplaceno ✓)
- BACKEND Worker v2.4 — nový helper normalizeZaplaceno() bezpečně převede vstup (boolean, string, číslo) na DB hodnotu 0/1/2
- DATABÁZE Sloupec zaplaceno v tabulce players nyní ukládá 3 stavy: 0 (✗), 1 (✓), 2 (?) — bez nutnosti migrace, INTEGER sloupec přijme i hodnotu 2
- DATABÁZE Migrace tabulky turnaje — přidán sloupec idiscgolf_url (TEXT)
- AUDIT Logování všech nových akcí — vytvoření/úprava turnaje s URL, načtení hráčů z iDiscgolfu (počet hráčů, název turnaje)
v1.41
Květen 2026
Stabilní
- NOVÉ Status "Waiting list" — pro čekací listinu, oranžová barva, součást cyklu kliknutím (Reg → Přít → Nepřít → Waiting → Reg)
- NOVÉ Poznámka u hráče — volitelný text (max 500 znaků) viditelný přímo v tabulce ve vlastním sloupci
- NOVÉ Inline editace poznámky — klik na buňku otevře editaci, Enter/blur uloží, Esc zruší
- NOVÉ Vyhledávání hráčů hledá i v textu poznámky
- ZLEPŠENÍ Losovačka přeskakuje hráče se statusem "Nepřítomen" i "Waiting list" — losují se jen Registrovaní a Přítomní
- ZLEPŠENÍ Sjednocené volání API přes config.js — odstraněna hardcoded URL v index.html a losovacka.html
- ZLEPŠENÍ Bilance: feedback při ukládání cen — toast "Ukládám / ✓ Uloženo / ❌ Chyba" místo tichého selhání
- ZLEPŠENÍ Import dialog zobrazí stav "Ukládám..." a po dokončení potvrzení nebo chybu — uživatel ví, jestli se data skutečně uložila
- ZLEPŠENÍ Optimalizace šířek sloupců v registraci — přehlednější tabulka i s přidaným sloupcem poznámka
- ZLEPŠENÍ Odstraněny zbytkové statusy "Čekající" a "Zrušen" z filtru i edit modalu
- OPRAVA Import hráčů z JSON nyní čeká na uložení na server (await) — po refreshi data zůstávají
- OPRAVA Stejná oprava při ukládání jednotlivého hráče a mazání — odstraněn race condition mezi UI a serverem
- BACKEND Worker v2.2 — rozšířen ALLOWED_STATUS o "Waiting list", validace pole poznamka (max 500 znaků), update-player přijímá poznamka
- DATABÁZE Migrace tabulky players — přidán sloupec poznamka (TEXT)
v1.4
Duben 2026
Stabilní
- NOVÉ Export registrace do PDF — tisk seznamu hráčů s respektováním filtrů
- BEZPEČNOST Oprava XSS — escHtml/esc nyní escapuje i apostrofy a uvozovky
- BEZPEČNOST Ochrana proti CSV injection při exportu — formule (=, +, -, @) se ukládají jako text
- BEZPEČNOST Automatické odhlášení při vypršení tokenu — redirect na login místo chybových hlášek
- BEZPEČNOST Token invalidation — při změně hesla nebo role se automaticky odhlásí všechny aktivní session
- BEZPEČNOST Rate limiting kombinuje IP + uživatelské jméno — útočník nemůže obejít limit rotací jednoho z nich
- BEZPEČNOST Ochrana posledního admina — nelze smazat ani snížit roli, pokud je v systému jen jeden admin
- BEZPEČNOST Validace vstupů při importu hráčů a úpravě uživatele — sanitace + whitelist hodnot
- BEZPEČNOST Validace cen v bilanci — kontrola rozsahu (0–100 000 Kč) a typu
- BEZPEČNOST Timing-safe porovnání hashů hesel — ochrana proti timing útokům
- BEZPEČNOST Ochrana proti username enumeration — neexistující uživatel má stejnou odezvu jako špatné heslo
- BEZPEČNOST CORS omezeno na produkční doménu místo wildcardu
- ZLEPŠENÍ Statusy hráče sjednoceny: Registrovaný / Přítomen / Nepřítomen / Odhlášen (Čekající a Zrušen odstraněny)
- ZLEPŠENÍ Losování přes crypto.getRandomValues — férovější a nepředvídatelné
- ZLEPŠENÍ Sjednocená konfigurace workeru (TTL, rate limity) v jednom CONFIG bloku
- ZLEPŠENÍ Logování chyb v audit logu a cleanup tokenů — usnadní troubleshooting
- ZLEPŠENÍ Audit log nově sleduje i změny cen v bilanci a archivaci turnajů
- ZLEPŠENÍ Debounce při psaní cen v bilanci — uložení až po dopsání místo po každém znaku
- ZLEPŠENÍ Sjednocené chybové hlášky — toast místo browser alert()
- OPRAVA Sanitace vstupů u archivace a vytváření turnajů (datum, místo)
- OPRAVA Odstraněn dead code v losovačce
v1.3
Duben 2026
Stabilní
- NOVÉ Audit log — záznamy všech aktivit uživatelů
- NOVÉ Changelog — přehled verzí portálu
- NOVÉ Zkratka turnaje — zobrazuje se v přehledu uživatelů
- NOVÉ Přehled uživatelů rozdělen do 3 sloupců (Admini / Ředitelé / Diváci)
- NOVÉ Export bilance — CSV a Tisk/PDF
- BEZPEČNOST Validace vstupů na backendu — kategorie, status, délky polí
- ZLEPŠENÍ Potvrzení hesla při vytváření i editaci uživatele
- ZLEPŠENÍ Zobrazení/skrytí hesla (👁) ve všech formulářích
- BEZPEČNOST Globální rate limiting přes Cloudflare KV — skutečné blokování brute force
- BEZPEČNOST Logování neúspěšných pokusů o přihlášení v audit logu
- BEZPEČNOST Token platnost zkrácena z 8 na 4 hodiny
v1.2
Duben 2026
Stabilní
- NOVÉ Role Divák — přístup pouze pro čtení
- NOVÉ Zamčení zaplaceno při zaplacenoPred — změna jen přes tužku
- NOVÉ Import hráčů — možnost "Přidat k existujícím" nebo "Nahradit vše"
- ZLEPŠENÍ Potvrzovací modaly — sjednocený design místo browser confirm()
- ZLEPŠENÍ Ikonky tužka/koš místo textových tlačítek u uživatelů
- OPRAVA Smazání turnaje a uživatele nefungovalo — opraveno
v1.1
Duben 2026
Stabilní
- NOVÉ update-player — klik na ✓/✗ ukládá jen jednoho hráče místo všech
- NOVÉ delete-player, delete-all-players — samostatné API akce
- ZLEPŠENÍ Sjednocení designu — header, tabulky, toolbar ve stylu bilance
- ZLEPŠENÍ Hover efekty na ✓/✗ a Status v tabulce
- ZLEPŠENÍ SVG ikona koše místo emoji 🗑
- BEZPEČNOST Rate limiting na login (10 pokusů / 15 minut)
- BEZPEČNOST Tokeny expirují po 8 hodinách
v1.0
Duben 2026
Stabilní
- NOVÉ Přechod na Cloudflare Workers + D1 databáze
- NOVÉ Klikatelné ✓/✗ pro Zaplaceno a AcePol přímo v tabulce
- NOVÉ Cyklování statusu: Registrovaný → Přítomen → Nepřítomen
- NOVÉ Losovačka s animací a historií vylosovaných
- NOVÉ Finanční bilance s nastavením cen
- BEZPEČNOST PBKDF2 hashování hesel
- BEZPEČNOST Role-based přístup (admin / ředitel)