What's New
RacksLogic – Smart Brackets. Smooth Play.
Version 6.6
Release Change Log
Added
- Deterministic per-tournament bracket seeding randomizer for Single Elimination, Double Elimination, and Round Robin + Double Elimination Playoffs so bracket initialization now starts from a randomized entrant order without changing intentionally structured tournament flows.
- Targeted seeding tests covering randomized bracket initialization, deterministic seed reproduction for the same tournament, and the list of formats that should randomize their initial bracket seeds.
Changed
- Single-elimination bracket initialization now randomizes initial entrant placement instead of inheriting stable tournament-player ID order.
- Double-elimination bracket initialization now randomizes initial entrant placement regardless of DE variant, while still preserving BALANCED-specific bye spreading and crossover behavior.
- RR+DE playoff bracket initialization now randomizes the initial playoff bracket placement regardless of DE variant, instead of depending on whether the playoff style was set to BALANCED.
Fixed
- Deterministic first-round bracket layouts in bracketed tournaments where players could land in the same initial positions each time because seeding followed stable database order.
- Single-elimination seeding gap where the bracket initializer never shuffled entrants because the format stored STANDARD as its DE-variant placeholder.
Improved
- Bracket fairness and variety by making initial bracket placement feel random to players and directors while keeping the result stable for a given tournament once it has been created.
- Code clarity by separating should this format randomize initial bracket seeds? from the older is this using BALANCED bye handling? decision.
Version 6.6 makes bracket initialization random for Single Elimination, Double Elimination, and RR playoff brackets, while leaving intentionally structured flows such as Split combined finals unchanged.
Version 6.5
Release Change Log
Added
- Layered login attempt tracking for the sign-in flow, including counters for repeated failures from the same IP + username, repeated failures against the same username, and password-spraying behavior from one IP across many usernames.
- Pre-auth login throttling filter in Spring Security so abusive login attempts can be slowed or blocked before normal username/password authentication runs.
- Configurable login-defense thresholds for failure windows, spray detection, and temporary lock durations using application properties / environment overrides.
Changed
- Login protection now uses a layered model instead of relying only on the existing coarse anonymous
/login IP limiter.
- Authentication success/failure handling now updates login-defense counters so successful sign-ins clear targeted failure state and failed sign-ins accumulate evidence for throttling.
- Login UX keeps a generic response when throttling is triggered so the sign-in page does not reveal whether the username exists, the password was wrong, or the request was temporarily blocked.
Fixed
- Brute-force gap in the prior login defense: a patient bot could stay under the broad per-minute IP ceiling and continue guessing passwords because failures were not being tracked per username or per IP+username.
- Password-spraying exposure where one source could probe many usernames without the login system recognizing the cross-account attack pattern.
Improved
- Account security against automated credential guessing while reducing the chance of unnecessary disruption for legitimate users.
- Operational control by making the login-defense thresholds easy to tune if tournament directors report too much or too little friction.
Version 6.5 hardens the login flow against brute-force and password-spraying attacks by adding layered throttling tied to IPs, usernames, and suspicious cross-account behavior.
Version 6.4
Release Change Log
Added
- NAPA “Official tournament” toggle when using the NAPA race matrix.
- New checkbox: Require “Set NAPA registration color” before marking players paid (default: checked).
- Allows using the NAPA matrix for non-official events without enforcing NAPA fee/color workflow.
- APA Split Tournament “true bracket” rendering (bubble + connector bracket view) for the Split Modified Double Elimination path.
Changed
- Split (APA/NAPA) race selection UI: per-element “Race matrix” selectors and Phase 2 race selector are hidden because the matrix is determined by the selected game type / family setup.
- Bracket-family setup: “Double-elimination finals style” is shown only when the element bracket or combined finals format is a double-elimination variant.
- Split element assignment now uses the tournament’s effective skill scale (e.g., APA 8-ball skill for APA 8-ball split) so element upper bounds are applied correctly.
Fixed
- Round Robin + Double Elimination with NAPA matrix: races no longer display as “N/A Race” on the rounds page (NAPA matrix support added to the round-robin pairing path).
- Split APA registration counts now stay consistent and match the actual element assignment logic (including legacy upper-bound fields).
- Split setup edits during registration: saving split settings clears existing split-element assignments (when safe) so counts and assignment reflect the updated configuration.
- Build stability: removed a duplicated block in PlayerSelectionController that caused “illegal start of type” compiler errors.
- Public + queued match pages: Smart Table Flow warning note now appears for APA Split tournaments (not just NAPA Split).
Improved
- Director clarity: fewer misleading setup controls for Split APA/NAPA tournaments; bracket view matches the existing bracket UX used throughout the app.
- Operational flexibility: NAPA matrix can be used outside official NAPA events without the extra registration-color constraint.
Version 6.4 expands Split Tournament support for APA (true bracket rendering + correct element assignment) and tightens the NAPA workflow controls for official vs non-official events.
Version 6.3
Release Change Log
Added
- NAPA Split “To Combined” badge on the round header showing how many undecided matches remain before Combined Finals begins.
- Public Live Page notice explaining Smart Table Flow queue behavior for NAPA Split tournaments.
- Foldable “Split Element Registration Counts” section on Player Selection (chevron + persistent open/closed state).
Changed
- NAPA Split table promotion now fills all open tables, not just one freed table, including during the Split → Combined transition.
- Queued Matches notice text updated to clarify that the queue is re-ranked after scoring and new WB/LB matches can appear; notice highlighted in warning color #ffe9a8.
- Duplicate-pairing warning logic for NAPA Split now evaluates only active matches (prevents false positives from earlier completed matchups within the same DB “round”).
Fixed
- Split → Combined transition bug where most first-round Combined matches were landing in “Cancelled matches” and only one match was being seated.
- BYE vs BYE / placeholder pollution in cancelled-match display during Combined Finals (system-cancelled / GF-reset placeholders no longer masquerade as regeneration issues).
- NAPA Split finals tables now show all 8 pairings (including “Winner of …” placeholders) for WB/LB final-table sections.
- Losers-bracket empty branch stall: BYE/BYE paths now resolve so downstream matches can complete and brackets don’t freeze.
- Round view NPE when cancelled matches include null participants (BYE/empty slots handled safely).
- DOC tournament Player Selection page crash (NAPA color options panel no longer evaluates when not applicable).
- Tournament player print list crash where napaRegistrationColor was treated as an enum (.name() removed; string handled correctly).
- Player Selection scrolling: “Players in This Tournament” and “Unpaid Players” lists now scroll with the same fixed height as “Available Players” (class bug fixed).
- Finish Tournament button for NAPA Split now correctly redirects to results / publish page when only one player remains.
- Build/test stability:
- Mockito configured as a Java agent (JDK future-proofing; avoids dynamic self-attach warnings).
- Updated tests to match new persistence behavior (saveAll) and NAPA admin fee computation.
Improved
- UI clarity for NAPA Split directors: queue behavior is explicit and visually prominent; public page reflects the same reality.
- Bracket visibility: final-table and queue presentation better represents pending inputs (winner/loser sources) and BYE handling.
Version 6.3 upgrades NAPA split tournaments to run and render as continuous double-elimination brackets per element, then transitions into a clearly separated combined double-elimination finals bracket.
Version 6.2
Release Change Log
Added
- NAPA Split Tournament “true bracket” mode
- Each element now runs as a continuous double-elimination bracket (like standard Double Elim), with the element stage stopping once the final tables are determined.
- The combined stage now renders and runs as its own full double-elimination bracket framework for the remaining 16 players.
- Bracket rendering separates Elements from Combined Finals with a clear divider for tournament-night readability.
Changed
- Split Tournament settings layout: Ruleset family is shown first, followed by a single bracket family setup, then number of elements (removes per-element bracket-format clutter).
- Double-elimination finals style remains selectable by the tournament director (default: Balanced).
Fixed
- NAPA split options cleanup: hides element upper bounds and other non-NAPA split controls that do not apply to NAPA split tournaments.
Version 6.2 upgrades NAPA split tournaments to run and render as continuous double-elimination brackets per element, then transitions into a clearly separated combined double-elimination finals bracket.
Version 6.1
Release Change Log
Improved
- Split tournament table flow (fair + fast)
- Work-weighted table allocation across elements using each element’s remaining expected match time (not just match counts) to apportion initial table slots fairly.
- Live assignment as tables free up using a deficit round-robin scheduler so elements receive tables proportionally over time while keeping tables continuously busy.
- Smart Table Flow priority is used to choose the next match for the next open table (and to order the on-screen queue), optimizing flow and table utilization across multiple simultaneous double-elimination element brackets.
Version 6.1 improves split-tournament pacing by allocating table slots across elements using remaining expected match time and promoting queued matches as tables free up using a deficit round-robin scheduler.
Version 6.0
Release Change Log
Added
- Split Tournament “Family” model (APA / NAPA / Other) with a dedicated split game-type selector and per-element configuration.
- Per-element bracket format selection for split elements (Single Elimination, Double Elimination, Chips) with Double Elimination as the default.
- Combined (Phase 2) format options for 4-element splits: Modified Single Elimination (includes 3rd/4th-place match) and Modified Double Elimination (final-table carryover).
- NAPA split defaults and overrides: default 4 elements (GM/M, A, B, C/D/E) plus director-editable class grouping (exclusive assignment).
- NAPA fee workflow: per-tournament NAPA registration color tracking and display of the computed unpaid amount (color fee + tournament/greens fees).
- NAPA qualifier tracking: option to capture the “qualified for” tournament name and a results section listing all players/teams with 1+ match wins.
- NAPA Scotch Doubles & Scotch Triples team formats with team creation flow support.
- New NAPA handicap fields for Scotch Doubles and Scotch Triples.
- Team triples support: teams can now contain 2 or 3 players.
- Split element player counts on player selection pages to help directors track registrations per element.
Changed
- Doc’s is a race system (not a bracket format). Doc’s is now treated as a race-mode choice (where applicable) rather than a tournament bracket type.
- Race matrix selection behavior:
- APA/NAPA race matrices are auto-selected and displayed as a read-only label.
- Other supports selectable race modes: Doc’s, Fixed Race-To, and Augmented Race-To Handicap (with skill source selection).
- NAPA split start rules for Modified Double: the Start Tournament button stays disabled until each element has the required entrants for the final-table carryover.
- Split tournament table assignment is now treated as a global tournament resource (tables are not “reused per element” within the same scheduling wave).
Fixed
- Split finals placement correctness for Modified Single (ensures 1st/2nd and 3rd/4th are determined from the correct matches).
- Triples team persistence edge cases by removing legacy “2-player unique” assumptions that could block 3-player team saving.
- Flyway/H2 migration compatibility issues uncovered during CI/local verification (NULLability and cross-dialect ALTER TABLE syntax).
Improved
- Director UX clarity with clearer split options and explanatory UI for Modified Single vs Modified Double combined formats.
- Operational reliability via stronger migration discipline and targeted regression coverage around split finals engine behavior.
- Test suite stability by aligning H2 test schema with real NAPA matrix semantics (open-ended ranges).
Version 6.0 introduces the new split tournament architecture and expands NAPA support (fees, qualifiers, and Scotch team formats), while hardening migrations and split-finals behavior for tournament-night reliability.
Version 5.0
Release Change Log
Added
- Richer match-duration training signal for the expected match length estimator by capturing and using
total_games_won from completed match results (p1 score + p2 score).
Changed
- Match length estimation engine now uses more of your real tournament history instead of relying only on who played / race settings.
- This upgrade improves the scheduling model behind table flow decisions and wait-time forecasting, especially as more results are recorded over time.
Fixed
- Underuse of historical scoring detail in duration estimates. Previously, completed-match score totals were recorded but not fully leveraged in the estimator.
Improved
- Tournament pacing intelligence (core optimization)
- Better expected match-time estimates help RacksLogic make stronger pairing/table assignment decisions.
- Improves the app's ability to keep tables busy while reducing unnecessary player idle time.
- Directors benefit from more reliable tournament flow forecasts during live operation.
This is a core engine upgrade to RacksLogic's scheduling intelligence: the estimator now squeezes more signal from real match outcomes to improve flow planning without changing normal score-entry workflow.
Version 4.3.1
Release Change Log
Added
- Operational hardening notes in release documentation to reflect continued platform security and reliability improvements.
Changed
- Production account onboarding policy now supports operator-managed account setup in production environments.
- Deployment/runtime credential handling updated toward safer environment-based configuration patterns.
Fixed
- Edge-case handling for sensitive diagnostic logging expanded to reduce accidental exposure of additional form fields during troubleshooting/debug scenarios.
- Saved social publishing credential handling improved with encrypted storage support for safer at-rest protection.
Improved
- Security & reliability hardening
- Continued hardening of production and deployment configuration for stronger credential handling and safer runtime configuration.
- Improved production access controls for account registration (operator-managed account setup).
- Enhanced protection for stored social publishing credentials with improved at-rest handling.
- Expanded redaction of sensitive form fields in diagnostic logging.
- Additional edge-case handling and operational safeguards to support secure, reliable tournament-night use.
These updates are part of ongoing platform hardening and operational quality improvements. No workflow changes are required for normal tournament operation (other than operator-managed account creation in production).
Version 4.3
Release Change Log
Added
- Rounds page sort preference persistence
- The selected match sort order on the Rounds page is now remembered for each tournament type.
- Your chosen sort order is automatically restored after page refreshes and match updates (same browser/device).
Changed
- Terminology update: “Custom Skill” → “Doc’s Skill”
- Includes player-related pages/forms and tournament option text.
Fixed
- Public Tournament queued pairings order
- Fixed the Queued Pairings list on
public-tournament.html so it displays in the correct assignment order.
- Queue position #1 now reflects the next pairing to be assigned to a table, matching rounds page behavior and actual table promotion order (FIFO).
- Rounds page sort resets after match updates
- Fixed an issue where changing the match sort order on the Rounds page would reset after completing a match or making other updates.
Version 4.2
Release Change Log
Bracketed Tournament Setup
- Bracketed formats now require at least 4 paid players before starting (Single Elimination, Double Elimination).
Double Elimination Variants
- Added a tournament option to choose the Double Elimination bracket style: Balanced, Standard, or Modified.
- Standard: full double elimination. If the Losers Bracket champion beats the Winners Bracket champion in the first grand final, the bracket resets and they play one more match.
- Modified: single grand final (no reset) for a faster finish.
- Balanced: spreads Winners Bracket Round 1 byes (no BYE-vs-BYE) and uses crossover drops to reduce immediate rematches in heavy-bye brackets.
Bracket View Improvements
- Structural first-round byes are labeled BYE instead of TBD.
- Pending matches are visually highlighted on the bracket page for quicker table assignment.
Database & Deployment Reliability
- Added the
tournaments.double_elim_variant column via Flyway migration (MySQL-compatible).
- Improved
deploy.ps1 to prompt once locally for sudo and send it through the SSH-encrypted connection (avoids terminal/TTY prompt weirdness).
Version 4.1
Release Change Log
Deployment Automation (Droplet)
- Added a PowerShell deployment script for Windows PowerShell 5.1 to publish the latest jar to the production droplet.
- Automates: build (Spotless + Maven verify),
scp upload, service restart, health checks, and SHA256 verification.
- Runs both droplet-local and public URL checks after restart to confirm the app is responding before finishing.
Operator Quality-of-Life
- Cleaner, more reliable deploy output (avoids terminal/TTY formatting artifacts that made output hard to read).
- Added script switches to skip build or include tests when desired.
Version 4.0
Release Change Log
APA Doubles (Scotch Doubles) Support
- Added APA Scotch Doubles tournament support for both APA 8-ball and APA 9-ball race matrices.
- Doubles tournaments now use 2-person teams as entrants (a new “type of player”).
- Team skill is computed as: Team SL = Player1 SL + Player2 SL (no averaging/rounding).
Teams Data Model
- Added a new
teams table to persist team pairings (Player1 + Player2).
- Teams can be reused across tournaments, but eligibility is validated against current player skills when added.
- Enforced: one player cannot be on more than one team in the same tournament.
Team Selection (APA Doubles) Page
- New Team Selection page modeled after Player Selection.
- 3-column layout: Available Teams / Teams In This Tournament / Players In This Tournament.
- Team builder workflow: select Player 1 + Player 2, preview team name + computed SL, then add to tournament.
- Added a bottom section to update active player metadata (Sex + APA skills) to resolve eligibility issues quickly.
APA Rules Enforcement
- Added APA “Allow combined skill 11–12” tournament option when using APA Doubles race matrices (default cap 10; optional cap 12).
- APA 8-ball minimum team SL logic by pairing:
- Man + Man: 3 + 3 = 6
- Man + Woman: 3 + 2 = 5
- Woman + Woman: 2 + 2 = 4 (only if both are established SL2 women)
- Unestablished-player enforcement:
- If Established is unchecked, directors cannot edit APA skills.
- Official APA default starting SLs are applied automatically:
- APA 8-ball: start SL3
- APA 9-ball: start SL3
- Server-side enforcement prevents bypass via POST.
- Team builder explains why “Add Team” is disabled (stippled) when rules are violated.
Director, Rounds, Results, and Public Page Fixes
- Fixed “TBD” display for doubles entrants in Rounds/Director views by rendering team display names (Player1 / Player2).
- Fixed end-of-tournament snapshotting for doubles by allowing tournament results to reference either a player or a team.
- Director page now exposes the public spectator link for bracket tournaments; public page renders doubles teams correctly and suppresses “TBD vs TBD” noise.
Database & Migration Updates
- Removed obsolete doubles-related player columns (
apa8_scotch_skill, apa9_doubles_skill).
- Added
apa8_established and apa9_established flags to players.
- Improved Flyway migration compatibility for H2 (split multi-column ALTER statements; removed MySQL-only syntax like
AFTER).
- Updated entity mappings so Hibernate schema validation matches DB column types (TINYINT vs BOOLEAN).
Version 3.0
Release Change Log
New Tournament Types & Brackets
Split Tournament (multi-element)
- Added Split Tournament format with support for 2–4 elements (ELEMENT1–ELEMENT4).
- Phase-based flow:
- Phase 1: run double elimination per element until final tables are reached.
- Phase 2: combine qualified players into playoffs with phase/round display and reset round counter on phase transition.
- Added Phase 2 race settings (director can choose how races are determined in the combined playoff stage).
SVG Bracket Diagrams (familiar bracket view)
- Implemented true bracket diagrams for:
- Single Elimination (SVG bubbles + connectors + “Winner of Match X” placeholders).
- Double Elimination (Winners + Losers brackets, dashed drop lines, and finals).
- Round Robin + DE Playoffs now uses the same SVG bracket for the playoff stage.
- Bracket placeholders include undetermined slot labels like Winner/Loser of Match #.
Chips Tournament Improvements
- Added Race matrix options for Chips tournaments, supporting directors who treat “a chip” as a multi-game race.
- Chips match cards now show race information when a race matrix is selected.
- Standings sorting updated:
- While running, players are ordered by Games Played (descending) until the tournament completes.
NAPA Handicaps & Race Matrix
Player handicaps
- Added NAPA handicap support across 9 disciplines:
- 8-ball, 9-ball, 9-ball Pro, 10-ball, 10-ball Pro, Fast 8, 7-Ball, Lagger’s Choice, One Pocket.
- Added Sex field to players (required for default NAPA handicap behavior).
- Default NAPA handicap behavior:
- If player’s NAPA handicap is missing, use M → 50, F → 40.
- If sex is missing, assume M.
Player selection workflow (NAPA tournaments)
- When adding a player to a NAPA tournament:
- If NAPA handicap is missing, default is applied.
- If sex is missing, defaults to Male.
- Selected player is surfaced for quick editing of NAPA rating + sex from the bottom “Add/Update Player” area.
NAPA race matrix data model
- Implemented NAPA race derivation based on:
- stronger skill range (stronger_min, stronger_max)
- skill difference range (diff_min, diff_max)
- returns race_stronger / race_weaker
- Fixed DB seeding issues by reseeding from an updated spreadsheet and using inclusive boundary rules with open-ended max bounds (NULL max means ≥ min).
“Doc” Branding for Matrices
- Renamed “Custom” matrices across UI and persistence:
- Custom Race Matrix → Doc’s Race Matrix
- Custom Losses Matrix → Doc’s Allowed Losses Matrix
- Updated DB values to match the new naming (preparing the app for future “Custom” matrices you’ll add later).
UI & Rules Page Updates
Rules page reorganization
- Moved Chips Tournament – Skill to Chips Matrix to the top.
- Moved Doc’s Allowed Losses Matrix to the end.
- Moved Display time zone section to follow Doc’s Allowed Losses Matrix.
- Improved copy and naming:
- “Starting chips per skill” section renamed to Chips Tournament – Skill to Chips Matrix
- “Doc Skill” label updated to Doc’s Skill Rating table
- Augmented race explanation expanded (formula-based description).
Rules page layout improvements
- Rules sections no longer stretch full width — they now size to content (“hug” the tables) with internal scrolling where needed.
Input and alignment fixes
- Standardized number steppers to use the app’s larger up/down controls on rules/options pages.
- Fixed alignment of Round Robin Pods controls (Pod size, Advance per pod, Ties) with consistent column layout.
Misc setup improvements
- Split tournament defaults updated:
- For 2 elements, default upper bound is now 5 (instead of 4).
- Removed “Pairing Fairness” link from Double Elimination tournaments (not applicable).
Home Dashboard Improvements
Tonight card redesign
- Simplified to two states:
- If a tournament is running: Resume Current Tournament
- If not running: “Start New Tournament” with one-button-per-line format selection.
Saved (Draft) Tournaments workflow
- Added tournament status SAVED to support pre-registration.
- Directors can create a tournament and add players without starting.
- Dashboard now shows a Saved tournaments list with:
- Continue Setup (add/remove players)
- Start (begin tournament)
- Remove (sets tournament to CANCELLED, does not delete data)
- Roster editing is allowed for SETUP and SAVED tournaments.
Deployment & Dev Workflow
- Recommended a safer deploy workflow (upload jar → atomic swap → restart) and provided a droplet deploy script pattern.
- Improved guidance around Spring profiles:
- application.properties shared settings
- application-dev.properties dev-only
- application-prod.properties prod-only
- local secrets via SPRING_CONFIG_ADDITIONAL_LOCATION or env vars.
RacksLogic – Smart Brackets. Smooth Play.
Version 2.5.0
Release Change Log
Race Calculation Engine Overhaul
- Introduced a unified Race Mode system for all tournament formats.
- Supported race calculation methods:
- Custom Race Matrix (Custom skill ratings)
- APA 8-Ball Race Matrix (APA 8 skill ratings)
- APA 9-Ball Race Matrix (APA 9 skill ratings)
- Fixed Race-To
- Augmented Handicap Race (Base + Skill Difference)
Augmented Handicap Race
- New race formula:
- Race = Base Race + (Higher Skill – Lower Skill)
- Tournament setup now includes:
- Base Race configuration
- Player Skill Set selection (Custom / APA 8 / APA 9)
- Augmented mode uses the selected skill set strictly for race computation.
- No race matrix lookup used in Augmented mode.
Skill Handling Correction
- TournamentPlayer.startingSkill now always stores the player’s custom skill rating.
- APA skill ratings remain stored on Player and are only used when an APA race mode is selected.
- Prevents unintended mutation of player skill state when selecting race modes.
Tournament Setup Improvements
Format vs Race Matrix Separation
- Removed APA 8-Ball and APA 9-Ball as tournament types.
- APA systems are now strictly race matrix/skill set options.
- Race Matrix / Handicap section now:
- Appears only when required.
- Is hidden for formats where it does not apply.
- Corrected UI behavior so disabled dropdowns are truly non-interactive.
Chips Tournament Behavior Clarification
- Removed Pairing Fairness Audit page for Chips tournaments.
- Clarified and refined logic for:
- Reserve a table (recommended)
- Avoid immediate rematches
- Keep tables full (allow rematches)
Chips Tournament Engine
- Improved end-of-queue behavior handling.
- Refined pairing decisions when:
- Only winners remain
- No eligible pairings exist
- Rematch avoidance constraints apply
- Increased traceability for queue-dry decision branches via debug logging.
Bracket & Match Logic
- Decoupled race calculation from bracket services.
- Eliminated circular dependency between:
- PairingService
- DoubleEliminationBracketService
- Race calculation now centralized and consistent across:
- Single Elimination
- Double Elimination
- Round Robin + Playoffs
- Chips
- Match card now correctly reflects selected race mode.
User Interface Enhancements
Numeric Input Improvements
- Unified large stepper controls (▲ / ▼) across:
- Tournament fee
- Greens fee
- Fixed race-to
- Augmented base race
- Other numeric inputs
- Adjusted layout and spacing to prevent overflow.
- Restored single-line layout for “Final score” on match card.
- Removed unnecessary box styling to free horizontal space.
Logging & Diagnostics
Log4j2 Migration
- Replaced prior database event logging concept with full Log4j2 integration.
- Added private static final Logger logger = LogManager.getLogger(...) to all application classes.
- Introduced:
- Request context logging (MDC / ThreadContext)
- Automatic logging of all POST / PUT / PATCH / DELETE actions
- Configurable RollingFile logging support.
- Debug-level trace support for Chips tournament endgame analysis.
Test Corrections
- Updated integration tests to:
- Use valid APA skill ranges:
- APA 8-Ball: 2–7
- APA 9-Ball: 1–9
- Ensure startingSkill remains custom skill.
- Fixed test failures caused by APA skill validation logic.
- Resolved Flyway migration compatibility issues (H2 + MySQL).
Database & Flyway
- Added:
- race_mode
- augmented_base_race
- augmented_handicap_system
- Corrected V34 migration syntax for cross-database compatibility.
- Addressed Flyway checksum validation handling during development.
Summary
This release significantly strengthens:
- Race calculation flexibility
- Chips tournament endgame handling
- UI consistency and usability
- Logging visibility for debugging
- Separation of concerns between skill storage and race computation
The system is now more modular, more traceable, and more predictable across tournament types.
RacksLogic – Smart Brackets. Smooth Play.
Version 2.4.0
Release Change Log
New Features
Expanded Race Mode Options (Single & Double Elimination)
Tournament operators can now select from multiple race calculation methods:
- Custom Race Matrix
- Uses existing custom handicap settings
- Supports fully configurable race matrices
- APA 8-Ball Race Matrix
- Uses official APA 8-ball handicap structure
- Applies the APA 8-ball race matrix automatically
- APA 9-Ball Race Matrix
- Uses official APA 9-ball handicap structure
- Applies the APA 9-ball race matrix automatically
- Fixed Race-To
- All matches use a constant race value
- No handicap adjustment applied
- Augmented Race-to Handicap (New)
- Race calculated dynamically using:
- Race = Base Race + (Higher Handicap – Lower Handicap)
- Lower-handicap player races to the Base Race
- Higher-handicap player races to Base Race + skill difference
- Tournament operator must define a Base Race value
Example:
- Base Race = 3
- Player A (Skill 7) vs Player B (Skill 4)
- Difference = 3
- Result:
- Player A races to 6
- Player B races to 3
System Improvements
- Race calculation logic refactored to support multiple race strategies cleanly.
- Existing race matrices reused for APA and custom formats.
- Improved configuration flexibility without impacting tournament scheduling performance.
- Backward compatibility maintained for existing tournaments.
Operator Benefits
- Greater control over competitive balance.
- Official APA support built directly into elimination formats.
- More customization options for league and local tournament styles.
- Simplified race selection at tournament setup.
RacksLogic – Smart Brackets. Smooth Play.
Version 2.3.0
Release Change Log
This release focuses on tournament flow optimization, improved tournament lifecycle management, and enhanced dashboard usability.
Major Enhancements
Advanced Match Optimization Engine
- Improved scheduling algorithm to minimize player wait time.
- Ensures no repeated matches across all supported tournament formats.
- Enhanced fairness balancing while maintaining bracket integrity.
- Performance improvements for large player fields.
Expanded Tournament Format Support
- Refined handling for:
- Round Robin
- Single Elimination
- Playoffs
- Chips Tournament
- DOC Tournament format
- Improved round progression logic and current round tracking.
Tournament Status & UI Improvements
Dynamic Tournament Status Display
- Tournament bar now reflects accurate live status:
- Setup
- Running (with contextual round display)
- Round Robin (with current round indicator)
- Playoffs
- Completed
- Cancelled
- Clearer visual feedback during tournament progression.
Saved Tournament Management
- Added ability to remove saved tournaments from the dashboard.
- Removal now sets tournament status to Cancelled rather than deleting records.
- Preserves historical data integrity.
Player Modification Safeguards
- Prevents player modifications once tournament rounds have begun.
- Clearer validation message:
“Cannot modify players; tournament already started (rounds have begun).”
System & Stability Improvements
Database Migration Integrity
- Addressed Flyway migration checksum mismatch handling.
- Improved migration validation consistency.
- Clearer guidance for repair vs. rollback scenarios.
Session Stability Improvements
- Reduced unexpected session expiration behavior.
- Improved persistence when navigating between saved tournaments.
Performance
- Faster tournament initialization.
- Optimized round recalculation logic.
- Reduced redundant state refresh operations.
Bug Fixes
- Corrected edge cases in round display formatting.
- Fixed tournament status inconsistencies when resuming saved tournaments.
- Improved handling of cancelled tournament state across dashboard views.
Summary
This release strengthens RacksLogic’s core promise: mathematically engineered tournament flow with minimal downtime, accurate status visibility, and clean lifecycle management. Tournament directors can now manage saved events more confidently while maintaining full data integrity and operational efficiency.
RacksLogic – Smart Brackets. Smooth Play.
Version 2.2.0
Release Change Log
Major Features
Optimized Tournament Engine
- Advanced scheduling algorithm minimizes player wait times.
- Eliminates repeated matchups across all supported formats.
- Improved round progression logic for smoother event flow.
Expanded Tournament Format Support
- Round Robin stage enhancements.
- Playoffs stage logic refinement.
- Support improvements for:
- Single Elimination
- DOC Tournament
- Chips Tournament
Improved Match Status Display
- Dynamic tournament status messaging:
- Setup
- Round Robin (with current round indicator)
- Playoffs
- Running (format-aware round display)
- Completed
- Cancelled
Saved Tournament Improvements
Dashboard Enhancements
- Added “Remove” button for saved tournaments.
- Removing a tournament now sets status to Cancelled (soft-delete behavior).
- Improved clarity between active and saved events.
Player Modification Logic Fix
- Resolved issue preventing player edits when returning to saved tournaments.
- Improved validation messaging:
- “Cannot modify players; tournament already started (rounds have begun)” now only triggers appropriately.
Backend & Infrastructure
Flyway Migration Handling
- Improved database migration validation workflow.
- Added guidance for handling checksum mismatches.
- Strengthened schema version consistency checks.
Tournament State Management Improvements
- More reliable round tracking.
- Enhanced stage detection logic (Round Robin vs Playoffs).
- Better handling of resumed tournaments.
User Experience
- Cleaner status labeling in TournamentBarView.
- Improved navigation between active and saved tournaments.
- Reduced friction when resuming partially completed events.
Performance
- Optimized bracket generation for large player pools.
- Reduced computation time during round pairing.
- More efficient state recalculation during tournament updates.
Stability Fixes
- Fixed edge cases in round display logic.
- Improved error messaging during tournament transitions.
- General bug fixes and internal refactoring for maintainability.
Known Limitations
- Migration checksum mismatches require manual repair if altered post-deployment.
- Tournament player edits are locked once match rounds have officially begun.
Next Planned Enhancements
- Predictive match probability tools (statistical modeling integration).
- Advanced player analytics dashboard.
- Enhanced reporting exports (CSV / Excel).
- Visual bracket export options.
Summary
RacksLogic continues to focus on mathematically engineered tournament flow — keeping matches moving and players competing with minimal downtime.