Back to Home

Changelog

Recent updates, fixes, and enhancements across Shockball Nexus.

Last updated: Oct 8, 2025, 7:04 AM

2025-10-08

Fixed

  • Player count integrity violations in match simulation:
    • Fixed bug where substitutions could result in more than 4 players per side on field
    • Consolidated 4 separate player tracking systems into single source of truth architecture
    • SimulationEngine now delegates to GameState for player arrays instead of maintaining duplicates
    • Eliminated synchronization bugs between player tracking systems
    • Fixed energy recovery for substituted players while resting on bench

Changed

  • Dark mode toggle relocated from top navigation to Settings page for reduced screen real-estate usage
  • Recent Match Results cards now properly support dark mode with theme-aware styling
  • Public page (/) now always displays in light mode while preserving user theme preference on authenticated pages

2025-10-06

Added

  • Dark mode toggle functionality:
    • Desktop dark mode toggle with sun/moon icons in top navigation
    • Mobile dark mode toggle in floating top-right corner (replaces role badge)
    • Comprehensive dark mode styling across most components and pages

Changed

  • Role badge relocated to Settings page for better organization

2025-10-04

Added

  • Admin user list pagination, search, and filtering:
    • Search by name with real-time filtering
    • Filter by role or team
  • Editable custom Trading Card filters:
    • Players can now customize which stats and information appear on their trading cards

Fixed

  • XP calculation truncation bug:
    • Fixed systematic XP loss due to Math.floor() truncation in passive XP calculations
    • Converted XP storage from BIGINT to DOUBLE to support fractional XP accumulation
    • Players now receive exact fractional XP amounts (e.g., 0.4 XP) instead of losing partial XP
    • Resolves 5 reported cases where players lost XP due to truncation, especially with multi-skill training
    • Comprehensive testing added for edge cases including 8-10 focused skills scenarios
  • Passive XP display text bug:
    • Fixed bug where display of XP/hour was rounding to 1 decimal place, and always showing 0.3 for more than 6 skills focused. Now, rounding to 2 decimal places and showing the correct XP/hour for each skill.
  • Training minigame XP boost calculation:
    • Only perfect minigame scores (800 points) now receive the maximum 4x XP boost
    • Previously, any score 700+ received 4x boost; now 700-799 scores receive 3.5x boost
  • Team manager/owner links returning 404 errors on team pages:
    • Fixed broken navigation links to manager and owner profiles
  • Player playstyle frequency settings validation:
    • Players can now correctly set playstyle frequencies to zero values
  • Duplicate player activities for skill/attribute level-ups:
    • Implemented deduplication logic to prevent multiple activity entries for the same level-up event
  • Team Manager permissions for contracts and friendlies:
    • Team managers can now properly offer player contracts and schedule friendly matches
  • Friendly match acceptance notifications:
    • Fixed issue where friendly match acceptances displayed as "Admin xyz accepts..." instead of showing the actual accepting user's name

2025-10-03

Fixed

  • Excessive XP gain bug:
    • Players were able to gain XP at a rate of 10 XP/hour per skill when all 10 skills were focused simultaneously.
    • This was due to a bug in the XP system that allowed players to gain XP at a rate of 10 XP/hour per skill when all 10 skills were focused simultaneously.
  • Character creation min-maxing exploit:
    • Players could previously drop skills to level 0 during character creation to gain excessive budget points (43 points refund).
    • This allowed boosting other skills to level 20+ during creation, then cheaply fixing the sacrificed skill post-creation.
    • Fixed by setting minimum skill level to 5 during character creation, reducing maximum refund to 7 points.
    • Exploit advantage reduced from 39:1 XP ratio to 3:1 XP ratio - much more fair while preserving build flexibility.

2025-10-02

Added

  • Image Upload System with blob storage:
    • File upload support for team logos and venue images and player avatars (PNG, JPG, GIF, WebP up to 2MB)
    • Tabbed interface allowing choice between URL input and file upload
    • Backward compatible with existing URL-based images (blob storage takes priority, URLs as fallback)

2025-10-01

Fixed

  • Removed auto-refresh functionality from Players, Teams, Conferences, and Matches pages to prevent pagination and filter state from resetting.
  • Fixed team league membership display to show correct League hierarchy (Team→Division→Conference→League) instead of relying on active Competition status.
  • Enhanced team logo display with graceful fallback to placeholder when external images are blocked by CORS or mixed content policies.

Removed

  • Recent League Activity section from the League Dashboard page, including the non-functional "View All Activity" button.

2025-09-30

Added

  • Dashboard "Recent Activities" renamed "Your Activities":
    • now displays both Training Sessions and Skill/Attribute Level-Up events

Changed

  • Training session display now shows XP boost information instead of legacy points

2025-09-28

Added

  • Long-Term Player Progression System (XP-based):
    • Migrated player skills and attributes from integer values to Experience Points (XP) system
    • Skills and attributes now use BigInt XP values with calculated 0-100 levels using formula: level = floor(sqrt(XP / cost_factor))
    • Added trainingFocus field allowing players to select one skill/attribute for passive XP gain over time
    • Added lastXpUpdateTime field for just-in-time XP accrual calculations
    • Training mini-games now apply temporary percentage-based XP boost multipliers (1.5x to 4.0x based on performance)
    • Passive XP gain system provides continuous skill growth for focused skills at configurable rates (by Admin)
    • Active training boosts stack with passive XP gain for accelerated progression
    • Match simulation integration ensures XP values are converted to skill levels before gameplay calculations
    • UI displays calculated skill levels with XP progress bars showing advancement within current level
    • Global configuration system for tuning XP rates, boost multipliers, and progression balance (by Admin)
  • Distributed Passive Training System:
    • Players can now focus multiple skills simultaneously for passive XP gain
    • Total XP pool (2 XP/hour) is distributed evenly across all focused skills
    • Visual XP distribution indicator shows current allocation and rates
    • Strategic choice between specialization vs balanced development

Changed

  • Database schema migration converts existing integer skill values to equivalent XP amounts
  • Training system now provides temporary boosts instead of direct skill increases
  • Player creation and setup forms updated to work with XP conversion system
  • All player data enrichment functions now calculate skill levels from XP values
  • Training minigame UI improvements:
    • Removed non-functional passive training focus dropdown from training interface
    • Replaced misleading "Training Points Earned" with clear boost information
    • Updated training completion messages to explain boost mechanics
  • Database schema: migrated from single trainingFocus to multiple trainingFocuses (JSON array)
  • Player stat cards now support multiple training focuses with toggle functionality

2025-09-27

Added

  • Skill and Attribute Limits enforcement:
    • All player skills and attributes are now clamped to 0-100 range
    • Training system applies limits to both skill improvements and decay calculations
    • Training UI disables options for skills already at maximum value (100)
  • Player Injury System:
    • Players who receive MINOR or SERIOUS injuries during match simulations are persisted after the match ends.
    • An injuryRecoveryDate is automatically set in the database (3 days for minor, 7 for serious).
    • Players are automatically healed when their recovery date passes.
  • Injury status is now displayed on Player Trading Cards:
    • A text indicator (MINOR/SERIOUS) appears below the jersey number.
    • A tooltip shows the full injury status and the date of recovery.

Changed

  • Expanded GAME_RULES.md with new sections and images for "Player Creation", "Player Management", and the "Training Minigame".
  • The "Create a Team" button was removed from the Dashboard to reduce redundancy.
  • The public player profile page (/player/[id]) layout was adjusted to match the personal player page, preventing UI overlap.

Fixed

  • "League Highlights" will no longer be displayed on the league page if no matches have been completed.

2025-09-25

Added

  • Help system created with quicktip components implemented on Create Player, Player, and Dashboard pages
  • Public Rules & Guidebook page added with commit hash tagging
  • Public Changelog page added
  • Dashboard reminders linking to Rules and Changelog resources

Changed

  • Footer information links now include Rules & Guidebook and Changelog

Fixed

  • Player energy displays now refresh consistently across team, player, and training views

2025-09-24

Added

  • Team Manager Delegation and Ownership Transfer system with offer-based workflow
    • Team owners can delegate management responsibilities to any user
    • Team owners can transfer full ownership to another user
    • Recipients receive dashboard notifications to accept/reject offers
    • Contract terms include salary amount and duration (1-3 seasons) for manager roles
    • Staff Contracts table shows pending delegation and ownership offers
    • Manager role includes lineup, contracts, and preset management permissions
    • Atomic transactions ensure data consistency during role transfers

2025-09-23

Added

  • Database backup and restore scripts for production data management

Fixed

  • Training mini-game display and interaction issues:
    • Fixed "Decreased" skill results showing empty values instead of numeric changes
    • Fixed rapid clicking allowing multiple inputs per round causing "Invalid Game" errors

2025-09-21

Fixed

  • Mobile responsiveness issues across multiple components:
    • Player Setup: Fixed overflow with skill controls and cost indicator positioning
    • Player Dashboard: Resolved team info overflow with responsive layout and text truncation
    • Conferences Table: Fixed pagination controls overflow on mobile
    • Recent Match Results: Implemented horizontal scrolling instead of element compression
    • Bottom Navigation: Improved text readability and spacing

Changed

  • Standardized Create Player form cost indicator colors: green for decrements, yellow for increments
  • Recent Match Results now uses horizontal scroll with 700px minimum width

2025-09-20

Removed

  • Division rank field and index from database schema and all UI components
  • Beta Signup functionality completely removed from the application:
    • BetaSignup database table and migration
    • Beta signup form, pages, and server actions
    • Admin beta signups management interface
    • Beta signup email templates and confirmation functionality
    • Navigation links and middleware routes for beta signup

Changed

  • Replaced "Signup for Beta" buttons with "Create Your Player" buttons that trigger SWC authentication
  • Updated landing page FAQ to reflect new player account creation process
  • Removed beta-specific language from FAQ answers

2025-09-19

Added

  • Overall Rating (OVR) column to Players table with sortable functionality
  • Enhanced seed data with predefined SWC names, avatars, teams, and league structure
  • Admin user "Tholme So" with ADMIN role

Changed

  • Consolidated breadcrumb navigation on Conference and Division detail pages
  • Enhanced Conference detail page styling with larger images
  • Reordered Division Summary to appear above Division Cards
  • Made team names clickable links in Divisions table

Removed

  • Redundant "Back" buttons from Conference and Division detail pages
  • "Actions" columns from Divisions and Players tables
  • "Browse and Filter" section from Conferences view

Fixed

  • Conference routing issue
  • OVR column sorting functionality