Repository navigation
Bracket Creator 2.3.0
A minor release for the operator console and team tournaments: kachinuki bout mode now shows who is on, how many fighters are left and who comes next, each team picks its own representative for a representative bout, and a long list of scoring and court-console fixes found in review. The app also gets a stricter check that a fighter belongs to the team they are entered for.
There is no migration on load, no new config.md key and no CLI change, so a competition drawn under 2.2.0 carries on unchanged. Reload any admin console or viewer tab left open across the upgrade, so it picks up the new front-end.
Upgrading from 2.2.0
latestis now the newest release, never a build ofmain. A release publishesvX.Y.ZplusvX.Y,vXandlatestfor each of the three images (bracket-creator,bracket-creator-mobile,bracket-creator-mobile-pdf). Builds ofmainare tagged:main. If you pulled:latestto followmain, pull:maininstead- New optional fields in match files. A kachinuki bout row can carry
recorded, andgroupStampscan carryrecorded,repPickAandrepPickB. Files written by 2.2.0 read as before. A file written by 2.3.0 should still load in 2.2.0, which ignores the new fields, but that was not tested, so keep a copy of the data folder if you may go back
Highlights since v2.2.0
Team tournaments and kachinuki
- Kachinuki bout mode shows an advisory line with the fighters on, the fighters left and who is next, for example "T1.2 Ueda on, 1 left (T1.3 Sato)" (#467)
- Record bout marks the bout as recorded. An exhausted side reads "no fighters left", an unscored bout never reads as tied, and a recorded bout closes only when a lineup says a side has nobody left (#467)
- Each team picks its representative on the representative bout's row. Two captains picking at the same moment both land, and a pick no longer re-sends the bout's score (#463)
- A fighter must belong to the team. A participant cannot seat another team's member in a bout or in a lineup, and a representative pick is checked for the organiser too. The write is refused and leaves no change (#463)
Court console and scheduling
- Call to court is guarded against a double tap, and the announcement is withdrawn when the match starts or when a fusensho is recorded from the queue row. Calling the same match twice shows one announcement (#463)
- Correct is refused while a bout is live on the court, and Start is refused while a correction is open. A queue Start is refused while another start is still going out
- Finish + Start Next keeps the reason a start was refused on the Up next card. A start superseded by a newer change reads "Not started: a newer change to this match was recorded first"
- The 3rd-place match is named on the court console and listed under Later, and the Completed list names the winner
- Each court's knockout is timed after that court's pool phase. A court move or a tie-break added after the draw moves the knockout past it, and no stored time is rewritten
Score editors
- The hantei side buttons only pick a side, labelled "SHIRO (White) wins" and "AKA (Red) wins". Finish commits the result
- The withdrawal and no-show prompt preselects no side, and Record stays off until one is picked
- Tapping Overtime opens the overtime counter instead of the glossary, and Save correction no longer closes a different open correction
- The "decision is locked" confirm on a withdrawal correction is gone
Viewer and TV
- A drawn bout appears in Recent results, and a winner tick sits on the name row in Recent results and the Completed list
Accessibility
- Operator form fields are tied to their labels across the competition settings, sign-in, first-run, tournament edit, registration, auto-schedule, branding, sponsors and announcement forms
HTTP API and integrations
- New public read
GET /api/competitions/:id/matches/:mid/kachinuki-rosteranswers each side's fighter on, fighters remaining and whether it is exhausted, plus the next pairing. It is a 400 for a competition that is not kachinuki - New refusals on score, bulk-score, lineup and representative-bout writes: 400
team_member_not_in_team, 400winner_member_not_in_boutand 409team_members_unreadable. In bulk-score the first is a per-entryreason - New merge groups
repPickA,repPickBandrecordedforchanged.recordedis set by the server, and naming it inchangedis a 400. A write that moves a later change to the history can answerdisplacedGroupswith noheldReason - Removed: the 409
decision_lockedanswer and theforcefield onPOST .../decision, which went with the "Proceed anyway?" confirm. Custom clients that sentforceshould stop - An announcement with the same text as an active one replaces it instead of stacking.
GET /api/tournament/announcementsand the twoDELETEroutes are now in the OpenAPI specification
Documentation
- The docs are captured at v2.3.0 (#470), the kachinuki screenshots and demo show the advisory line, and the team tournaments guide says where a team encounter's marks land
Dependencies and build
- Go 1.27.2 and
golang.org/x/netv0.60.0, which fix ten advisories reported bygovulncheck excelizeis pinned to a master commit that fixes 15 advisories. No tagged release has them yet. The example workbooks were regenerated and differ only in font property order and number precision (#463)pdfcpu0.16.1
Install: docker run -p 8080:8080 -v "$PWD/tournament-data:/tournament-data" ghcr.io/gitrgoliveira/bracket-creator-mobile:v2.3.0, or see the install guide for Homebrew, Linux packages, and binaries.
Full Changelog: v2.2.0...v2.3.0