Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 50 million developers.Sign up
This release includes a few requested cosmetic features, and the ability to manually seed players overriding traditional tiebreakers.
Use manual seeding for tiebreakers
Tournaments now feature an option "use manual seeding for tiebreakers". When this option is on, players can be assigned a "seed" value. This value will be used as the first tiebreaker after points, but before strength-of-schedule.
For example, if Alan has a seeding of "1" and Beth has a seeding of "7", Alan will be ranked ahead of Beth if they are tied on points, regardless of strength-of-schedule and extended-strength-of-schedule.
The seed value is applied in ascending order, so lower seed values will win ties against higher seed values. If a player's seed value is blank, they are considered "unseeded". Their value is effectively infinite; they will lose ties with all seeded players.
Seed values do not have to be sequential or unique.
If two players have the same seed value (including if they are both unseeded), strength-of-schedule and extended-strength-of-schedule will break ties as per normal.
Side-specific results are displayed in results
When viewing results on the pairings screen, spectators will be able to see the winning "side" reported if there was one.
For example, Alan and Beth split with corporation wins. The result will now be displayed as "3 - 3 (C)" to clarify that the corporations won. "R" in brackets will mark runner wins. If a side-specific result was not entered, only the score will be displayed.
Side-specific points totals are displayed in standings
When viewing standings, the identities will display the number of points that side has won.
For example, Alan swept his first round playing HB: Engineering the Future, and Kate. His standing row will read "Haas-Bioroid: Engineering the Future (3)" and "Kate 'Mac' MacCaffrey: Digital Tinker (3)" to indicate the 3 points that each identity has won.
If any rounds did not have a side-specific result entered, those points will not be added to either identity, meaning that the total of the two identities may not match the total points of the player.
Byes do not count towards wins for either side.
Identities on pairings
Due to popular request, players' identities can be viewed on the pairings page.
This option is toggleable and will only affect the person viewing the page. The setting persists between tournaments for the viewer.
Linking to an official stream
Following a request, tournaments can now have a single "stream URL" set to link to an official/featured stream for the event. If a URL is set, a camera icon will appear at the top of every page for that tournament linking to the stream, and the tournament will display a small camera icon on tournament lists to show that it is being streamed.
Sorting by player name
Player names should now be sorted correctly in alphabetical order for TOs when managing players and on player meetings. A bug caused them to be sorted case-sensitively so that "alan" would be sorted after "Zach" (note case).
Many dependencies were updated. There should be no functional changes as a result of this.
This release primarily includes handling of side-specific results for pairings.
Pairings now have several fields for scores, rather than just one
for each player. If a custom score is entered, it will just store
the result for each player as before, but using the preset score
buttons will now offer more detail.
Instead of a single split ("3-3") button, there are now two ("3-3 (C)"
and "3-3 (R)") indicating if the split was a corp or runner split.
These details are now stored internally under two different scores
for the pairing. Importantly, these details are also exported in the
JSON export, meaning that AlwaysBeRunning can ingest it (as well as
other outlets like KnowTheMeta). The JSON schema that Cobra uses
already supports this kind of score tracking.
Custom scores will not expose these fields (for now). This is partially
to avoid cluttered UIs and also to continue support non-standard events
(e.g. events with unusual scoring such as team events, or non-Netrunner
Bye table number improvements
Previously byes have been created first and as a quirk of this have
had low table numbers in the first round, which is confusing and
inconvenient for TOs.
This change specifically numbers non-byes before byes such that byes
should always have the highest table numbers.
Some dependencies were updated. There should be no functional changes
as a result of this.
The version number is no longer hardcoded into the view, but is loaded
dynamically from a config file. There should be no functional changes as a
result of this.
This release primarily includes improvements for handling large events.
The BigSwiss pairing strategy will take a more performant but less
elegant approach to pairing a swiss field. Starting from the top, it
pairs each batch of players on equal points, randomly "overflowing"
one if the batch has an odd number. It can run into problems for:
small fields, fields that have lots of players on unique scores
(particularly at the bottom of the standings), and tournaments with
a large number of rounds. Even in these cases, the result will be a
player being paired against an opponent (or bye) again. This will
only affect players very near the bottom of standings, and only in
In testing, the effect was minimal, even when it appeared, and will
not affect higher standings (i.e. cuts) except conceivably via SOS
or XSOS or the like, and not in a significant way (i.e. neither in
favour of or against any affected party).
The strategy is bad for small fields, but the "normal" graph method
works well for fields up to ~60 where this implementation takes over.
Page load improvements
Mostly improving the loading of the standings page which previously
would calculate standings on the fly on every page load. This was fine
for small events but is impractical and a huge problem for large events.
Now, the standings are calculated whenever a round is marked as
completed or a result is changed on a round that is already complete.
This in practice means the standings will be calculated just once per
round in most cases.
The standings page will now just display the cached standings (via the
StandingRow model) from the database and do no meaningful calculation.
Also restricted the pairings page to only show the last round for large
fields since that page can get very bloated and is high traffic.
The side effect of this is that you will not be able to see or amend
results from previous rounds in large events. This is probably fine but
could be something to remedy in the future.
Some dependencies were updated. There should be no functional changes as a result of this.
Match slip collation fix
Collated match slips were misaligned meaning that they did not collate correctly. This bug has been fixed now.
Implemented support for top 16
Fixed a bug which hid reported pairings on tournaments you didn't control if you'd switched the toggle on one of your own tournaments.
The majority of this release is some features to support large tournaments (over 100 players).
This includes hiding all rounds but the current one on the pairings page to help page loads and some slightly fudged pairing to make the pairing process much quicker.
Also added the ability to show only unreported pairings on pairings page and fixed a bug with autocompleting identities.