- KO-Phasen fachlich sauber benannt:
- KO-Ansicht und Matchkarten zeigen jetzt offizielle Endphasenbezeichnungen (
Achtelfinale,Viertelfinale,Halbfinale,Finale). - Frühere große KO-Stufen bleiben als
Letzte 32,Letzte 64usw. statt künstlicher...finale-Labels benannt. - Blockiermeldungen für Vorgänger-Matches referenzieren dieselbe KO-Phase statt generischem
Runde <n>.
- KO-Ansicht und Matchkarten zeigen jetzt offizielle Endphasenbezeichnungen (
- Matchstart robuster und besser debugbar gemacht:
Match startennutzt jetzt einen testbaren Start-Flow mit strukturierter Schrittverfolgung.- fehlgeschlagene, noch nicht gestartete Lobbys werden vorsichtig per
DELETE /lobbies/{id}bereinigt. - bullMode-Validierungsfehler behalten den bestehenden Fallback auf
25/50, jetzt mit explizitem Debug-Nachweis. - Debug-Mode speichert ein kopierbares Matchstart-Protokoll im Tab
Einstellungenund stellt es zusätzlich über__ATA_RUNTIME.getDebugReport()bereit. - Matchstart wird bei doppelten Teilnehmernamen bereits in der UI als nicht API-tauglich blockiert.
- Auth-Fallback erweitert: wenn kein
Authorization-Cookie vorhanden ist, wird ein Access-Token ausautodarts_refresh_tokenviaPOST /auth/v1/refreshgeholt und gecacht. - zusätzlicher Auth-Fallback: wenn Cookie/Refresh fehlen, wird ein Bearer-Token aus laufenden
api.autodarts.io-Request-Headern erkannt und als Runtime-Cache genutzt. - Auth-Header-Capture läuft jetzt über eine isolierte Page-Bridge statt direkter Userscript-Prototyp-Patches, damit die reguläre Autodarts-Matchanlage stabil bleibt.
- Neue API-Dokumentation
docs/autodarts-api-capabilities.mdmit Endpoint-Matrix, Risikoklassen und Probe-Prozess ergänzt. - Versioniertes Console-Probe-Skript
docs/ata-api-probe-v2.jsergänzt, inklusive Request-Body-Key-Erfassung für Capability-Reports. - Probe-Sicherheitsnetz ergänzt: keine Tokenwerte, keine Query-Parameterwerte, nur strukturelle Body-Key-Pfade im Report.
- Troubleshooting ergänzt:
GET /gs/v0/matches/{id}/challengemit404als beobachteter, nicht blockierender App-Call dokumentiert; zusätzlicher Hinweis zu sensitiven SSO-Parametern in Roh-Logs. - API-Dokumentation mit Internet-Recherche erweitert: quellenmarkierte Gesamtliste (
A/B/C/P-Confidence), zusätzliche Community-Endpunkte (/matches/{id}/corrections,PATCH /matches/{id}/throws,/matches/{id}/undo,/lobbies/{id}/players/by-index/{index},/as/v0/users/{id}/stats/{variant}) und WebSocket-Hinweis/ms/v0/subscribe. - neuer State-of-the-art Leitfaden
docs/api-documentation-playbook.mdergänzt (OpenAPI/AsyncAPI-Zielbild, RFC-9457-Fehlermodell, Governance-Checkliste und Sicherheitsregeln für API-Dokumentation).
- Runtime-Update-Pfad aus
autodarts-xconfigtechnisch übernommen:- neue GitHub-Update-Erkennung im Tab
Einstellungenmit gecachtem Versionsstatus, TTL und manuellem Recheck .meta.js-Artefakt für leichtgewichtigen Versionsabgleich ergänzt- verfügbare Updates werden zusätzlich am Sidebar-Menüeintrag
xLokales Turniermarkiert - bei aktivem Loader reicht ein Reload; bei direkter Runtime-Installation öffnet der Assistent die veröffentlichte Userscript-Datei
- neue GitHub-Update-Erkennung im Tab
- Regelhärtung für DRA-konforme Entscheidungszeitpunkte:
- Tie-Break-Profil ist nach dem ersten abgeschlossenen Gruppen-/Liga-Ergebnis gesperrt (
DRA 6.16.1). - Draw-Lock-Entsperren wurde auf expliziten Promoter-Override mit Bestätigung und Zeitfenster umgestellt (
DRA 6.12.1).
- Tie-Break-Profil ist nach dem ersten abgeschlossenen Gruppen-/Liga-Ergebnis gesperrt (
- KO optional um Platz-3-Spiel erweitert:
- neues Turnierfeld
enableThirdPlaceMatch(Defaultfalse) fürmode = ko - Default-Verhalten unverändert: Single Elimination mit genau einem Finale
- bei aktivierter Option: Halbfinal-Verlierer spielen um Platz 3, ohne Einfluss auf den Champion-Pfad
- bei Bye-/Edge-Szenarien wird kein kaputter Placement-Pfad erzeugt
- Bracket-Payload setzt bei vorhandenem Platz-3-Spiel
consolationFinalund trennt Hauptbaum/Bronze pergroup_id - Legacy-Turniere ohne neues Feld bleiben kompatibel
- neues Turnierfeld
- Doppel-KO-Modus ergänzt:
- neuer Modus
double_komit Limit2..32 - Winners Bracket, Losers Bracket und Finals werden deterministisch aus demselben Seed-/Open-Draw-Modell wie KO aufgebaut
- Grand Final ist konfigurierbar: Reset-Finale falls nötig (Default) oder einzelnes Grand Final
- Bracket-Payload nutzt
double_elimination; statischer Fallback gruppiert Winners, Losers und Finals - Dauerprognose berücksichtigt
2n - 1Matches mit Reset-Maximum bzw.2n - 2beim Einzel-Grand-Final
- neuer Modus
- History-Import robuster gemacht:
- Legs-Abweichungen werden nicht mehr still normalisiert, sondern liefern zuerst
requires_confirmation. - Bestätigung ist signaturgebunden und zeitlich begrenzt; ungültige/abgelaufene Bestätigungen werden abgelehnt.
- Host-Erkennung auf
/history/matches/{id}verschärft (kein Fallback auf beliebige erste Tabelle).
- Legs-Abweichungen werden nicht mehr still normalisiert, sondern liefern zuerst
- Autodetect-Routen eingeschränkt:
- DOM-Autodetect arbeitet nur noch auf
/matches/{id}und/lobbies/{id}.
- DOM-Autodetect arbeitet nur noch auf
- Doku synchronisiert:
- Open Draw überall konsistent als deterministische Reihenfolge beschrieben.
- Compliance-Matrix und Regeltexte auf neue Guard-/Override-Logik aktualisiert.
- README um klickbare Statusmeldungs-Referenz für Runtime-Leiste, API-Sync und History-Import ergänzt.
- Tests erweitert:
- Domain-Tests für Tie-Break-Lock und Draw-Lock-Override.
- Unit-Test für README-Statuslink-Mapping ergänzt.
- Runtime-Selftests für Confirmation-Flow, Host-Guards und Route-Guards.
- Preset-Logik fachlich korrigiert:
- neues Default-Preset
PDC European Tour (Official)(KO,Best of 11,501,Straight In,Double Out,Bull 25/50) - bisheriges irreführendes
PDC Standardwird nicht mehr als offizielles Preset geführt - Legacy-ID
pdc_standardwird kompatibel aufPDC 501 / Double Out (Basic)normalisiert Max Runden 50wird in UI/Doku explizit als technisches AutoDarts-Limit beschrieben, nicht als PDC-Regel
- neues Default-Preset
- Turnierformular für Presets erweitert:
- Auswahlfeld +
Preset anwendenstatt hart verdrahtetem Einzelbutton - Preset-Status bleibt konsistent und springt bei manuellen Änderungen sauber auf
Individuell - Hinweis ergänzt, dass
PDC World Championshipwegen fehlender Set-Unterstützung bewusst nicht als offizielles Preset enthalten ist
- Auswahlfeld +
- QA für Presets ergänzt:
- Schema-Selfcheck für alle Preset-Definitionen
- Golden-Test für
PDC European Tour (Official) - Runtime-Selbsttest für Preset-Auswahl + Apply im Formular
- Turnierzeit-Prognose nachkalibriert:
- Zeitprofil beeinflusst jetzt auch Match-/Phasenübergänge statt nur die Leg-Geschwindigkeit
- Score-Faktoren für kurze und lange X01-Distanzen näher an externen Richtwerten ausgerichtet
- neue Dokumentation
docs/tournament-duration.mdmit Formel, Parametern und Benchmark-Basis
- Turnierzeit-Prognose um Multi-Board-Scheduling erweitert:
- neues Eingabefeld
Boards für Zeitprognoseim Turnierformular (1..32) - Berechnung nutzt jetzt einen abhängigkeitssensitiven Scheduler (Board-Limit, Spieler-Konflikte, KO-/Phasenabhängigkeiten)
- Ausgabe ergänzt um Match-Wellen, Peak-Parallelität und Board-Auslastung
- Zeitprofil-Steuerung von
Einstellungendirekt in den TabTurnierzur Prognose verschoben - Prognose inkl. Parameter kann direkt ein-/ausgeblendet werden
- bei aktivem Turnier zusätzliche laufende Restzeit-Prognose auf Basis des Spielfortschritts ergänzt
- laufende Restzeit-Prognose auf statische Matchplan-Restzeit umgestellt (ohne Pace-/Uhrzeitfaktor, Neuberechnung nur bei Fortschritt)
- neues Eingabefeld
- Turnierzeit-Prognose ergänzt:
- neue pure Domain-Datei
src/domain/tournament-duration.js - Live-Schätzung in der Turnieranlage unter
Teilnehmer - Berechnung berücksichtigt Modus, Teilnehmerzahl,
Best of,Startpunkte,In,Out,Bull-off,Bull-ModusundMax Runden - Ausgabe als Hauptwert plus realistische Spannweite
- neue pure Domain-Datei
- Neue globale Einstellung:
settings.tournamentTimeProfilemitfast | normal | slow- Select im Tab
Turnierzur Kalibrierung lokaler Spielgeschwindigkeit
- Tests und Doku erweitert:
- neue Domain-Unit-Tests für Matchanzahl und Zeitlogik
- README, Architektur- und Codebase-Dokumentation aktualisiert
- DRA-Compliance-Hardening umgesetzt:
- Storage auf
schemaVersion: 4angehoben. - Regelmodell auf
tournament.rules.tieBreakProfileumgestellt:promoter_h2h_minitablepromoter_points_legdiff
- Legacy-Mapping ergänzt:
dra_strict -> promoter_h2h_minitablelegacy -> promoter_points_legdiff
- Storage auf
- KO-Engine verfeinert:
- vollständige Match-Materialisierung über alle KO-Runden
- Freilose als explizite Bye-Matches (
meta.resultKind = bye) - zukünftige KO-Slots bleiben als nicht editierbare offene Paarungen sichtbar
- Draw-Lock eingeführt:
- neues Feature-Flag
settings.featureFlags.koDrawLockDefault(Standardtrue) - neues Turnierfeld
tournament.ko.drawLocked - neues Turnierfeld
tournament.ko.placement - UI-Toggle für aktives KO-Turnier in den Einstellungen
- neues Feature-Flag
- Bracket-Payload korrigiert:
- Vollbaum-Darstellung auch bei frühem Turnierstand
- Bye-/Completion-Kennzeichnung konsistent
- QA erweitert:
- neue Regelcheck-Marker für KO-Materialisierung, Bye-Handling, Draw-Lock und Promoter-Tie-Break-Profile
- Selftests um KO-Struktur-, Draw-Lock- und Profilszenarien erweitert
- Neue Compliance-Dokumentation:
docs/dra-compliance-matrix.md
- History-Import gehärtet:
- Ergebnis wird bevorzugt in das bereits per
lobbyIdverknüpfte offene Turnier-Match geschrieben. - Namenszuordnung robust erweitert (Teilnamen/Varianten), falls Tabellenanzeige vom Turniernamen abweicht.
- Legs werden bei abweichenden Match-Settings sicher auf den Turniermodus normalisiert, damit das Ergebnis in
Ergebnisführunggespeichert wird. - Zusätzliche Selftests für History-Import ergänzt.
- Ergebnis wird bevorzugt in das bereits per
- Match-Statistik-Import überarbeitet:
- Floating-Shortcut unten rechts entfernt.
- Inline-Import auf
/history/matches/{id}visuell präsenter gestaltet. - Klick übernimmt Ergebnis primär direkt aus der Statistik-Tabelle (Spieler, Gewinner, Legs).
- API-Sync wird nur noch als Fallback genutzt, wenn die Tabelle nicht parsbar ist.
- Import priorisiert jetzt ein bereits verknüpftes Lobby-Match, um die Ergebnisführung sicher im richtigen Spiel zu aktualisieren.
- Namenszuordnung wurde toleranter gemacht (Teilename/Varianten).
- Legs werden bei abweichenden Match-Einstellungen kontrolliert auf den Turniermodus normalisiert.
- Ergebnisübernahme erweitert:
- neuer Inline-Button auf
/history/matches/{id}:Ergebnis übernehmen & Turnier öffnen - bestehender Floating-Shortcut bleibt als Fallback aktiv.
- neuer Inline-Button auf
- API-Sync robuster gemacht:
- Recovery kann offene Turnier-Matches auch ohne gespeicherte
lobbyIdüber API-Stats/Spielernamen wiederfinden - bei mehrdeutiger Zuordnung wird mit klarer Meldung abgebrochen (kein unsicheres Auto-Write).
- Recovery kann offene Turnier-Matches auch ohne gespeicherte
- Sync-Transparenz erhöht:
syncResultForLobbyIdunterstützttrigger(inline-history,floating-shortcut,background)- Rückgaben enthalten
reasonCode(not_found,ambiguous,pending,completed,auth,error) - zusätzliche
[ATA][api]-Logs für Trigger, Recovery-Kandidaten und Sync-Ausgang.
- Persistenz gehärtet:
- Recovery-Verknüpfung speichert sofort (mit Fallback auf Debounce), damit F5 die Zuordnung nicht verliert.
- Codebasis in Schichten aufgeteilt (
src/core,src/data,src/domain,src/infra,src/ui,src/bracket,src/runtime). - Build-Pipeline ohne npm/Node eingeführt:
- deterministischer Build via
scripts/build.ps1 - Reihenfolge über
build/manifest.json - CSS aus
src/ui/styles/main.csswird in das Bundle eingebettet.
- deterministischer Build via
- Storage auf
schemaVersion: 3angehoben. - Neues Turnier-Regelfeld:
tournament.rules.tieBreakMode(dra_strict | legacy)- Bestandsdaten werden auf
dra_strictmigriert.
- DRA-strikte Tie-Break-Logik umgesetzt:
- Punkte
- Direktvergleich (2 Punktgleiche)
- Teilgruppen-LegDiff (3+ Punktgleiche)
- Gesamt-LegDiff
- Gesamt-Legs+
- danach
playoff_required.
- Gruppen-zu-KO-Auflösung blockiert bei
playoff_required. - PDC-konforme Terminologie in der UI ergänzt:
Freilos (Bye)KO (Straight Knockout)Liga (Round Robin)Nächstes Match (Next Match).
- Diagnose-API ergänzt:
window.__ATA_RUNTIME.runSelfTests().
- Mehrstufige QA-Skripte ergänzt:
scripts/qa.ps1scripts/qa-encoding.ps1scripts/qa-regelcheck.ps1.
- Turnierformular (
Neues Turnier erstellen) visuell und strukturell optimiert:- kompakte Zwei-Zonen-Ansicht (Konfiguration links, Teilnehmer + Aktionen rechts), damit die Inhalte auf Desktop besser auf eine Bildschirmansicht passen
- Preset-Button verkleinert (
PDC Preset anwenden) und besser in die Formularlogik integriert - Feldreihenfolge angepasst (
Bull-offvorBull mode).
- Lokale Lobby-Härtung:
- Lobby ist nicht mehr wählbar im Formular
- API-Create setzt
isPrivatenun fest auftrue - interne Normalisierung erzwingt
lobbyVisibility = private.
- Turnierformular im Tab
Turnierauf 3-Spalten-Layout umgestellt, damit die X01-Einstellungen auf normalen Monitoren kompakter sichtbar sind. - X01-Preset-Handling umgebaut:
- Preset-Auswahlfeld entfernt
- neuer Button
PDC Preset anwendensetzt die PDC-Defaults direkt in die Formularfelder - manuelle X01-Änderungen markieren den Preset-Status automatisch als
Custom.
- Formularabhängigkeiten erweitert:
- bei
Bull-off = OffwirdBull moderead-only deaktiviert - Persistenz bleibt stabil durch Hidden-Fallback für deaktivierte Felder.
- bei
- Match-Create-Payload verfeinert:
bullOffModewird beim Lobby-Create auf Top-Level übertragen (wie inplay.autodarts.io).bullModebleibt gesetzt (mit Fallback), damit Matchstart nicht an Backend-Validierungen scheitert.
- Legacy-Startscores (
101,201) aus der X01-Auswahl und Sanitization entfernt.
- X01-Matchanlage für API-Start erweitert:
- Turnier-Neuanlage enthält jetzt X01-Parameter aus der Autodarts-Lobbyoberfläche:
- Startscore, In mode, Out mode, Bull mode, Bull-off, Max Runden, Lobby-Sichtbarkeit
- Spielmodus bleibt bewusst
Legsund wird ausBest-of LegsalsFirst to Nabgeleitet Match startenübernimmt diese Werte konsistent in den Lobby-Create-Payload.
- Turnier-Neuanlage enthält jetzt X01-Parameter aus der Autodarts-Lobbyoberfläche:
- PDC-Preset für Neuanlage eingeführt:
- Standard ist
PDC Standard(501, Straight In, Double Out, 25/50, Bull-off Normal, Max Rounds 50, Lobby privat) - optionaler
Custom-Modus für abweichende X01-Einstellungen.
- Standard ist
- Startscore-Optionen um die X01-Lobbywerte erweitert (
121, 170, 301, 501, 701, 901; Legacy101, 201bleibt import-/kompatibel). - UI-Transparenz verbessert:
- aktives Turnier zeigt die hinterlegten X01-Settings kompakt an.
- Match-Seiten-Shortcut hinzugefügt:
- auf
/lobbies/{id}und/matches/{id}erscheint ein Button fürErgebnis übernehmen & Turnier öffnen - Shortcut öffnet direkt den Tab
Spieleim Turnierassistenten.
- auf
- Gezielte manuelle Ergebnisübernahme pro Lobby-ID:
- Sync kann für genau ein Lobby-Match aktiv ausgelöst werden (statt nur passiv im Background-Polling).
- API-Sync robuster gemacht:
- Pending-Matches mit
auto.status=errorwerden nun ebenfalls erneut versucht - dadurch können temporäre Fehler ohne manuelles Zurücksetzen wieder in
started/completedübergehen.
- Pending-Matches mit
- Fehler-/Hinweislogik beim Sync entprellt:
- weniger wiederholte Fehlermeldungen bei gleicher Ursache.
- KO-Engine v2 eingeführt:
- Hybrid-Draw für neue KO-Turniere:
randomize ON->open_drawrandomize OFF->seeded
- PDC/DRA-konforme Bye-Verteilung über Standard-Seed-Placement
- Fehlerfall bei 9 Teilnehmern behoben (kein
Seed 1 vs Seed 2in Runde 1 mehr).
- Hybrid-Draw für neue KO-Turniere:
- Legacy-KO-Turniere werden beim Laden auf Engine v2 migriert:
- vor Migration wird automatisch ein Backup geschrieben (
ata:tournament:ko-migration-backups:v2).
- vor Migration wird automatisch ein Backup geschrieben (
- Match-Metadaten erweitert um
match.meta.resultKind:byekennzeichnet automatisch weitergeleitete Freilose.
- Tab
Spieleverbessert:- Freilose werden als eigener Status
Freilosangezeigt - Legs-Spalte zeigt bei Freilos nicht mehr ein reguläres
0:0.
- Freilose werden als eigener Status
- Persistenzschema auf
schemaVersion: 2angehoben (Storage-Key bleibt kompatibel:ata:tournament:v1). - Interne Struktur klarer getrennt in Datenhaltung, Turnierlogik und Präsentation (inkrementell in
dist).
- Teilnehmer-Limits auf regelbasierte, modusabhängige Grenzen umgestellt:
ko:2..128league:2..16groups_ko:4..16
- Validierung für Turniererstellung und Import auf die neuen Modus-Limits umgestellt.
- GUI-Hinweise im Tab
TurnierundEinstellungenerweitert, inklusive Link aufREADME.md#regelbasis-und-limits. - Dokumentation aktualisiert (
README.md,docs/architecture.md) mit Regelbasis und Begründung.
- Bracket-Renderer auf
brackets-viewer@1.9.0vereinheitlicht; GoJS-Anteil entfernt. - Bracket-iframe visuell auf Autodarts-Look angepasst (größere Schrift, bessere Proportionen, volle Breiten-/Scrollnutzung).
- Doppelte/unerwünschte interne Bracket-Überschrift ausgeblendet.
- KO-Payload defensiv gehärtet: Unbekannte Teilnehmer-IDs werden nicht mehr als valide Opponents übernommen.
- HTML-Fallback im Tab
Viewjetzt standardmäßig verborgen und nur bei Renderfehler/Timeout sichtbar. - Diverse UI-Texte korrigiert (u. a. Umlaute bei Fehlermeldungen).
- API-Halbautomatik umgesetzt:
- Matchstart per Button im Tab
Spiele(Match starten/Zum Match) - automatische Ergebnissynchronisierung über Autodarts-API für gestartete Matches
- Single-active-match-Regel (ein aktives gestartetes Match gleichzeitig).
- Matchstart per Button im Tab
- Persistenter Automationsstatus pro Match in
match.meta.auto(abwärtskompatibel). - Userscript-Metadaten erweitert um
GM_xmlhttpRequestund@connect api.autodarts.io. - Loader-Metadaten erweitert um
@connect api.autodarts.iofür API-Zugriffe im Loader-Kontext. - Settings-Text aktualisiert:
Automatischer Lobby-Start + API-Syncist jetzt funktional.
- Alle Loader- und Script-Metadaten auf das korrekte Repo
thomasasen/autodarts_local_tournamentumgestellt (namespace,downloadURL,updateURL, RAW-Quelle). - Menübezeichnung auf
xLokale Turnieregeändert. - Menüposition verbessert: bevorzugt direkt unter
Boards/Meine Boards(auch bei verschachtelter DOM-Struktur). - Klick-Handling gehärtet: Toggle wird bei frühem Klick über
ata:readynachgeholt, falls die Runtime noch nicht geladen war.
- Loader-Menüpunkt
Turnierauf robuste Sidebar-Erkennung umgestellt (analog zumxConfig-Muster mit Kandidaten-Scoring). - Stabilere Einfügeposition im Hauptmenü (bevorzugt hinter
Boards, sonst vor Profilbereich). - Responsives Label-Verhalten: blendet den Text bei schmaler Sidebar aus, Icon bleibt sichtbar.
- Neues Loader-Userscript mit RAW-Load + Cache-Fallback.
- Neues Haupt-Userscript mit:
- Shadow-DOM Drawer UI
- Turniererstellung für KO, Liga, Gruppen + KO
- Match-Ergebnisführung (auto + manuell)
- Tabellenberechnung (Punkte > LegDiff > Legs+)
- Bracket-Anzeige via
brackets-viewer(iframe) + HTML-Fallback - JSON Export/Import (Datei + Copy/Paste)
- Storage-Versionierung (
ata:tournament:v1) inklusive Migrations-Stub - SPA-Routing-Stabilisierung und zentralem Cleanup.