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
toDOUBLE
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
- Fixed systematic XP loss due to
- 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 multipletrainingFocuses
(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