Changelog

What's new

Everything shipped on League Platform, newest first.

WebsiteBot
v98.9NewLatest
Real transfer market + honest depth warnings

Recruitment's Squad Planner now tells the truth: a position can look fine on paper (2+ players) while everyone there is actually injured - that now shows as NO ELIGIBLE PLAYERS, a distinct, more urgent state from just being thin. And when a player you want is already signed, Place a Bid becomes Make an Offer - a real negotiation with a new Offers tab to respond, counter, or accept. Injury rate also roughly halved and max time out trimmed - matches were sidelining people too often.

v98.8Improved
Continue button, always in reach

Continue now lives in the top-right corner on every Manager Mode page, not just Match Day/Club Season - no more hunting for the one page it's on. Career Mode's own day-gate is now tied to real elapsed time instead of a click counter, so it can't be spammed through ahead of other real managers - the whole reason Career runs on a real clock in the first place.

v98.7Fixed
Club Season: your own league only

Club Season no longer shows tabs for every other league in the server - it's scoped to your own claimed club's league now, the way it should have been from the start.

v98.6Improved
Real Continue, both modes

Resolve This Matchday is gone. Continue now works the way it should: a quiet day off just shows your squad's real condition/injury status, and a day that reaches a matchday resolves it exactly as before. Club Mode also lost its manual Start Season button and eligibility math - a league with enough clubs just starts itself.

v98.5Fixed
AI clubs no longer break their own lineup

Fixed a real bug where an AI-controlled World club could release its only cover at a scarce position, leaving it unable to field a full XI - the cause of leagues stuck on "1/2 clubs ready" indefinitely.

v98.4New
Club Mode: a real Resolve button

Club Season's matchday button is now a real, primary action - press it and see your own result plus the rest of the round in one clean summary, instead of a small secondary link sitting on top of a timer.

v98.3New
Club Season Calendar

Every matchday in a World season, with a real date - played ones show when they actually happened, upcoming ones show an honest estimate - instead of just a single vague countdown.

v98.2Improved
Club Mode seasons simulate much faster

A World season used to take a real week+ to play out (one matchday per real day, same as Career). Club Mode's own clubs are mostly AI-run, so seasons now resolve a matchday every 30 minutes instead - a full season plays out in well under a day, not over a week.

v98.1New
Club Recruitment

Claimed a club? You can now actually recruit for it. Club Recruitment shows where your club is thin and the best available real players to fix it, and the Player Pool's bid panel now lets you bid as your club directly, not just your personal Career profile.

v98.0New
Club Mode: real navigation categories

Club Mode's navigation now mirrors Career Mode's own structure - Browse Teams as its own quick-access item, Squad Building and Match Prep as real categories - instead of every destination dumped into one flat list.

v97.1New
AI-controlled clubs sign and release real players

Every unclaimed club is actively run by an AI manager - it signs the best real player it can afford for whatever position it's thinnest at, and occasionally releases its weakest player, the same way a human manager would. Claim a club any time to take over from the AI.

v97.0New
Club Mode: real clubs, open to everyone

Club Mode now lets anyone claim any unclaimed real-world club (Man City, Real Madrid, and 76 more across the Premier League, La Liga, Bundesliga, and Serie A) - no captaincy or credential required, just sign in and claim one.

v96.2Fixed
Fixed several Manager Mode pages failing to load

The manager creation wizard and 15 other Manager Mode pages (Squad, Tactics, Portal, Challenge, Loans, Match Day, and more) had a real bug causing them to fail to load for signed-in users on certain visits - found and fixed.

v96.1New
Take Over a Team

Anyone can now pick any real registered Team when creating a Manager Mode Career and take over its current roster as their own independent squad - a real snapshot copied once, then yours to build from, same as picking a Custom Team.

v96.0New
Choose Career or Club Mode first

Manager Mode now starts with a real choice between Career (build your own squad from the player pool) and Club Mode (claim a real-world club), instead of mixing both modes' navigation into one confusing menu. Practice vs AI also moved out to its own page, no longer a toggle buried inside Challenge.

v95.5Improved
Real Football Manager-style attribute screen

The Player Profile's Scout Report and the Tactics Compare Players tool now show attributes as colour-coded number chips in dense category panels, matching real Football Manager's own attribute screen, instead of soft progress bars.

v95.4New
Practice Match vs AI

Challenge now has two modes: play a real manager like before, or jump into a Practice Match against a computer opponent any time - pick Easy/Balanced/Hard, get the full result instantly (same Match Theater replay), and it never touches your real record, squad condition, or injury risk.

v95.3New
Recruitment: Player Recommendations, Squad Planner, Recruitment Focuses

A new Recruitment tab for Career Mode - Squad Planner shows a real per-position average rating and flags where your squad is genuinely thin, Player Recommendations surfaces the top available real players for exactly those spots (or any position you flag), and Recruitment Focuses lets you target up to 4 positions yourself.

v95.2Improved
One navigation for Career and Club Mode

World Mode's separate header - built with zero code shared against Career's - is gone. Every Club Mode page now lives under a real 'My Team' group in the same nav as everything else, with the same unread-inbox badge and pinned shortcuts. Also fixed a few name-display bugs the real-Team retie left behind.

v95.1Improved
Club Mode retied to real Teams

World Mode's fictional clubs (Man City, Real Madrid, etc., staffed by random registered players) are gone - every real Team now has its own Club Mode side, with a live roster mirroring who actually plays for it. Management is automatic for a Team's current captain or vice-captain - no more claiming, no more race to click first.

v95.0New
Create Your Manager wizard

A real setup flow before you start: choose your Coaching Style (Attacking/Balanced/Defensive - sets your starting tactical bias) and Personality, then a Custom Team (build your own Career squad) or an Existing Team (claim a real World club) - picking your team is now a real first step, not something you fall into after the fact.

v94.1Improved
Real news variety

Manager Mode's News feed now picks between several real phrasing variants for each result/season event, instead of always rendering the exact same template - the same event always narrates the same way on a repeat view, but different events read differently, closer to a real narrated feed.

v94.0New
Club Tactics

Claimed World clubs can now set their own set-piece takers, target man, tactical style, and the 9 Tactical Phase dials - the exact same real Tactics screen your personal squad already had, now reused for a claimed club too, plus a Compare Players tool for its roster.

v93.2New
World Mode's own Youth Academy

A claimed World club's own Youth Prospects - a real chunk of every auto-generated squad - had no way to be viewed before this. New Youth Academy page under World Mode's own header, same view Career managers already have.

v93.1Fixed
World Mode's own Hall of Fame

World Mode had no way to reach Hall of Fame at all, even though a World club's title win is recorded there - it now has its own link, showing only World titles. Career's own Hall of Fame now correctly shows only Career titles instead of both mixed together.

v93.0New
Hall of Fame

Every title-winning squad this server has ever produced, recorded the moment they win it - champion, competition, points, and the real starting XI that did it, frozen forever. Covers both Career managers and World clubs.

v92.2New
Live inbox badge

The Inbox nav item now shows a real unread count, updating as you read messages or get new ones - no more guessing whether something's waiting.

v92.1Improved
Real tooltips everywhere

A proper glass-panel tooltip (matching the site's own look) now backs hover hints across Manager Mode, the card game, and league pages - reputation scores, potential ratings, fixture proposals, and more - replacing the plain unstyled browser tooltip that was the one thing every page had in common.

v92.0New
Career Leagues

Create a named Career Mode competition among friends (costs Sparks) or join one someone else made - separate from this server's default pool, same real round-robin/standings engine either way. New transfer window: signing freezes once your league's season is under way, reopening when it ends - real FM's own summer/winter window shape, fairness for a market built on real people.

v91.3New
News

A real auto-generated News feed - recent match results (exhibition + season) and season start/complete events narrated in one place, real FM's own News tab. Career Mode only, on purpose - World Mode already gets its own recap posts and stays a separate feed.

v91.2New
Youth Academy

A dedicated Youth Academy overview - every prospect in your squad with aggregate stats (count, avg current OVR, avg potential, how many are flagged high-potential) plus a per-prospect list showing training focus, mentor, and progress.

v91.1New
Managers directory

A real Managers page (World > Managers, from the user's own openfootmanager walkthrough) - every manager in this server, sorted by a real reputation score, with record, win rate, and title count. Deliberately real-people-only, kept separate from World Mode's own club browse page.

v91.0Improved
Know Exactly Why Your Lineup Isn't Ready

An incomplete starting XI used to just say "incomplete" - now Portal tells you exactly which slots have nobody who can cover them (and calls out a missing goalkeeper specifically), so you know whether to sign someone or just reassign your bench, instead of guessing.

v90.0Improved
World Mode: AI Clubs Actually Play Differently Now

Every AI-controlled World club used to set up identically - balanced, no lean either way, regardless of the club. A newly generated World now gives each club a real, consistent tactical identity: bigger, higher-reputation clubs skew toward an attacking, high-pressing setup more often, smaller clubs skew toward sitting in and defending - the same tendency real football actually shows. Regenerate a server's World to see it take effect.

v89.0Improved
World Mode: A Much Bigger, Fully Ready World

AI squad-building now allows a real, sensible substitution (a center-back covering right-back, say) instead of requiring an exact position match - real football teams do this too, and it unlocks far more of the real player pool. Every league now gets the same, even number of clubs (10 apiece on a well-populated server, was an uneven 4-5). And a league's season now starts itself the moment enough clubs are ready - no more waiting on someone to trigger it, and a new one begins automatically once the last one ends.

v88.1Fixed
World Mode: Every Club Now Has a Real, Complete Roster

Real registered players skew heavily toward some positions and away from others - most World clubs were quietly coming up short a starting spot (missing a right-back especially) despite holding a full squad, which meant most of the World wasn't actually challengeable. Club generation is now bounded by the real supply of the SCARCEST position instead of raw headcount, and both club generation and Auto-fill Suggested XI now fill the rarest position first instead of a fixed order - every club generated from here on has a genuine, complete, ready starting XI. Every server's World was cleared (claims and clubs only - real players and everyone's own squad are untouched) and will regenerate correctly the next time it's viewed.

v88.0New
Manager Mode: A Real Inbox

A new Inbox - welcome, match results, and season news, sortable by newest/oldest, filterable by read/unread, mark-all-read and delete-read in one click. A claimed World club's results reach your inbox too, right alongside your own.

v87.1Fixed
Manager Mode: Cross-Server Card Picker Respects Top Leagues

The Player Pool only ever shows players from this platform's top, real-population servers - the new "Also Registered As" picker was missing that same rule, so it could surface (and let you sign) a registration from a small server that would never have qualified for the Pool on its own. Fixed.

v87.0New
World Mode: Real Seasons

Each of the 4 real leagues (Premier League, La Liga, Bundesliga, Serie A) can now run its own genuine season - a full round-robin among that league's own clubs, one matchday resolving automatically per day, a real table, and a real champion. New Season tab in World Mode.

v86.5Improved
Manager Mode: Fresh Start (Again)

With World Mode fully separated and a real bug in claimed-club squads fixed this round, every squad, club, and manager profile was reset again so everyone starts clean on the corrected systems - your real registered-player pool is completely untouched. Rejoin with /manager join in Discord, or from the website whenever you're ready.

v86.4Improved
Manager Mode: Custom Icons, Not Standard Emojis

Every generic emoji across Manager Mode's website pages (budget, record, trophies, stars, injury tags, and more) is now a proper icon matching the site's own visual style, not a plain Unicode character.

v86.3Fixed
Manager Mode Card: Captain Card Removed

The "which card represents you in Manager Mode" picker was listing Captain Cards as an option - a separate, unrelated card-game special type that never made sense in this context. Removed.

v86.2New
Manager Mode: See a Player's Other Registrations

The same real person can be registered on more than one server - sometimes as a different position entirely. A player's Pool profile now shows every OTHER server they're registered on (with that server's own position and rating), each a real link to sign that version instead, right from the Player Pool.

v86.1Fixed
Manager Mode: Server Switcher Bug

Switching servers, then clicking Menu, could silently bounce you back to a different server than the one you'd just picked - the Menu link was the one spot in the nav that didn't carry your server selection forward. Fixed.

v86.0New
World Mode: Now a Real Separate Game Mode

World stopped being just another tab next to your own squad - it's a genuinely separate mode now, with its own header, its own nav, and real visual identity for every club (a generated crest, not a plain text card). Claimed a club before and found no way to actually see or manage it? That's fixed too - a new My Club page gives your claimed club the exact same pitch lineup editor your own squad has. And World Mode gets its own Challenge page, playing as your claimed club against any other club - Career Mode's own Challenge is real-manager-only again.

v85.1Improved
Manager Mode: Fresh Start

With attributes, playstyles, roles, and World all reworked this round, every squad, club, season, and auction was reset so the new systems start on a level field - your real registered-player pool is completely untouched. Rejoin with /manager join in Discord or from the website's Club page whenever you're ready.

v85.0New
Manager Mode: Play a Match From the Website

A real Challenge page - pick any other manager with a complete starting XI, or any World club, and resolve the match right here. Same live Match Theater replay every result already uses, same Kon rewards, no Discord required. Manager Mode is now genuinely playable end-to-end from the website.

v84.1New
Manager Mode: Quick-Fill With Unranked

Empty lineup spots no longer need a full auction to fill - a new Quick-Fill button on the Squad page (and /manager quickfill in Discord) instantly signs cheap, real Unranked players into whatever's still open, position-matched to each slot. Useful early on, or on a quiet server where auctions haven't been getting bids.

v84.0New
Manager Mode: Choose Your Playstyle

Set a real Playstyle on your Career page or with /editmyprofile - a Poacher, a Ball-Winner, a Sweeper Keeper, and more, only the ones that actually fit your position are offered. It reshapes your Scout Report attributes to match (a Poacher leans into Finishing and Positioning over Passing and Dribbling), still built on your position's own profile, not a separate rating.

v83.1Fixed
Manager Mode: Attribute Rebalance

The last attribute recalibration pushed too far the other way - too many genuinely good players were reading as merely average. Re-tuned the curve so real quality shows up clearly again without sliding back into everyone looking elite.

v83.0New
Manager Mode: World - Real Major-League Clubs

A whole new way to play - a real World of Premier League, La Liga, Bundesliga, and Serie A clubs (78 in total), automatically populated from this server's own real registered players. Claim an unclaimed club to manage it, or challenge any club - AI-controlled or claimed by someone else - as a genuine second game mode alongside challenging real managers directly. See the new World tab.

v82.1New
Manager Mode: Compare Players

A new collapsible section on the Tactics page - pick any two of your signed players and see their full Scout Report side by side (overall, best role fit, every attribute category, traits) to help decide who starts.

v82.0New
Manager Mode: Mechanical Tactical Roles

Assigning a player's role (Poacher, Wing-Back, Deep-Lying Playmaker, and 12 others) is no longer just a scouting readout - open any filled spot on your Squad page's pitch to give that slot a real role, with a genuine match-sim bonus behind it. A Poacher hits harder in the box, a Wing-Back surges forward, a No-Nonsense Centre-Back locks the defense down - roles are tied to the tactical slot, so whoever plays there inherits it.

v81.2Improved
Manager Mode: More Realistic Attribute Spread

Too many players were reading as an outright ELITE attribute almost everywhere - a genuinely strong 3-star player and the platform's actual best 5-star player looked nearly the same on the Scout Report. Recalibrated so the top color band is meaningfully exclusive again - a player's real standout areas still shine, but the platform's true elite now stands out from everyone else.

v81.1Fixed
Manager Mode: Switch Servers From Any Page

The server switcher used to only exist on the Club dashboard - every other page (Tactics, Squad, Portal, Season & Fixtures, Career, Loans) had no way to change servers at all without going back to the dashboard first. It's in the header everywhere now, and switching keeps you on the page you're already on.

v81.0New
Manager Mode: Mechanical Player Traits

Every player's Traits (shown on their Pool profile) now actually do something in a match, not just describe them - a Sharpshooter-style trait sharpens their shooting, a Hard Tackler strengthens a defender, a Sweeper Keeper backs up their goalkeeper, and a few affect fouls conceded or how often a created chance turns into an assist. Small, real bonuses on top of their attributes, not a second rating system.

v80.0New
Manager Mode: Tactical Phases

Tactics gained nine new dials underneath Tactical Style - Build-Up, Width, Tempo, Defensive Line, Pressing, Defensive Shape, Marking, Counter-Press, and Break Speed - each with a real, single effect on match simulation (an aggressive press wins the ball back more but tires you faster; a high defensive line concedes better chances in behind; fast breaks and quick re-presses can now spring a genuine counter-attack). Every dial defaults to a neutral setting until you touch it.

v79.0New
Manager Mode: Injury Risk

Playing a tired player is now a real gamble, not just a small rating hit - starting a match carries a real (small) chance of an injury that sidelines them for a few days, more likely the more exhausted they are. An injured player can't be selected in your lineup until they're back, and the Squad page shows exactly when that is.

v78.0New
Manager Mode: Condition & Fitness

Playing your best 11 every single matchday now has a real cost - a Squad Fitness section on the Squad page shows each starter's condition, color-coded from Fresh to Exhausted, and bench tiles show their own fitness too so you can compare before making a substitution. A tired player's effective attributes take a small, real hit in matches until they've had a few days to recover.

v77.0New
Manager Mode: Watch Your Match Play Out

Every resolved matchday can now be watched, not just read - a real animated pitch replay (possession, shots on target, every goal/save/corner as it happens) on Match Day and Portal's Recent Results, the same Match Theater experience the card game's own results already have. Standings, fixtures, and results all show real player avatars now too, and Man of the Match gets a real gold badge.

v76.2Fixed
Manager Mode: NEW Badges No Longer Look Like a Live Match

The 'NEW' tags on the Menu screen, Portal results, and Portal auctions were reusing the same red glow reserved for an actual live match - switched to the plain badge style already used for 'NEW' tags everywhere else on the site (Power Rankings).

v76.1Improved
Free Agents: Search by Name

A search box on Free Agents now filters the list instantly as you type, alongside the existing position filter - a real fix for leagues with a long unsigned-player list.

v76.0New
Manager Mode: Mentoring

Assign any ranked squad player as a Mentor to a Youth Prospect on the same squad, straight from the Squad page's Youth Development section - every attribute that grows on a training day gets an extra push while a valid mentor is assigned, on top of their Training Focus. A mentor stops helping automatically the moment they leave the squad. See the Glossary's new Youth Development & Mentoring section for exactly how it's computed.

v75.0Improved
Manager Mode: Real Menu Screen + Nav Regroup

A new Menu screen lists every Manager Mode section in one place, each with a real one-line description - including Loans, the Player Pool watchlist, and the Glossary, which previously had no real home in the nav at all. The rail itself is regrouped by actual workflow instead of copying FM26's own tab names: Squad Building (My Squad, Player Pool, Auctions, Loans), Match Prep (Tactics, Season & Fixtures, All-Time Record), and Club & Career (Club, Career, Glossary) - Tactics in particular moves out of Squad and in with the rest of match preparation, where it always belonged.

v74.1Improved
Manager Mode: Set-Piece Routines Now Matter, Apply Opposition Instructions

Free Kick and Corner routines are no longer just a label next to your taker - Direct/Approach Play and Near Post/Far Post/Short each nudge the actual chance of scoring based on real squad attributes (your taker's shooting, your target man's physicality, or your attacker's passing, depending on the routine). Portal's Opposition Instructions now have a one-click Apply button that writes the suggested In/Out of Possession style straight to your Tactics.

v74.0New
Manager Mode: Post-Match Report

Every resolved matchday now gets a real full-time report, not just a score - goals, assists, saves, tackles, a full ratings list, and a Man of the Match, shown right on Portal's Recent Results and a new expandable history on Match Day. Previously this data was computed during the match and thrown away the moment the final score was recorded.

v73.1New
Manager Mode: Set-Piece Routines, Opposition Instructions, Reputation, Pinned Shortcuts

Tactics gained Free Kick and Corner routines (Near Post, Far Post, Short, Direct, Approach Play) shown next to your takers. Portal's Scout Report now includes Opposition Instructions - a short counter suggestion based on the opponent's own In/Out of Possession styles. Career shows a new Reputation tile derived from your lifetime record and titles. The nav rail lets you pin any Squad/Recruitment/Match Day sub-page as a one-click shortcut (the ☆ next to each link in a flyout).

v73.0New
Manager Mode: Loans

A real temporary transfer - list one of your squad players for loan at a fee and duration you choose, and they stay yours until another manager actually takes it. The fee lands in your budget the moment they do, and your player returns automatically when the loan ends - no need to remember or chase it down. New Loans page under Recruitment: list a player, browse everyone else's open listings, and track who's out on loan or on loan to you.

v72.0New
Manager Mode: In Possession / Out of Possession Tactics

Tactics now split into two real shapes instead of one dial - set an In Possession (attacking) style and a separate Out of Possession (defending) style, matching real Football Manager's own headline tactics feature. Leave either on "Follow Tactical Style" to keep the old single-dial behavior. Both feed the same match engine that decides real results, on the website's Tactics page and Discord's /manager gameplan.

v71.0New
Manager Mode: Shortlist, Scouting Reports, and Club Objectives

Player Pool: star any player to add them to your Shortlist, then filter the Pool down to just your starred targets. Portal: your next fixture now expands into a real Scout Report - the opponent's recent form, current formation, and their most dangerous player. Club: a Season Objective card tracking your real position against this season's table, plus a Squad Value tile. New Glossary page explains exactly how Scout Report attributes, tactical role fit %, and player traits are computed - no more guessing what the numbers mean.

v70.0New
Manager Mode: Suggested XI, Captains, and Career Achievements

Four real Football Manager references, closing gaps found researching FM26's own UI. Squad: an "Auto-fill Suggested XI" button fills any empty lineup slots with your best-fitting available player, plus a new Team Stats + Squad Depth breakdown grouped by position. Gameplan: set a Captain and Vice-Captain (a flavor tag, shown on your pitch and roster). Portal: a 2-week matchday calendar strip alongside the single next fixture, and real NEW badges on auctions/results since your last visit. Career: a derived Achievements grid (Champion, Century Club, Unbeaten Season, and more) built from your existing history, nothing new to earn separately.

v69.2Improved
A Few More Small Animations

Match scores on Results/Schedule cards now pop in with a quick reveal instead of just sitting there, standings trend lines and player trend charts draw themselves in instead of appearing pre-drawn, and a player's Career Highs tiles now get a gold glow and star badge so a genuine personal best actually reads as one. Respects your reduced-motion setting throughout.

v69.1Improved
Numbers Count Up Instead of Just Appearing

Homepage's Leagues/Teams/Players stats, a team's Standings points, and a player's Stats/Career Highs tiles now animate in with a real count-up instead of just popping onto the screen - small touch, but the site felt a bit static in a few high-traffic spots. Respects your reduced-motion setting the same as everywhere else.

v69.0New
Manager Mode: Portal

Manager Mode has a new home - Portal, first tab in the nav. Researched real Football Manager's own current UI (FM26 replaced its old Home/Inbox with a literal Portal hub, and it's right - we were missing it): a real feed of what needs your attention right now, in one place. Shows open auctions you're leading, an incomplete-lineup or unset-training-focus nudge, your next fixture, recent results, and every real signed player who's hit their training ceiling. The old dashboard (identity, pitch preview, standings) stays put as Club, unchanged.

v68.5New
Player Pool Shows Whose Card Is a Deliberate Choice

Follow-up to the Manager Mode card picker: Player Pool cards now show a small CARD badge for anyone who's set their own Manager Mode card, so their overall doesn't look like an unexplained outlier next to everyone still on the plain auto-roll. Correctly stays hidden if a chosen card was since sold or converted, matching the same self-heal already used everywhere else.

v68.4New
Manager Mode: Choose Your Own Card

Direct follow-up to Squad Builder's own card-choice feature: "players should be able to choose what version their card should be in the manager game." Your Player Pool profile page now has a Your Manager Mode Card picker - pick any card you own of yourself (an upgraded copy, Shiny, Icon, TOTW, etc.) to set your real Manager Mode overall/attributes, or leave it on Auto for the plain rolled base card. Applies everywhere your Manager Mode strength is used - Player Pool listings, squad strength, matches - and self-heals back to Auto if the chosen card is ever sold or converted.

v68.3New
Youth Prospect Training & Development

Manager Mode's biggest remaining gap against real Football Manager: a signed player used to never change at all. Youth Prospects (unranked signings) now actually develop over time toward their existing Potential range - pick a training focus (or leave it Balanced for a wider, slower spread) from the new Youth Development section on your Squad page, same focus/progress the bot's /manager training command shows. Ranked players are untouched - their card overall is already the platform's one real, proven number.

v68.2New
A Real 4-Tab Player Profile - Overview, Personal, Performance, Career

The player detail page is rebuilt around real Football Manager's own profile structure. Personal now shows real Team, Nationality, and every position they can play. Performance shows real in-game career stats (appearances, goals, assists, average rating, Career Highs, recent form and matches) alongside a fixed, more realistic Scout Report - a striker's defending was showing as good as their finishing before; it now correctly reads as a real weakness. Career shows real club history, awards, and achievements. New this round too: a Best Role tag and a full Style of Play breakdown (real tactical role fits like Poacher or Deep-Lying Playmaker, plus real traits like "Shoots From Distance") - both computed from the Scout Report, not invented separately.

v68.1Improved
Real Roblox Names, Better Search, and a Colour-Coded Scout Report

Players now show up by their real Roblox display name across Manager Mode (Squad, Tactics, Pool, Standings, Match Day, Dashboard) instead of just their registered platform name - both stay visible on the player detail page. Player Pool search now matches a Roblox username, Roblox display name, or platform name, not just the one name it used to check. The Scout Report nearly doubled - 22 attributes for outfield players (11 for keepers), now including a real Set Pieces category (Corners/Free Kicks/Penalties, the same numbers that decide who actually takes them) - and every attribute value is colour-coded by how good it is, green to red.

v68.0New
Real Seasons, a Real Main Menu, and Youth Prospects

The biggest structural gap is fixed: Manager Mode now has real Seasons - a round-robin schedule among every manager with a complete XI, one matchday resolving automatically per day, a real table, a real champion. New Match Day page shows it live, with a Start Season button once enough managers are ready. The main menu is rebuilt around real Football Manager's own sections - Club, Squad, Recruitment, Match Day, Career - as a proper icon-rail nav instead of a flat tab row. Unranked players are now Youth Prospects (cheaper, shown with a Potential range) instead of confusing junk entries, and the Player Pool's detail page now has a deeper Scout Report attribute breakdown beyond the original 6-stat summary.

v67.4New
Tactics and Standings Join the Main Menu

Two real screens Football Manager has that this site didn't: Tactics (set-piece takers, target man, tactical style - previously Discord-only) and a dedicated Standings table (previously just a short preview on the Dashboard). The main nav now has 6 real destinations instead of 4, and "Dashboard" is now "Overview" to match the real game's own naming.

v67.3New
Player Pages, Real Pagination, and Bidding on the Website

Player Pool sorting was broken (it only ever sorted an arbitrary alphabetical slice) - now it sorts the platform's full player list and pages through it properly. Clicking a player opens a real detail page: a hexagon attribute radar and bars from their actual card stats, every open auction they're in, and a real bid form - buying was Discord-only until now. The Dashboard's server switcher also no longer dumps every server in one row; only the servers you've actually joined get a pill, the rest live in a compact dropdown.

v67.2New
Edit Your Manager Mode Lineup on the Website

The Squad page's pitch is now interactive - click any spot to assign a signed player from your squad, filtered to players who can actually play that position, or change formation entirely. Same rules /manager lineup already enforces in Discord, now available without leaving the site. Also fixes a bug where Player Pool and sign autocomplete could show a person's wrong, unranked Player row from a different server instead of their real one.

v67.1Improved
The Market Gets Real Structure, Dashboard Gets a Tile Layout

Researched real references first: Player Pool and Auctions now have a real filter bar (position, sort by overall/price/time-left) instead of just a name search, same shape FIFA Ultimate Team's own transfer market uses - and Auctions splits out a real 'Ending Soon' section. The Dashboard is now a real tile grid (Budget, Record, League Position, Starting XI) with the formation pitch as its own dedicated card, matching how Football Manager's own dashboard actually structures itself.

v67.0New
Football Manager Rebuilt - Real Dashboard, Pitch View, and Live Auctions

The old text-list pages are gone. New Dashboard with a live pitch preview of your starting XI, a dedicated Squad page with a full-size formation pitch, Player Pool rebuilt as real player cards rated by trading-card overall, and a brand new Auctions page showing every live bid with a color-coded countdown - all tied together with a real persistent nav. Researched real Football Manager's UI for reference; built using the same pitch/card components already proven elsewhere on the site.

v66.5Improved
Player Pool Shows Real Auction Minimums

The price on Player Pool is now the minimum opening bid for a real timed auction (see the bot changelog) instead of an instant-buy price - check /manager auctions in Discord for what's actually up for bid right now.

v66.4Fixed
News Announcements to Discord Were Failing Silently

Publishing a News article was supposed to announce it in Discord, but that failed completely silently whenever the announcement channel wasn't configured (true for most servers) - staff had no way to tell. There's now a real 'Send to Discord' button next to Edit/Delete on any published article, with a real reason shown if it can't send (e.g. no channel set yet in Manage > Channels & Roles).

v66.3Improved
Football Manager Pages Updated for the New Real Match Engine

Player Pool and the squad view now show a player's real trading-card overall and a real transfer-fee price instead of the old bespoke strength number, and your squad page shows your formation and which signed players are actually in your starting XI. Matches now run through a real tactical match engine - see the bot changelog for the full rebuild.

v66.2Improved
Match Page Controls Grouped Into One Panel

The match page used to stack up to 7 separate bare dropdowns and plain-text links under the scoreline (Report Result, Go Live, Live Match Controls, Edit Schedule, Declare Forfeit, Edit/Delete Result) - real clutter for staff/reporters/broadcasters. Now one real 'Match Controls' panel, each action a clearly labeled section inside it, open by default while a match is live. Player Pool is also now the same global, cross-server pool /manager sign draws from.

v66.1New
Player Pool: See Exactly How Manager Mode Strength Is Decided

New page linked from Football Manager - every registered player's live Manager Mode strength and sign price, with the specific server that number came from shown right on the row. Makes the same formula /manager pool uses in Discord fully transparent instead of a black box, and doubles as a visible answer to 'why is this number what it is.'

v66.0New
A Real 'Play' Section, a Football Manager Page, and a Findable Shop

Shop was only ever a small unlabeled icon in the top nav - it now also has a real, labeled home in a new 'Play' section on the homepage and every league site, alongside KonTok, Card Game, Football Manager, and the Spark Leaderboard. The Shop tab also shows your current Spark balance as a badge wherever the KonTok/Leaderboard/creator pages link to it, so you actually notice when you've got Sparks worth spending. Football Manager (the new Discord-only management sim) now has a read-only web page too - standings and your own squad.

v65.2New
Career Milestones

Career Portal now recaps your first appearance, first goal, first assist, first Man of the Match, and first clean sheet as a real timeline with dates and the match it happened in - the story of your account, not just running totals.

v65.1New
Cross-Server Master Rankings

A new combined Master Rankings board at /master-rankings, ranking players across every real server running this platform - not just one league site. Linked from every per-league Master Rankings page.

v65.0New
"Since You Left" Digest on Career Portal

Come back to Career Portal after time away and you'll now see a welcome-back banner recapping what your own team did while you were gone - every result, your W-D-L record, and a direct link to each match. Only shows up when something actually happened, and won't spam you for revisiting within the same sitting.

v64.7New
Live Countdown to Your Next Fixture

The Next Fixture spotlight on every league home page, and your own next match on Career Portal, now show a live ticking countdown alongside the kickoff date - "Kicks off in 2d 4h" instead of just a static timestamp.

v64.6Fixed
Match Theater - Fixed the Abrupt Ending

The ball used to snap back to center the instant a match's final shot or save landed, before you actually got to see it rest there - now it holds at the final spot for a real beat, same as every earlier moment in the match, across every result screen (Squad Battle, Friendlies, Challenges, Arena, Rush, 2v2). The possession bar also now eases toward its real final split as the match plays out instead of sitting frozen on one number the whole time.

v64.5Improved
Division Picker - Now a Dropdown

Standings, Leaderboard, Results, and every other multi-division league page used to show one button per division in a row that only got wider as a server added more. Replaced with a compact dropdown, and gave it a proper solid background so it stays readable no matter what's on the page behind it.

v64.4New
Prestige Kit - Max Level Status Glow

Any card you've upgraded all the way to its max level now gets an automatic golden glow and a ★ MAXED badge on My Cards and its own card page - a free status symbol for maxing it out, no purchase needed.

v64.3New
Cosmetic Card Frames

A new Card Frames section in the Gem Shop - unlock a Silver, Gold, Neon, or Diamond border with Gems and equip it to show around every card you own on My Cards. Purely cosmetic, no gameplay effect, just a status symbol.

v64.2New
Escalating Daily Streak Rewards

Keeping your daily claim streak alive now pays off beyond the Kon bonus - every 7-day milestone grants a free Silver Pack, and every 30-day milestone grants a free Legendary Pack, on top of your usual reward. No extra cost, just for staying consistent.

v64.1New
Head-to-Head Records on Arena Challenges

Every Direct Arena Challenge now shows your career record against that specific opponent right up top - wins, losses, draws, and a form guide of your last 5 meetings - visible before, during, and after a match, not just in the result screen.

v64.0New
Master Rankings - One Score, Every Real Stat

A new leaderboard on every league site that folds goals, assists, win rate, average rating, Man of the Match awards, and discipline into a single Master Score - no more hunting across separate stat pages to see who's actually best. Shows your own standing, how far you are from the rank above you (even if you're nowhere near the top), and whether you've moved up or down since last week.

v63.1Improved
Match Theater - Bigger Pitch, Real Player Icons, Speed Controls

The pitch is noticeably bigger now, and the player behind every save, tackle, and goal shows up as a real avatar on the ball - with its own action icon (🧤 save, 🛡️ tackle, 🥅 goal) so you can tell what happened at a glance. Playback is also a lot slower by default, and every result page now has 0.5x-2.5x speed controls plus Skip, right next to the pitch.

v63.0New
Match Theater - Watch Every Card Game Result Play Out on the Pitch

Every card game result page now opens on a live animated pitch, not just scrolling text - the ball tracks tackles, saves, and shots in real time, and goals hit with a full flash-and-spark celebration synced to the scoreboard. Live across Draft Challenges, Friendlies, Arena Challenges, 2v2 Team battles, and the Arena ladder.

v62.0Improved
Brand Refresh Finished - Favicon, App Icon & Link Previews

The browser tab icon, iOS home-screen icon, and every Discord/social link preview (match results, team pages, standings, news) now match the site's real neon-glass look instead of the old gold-and-green theme they'd quietly kept.

v61.2Fixed
Projected Final Standings Now Plays Out Real Matchups

The projection used to extrapolate each team's own form with zero regard for who they're actually playing next. Now every remaining fixture is predicted head-to-head - evenly matched teams split points instead of both getting full credit for beating each other.

v61.1Improved
Manage Panel Polish

Staff-facing pages (Rankings, Awards, Channels & Roles, Suspensions, and more) picked up the same glass styling and cleanup pass the public pages already got.

v61.0New
Card Game Milestones

A real timeline of your card game career - first card claimed, first shiny, first Icon, first real-match performance boost, first Card Duel win, biggest pull ever, and more, all in order. Find it under Card Game Hub → Progress → Milestones.

v60.1Fixed
News & Rulebook Editors Reworked

Typing in the News/Rulebook body editor could insert new letters in the wrong order instead of where the cursor actually was - fixed. Both editors also moved off a single cramped column onto a real two-column layout, and Rulebook's category field now offers your existing categories to pick from instead of only free typing.

v60.0Improved
Free Agents, Market, Rankings, Transfers, Awards, Schedule & Results Got A Real Upgrade

Each page now uses the layout that actually fits its data instead of a flat text list - card grids for Free Agents/Rankings, a real value bar on Market, color-coded rows on Transfers, gold-glow trophy tiles on Awards, and proper match-ticket cards on Schedule/Results/This Gameweek.

v59.4Fixed
Team & League Crests No Longer Get Cropped

A non-square team or league logo could lose part of its edges wherever it was shown at a fixed size. Every crest on the site now shows in full.

v59.3Fixed
Roblox Profile Pictures Load More Reliably

Roblox avatars could fail to load and just show a broken image with nothing recovering it, especially in the Card Game's Arena/Challenges/Friendlies pages. They now fall back cleanly instead.

v59.2Fixed
Menu Could Get Stuck Behind Page Content

The site menu (and a couple of other dropdowns) could render behind the page instead of on top of it, making them unusable below the header. Fixed.

v59.1Fixed
Team Icons No Longer Show Twice

A team with both a custom crest and an emoji set was showing both side by side on Standings and team pages. Now shows one - the crest if set, the emoji otherwise.

v59.0New
Neon Glass - A Real Visual Redesign

New color palette, new typography, and real glass-blur surfaces across the whole site - the nav, cards, dropdowns, forms, and every league's own theme color now sits inside the same near-black, glowing look.

v58.3Fixed
Closed The Same Duplicate-Payout Races Found On The Bot

The result-reporting form (the most common way results get entered), directory badge purchases, and every "run the match" step shared with the bot (Higher/Lower, Trivia, card draft, Arena, card duels, friendlies) had the same double-processing gap fixed here too - see the bot changelog for the full rundown.

v58.2Fixed
Result Wizard's CDM/CF Labels Corrected

The formation picker in the result-entry wizard mislabeled two 4-3-3 slots, which was the root cause behind TOTW's CDM and CF spots always coming up empty (see the bot changelog). Fixed.

v58.1Fixed
Deleting A Reported Result Now Reverses Its Bets Too

Deleting an already-finished result correctly reversed standings and budgets, but left any bets on that fixture still marked resolved with Kon already paid out - a wrong payout from a deleted result could never be corrected. Fixed.

v58.0Improved
Card Game Shows A Real "Resolving" Step

Arena, 2v2 Team Challenges, Card Duels, and Friendlies pages used to sit on a stale or blank screen for the few seconds a match takes to actually resolve - each now shows a proper "resolving" state and auto-refreshes into the real result.

v57.0Improved
Transfers Page Combines Every League Into One Sortable List

A server running multiple leagues used to have Transfers force-split into per-league tabs, with no way to sort - the only whole-server page shaped that way. Now shows every league combined by default (each row labeled with its league), with a Newest/Highest Price sort. Staff can switch back to the old per-league-tabs view with /configmisc serverdefaults splittransfersbyleague.

v56.5New
See how long a player has been at your club

Each squad row on My Team now shows how many days a player has been with the team and the date they arrived, right under their position - no extra digging through transaction history needed.

v56.4Fixed
Mobile: Forms No Longer Auto-Zoom On Tap

Every text input, select, and textarea used a font-size just under the 16px threshold iOS Safari uses to decide whether to auto-zoom the page on focus - fixed site-wide on narrow viewports.

v56.3Fixed
Tournament Group Table No Longer Clips Long Names

The group-stage standings table used overflow: hidden instead of scroll - a long team name just got cut off with no way to see the rest. Now scrolls like every other table on the site.

v56.2Fixed
4 More Broken Special Characters Fixed

Same root cause as the friendly-match dash fix below: a handful of other spots (the directory review queue, a star-rating label, every "None" dropdown option in Channels & Roles) were showing raw escape text like \u2014 instead of the real character. Swept the whole site for the same pattern and fixed everything found.

v56.1Fixed
Mobile: 10 Cramped/Unreachable Forms Fixed

The friendly-match result wizard's "Add Loan" button was overflowing off-screen on a phone - a hardcoded 2-column layout with no mobile breakpoint, found and fixed there and in 9 other places across the site (league creation, rulebook manager, economy settings, team creation, division settings) that had the same issue.

v56.0Improved
Broadcast Graphics Redesign

Every Discord link-preview card (league, standings, match, team, player, tournament, friendlies) now shares a real grid texture and a framed glass content panel instead of floating text directly on the gradient, plus one consistent brand mark in the corner instead of each page repeating its own footer line.

v55.16Fixed
Forfeited Matches Show Their Real Score

A forfeited match's page and its Discord link-preview used to fall back to "vs" / "Upcoming" instead of the real score - fixed everywhere. The Declare Forfeit control also gained a "Both teams" option for a genuine double no-show, now scored as a 0-0 draw for both sides.

v55.15Improved
Bracket Preview Shows Real Winners

The knockout bracket preview now shows "Winner of X vs Y" for an undecided slot instead of a flat TBD.

v55.14Improved
Byes Shown Directly In The Bracket

A round-1 bye now appears in its actual bracket slot instead of a separate note above it.

v55.13New
Position Column On Player Stats

Player Stats now shows each player's position alongside their numbers.

v55.12New
Poll Editing

Manage > Polls can now edit an existing poll instead of only creating and deleting.

v55.11New
Position-Role Linking On The Website

Channels & Roles can now link a Discord role to a player position (matching the bot-side version), so the website's own role tooling stays in sync.

v55.10Improved
Real Higher/Lower Odds Shown Up Front

The website's own Higher/Lower copy now shows the real dynamic odds, wager max, and daily limit instead of stale placeholder numbers.

v55.9Fixed
Confirm Dialogs No Longer Crash On Decline

Declining or cancelling a confirm dialog (delete/release/etc.) used to throw all the way to the site's error page - an expected rejection, not a real failure. Fixed.

v55.8Improved
Tournament Page Shows The Full Bracket Early

A tournament's page now shows round-1 byes and the full bracket structure (TBD placeholders through the Final) as soon as it's created, instead of only once matches exist.

v55.7New
Spectator Channel Setup, Stage Channels Included

Channels & Roles gained a Ranker role picker and a Spectator Voice Channel picker, which - like the bot's own /configchannels spectators - now also accepts Stage channels, not just regular voice.

v55.6Fixed
Ranker Role Corrected

The Ranker role now gates the actual player Rankings page (star ratings) instead of Power Rankings, which was the wrong target. Power Rankings stays staff-only.

v55.5New
Formation Trial

New daily Formation Trial - a fixed scripted opponent that requires your squad to be set to today's rotating required formation. Real Kon reward, one attempt every 24 hours.

v55.4New
Gem Shop Bundle Deals

New Bundle Deals in the Gem Shop - spend Gems on a bundle of Kon plus a guaranteed pack pull, priced as real value against the pack's own Kon cost. 3 tiers: Starter, Value, and Mega.

v55.3New
Rulebook Season History

The Rulebook now has a season picker - past seasons show the frozen rulebook exactly as it stood then, read-only, unaffected by later edits. /newseason archives the current rulebook automatically.

v55.2New
Ranker Role

New Ranker role (set via /configroles ranker) - members with it can now edit Power Rankings on the website without needing full staff access.

v55.1New
Team Challenge Open Matchmaking

Don't know who to challenge? Post your 2v2 duo for Open Matchmaking instead of naming 2 specific opponents - any other duo can join in from the new Open Matchmaking board, and the match locks in automatically once both spots fill.

v55.0New
Cross-Server Exhibition Match

New Cross-Server Exhibition Match - battle a random battle-ready squad from a completely different server. Friendly and unranked (no AP/rank at stake, no card ever changes hands), but real Kon and card XP either way. One match every 30 minutes.

v54.2New
Auction House

New Auction House - list a card with a starting bid and a countdown (1h/6h/24h), anyone can outbid until time runs out. Kon is held the moment you bid and refunded instantly if you're outbid. Website-only, same as the other 2-player-market features.

v54.1New
Memory Match

New Memory Match game - flip tiles to find all 6 pairs, pure memory, no wager. Clearing the board pays Kon, plus a Gem bonus for solving it in 8 attempts or fewer. One attempt every 24 hours.

v54.0New
Football Trivia

New Football Trivia game - 5 knowledge questions per attempt (24h cooldown), no wager, no way to lose Kon. 40 Kon per correct answer plus a 10-Gem bonus for a perfect run.

v53.23New
Manager Profile

New Manager Profile page under Progress - one showcase pulling together your Trophy Case badges, Collection totals, Arena rank/record, and biggest Higher/Lower win, with quick links into each.

v53.22New
Streak Insurance

Buy Streak Insurance in the Gem Shop (8 Gems) to protect your /daily streak - the next time you'd miss the claim window, it saves your streak instead of resetting it. One-time use, shows up on the Overview claim result too.

v53.21New
Higher/Lower Leaderboard

Biggest single-game win, ranked - see /cardgame/higherlower.

v53.20New
Cross-Server Leaderboard

Top Arena players across every real server on this platform, not just your own - see how you stack up platform-wide.

v53.19New
Higher/Lower

A real stakes gambling game - wager Kon, guess whether the next random player's overall is higher or lower, each correct guess multiplies your pot ×1.5 (up to 8 rounds). Cash out anytime, or push your luck - a wrong guess forfeits the whole pot.

v53.18New
Real pack-opening experience

Buying a pack now shows an actual sealed foil pack (idle shimmer, stacked visual for multi-pack buys) that you tap to open - a shake, flash, and tear-apart animation plays before the cards reveal, instead of jumping straight to the card grid. Pack tier tiles also got the same foil shimmer at rest.

v53.17New
Daily Wheel on Overview

A 4th hero tile alongside Claim/Daily/Packs - glows when a free spin is ready. Also gave the wheel itself a real visual pass: bigger disc, gold-forward palette, decorative hub, properly-centered segment labels.

v53.16Fixed
Gem Shop Featured cards now show their real special version

The Featured showcase was still rendering the plain regular card with a text caption - it now renders the real Icon/TOTW (if one exists) or a freshly-generated real Showtime card as the actual card art, with a badge showing which.

v53.15Improved
Gem Shop: Icon/TOTW only as exact copies

Icon and TOTW pulls no longer mint fresh cards - they only succeed as an exact copy of an already-existing Icon/TOTW card for that player (falls back to Showtime otherwise, which always rolls fresh).

v53.14New
Daily Wheel

One free spin every 24 hours for Kon or Gems, with a real 0.5% jackpot chance (2,500 Kon + 15 Gems). New /cardgame/wheel page with a real spinning animation.

v53.13New
Facilities on the website

Training Ground, Scout Network, and Stadium are now manageable from /cardgame/facilities - same upgrades, costs, and construction times as Discord's /facilities, and their bonuses now apply to website Claim/Daily too.

v53.12New
Collection rework: all-time, all variants, milestones

Collection now tracks every card variant (Regular, Shiny, Icon, Showtime, TOTW) separately, survives selling a card away (all-time, not just current ownership), and pays real Kon at 7 milestone thresholds (10 to 500 total combos collected).

v53.11Improved
More action in every match

Matches now run 16 attacking sequences instead of 10 - noticeably more goals, saves, and set-piece chances per match.

v53.10Improved
More action in every match

Matches now run 16 attacking sequences instead of 10 - noticeably more goals, saves, and set-piece chances per match.

v53.9New
Match requests on Overview

Every pending challenge/friendly/draft invite across all 6 match types now shows up right on the Card Game Hub overview, with a direct link to respond - no more hunting through each hub separately.

v53.8New
Animated results for every 2v2 mode

Team Challenges, 2v2 Combined Friendly, and 2v2 Draft Challenge results now play out goal-by-goal like every 1v1 mode already did, instead of a flat final score.

v53.7New
2v2 Draft Challenge

Pick a teammate and two opponents - all 4 of you draft your own 11 from random candidates (same as a normal Draft Challenge), then your squad merges with your teammate's into one best XI, same for the opposing duo, and it's a single match. Winning duo splits 500 Kon. Built as its own independent system - doesn't touch the live 1v1 Draft Challenge at all.

v53.6Improved
Card Game Hub navigation rebuilt

The flat 12-tab row is gone - navigation is now an icon-rail with category flyouts (Play, Arena & Friendlies, Market, Progress, Gem Shop), same proven pattern as the Manage panel. Every previously-buried page (Leaderboard, Challenge a Friend, 2v2 modes, General Market, Direct Trading, Watchlist, Awards, Collection) now has a real, findable spot instead of only being reachable via an inline link on some other page.

v53.5Improved
Gem Shop pool now shows Icon/Showtime/TOTW

Every pool entry and Featured card now shows an example Icon and Showtime overall (illustrative, not guaranteed - real rolls are randomized). TOTW draws from a genuinely different pool (a real league's own roster, not the regular summon pool) - it now gets its own dedicated section instead of just a caption explaining the difference.

v53.4Improved
Legacy leaderboard rearranged

Fixtures and the leaderboard stats (Top Scorers, Top Assists, Top Team) used to sit as equal-weight boxes in one grid, stretching awkwardly. Fixtures now gets its own wide column; every leaderboard stat is grouped together in a dedicated panel next to it.

v53.3Improved
General Market filters and sorting

Filter by position, minimum star rating, and buyable-now-only, plus sortable columns (Player, Rating, Overall, Price) - click a column header to sort, click again to flip direction.

v53.2New
2v2 Combined Friendly

Team up with a friend and merge your two squads into one best XI (better card wins each slot) - then battle another combined duo in a single match. No rank effect, optional Kon wager split between the winning duo. Distinct from 2v2 Team Challenges, which runs two separate legs instead.

v53.1New
2v2 Team Challenges

Team up with a friend and battle another duo - pick a teammate and two opponents from the Arena page, ready up together once accepted, and watch both legs (you vs. their first opponent, your teammate vs. their second) run as an aggregate score. Each leg still counts as a normal Arena result for AP/rank on all 4 accounts.

v53.0New
Friendlies now on the website

Direct request. Challenge someone to a practice match at /cardgame/friendly - no Arena points or rank effect either way, doesn't use an attack, with an optional Kon wager (winner takes the pool, a draw refunds both). Same rules as Discord's /friendly, which stays completely untouched - accept, preview both squads, then the challenger starts the match when ready.

v52.0New
General Market, /awards on the website, and a richer Legacy leaderboard

General Market (new /cardgame/market/browse) - buy a fresh copy of any claimable player at the base economy price, same as Discord's /cardmarket browse + /card buy - this was genuinely missing from the website, only Trade Market and Gem Shop existed. /awards also has a real website page now (Card Game Hub - Server Awards). Legacy's leaderboard was goals-only - now tracks assists too (same season-scoped system as goals) plus a Top Team line.

v51.0New
Direct Trading, duel badges/pfp, and shiny glow everywhere

Direct Trading (new /cardgame/market/direct) - propose a specific card-for-card offer to a specific person, either side optionally adding Kon, distinct from Trade Market's fixed-price listings. Same offers as Discord's new /cardmarket direct. Challenges and Arena Challenges duel screens now show both players' pfp and their top Trophy Case badge. Shiny's gold glow, previously only in the Packs reveal, now shows everywhere a Shiny card's real image appears - My Cards, the per-card manage page, and the claim reveal.

v50.0New
Arena Challenges: a real Ready step, squad previews, and Rematch

Direct "I couldn't see the animation of him joining because it auto-started the match" report. Accepting an Arena Challenge used to run the whole match instantly - now it locks in both squads and stops at a real Ready phase, where you can preview your own squad AND the opponent's before either of you commits. Match only runs once both sides hit Ready. Also added: a Rematch button on completed Challenges and Arena Challenges, and Card Draft Challenges now show the opponent's squad (as far as they've drafted) once you're done with yours.

v49.0New
Pack quantity picker, a real Collection page, and Gem Shop fixes

Packs can now buy more than one at a time (up to 10) with a real +/- picker showing the live total cost - the backend already supported bulk buying, the UI just never exposed it. New Collection page (My Cards > See your full collection progress) shows every real player you can collect and which ones you already own, grouped by star rating, with a completion bar. On Gem Shop: fixed the featured cards visually overlapping (real spacing fix, not a bandage), and clarified that Icon/Showtime/TOTW pulls draw from the exact same pool shown - they're a rarer version of the same players, not a separate hidden list.

v48.1New
Gem Shop shows off the featured cards in the pool

Direct request. The 3 highest-overall players currently in the summon pool now render as real card art above the Summon buttons - the best one bigger in the middle, the next two smaller and fanned out on either side, same card renderer every other card image on the site uses.

v48.0New
Squad Building Challenges, Arena Leaderboard, and a new formation

Squad Building Challenges (new /cardgame/sbc) - 5 challenges (Bronze Foundations, Silver Statement, Star Power, One Club, Elite XI), each burns real cards from your collection for a guaranteed Kon/Gems reward, live requirement checking as you pick. One claim per challenge. Discord gets a read-only /card sbc list - submitting really wants a real card picker, which fits the website better. Also: a real Arena Leaderboard (top 25 by Arena points, your own rank if you're outside it) existed nowhere before now - new page linked from Arena, plus /arenachallenge leaderboard on Discord. And 4-1-2-3 joins the formation list everywhere (Squad Builder, /formation, /11, Legacy).

v47.1New
Waiting/join animations on Challenges, and a Gem Shop pool preview

Direct requests. Challenges and Arena Challenges now show a pulsing radar animation while you're genuinely waiting on the other player, plus a brief celebratory flash the instant live-refresh picks up that they've responded - instead of the page just silently redrawing. Gem Shop's Summon section also gained a "View Pool" list showing the actual real players you could pull, sorted best-first, instead of just a bare "150-player pool" claim with nothing to check against.

v47.0Fixed
Real speed and reliability pass: caching, retries, and a pack-reveal animation fix

Several real, confirmed root causes fixed in one pass after "loading takes a lot of time" and "Roblox profiles don't always render" reports. Roblox avatar lookups had zero caching anywhere and never retried a still-rendering ("Pending") image - both are now cached and retried, on the bot and the website. Server info (name/icon) was sharing a 15-second cache with security-sensitive staff checks, getting re-fetched live on almost every Card Game Hub page load - given its own much longer cache, with staff/role checks left untouched. A permanently-broken server ID was retrying live on every request forever with no backoff - now capped. Pack-opening's flip animation used to run on a fixed timer with no idea whether the card's image had actually loaded, so a freshly-pulled card's art (which is often rendering for the very first time) could pop in with no animation at all - it now waits for the image to genuinely finish loading, with a shimmer placeholder while it renders. Also: any "use server" action failing right after a deploy (expected Next.js behavior, but was showing a dead-end error screen) now auto-refreshes instead.

v46.0Fixed
Challenges and Arena Challenges no longer look stuck for the other player

Direct "only the one who accepted it can play" report - confirmed it wasn't broken game logic, both sides were always set up correctly. The real problem: these pages never refreshed themselves, so whoever DIDN'T just click Accept was sitting on a frozen page with nothing telling them anything had changed - Arena Challenges especially, since accepting resolves the whole match instantly. Both challenge-detail pages and both hub lists now auto-refresh while you're waiting on the other person, same live-refresh Match Center already uses for live fixtures.

v45.33Fixed
Economy settings: made the Divisions overlap explicit

Win/draw/loss payments, card fines, and default roster size on Manage > Economy are server-wide fallbacks - a division's own value on Divisions & Teams always wins, but that was only ever explained once in a paragraph at the top of the page. Both affected sections now link straight to where the real override lives. Also fixed a real layout bug in the slider fields where the narrowest columns could let the slider spill its number box out of its own row.

v45.32Improved
Bolder buttons, hero headline, and section accents

Buttons site-wide went from a flat solid fill to a real glossy gradient with an inset highlight - fixed a rule-order bug along the way where hovering used to flatten the gloss instead of brightening it. The homepage's big headline and every page's section-heading accent bar picked up the same gradient treatment already used for hero stat numbers. All additive CSS, nothing structural changed.

v45.31New
Sell All ≤ tier - a real bulk-sell option

Direct "can we add an auto sell option?" request. My Cards now has a one-click "Sell All" next to a tier picker (Unranked through 4★) alongside the existing Sell All Duplicates - clears out a whole tier of low cards at once instead of one at a time. A card currently in your squad, on the bench, or listed on the trade market is skipped rather than blocking the rest of the batch. Deliberately caps at 4★ - never offers to bulk-sell your best cards by accident.

v45.30Fixed
Match reveal: real pacing instead of a flat wait, plus a goal animation

Direct "the animation looks bad it just looks like slow internet" feedback - confirmed real: every log line paused a flat 1.2-1.5 seconds regardless of whether anything happened, which reads as stalling on a full 15-20 line match. Routine lines now move quickly; only an actual goal gets a real pause, timed to actually show the new goal animation - a small ball that flies from center toward whichever side scored and fades like it's landing in the net, per direct request. Added a Skip to Result button for anyone who doesn't want to wait at all. Arena's own battle reveal had the exact same flat-pause problem and no scoreboard styling at all (plain score text) - it now shares the identical scoreboard, pacing, and goal animation Challenges/Legacy already have, per direct "the whole scoreboard could be used everywhere" request.

v45.29Fixed
Signing offers can now be accepted from the website inbox

Direct "players can't accept offers through their inbox" report - confirmed real, and distinct from the transfer-consent flow: a signing offer (from /sign or Make an Offer to a free agent) never moves through the same AWAITING_PLAYER_CONSENT step a standard/release-clause transfer does - it stays PENDING until the player themselves responds. The inbox's Accept/Decline only ever recognized AWAITING_PLAYER_CONSENT, so a signing offer showed up with no buttons at all, and even a fixed frontend would have been rejected bot-side. Both sides now handle it - full parity with the Discord button, including a ranked player's random-team assignment (silent on the website, since there's no interaction to animate a spinning wheel into).

v45.28New
Legacy Mode arrives on the website

Direct "wheres even legacy mode" report - a real gap. Legacy (your own generated 8-team solo career league, separate from real leagues) was the one card-game system still Discord-only after everything else moved over. A new Legacy tab covers the full thing: start a season, standings, fixtures, top scorers, and playing your next match - which gets a full animated replay (same treatment as Challenges) instead of just a final score, since the website can simulate and persist the whole match at once instead of live-ticking it the way Discord does. A season started on Discord and one started here are the exact same league either way.

v45.27Fixed
Pack-opening animation, for real this time

Direct "the animation looks bad" feedback on 45.26's pack reveal - confirmed two real bugs, not a taste issue. The 3D card-flip had no perspective set anywhere, so it rendered as a flat, broken-looking horizontal squash instead of an actual flip. And the gold glow on a Shiny pull was supposed to start once the flip settled, but a CSS ordering mistake silently reset its delay back to zero, so it was pulsing from frame one and visually fighting the flip instead of following it. Both fixed.

v45.26Improved
Challenges and Packs get a real presentation

Direct "make the 1v1 part look a lot better" feedback, plus packs. A Challenge now has a persistent VS banner across every phase instead of plain text, draft picks render as real hover-lift card tiles (Icon/TOTW pulls get their own glow), the drafted-squad review rows highlight on hover, and the match reveal has a genuine scoreboard with a goal-flash animation instead of a bare score line. Packs: each tier is now a themed gradient tile (bronze through legendary) instead of an identical flat row, and opening a pack reveals the pulled cards with a staggered flip-in animation - Shiny pulls get a soft glow. Both respect the site's existing Animation preference (Full/Reduced/None) automatically.

v45.25New
Squad Builder: choose your exact card, not just the highest overall

Direct report: "people are unable to add their own desired cards" - confirmed real. Owning more than one card for the same player (a regular one and an Icon/Shiny/TOTW/TOTS/Showtime/Captain version, say) used to silently collapse to whichever had the highest overall everywhere - the squad dropdown never even offered the others as options. Every owned copy is now listed separately with its own tag (Icon/Shiny/TOTW/etc.), so the exact desired card can be placed in a slot on purpose. Old squads and every Discord command (/11, /switch, /subs, /gameplan, autofill) are fully unaffected - this only adds a choice, it never takes the old "best copy" behavior away.

v45.24Fixed
Deploy pipeline hardened further - a squad/Arena edge case closed before it could ship

Found and fixed during the Squad Builder work above, before it ever reached production: Arena battle-strength calculation had its own, separate, older copy of the "resolve a squad slot to a real card" logic - it would have broken (and separately, was already silently scoring Icon/TOTW/etc. squad members as their live regular-tier stats instead of their real locked ones) the moment someone used the new card picker. Unified onto the same resolver the Squad Builder itself uses. Verified against real live squads before and after - identical results for every existing squad, correct results for the new per-copy choice.

v45.23Fixed
Deploys were causing real dropped requests - and a real stuck Challenge because of one

Direct report: a site update landed mid-Challenge and both players got stuck staring at "waiting on your opponent" forever, even though both had already readied up. Confirmed two real, related bugs. First, Challenges: the match is only simulated once, inline in whichever request sets the second ready flag - if that request gets cut off (a deploy restarting the process being exactly what happened here), the ready flags are already saved but the match itself never runs, and nothing was in place to retry it. Fixed with a real self-heal: loading a Challenge that's fully ready on both sides but still stuck now finishes the match right there, no manual fix needed. Second, and the actual root cause of the interruption: deploys were rebuilding straight into the live folder the site was still serving from, which could hand an in-flight request a page chunk that had just been deleted out from under it - confirmed live (a rebuild-and-reload dropped real requests; a reload with no rebuild dropped none). Deploys now build into a fresh folder and swap it in atomically only once complete, so a deploy can no longer interrupt anyone mid-action again.

v45.21New
Quests and Weekly Challenges: track and claim, right on the website

Progress toward every Quest tier and Weekly Challenge already moved from actions taken on the website, not just Discord commands - but seeing that progress, or actually claiming a finished reward, was Discord-only (/quest, /weekly). A new Quests tab on the Card Game Hub shows both in full, with real Claim buttons backed by the exact same reward logic (guaranteed rare card + Kon for a tier, Kon for a challenge, plus the full-completion bonus) the Discord commands use - no Discord required for either half now.

v45.20Fixed
Career Portal: pending offers are no longer invisible in the wrong server

Root cause behind repeated "transfers aren't landing" reports: playing in more than one server, Career Portal would silently show whichever one you happened to land on, with zero sign a transfer offer or consent was actually waiting in a different one - the website-accept feature was working the whole time, just invisible. The server picker and the in-page switcher both now show a live pending-item count per server, sorted so the one with something waiting shows first, plus an "N elsewhere" flag on the switcher when what you're viewing isn't the server that needs you.

v45.19Fixed
Transfer offer DM failures now point straight at the website fallback

When a transfer offer or consent DM couldn't be delivered (DMs off, blocked), the message just said so and stopped - even though the exact same Accept/Decline already exists in the Career Portal inbox. All three of those messages (initial offer, team-offer, post-accept consent) now link straight to it. Also fixed a real duplicate-offer bug found while in there: a second release-clause or standard offer could be created for a player who already had one PENDING or awaiting their consent - now blocked with a clear message pointing at the existing offer instead.

v45.18Improved
My Career and Card Game Hub promoted onto the homepage's main nav

The platform's two real personal-hub destinations were buried in the homepage's flat Explore list with no more prominence than Changelog. Both now sit in the always-visible top nav next to Search.

v45.17Fixed
League site nav: pills, spacing, and no more duplicate categories

Direct feedback on 45.16's new category dropdown row, in two rounds. First: it showed the exact same Competition/Squad/Market/Content categories the hamburger already had, at the same time - "redundant/confusing". Fixed by splitting them by viewport: the hamburger's own copies now only render on mobile (where the dropdown row is hidden), so the two navs are complementary, never duplicated. Second: the pills themselves had no border or background at rest and sat 2px apart - "not highlighted and too close together". Both fixed with real spacing and a visible border/background at rest, not just on hover.

v45.16New
League sites get a real persistent nav

Every league site (standings, rosters, transfers, and ~25 pages more) sat entirely behind one hamburger menu, nothing persistent on desktop. Added an always-visible category dropdown row - Competition, Squad, Market, Content - mirroring the exact same taxonomy the hamburger already used, so nothing needed re-categorizing, just surfacing. Preserves a multi-division league's current division filter through every link, same as the hamburger does.

v45.15Improved
Career Portal redesign: a compact switcher and a real tab strip

The full-width row of every server you play in, and an icon-tile grid for Overview/Stats/Achievements/Transfers/My Team/Scouting/History, both got a lighter treatment - a compact dropdown switcher and a horizontal pill-tab strip - freeing up real space above the fold for the profile itself.

v45.14Fixed
Card Game Hub was only showing 3 (mostly inactive) servers

Two real discovery bugs, found from direct reports. First, the hub required a Player row (league membership) to list a server - the card game has no such requirement anywhere else, so real card-game-only servers were invisible. Second, once that was fixed, the hub was still filtering by an old module-enabled allowlist that predated the Card Game feature - hiding the platform's 3 biggest, most-active card game servers (500-680+ real cards each) behind ones with a handful of rows. Both checks removed; only an explicitly hidden site is excluded now.

v45.13Improved
Card Game Hub becomes its own real destination

Moved off /[league]/card-game/* onto a top-level /cardgame hub, same shape as Career Portal - a server switcher instead of being nested under one league's own URL. Gained a persistent Kon/Gems currency HUD and a horizontal pill-tab nav (Squad, Market, Arena, Challenges, Evolutions, Gem Shop) instead of a per-page standalone wallet card on every screen. Quest and Weekly Challenge progress now also updates from actions taken on the website, not just from Discord commands - previously only the bot's own commands moved those needles.

v45.12Improved
Homepage: cut duplicate content, led with a stronger pulse

Two real structural redundancies, not just visual polish. The stats block right after the 'I'm here to' cards repeated the exact same leagues/teams/players numbers the hero had just shown a screen-height above - same data, same visit. Replaced with the 'this week' pulse (matches/goals/transfers), moved up from much further down the page where a new visitor was unlikely to ever scroll to it, and given a third stat (transfers) to earn its more prominent spot; falls back to the original counts on a genuinely quiet week. Separately, Live Activity merged in the same recent clips the Clips grid two sections above it already showed as thumbnail cards - the same clip's title routinely appeared twice on one page load. Live Activity is now news-only and renamed Latest News to match.

v45.11Fixed
Mobile: squad row overflow and a clipped budget figure

Two more real layout bugs found by actually signing in and screenshotting at 390px (not just reading the CSS). My Team's squad rows (name, position, role dropdown, Release button) never wrapped - the row was measurably 592px wide in a 390px viewport, with no horizontal scroll affordance, and on the longest name it read as visually overlapping. Now wraps cleanly onto two lines. Separately, a team's budget figure (e.g. €5,000,000) has no natural line-break point, so it silently overflowed its stat tile and got clipped by the card's own overflow:hidden - a real number was reading as '€5,000' with the rest just gone. stat-value--hero now wraps as a last resort instead of losing digits.

v45.10New
Scrollable tables on mobile now hint there's more to see

Standings, leaderboards, and every other .data-table sit in a horizontally-scrolling card on narrow screens (more columns than a phone is wide), but nothing ever hinted there was more to scroll to - confirmed live at 390px, the table just looked cut off at the card's rounded edge. A CSS-only scroll-shadow now fades the trailing edge in/out as you actually scroll, complementing the sticky first column's own shadow (which only ever covered the 'don't lose the row label' half of this).

v45.9Fixed
Mobile nav: sign-in button and shop icon no longer wrap awkwardly

At narrow widths, the hamburger/search icons plus 'Sign in with Discord' and the brand name didn't fit on one line - the button itself wrapped into two cramped lines ('SIGN IN WITH' / 'DISCORD'), and the shop icon got stranded alone on a second row, flush left with a dead gap beside it. The button now shrinks to fit on one line below 640px, and the shop icon is pinned to the right edge (margin-left:auto) instead of wherever space-between's per-line math happened to leave it.

v45.8New
Team debt now surfaces as a real inbox notice

checkTeamDebt only ever DMed a team's Captain/Transfer Manager when their budget went negative - easy to miss entirely with DMs off, and the budget number itself was already visible on My Team without ever being called out as a problem. A new team_debt inbox item flags it directly for anyone holding those two roles, same scope the bot's own DM already used.

v45.7New
Market listing consent and demand outcomes now reach the inbox

Two more DM-only silent-failure gaps closed. Approving your own market listing (Loan/Transfer/Release Clause) had zero website presence - a new listing_consent inbox item covers Accept/Decline, backed by a new respondToListingConsent core extracted from the same button handler Discord already used. Separately, a demand's outcome (accepted or denied) was DM-only too - denied in particular left no trace anywhere else on the site - so the existing demand inbox item now also surfaces DENIED and ACCEPTED, not just PENDING.

v45.6New
Loan offers now reach the website inbox too

Loan offers (/getloan, /giveloan) had no website presence at all - the responding captain's only path was a Discord DM, the same silent-failure mode standard transfer offers had before their inbox item shipped. A new loan_offer inbox item covers Accept/Decline (no Counter - the Discord flow itself has none for loans either), backed by a new respondToLoanOffer core extracted from the exact same button handler Discord already used, so budget checks, roster caps, and the Discord role swap all run identically either way.

v45.5New
Counter a transfer offer right from the inbox, and a stale wizard message fixed

The team_offer inbox item deliberately skipped Counter when it shipped - a modal was the only way to collect a new price. It isn't anymore: a plain price field now sits behind the same Counter button fixture-time proposals just got, backed by a new counterTeamOffer core alongside the existing accept/decline path. Also fixed: the league-creation wizard's Overview step still said 'No teams yet - use /team create in Discord' and 'Website Transfers: Enabled (once built)' even though Manage > Teams and Make an Offer have both been real for a while - the team-count line now links straight to Manage > Teams.

v45.4New
Fixture time proposals: respond right from the website inbox

/requestfixturetime's Accept/Counter/Decline reached the responding team's decision-maker(s) by Discord DM only - the same silent-failure mode already fixed for suspensions and warnings. A pending proposal now surfaces as a real inbox item on the career pages, with Accept, Counter (pick a new time), and Decline all backed by the exact same core functions the Discord buttons call - full parity, not a separate DB-only path.

v45.3New
Disputes: a real, resolvable queue instead of a Discord-only log post

/reportdispute used to be fire-and-forget - an embed in the logs channel, with no record staff could come back to. A new Manage > Disputes page (staff and Transfer Agents) reports and resolves disputes for real: an open/resolved queue, who reported and who resolved each one, and an optional resolution note - backed by the exact same executeReportDispute the slash command uses, so the Discord-side log post still happens too.

v45.2Fixed
Team creation's Team Manager fallback now points to the real fix

When website team creation couldn't auto-assign a Team Manager (member not found, or already on another team), it told the admin to 'use /appoint in Discord' - stale advice now that a team's own roster page can set that role directly, with the same caps/badge-sync/audit-log parity. The message now links straight there.

v45.1New
Suspension and warning notices now reach your website inbox

Both /suspend and /warn previously notified the affected member by Discord DM only - a known silent-failure mode when their DMs are off. The existing website inbox (career pages) now surfaces active suspensions, lifted suspensions, and warnings as real notification items, so they're never missed just because of a DM setting.

v45.0New
Respond to transfer offers from your website inbox

The existing inbox (career pages) already notified you of pending offers and demands - now a Team Manager/Head Coach/Transfer Manager also sees a PENDING standard-transfer offer sitting on their own roster there, with real Accept/Decline buttons, instead of only ever getting it as a Discord DM. Counter still needs Discord's negotiation modal.

v44.2Fixed
"All Competitions" now really means everything, and Friendlies are season-scoped too

Two corrections to the competition-type filter (v43.0/v43.1) on League Records, Player Stats, and Leaderboard: All Competitions was scoped to league + cup + tournament only, deliberately excluding friendlies - it's genuinely everything now, friendlies included. And Friendlies previously ignored the season filter entirely - it's season-aware like every other scope now, using each stat's own recorded season.

v44.1New
Make an Offer - standard transfers can start from the website now

The other half of "let team managers start a transfer from the website": every rostered player's profile page now has a Make an Offer form, for that league's other teams' Team Managers/Head Coaches/Transfer Managers once a league turns the setting on. Runs the exact same market-value floor, transfer-window, and captain-protection checks /transfer offer does, and the responding team gets the exact same Discord DM with Accept/Decline/Counter buttons - only where the offer starts moved, not the negotiation. Loans/trades/release-clause offers still stay Discord-only for now.

v44.0New
Create a team from the website

Manage > Teams has a real Create Team form now - name, division, starting budget, emoji, and an optional Team Manager - instead of Discord being the only way in. Runs through the exact same validation and Discord-role/log setup as /team create, so nothing about it is a second, weaker path. The "Create teams (coming soon)" line at the end of the league-creation wizard now links straight to it.

v43.1New
Golden Boot & MVP by competition, on League Records

A new comparison strip shows each available competition's own top scorer and top Man of the Match side by side - League, Cup, Tournament (once a server's actually recorded one of those), and Friendlies - without clicking through each filter tab one at a time to find them.

v43.0Fixed
League Records/Player Stats/Leaderboard's competition filters, unified and fixed

Confirmed bug: League Records' always-on "League" button silently combined league fixtures and friendlies into one number - never a real league-only view. Player Stats had the same button meaning "any competitive fixture" (league + cup + tournament) with no way to isolate one. Leaderboard had no filter at all and quietly excluded cup/tournament fixtures by accident, since a tournament fixture's own gameweek carries no league ID. All three now share one real model: All Competitions (league + cup + tournament, friendlies excluded) is the new default, League/Cup/Tournament/Friendlies are all real, separate filters, and Cup/Tournament only show up once a server's actually recorded a stat for one. Leaderboard's CSV export matches whatever's on screen now too.

v42.6Fixed
Onboarding checklist's dead settings link

Every new server's Overview checklist had a 'Review site settings' item that 404'd - it linked to a page that's never existed. Points at Site Appearance now (where that setting actually lives). Also stopped telling staff to leave for Discord's /generateschedule for the 'Generate a schedule' item - that's been a real button on Divisions for a while.

v42.5Fixed
A scheduled fixture's own page can now report its result

Confirmed report: the homepage's "Next Fixture" spotlight links straight to that fixture's own match page - which had an Edit Result link once FINISHED, but no way to report it at all while still SCHEDULED. Staff and Results Reporters had to leave and hunt for it in Manage's picker instead, even standing right on its page. Added a direct Report Result link.

v42.4Fixed
Editing or deleting a result now actually corrects standings and budget

Confirmed data-integrity bug: correcting a reported score (a win fixed to a loss, say) updated the goal/stat feed but left Team/TournamentEntrant standings and the match payment exactly as they were originally recorded - permanently wrong. Deleting a result had the same gap: the fixture reverted to scheduled, but whatever standings/budget it had applied stayed applied forever. Both now properly reverse the old effect before applying the new one (or nothing, on delete). Also found and fixed while in there: leagues with no payment override of their own were silently getting paid $0 via the website instead of the real server-wide default, and tournament fixtures never respected a tournament's own payment override - both now match the bot's /results exactly.

v42.3Fixed
A cross-server security audit, and what it found

A full permissions audit turned up real gaps: editing or deleting a News post or Rulebook section only ever checked that you're a News Editor/staff member SOMEWHERE, never that the specific post/section belongs to your own server - closed on both. Bulk-deleting teams had the same gap for team IDs. Two currency endpoints (cosmetic purchases, passive Spark earning) had a real check-then-act race that a double-click or two open tabs could exploit to double-credit - both now use an atomic guarded write instead. Directory league icons and clip/creator avatars get the same fresh-fetch fix v42.1/v42.2 gave permission checks.

v42.2Fixed
The same stale-permission gap, closed everywhere else it existed

v42.1 fixed match/scrim pages caching a stale staff/Results Reporter check indefinitely. Audited every other page with the same pattern and found 14 more: Career/My Team, the whole Get Started create-league wizard, and Team/Rulebook/Rankings/Power Rankings/Rosters/Awards - a staff role grant or removal could sit invisible on any of them. All now check fresh on every request, same as the rest.

v42.1Fixed
Results Reporter's edit controls, for real this time

v37.0 fixed the Results Reporter role's staff-only gates, but a Results Reporter could still land on a match or scrim page and not see Edit Result/Send to Discord/Delete Result - those two pages were the only ones that never opted out of Next.js's own request cache, so a role grant could sit invisible behind a stale cached permission check indefinitely. Fixed alongside the rest.

v42.0Improved
Custom icons everywhere, replacing default emoji

A full sweep: every remaining stock emoji glyph on the site - star ratings, view counts, the football/goal marker, warning/suspension icons, the milestone and news icons, checkmarks, close buttons - is now a hand-drawn stroke SVG in the site's own icon style, matching the direction already used for section headers and awards. Star ratings (the '★★★☆☆' spread and the compact 'N★' badge) got a shared StarRating/CompactStarBadge component used everywhere a rating shows up. A couple of inline-text star mentions (release clause tiers, ranked-sign settings) read as '5-star' instead of a glyph, since they live inside plain sentences.

v41.0Improved
Clips: a real button, and a live preview before posting

Per direct feedback, posting a clip was clunky - a bare '+' circle that didn't read as a real button, and a blind form: paste a link, submit, hope it embeds. Now there's a proper 'Post a Clip' button, and the form shows a live preview as you type the link - image, video, YouTube, Streamable, and Medal links all render exactly like the real feed card will, or you get a clear warning it won't embed before you post it.

v40.0New
Awards get their own icons

Every award used to render the same generic trophy glyph everywhere. Manage > Awards now has an icon picker on both Create and Edit - 10 hand-drawn options (trophy, star, medal, crown, boot, gloves, shield, flame, target, bolt) - so a Golden Boot, a Discipline award, and a Hall of Fame entry can each look like what they actually are. Shows up everywhere an award does: Manage Awards, the public Awards page, player profiles, a team's trophy row, and the Career Portal.

v39.1Improved
Recent Matches gets direct Edit/Report buttons

Per feedback that editing a result was hard to find: Recent Matches used to just link to the match's own page, where Edit Result was a small, easy-to-miss text link. Every row now has its own Edit Result (or Report Result, for a still-scheduled fixture) button - Report Result pre-selects the fixture in the wizard instead of making you re-find it in a 50-item list.

v39.0New
Suspended status badge on rosters

A player currently under an active suspension now gets the same at-a-glance pill treatment Captain/Vice-Captain/etc. already get - on the public team page, the public Rosters directory, and the Manage roster editor. No more needing to cross-reference the separate Suspensions list to notice someone's unavailable.

v38.0Fixed
Compare Players now works across divisions

Compare Players was scoped to a single division tab end-to-end: the player pickers only listed that division's roster, and stats only ever counted fixtures from that one league - so a player currently on loan to a team in another division had appearances from before (or elsewhere in) their loan silently missing from their totals. Both pickers now list every player in the server (grouped by division), a new Division row shows each side's actual competition, and stats are pulled from every division a player has ever appeared in - not just their current one.

v37.0Fixed
Results Reporter can actually report results now

Confirmed report: a Results Reporter could submit a brand-new result via Report a Result, but hit staff-only gates almost everywhere else - the Manage dashboard's own landing page denied them outright, Recent Matches (same menu section as Report a Result) was staff-only, and even the match/scrim page's own Edit Result/Send to Discord/Delete Result controls never appeared for them. All four now recognize the role. On the Discord side, /results was staff-only with no equivalent role at all - added /configroles resultsreporter (shown on /setup, same as News Editor) and wired it into /results, so the same role now works in both places.

v36.0Fixed
Friendlies are tracked, not counted - a direct correction

A direct reversal of v31.0's direction: friendlies stay fully tracked (still show on /scrims, the Results feed with its own filter pill, match/team pages, clip highlights, Match Reports) but no longer count toward an actual league record. Golden Boot/Leaderboard (and its CSV export), Season Highlights (Biggest Win, Recent Results), Streaks, On This Day, Top Rivalries, match-page Head-to-Head, and the Results page's Top Scorer/Biggest Win/Underdog storylines are all real competitive fixtures only again. The Results feed's own raw list and per-row goal scorers are untouched - that's an activity view, not a record.

v35.1New
Underdog storyline, and a live Discord embed preview in the News editor

Underdog joins the Results storylines row - the biggest league-table rank gap where the lower-ranked team actually won. And the News editor now shows a real, live approximation of how an article reads as a Discord link embed once shared - Discord's own actual dark-theme colors, updates as title/excerpt/body/cover image change - so a bad crop or missing excerpt gets caught before publishing, not after.

v35.0New
Match Center live mode, Compare Players, and a real Squad Depth Chart

A LIVE match now auto-refreshes itself every 20s with a pulsing indicator, instead of needing a manual reload. Compare Players is a new tool (Head to Head already did this for teams, nothing did it for players) - pick two, get a real side-by-side across team/position/rating/value/every season stat. Team pages gained a real Squad Depth Chart (the club's planned formation, previously saveable via Career Portal but never shown publicly) with a bench list, and an Unavailable strip surfacing active suspensions for that team's own players - both real data that existed already but were never surfaced where people actually look. Team Settings also now nudges staff to set a crest if they haven't (only ~13% of teams currently have one).

v34.1Fixed
Consolidated MOTM/Poll voting into one shared component - and a real layout bug this caught

Fan MOTM and Fan Polls (interactive and read-only, Manage and public) were four near-identical inline vote-bar implementations that would have quietly drifted apart. Extracted into one real, shared component with the site's actual signature treatment - the same accent top-sliver every card gets, matching corner radius, a real hover-lift with an accent glow - instead of a flat bordered box with no polish of its own. Auditing for duplicate class names while doing this turned up a genuine, already-shipped bug: the Results feed's row wrapper was also named .result-row, silently colliding with (and overriding) the unrelated .result-row already used by Search's result cards, breaking their name-left/meta-right layout for every category - leagues, teams, players, articles - since Results feed shipped. Renamed to fix it.

v34.0New
Settings Audit Log - who changed what, and when

Every Manage settings save now records who made it, which area, and when - wired into 12 save actions across Economy, Divisions (transfer window, league rules, friendly/match payments, roster caps, theme), Commands (disabled commands, pause-all), Channels & Roles, and Branding. One row per save action, not a per-field diff - real accountability for a server with more than one staff member touching settings, without the fragility of diffing every distinct settings form individually. Best-effort: a logging hiccup never blocks the actual save.

v33.0New
Projected Final Standings, a downloadable stats export, and a real print stylesheet

Standings now projects each team's final points from its own points-per-game extrapolated over its own remaining fixtures - not a placeholder or a single league-wide average. Leaderboard gained a real CSV export (every player who's made an appearance, every stat at once, not just one category's top N). And a real @media print stylesheet finally exists - the old "print-mode" toggle only stripped chrome for a Discord screenshot while keeping the dark theme and every button; actual Ctrl+P/PDF output now forces a light, ink-safe palette and hides interactive controls automatically, no toggle needed first.

v32.0New
"This Gameweek" hub, a real Community Activity feed, and a Recent Transfers ticker

This Gameweek combines the real current gameweek's fixtures (in progress if one's underway, else the next one up, else the most recent finished one once the season's over) with the latest articles on one page, instead of Schedule and News being two separate stops - added to the main nav. The homepage's Activity tab gained a real Community Activity feed (actual News comments and fan MOTM votes, not just staff-posted content) and a Recent Transfers ticker (last 5 completed moves for the league's own teams).

v31.0Fixed
Friendlies now count everywhere a real record is kept

Golden Boot already counted scrims - Season Highlights (Biggest Win, Recent Results), Streaks, On This Day, Top Rivalries, and match-page Head-to-Head all only ever queried real fixtures. Same real direction applied consistently now: a friendly can be the season's biggest win, feed a team's win streak, resurface on This Day, count toward how often two teams have actually played, and show up in a match's head-to-head tally - always clearly labeled "Friendly", never conflated with a competitive result.

v30.0New
Fan-voted MOTM, clip highlights on match pages, and general Fan Polls

A free, one-click, changeable fan vote for Man of the Match now runs alongside the staff pick, live percentage bars, open to any player who actually recorded stats in the match. Staff can attach an already-submitted /clips highlight to a specific match or scrim, shown under a real Highlights section. And Fan Polls is a fully general-purpose staff-created poll - not tied to any match or player, any question, same free/one-vote/changeable pattern - for anything from "best kit?" to "player of the season?".

v29.0New
Match reports, real goal scorers on the Results feed, and one-click recap articles

Results previously showed bare score rows - it now shows each goal's real scorer (and minute, when logged) inline. Staff reporting a result can now write an optional Match Report - a short recap shown on the match/scrim page and flagged on the feed. A Season Storylines row (Top Scorer, Biggest Win, Longest Win Streak) sits above the feed, computed from whatever's currently filtered. And a finished match/scrim can be turned into a real News article in one click - pre-filled with the score, scorers, and Match Report text, always a draft for staff to review before publishing.

v28.0New
News becomes real articles - with real reach

News was a hero + accordion of raw titles on one page, and had a real bug: no status filter at all, so DRAFT posts were publicly visible the whole time. Every article now gets its own real page (cover image, YouTube embed, layout-aware treatment, comments), the index is a real hero + preview-card grid, and articles are strictly published-only. Also new: free-text categories with filter pills, scheduled publishing (pick a future time and it stays hidden until then), real public view counts (tracked prefetch-safely, not inflated by Next.js hovering a link into view), a per-league RSS feed, and indexing in site-wide Search - previously entirely invisible to it.

v27.1Fixed
A wrong rule on display, and a real save-crash on the new Economy page

The Transfer Rules card was showing a dead field as the loan price floor - a fixed, never-actually-settable 10%, when the real enforced floor (loanMinPercent) defaults to 20% and is the one staff actually configure. Same wrong number appeared in /setup. Separately, clearing almost any blank field on the new Economy page (Win/Draw/Loss Payment, card fines, Min Sale/Loan %, release limits, signing offer minutes, demand comp/cooldown) and saving would throw - it wrote an explicit null for every blank field, but only 2 of the 14 are actually nullable. Blank now just leaves those fields untouched. Also fixed loan length and remaining loan-cancellation fees silently ignoring a server's configured gameweek length and always assuming 14 days.

v27.0New
League rules are now fully visible, and everything about them is adjustable both ways

The public Transfer Rules card only ever showed 4 of the real rules in effect - it now shows all of them (min sale/loan %, market bid raise %, trade fairness tolerance, offer expiry hours, signing offer minutes, demand compensation/cooldown, release clause price by star rating, listing consent, and the ranked-sign-spin mechanic when a server has it on), pulled live from the same config the bot enforces so it can never drift out of sync. On Manage: the Economy page gained Loan/Transfer Offer Hours, a Listing Consent toggle, Unranked Base Value, Gameweek Length, a full Release Clause Price editor (all 6 tiers at once), Star Rating Value Ranges, and the ranked-sign-spin controls; Commands gained a single Pause All Transactions switch; Divisions & Teams gained a trade-limit-per-window field and transfer window length. All of it was previously bot-slash-command-only.

v26.0New
Card v4: the live Discord card design, now on the website

Ported renderPlayerCardV4 - the current Discord card art - to the website and wired /api/playercard to it, including the bust-avatar lookup. Also fixed isShowtime never actually reaching the renderer, which meant Showtime cards were silently rendering with the wrong tier's art.

v25.0New
Scheduled match announcements, live predictions voting, and Discord-native official claiming

Three real, related features. Match Ping announcements now go out automatically 30 minutes before kickoff and again at kickoff itself, each its own branded embed (via a real per-channel webhook, so it shows the league's own name and icon instead of the bot's) naming the Referee/Cameraman/Commentator for that match. Predictions moved off any currency entirely - it's a free, one-click vote per person, shown as a live 10-square bar colored to each team's real Discord role color where one's set. And officials can now claim or release their own role with a real button, right on Discord, DM or channel - no website round-trip needed. Any slot still open 15 minutes out pings staff directly.

v24.0New
Real Referee, Cameraman, and Commentator roles - and a website access bug this surfaced

Claiming Referee/Cameraman used to be open to literally anyone signed in - now each server can restrict it to a real Discord role via Channels & Roles, same for the new Commentator slot (previously not claimable at all). Also added a Results Reporter role so match results can be reported without full staff access. Wiring that up surfaced a real, pre-existing bug: the Manage area's own access gate only ever checked for full staff, so a non-staff News Editor could never actually reach their own page - the more lenient check that page ran itself was dead code. Fixed for both roles at once.

v23.0Fixed
A real double-post bug, caught by finishing what a half-done diagnostic started

Every budget change - match payments, transfers, releases, loans, card fines - was refreshing the live budgets message in Discord twice per event. Root cause: the function that posts a transaction's log line already refreshes that message itself, but nearly every caller across the codebase also called the refresh again right after, under the mistaken belief it was needed. Found by tracing a stale in-progress diagnostic that had been left mid-investigation; removed the redundant calls everywhere they existed and the diagnostic itself.

v22.0New
Manage gets roster caps, a real Economy page, and a rebalanced sidebar

A lot of what /league rostercaps and /configmoney could already do in Discord had no website equivalent at all - confirmed this wasn't hypothetical, several servers already had real caps and payment overrides set that were completely invisible here. Divisions & Teams now shows and edits real match payments/fines and roster caps (overall size, per-position, per-star) per division. A new Economy page covers everything else that was Discord-only: transfer/loan price floors, release rules, demand settings, signing offer timers. The Manage sidebar's Operate category had also quietly grown to ten flat items while everything else had one or two - split the structural/recognition half into its own Competition category.

v21.0New
Staff can safely add or remove a team's budget

A real, explicit gap: every other budget-changing action (results, transfers, fines) had a website or Discord path, but a plain manual correction didn't. /budget adjust and a matching Manage panel form both require a preview-and-confirm step before anything changes, and log to the same places every other budget event does - the Discord budget-log channel and the audit table behind /budget history.

v20.0New
"All Leagues" combined view on Leaderboard and Player Stats

League Records already let you view every division's stats combined instead of one at a time - Leaderboard and Player Stats didn't. Same toggle, same place, now on both.

v19.0Improved
Scrims now count toward league leaderboards and records

Explicit reversal of an earlier call - scrims were being tracked for a player's own career stats but deliberately excluded from league-wide leaderboards and records. They now count toward both, matched to a team by who was actually rostered for that specific match (not just whoever's on the roster today), so a later transfer can't misattribute a scrim played months earlier.

v18.0New
Leagues can set their own region

Shown on the league's own page and the public directory - a small addition, requested directly.

v17.0New
Career Portal becomes a real dashboard, plus leadership badges and an interactive scoreboard

Career Portal moved from a single-column tab-switcher to a real 2-column dashboard. Captain/Vice Captain/Transfer Manager/Scrim Hoster badges - already shown in Manage - now show on the public roster and team pages too. The homepage's scoreboard cards got a real hover/select interaction with a front-and-back swap animation, both faces animating together. Rounded out with tabular-number styling swept across every remaining side-by-side stat display site-wide, for visual consistency with the tables that already had it.

v16.0Improved
Design v5, and a same-session fix on v4's nav treatment

v4's glass nav background broke the mobile menu - backdrop-filter directly on .nav made it a containing block for the menu drawer's position:fixed overlay, shrinking a full-screen drawer down to the nav bar's own height. Caught and reverted quickly, then redone properly here: the blur now lives on a ::before layer instead, which can't cause that class of bug regardless of what else gets added to the nav later. Section headers get a soft glow and a fading hairline for pages that stack many sections in a row (the homepage runs a dozen deep). Pills get a real border in their own color instead of reading as flat text labels.

v15.0Improved
Design v4 - a real refresh, not a rebrand

Same dark neon-retro identity (glow accents, angular pills, animated grid, uppercase display type) - refined execution. Consolidated .card into one clean definition (three overlapping rules had accumulated across v1/v2/v3). Real keyboard focus states everywhere for the first time - buttons, links, cards, inputs had none, so tabbing through the site fell back to each browser's own mismatched default outline. Buttons now have an actual press state, not just hover. A shared, gentler easing curve on every existing transition. Themed scrollbar, branded text-selection color, richer icon depth, a glass nav. First pass on the visual rework - foundational and site-wide since it lives in the shared design tokens, more to come.

v14.0Fixed
Rulebook rich text was rendering as broken literal HTML

The rulebook editor has supported bold text, info/warning callout blocks, and embedded links/images/video for a while now - but the public rulebook page never rendered any of it, just plain-text tags. Confirmed live on a real server. Fixed, and brought the News editor up to the same level (it was still a plain textarea) with a matching render fix.

v13.0New
My Team can release players too - a real captain's hub taking shape

Following straight on from role management: a team's Team Manager, Head Coach, or Transfer Manager can now release a player right from My Team, same as /transfer release in Discord (Scrim Hoster excluded, never a teammate of equal or higher rank - both enforced server-side, not just hidden in the UI). Also cleaned up a real, live bug found while chasing this: a dead, already-hidden test server was still costing a failed Discord API call - and a loud error - on every Career Portal visit for anyone who'd ever had a profile there. Purged its data entirely and fixed the underlying code so a hidden site can never do that again.

v12.0New
Team leaders get their own tools on My Team

Every staff action added this session left one gap: a Captain, Head Coach, Transfer Manager, or Scrim Hoster had nothing of their own on the website - /appoint and /dismiss were Discord-only for them too, even though the bot itself lets them manage their own team's leadership. My Team now has a role picker next to each squad member, limited to exactly what that leader's rank is allowed to touch, same hierarchy the bot enforces.

v11.0New
Generate Schedule, Start New Season, and real confirm dialogs

Two more staff actions moved to the website: Generate Schedule per division (Divisions page, same round-robin/knockout/group-stage algorithm as /generateschedule) and Start New Season (Overview). Also went back through everything added this session - Release, Declare Forfeit, Lift Suspension, Remove Warning, new Suspension, Generate Schedule - and added a real confirm dialog to each. One-click was too easy to fire by accident on actions that pay out compensation, apply Discord roles, or can't be undone.

v10.0New
Release players from Manage → Transfers

The first transfer action on the website: release a rostered player with one click, with the exact same compensation, budget log, and Discord role cleanup /transfer release itself does. Sign, loan, trade, and buy still run through Discord (they each involve a real consent step that doesn't have a website side yet) - Release doesn't have a consent step in the bot either, so it's the one that maps cleanly onto a single button.

v9.0New
Suspensions, warnings, and forfeits from the website

Three staff actions that only existed as bot commands before: Manage now has a full Suspensions & Warnings page (issue or lift a suspension, log or remove a warning), and any not-yet-finished match has a Declare Forfeit control next to Edit Schedule. Suspensions and forfeits proxy through the bot for full parity - the same ban role, results embed, and channel posts /suspend and /forfeit themselves produce, not a database-only shortcut.

v8.0Fixed
The website's team-role editor now matches the bot exactly

Manage → Teams already had a role dropdown per player, but the endpoint behind it skipped every rule /appoint and /dismiss enforce - no cap check (a team could silently end up with two Team Managers), no leadership badge sync, no pinned Discord roster message refresh, and no entry in the staff log. All four now match the bot's own commands exactly, and the log now credits whichever staff member actually made the change on the website.

v7.1Fixed
Blank star ratings on shared player cards

A player's star rating was rendering as literal text on their shared card image (Discord/iMessage previews) - the glyph forced a fallback font fetch to Google Fonts that's been failing on this server, so the rating silently rendered blank. Replaced with a real SVG that needs no font at all.

v7.0Fixed
Real page titles and descriptions, everywhere

68 of roughly 90 pages had no title or description of their own - every browser tab, search result, and shared link for career, manage, get-started, and every league-scoped page (standings, rosters, suspensions, and the rest) just fell back to the bare site default. Every one now has a real, specific title - league-scoped pages show the actual league name ("Suspensions - Bundesliga", not just "Suspensions").

v6.1Fixed
Accessible clip buttons

Like, comment, save, and share buttons on clips were icon-only with no accessible name - a screen reader would announce a bare number or nothing at all. Fixed across both clip feeds.

v6.0Fixed
Real navigation, everywhere

Found 10 pages with no way back to the rest of the site beyond the browser back button - creator profiles, the whole 7-step league creation wizard, the shop, the spark leaderboard, get-started, the manage picker, and the directory submit/review pages. Every one now has the standard site nav.

v5.2Improved
Homepage reorder

The Leagues section - the actual list of what's running on the platform - was the second-to-last thing on the homepage, below clips, results, and transfers a first-time visitor has no context for yet. Moved it up, right after the 'what is this site' section.

v5.1Improved
Manage area access-denied screen

The staff dashboard's 'you don't hold a staff role' message was a single bare line of italic text, noticeably plainer than the rest of the site. Gave it a real card.

v5.0Improved
Wider layout, site-wide

Every page rendered in a narrow 960px column regardless of screen size, and data-heavy tables (standings, leaderboard, rankings) hit horizontal scroll well before running out of real content. Widened to 1180px across the whole site.

v4.0New
Real page hierarchy and breadcrumbs

A page's own title and a mid-page subsection header used to render at the exact same size everywhere on the site - no real visual hierarchy anywhere. Fixed that site-wide, and added a breadcrumb trail (no 'where am I' navigation existed before this) across leagues, career, and the manage dashboard.

v3.0New
Loading skeletons

There were no loading states anywhere on the site - opening any data-heavy page showed a blank flash until the server finished its queries. Added real skeleton screens that cover the whole site: leagues, career, manage, directory, and everything else.

v2.5New
Favicon, app icon, and PWA manifest

The site never had a favicon - every browser tab just showed the generic blank-page icon. Added a proper tab icon, an icon for when it's added to a phone's home screen, and support for installing it like a real app.

v2.4New
This changelog

A real page tracking what's shipped, instead of changes only living in commit history.

v2.3New
Points-trajectory charts

Standings now shows a small trend line for every team's season, and each team's own page has a bigger version of it under Records. Built from match history the site already tracked but never plotted.

v2.2Fixed
Friendly-match link previews

Sharing a link to a friendly match was silently failing to generate a preview image - a leftover bug in that page's code.

v2.1Improved
Link previews

Pasting a link to a league, team, player, match, or tournament into Discord used to always show the same generic description. Each one now shows real details - top-3 standings, a player's team, a live score.

v2.0New
Real data visualization

Leaderboard and League Records now show a bar next to every ranked stat, sized against that board's own leader, instead of a flat list of numbers. Also found and wired up a player stat radar chart that existed in the code but was never actually rendered.

v1.0New
Illustrated empty states

Every empty list or table across the site - standings, rosters, news, search - used to just say 'No data yet' in italics. Replaced around 55 of those with a small custom illustration. Also added a real step tracker to the league creation wizard.

Back to Home