You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Route id handling for admin/user actions. Result entry, week open/close, pick deletion, and individual team-logo refresh now read the {id} path segment via $request->getAttribute('routeParameters') — the canonical Flarum 2 source for route parameters.
Leaderboard movement arrows.previous_rank was freezing at a user's first-ever rank, so the up/down arrows showed stale deltas. A new current_rank column now lets each scoring pass roll the prior rank into previous_rank, so the arrows reflect the real change since the last scoring.
Performance
Live scoring writes rank movement in one batched database statement per scope instead of one update per player (a popular game previously fired hundreds of updates).
The public stats widget resolves all referenced teams in a single query instead of up to ten lookups per request.
Profile history loads a user's season scores in one query instead of one per season.
Security / packaging
The admin "Testing" data-seeding tools are now gated behind debug mode, so they aren't a permanent admin API on production installs. The seeding engine was extracted into its own service and made more memory-efficient.
composer.json now explicitly requires guzzlehttp/guzzle and intervention/image (previously relied on transitively).
Internal
Split the profile-history controller into focused builder methods.