- Fixed sealed tournaments swallowing deck registration during the deck registration phase
- Removed the "all players have registered" short-circuit condition, so that players don't get rug-pulled if making last-minute adjustments
- Fixed missing return value in deck stats causing a superfluous error in the log
- Fixed deck validation causing an error in PC-Movie if a Map was added before a RB or Ring
- Fixed leagues not permitting decks to be altered or tables to be created on the same day of a serie end
- Added json parameters to the tournament and scheduled tournament databases
- Added support for sealed tournaments that issue cards at the start of the event, grant a deckbuilding period, and a short deck registration grace period before resuming tournament play as normal
- Added support for joining tournaments after they've started during certain eligible stages
- Reworked tournament lifecycle so that DefaultTournament is able to refresh its definitions from the database rather than requiring it be destroyed and recreated.
- Refactored tournament service functions to use "record" and "retrieve" to label functions that are strictly wrappers to the database.
- Fixed server cache clear causing in-progress tournaments to duplicate their active tables.
- Fixed Paused tournament status not actually working due to above issues.
- Added admin panel forms for creating Scheduled Tournaments and altering the current status of a given tournament.
- Fixed league opponent win % stat not being set.
- Fixed tournaments crashing due to bad standings calculations after round 1
- Fixed the modified median standings producer to now properly calculate median and cumulative scores, and properly tiebreak between all tiebreaker methods.
- Overhauled the tournament display screen to show all the tiebreaker methods, and to include a link to the report generator so I don't have to remember the damn URL.
- Added a hall pop-up whenever tournament updates are received, only for players who have joined a tournament.
- Leagues now read parameters from json instead of inscrutible csv values.
- Overhauled league admin page
- Added max games per player option to the league admin UI.
- Added ability to make leagues invite-only. Also added new section for league admins to add players manually to a league.
- Added description field to all leagues, which displays on the main event tab. This will need to be reworked into markdown later, but for now it is html.
- Extracted tournament-related admin functions into its own Tournament Admin page.
- Added preliminary support for PC league awards, but this is incomplete and has been hidden in the UI for now.
- Added modified median tiebreaker sorting for tournaments.
- Lots and lots of technical overhauls spilling over from these improvements on the backend.