Bug Fix

Weekly Fixes & Polish (Aug 25-Sep 8)

101 bug fixes and style improvements across free agents, schefter report, navigation & routing, design system & theming, and more.

The Full Story

This week's 101 bug fixes and polish improvements touched the following areas of the site:

Free Agents — Free agent pickups were bouncing during the first-come window. If your roster was full — which is exactly when you are dropping somebody to make room — MFL was counting the add before the drop, deciding you were over the limit, and throwing the whole thing out without a word. Our side saw a shrug where an answer should have been and could only tell you "claim failed," so three straight attempts on the same player disappeared into nothing while another owner made the identical swap on MFL's own site. Pickups now go through the same page every owner uses by hand, which actually accepts a full-roster swap and, when it does refuse, says why — a locked player now reads as a locked player. And if anything still goes wrong, the dialog hands you a direct link to MFL's add/drop page so you are not left hunting for it with the clock running. Your waiver claims now look like the players they are. The claim card used to spell out the player you'd claimed as a line of plain text — name, then “TE · WSH” underneath — sitting directly above a table where every player wears a headshot, a team logo and a position. Same player, two different looks, one inch apart. The claim now uses the exact same player lockup as the rows below it, headshot and helmet included, and the drop line tucks in underneath it — same treatment on the Waiver Claims screen in the notifications hub, which lists those same claims. The priority number, Change Drop and Delete all work exactly as before. The Free Agents header got tidier. The AL/NL switcher now wears the two conference crests instead of spelling out “American League” and “National League” — same two buttons, half the width, and you can tell at a glance which pool you're looking at. The “View rosters” button that sat off to the right is gone; rosters are one tap away in the menu, and the header is now about the players actually available. Closing the waiver priority card on Free Agents left it sitting on the page — no dimmed background, just the whole twelve-team list painted over the player table like a sticker nobody could peel off. The card was told how to lay itself out whether it was open or not, and a closed card that still has a layout is a card that still shows. It now only lays itself out while open, so closing it actually closes it. The waiver priority card used to open on a blank "Reading the live order…" line and, on a slow night, stay there. It now opens straight onto the order from our last sync and quietly checks MyFantasyLeague for a newer one; if MFL doesn't answer inside twelve seconds it says so and leaves the list where it is, rather than leaving you staring at a sentence. On Free Agents the Bid or Claim button and the ⋮ actions menu now sit right beside the player's name instead of at the far right of the table — on a phone that meant a sideways scroll past nine columns of stats to reach the one button that does anything. Free Agents spent a whole locked week telling you it was first come, first served. It was not — the pool has been shut since Wednesday's waiver run, so every attempt to grab a player went out as an instant pickup, MyFantasyLeague refused it without a word, and you got a bare error for your trouble. The mix-up was one minute on the league calendar: MFL processes the round and re-locks the pool at the exact same time, and when two events share a timestamp we were reading whichever one happened to be listed second. A lock and a run at the same moment now mean what they plainly mean — locked — so the page says "Waivers open", the button files a claim, and the pickup path comes back on its own when the pool actually reopens. The Bid button on Free Agents went dead if you had wandered off and come back. Click through to Rosters, click back to Free Agents, hit Bid — and nothing happened at all, no form, no error, until you reloaded the page. The site swaps in the new page without re-running the little script behind the claim form, so the form it was still trying to open belonged to the page you had already left, and opening something that is no longer on screen looks exactly like a broken button. It now rebuilds itself on every page you land on, so Bid works on the first click whether you arrived by link or by reload — and the form it opens is filled in from the league you are actually looking at, not the last one. The same fix restores the hand-off after signing in: click Bid while signed out, sign in, and the form comes back up on the player you wanted. You can file a waiver claim from the Free Agents page again, and it now tells you the truth about whether it worked. MyFantasyLeague turns out to want two things at once to treat an add as a claim rather than an instant pickup, and we were sending neither — so a locked free-agent pool refused every attempt without ever saying why. Fixed, and the confirmation is no longer taken on faith: the claim is read back out of your pending waivers before you see a checkmark, and the message now links straight to MyFantasyLeague's add/drop page so you can see the claim listed with your own eyes. Free Agents had the waiver window exactly backwards. With the league calendar finally syncing, the page turned around and announced first-come-first-served in the middle of a live waiver period — because the code read MyFantasyLeague's “waivers lock” event as waivers ending, when locking the free agent pool is the very thing that starts them: once nobody can just take a player, a claim is the only way in. The AFL's own 2025 transaction log settles it — the lock event fires Monday at 6, the claims run Wednesday at 8, every week. Both leagues now show the real state, and the claim form routes to the right place instead of filing a first-come pickup into a round nobody runs. The Free Agents page can finally tell you which waiver window is open. It had been saying “waiver window unknown — MFL will decide when you submit” to everybody, all season, because the piece of MyFantasyLeague that knows the answer — the league calendar — had never once synced. It wanted a login and was being handed an API key, and the two are not the same thing. So the header now reads the real state: waivers open and your claim queued until they process, or first come, first served and the pickup happens on the spot. The claim form follows suit, which matters more than the wording — a first-come pickup filed as a queued claim is a claim that sits in a round nobody ever runs. A waiver claim that never reached MyFantasyLeague will no longer tell you it did. The Claim button said “Submitted ✓” and closed the moment MFL answered at all — and MFL answers a refused request with a perfectly cheerful blank page, so a claim could vanish between the click and the wire with nothing to show for it. Now the site insists on a yes from MFL, then goes back and reads your pending waivers to see the claim actually sitting there. If either check comes up short you get told so, in the words of what went wrong, with the claim form still open in front of you. The Claim button on the AFL's Free Agents page is a proper AFL-red pill now. It had been rendering as a raw grey system button — beveled edges, square corners, Arial — sitting in the middle of an otherwise dark table, because it was wearing a class name that only existed over in TheLeague. Both leagues now share one button, so the next one can't go out undressed. The Claim button on the AFL's Free Agents page no longer appears on players you cannot claim. With “Include rostered” switched on, anyone already held in your own conference was still offered up for a claim that was always going to bounce.

Schefter Report — Schefter's rumor mill has been dialled way back. It was reporting essentially every trade offer that crossed the desk, often within hours, and on one Monday it filed the same Fire Ready Aim offer twice — once buried in a multi-team story and again seven hours later as its own scoop. Under the hood the dice were being rolled roughly fifty times a day per offer, so a nominal five-percent chance of a leak compounded into a near-certainty. Offers are now rolled once a day, a reported offer goes quiet for a full week before it can resurface, and during the season the mill files at most one rumor a day instead of three — the league does its own talking once games are being played. The volume comes back for the offseason, and for the ten days into each league's trade deadline, which are the two stretches when a rumor is actually news. The whole right rail on the Tip Schefter page was rendering as plain unstyled text the moment it filled in with real data — Your Record, Top Tipsters This Season and Hot Topics This Week alike. Every one of those panels is drawn by the browser after the page loads, and the styling we had written only ever reached the parts of the page the server sends down, so each panel lost its formatting at exactly the moment it had something to show. Your codename is a badge again, your season and lifetime counts line up, the leaderboard gets its rank numbers with your own row highlighted, the hot-topic chips are rounded pills with the week's most-tipped subject picked out in league colors, and Tip of the Week badges are amber pills instead of a run-on line of text. All of it reads correctly in dark mode too, which the badges would not have the first time they appeared. The tip page greeted everyone with a confirmation for a tip they had not sent. The 'Schefter's got it' panel and its dead 'Undo 60s' button are supposed to appear only after you file something; they were marked hidden, but a styling rule overrode the hiding and left them on screen from the moment the page loaded. Fixed — the panel now stays out of sight until you actually send a tip.

Navigation & Routing — The Preferences row in the side menu now glows softly until you have actually picked a clock, so the setting stops being something you only find by accident. It is a slow breathing ring, not a badge or a nag — and it turns itself off the moment you save a preference, on every device that remembers it. Screen readers get the same hint in words rather than a ring they cannot see. The Owners page has moved out of the side navigation. It was sitting in League Reports next to Franchises, doubling up on a link the site footer already carries under Record Book — so the drawer is one line shorter and Owners lives in exactly one place. Nothing about the pages themselves changed: every owner, every tenure, every trophy is still right where it was. The side menu has a new first stop: Notifications now sits at the very top of the drawer, above every section, in both leagues. It is the one page that decides what reaches your phone, and until now the only way to find it was site search or a link buried in a What's New post. It stays first year-round — the sections below it shuffle between the season and the offseason, but this one does not move. The Add/Drop link is gone in the same pass; it kicked you out to MFL's own screen, and adds and drops already live on the site's player pages. The podium icon on the Draft Broadcast link in the side nav was showing white instead of blue, so it stood out against a column of icons that all match. Every other icon in that menu takes its colour from the menu; a handful of the newer ones carry their own colour instruction, which quietly won and left them the colour of the label beside them. It matches the rest of the list again. The Draft Broadcast — the big board built for draft night — shipped without a way to get to it from the menu, so you had to know the URL or find it through search. It now sits in Offseason War Room alongside the Keeper Planner.

Design System & Theming — Franchise crests are no longer cropped into a circle in six more places: the Throwback Week commissioner grid, mock draft results, the My Team panel on both homepages, the team column on Projected Free Agents and its filter, and the “via” tag on traded picks in the draft room. A round frame is the right treatment for a headshot and the wrong one for a logo — it quietly bit the corners off any crest that was not already a circle. Most crests were round enough that nothing changes; Chatmaster gets its AIM badge back, and Maverick, the Wascawy Wabbits, the Dark Magicians and the Computer Jocks stop losing their edges. Historical throwback marks are deliberately left round: that art is a circle cut out of an era banner, and it carries a coloured rim that only sits right on a round frame. In dark mode the Panthers logo had been doing its best impression of a shadow. Every other NFL mark gets a dark-mode cut with its outline re-inked light, but Carolina's panther is black clear through, so on a dark card it dissolved into a smudge next to the player's name. It now wears a crisp white edge, the same treatment the league crests get in dark mode, so the cat is visible again at every size, in both leagues. The Asset Library's search box only worked the first time you opened the page. Come back to it later in the same visit and typing a team name did nothing at all — every logo stayed on screen — and the little size line under each image sat blank instead of telling you the dimensions. The copy buttons were fine throughout, which is probably why nobody filed it. Search and the size readout now come back to life on every visit, in both leagues. Three throwback crests were wearing the wrong face. Dicks out for Harambe went into its 2017-18 seasons showing the modern gorilla instead of the original circle badge — the screaming silverback, the little guy perched on his fist, and the Hebrew running over the top of them both. The Mariachi Ninjas had the sombrero sliced off at the brim, and Midwestside Connection was cropped tight enough to shear the bottom off its own gold ring. All three now wear the original badges, whole circle intact, everywhere an era crest turns up: franchise pages, owner pages and the Throwback Week picker. The playoff bracket on the AFL homepage now flips its seed pills in dark mode too — white circle, navy number — so a seed in the bracket and a seed in the standings table below it are finally the same pill. They had been navy on navy: the number was legible, the circle around it wasn't there at all. Two more markings on that card had quietly gone the same way and are back: the "Conference Playoffs" line above the brackets, which was navy text on a navy card and genuinely unreadable, and the accent stripe down the left of each matchup. And if one of the four teams is yours, your own pill stays red so it still marks your team at a glance — but its number is dark now instead of white, because white on that red was the hardest thing on the card to read. Players without a headshot no longer punch a white hole in the roster. Where MyFantasyLeague has no photo, the site used to load MFL's own placeholder — a white disc with a black silhouette on it — which sat on top of the team-coloured chip and blanked it out entirely. The fallback is now drawn by us in the player's own NFL colours: the same gradient every headshot already sits on, with a soft silhouette over it. It shows up everywhere a player can appear without a photo — rosters, free agents, the lineup pages, the draft room and board, dead money, MVP tracking and the draft broadcast — and because it's drawn rather than downloaded, it appears instantly instead of after a round trip to MFL. Chatmaster has a new light logo — the AIM runner now sits in a gold frame — and the version you have been looking at moves over to dark mode. Same runner either way, but the two are properly distinct now instead of differing only in the thickness of an outline. Team Minty Fresh and Get off my Ditka round out the AFL: both now have dark-mode chat crests and matching icons. That is every AFL franchise done — twenty-four for twenty-four, crest and icon, light and dark. The Boondock Saints, Suh girls, Dicks out for Harambe and Swiftie 4 Life all have dark-mode artwork now, and the Saints and Swiftie crests got fresh light versions too. Each team's small icon is cut from the same drawing as its chat crest, so the two finally match instead of drifting. That empties the last of it: not one logo in either league now falls back to the outline the site used to draw around crests that would otherwise vanish on a dark background. Team crests on the Set Lineup matchup cards and the Tuesday recap hero now hold up in light mode. Those panels are dark whatever theme you browse in — a near-black gradient with white type — but the logo on them was being chosen as if they followed the theme, so anyone reading the site in light mode got the light artwork sitting on ink, and the near-black crests simply weren't there. Thirteen of TheLeague's sixteen teams now wear their dark-mode crest on those cards. Six more do on the AFL side — Smokane, the Drunk Indians, Jewpacabra, Badd Boys, Chatmaster and No Soup — and the four whose logo still needs help separating from the panel get a fine outline traced around the logo's own shape: Harambe, Suh girls, Swiftie and the Boondock Saints, in their own trim colour where they have one. The two leagues' lineup pages had quietly disagreed about this for months: the AFL had worked it out at launch and TheLeague's copy never did. Ten more logos work in dark mode. Fullybaked, Titsburgh Feelers and A Bruin Pegs Me got new dark chat crests, and seven teams that had a dark crest but no matching dark team icon now have one — Badd Boys, Chatmaster, No Soup For You, Jewpacabra, Smokane, the Drunk Indians and Running down the Dream. Badd Boys is the big one: barely a tenth of that logo was actually visible against a dark card, the worst mark anywhere in either league, and it had been getting by on a thin white outline the site drew around it. Only four logos across both leagues still lean on that outline, down from seven. The Muck Juggling Micks got a full logo refresh — icon and chat crest, light mode and dark. The dark versions trade the green outer ring for gold so the leprechaun stops blending into the page at night. The Show has proper dark-mode artwork now — both the team icon and the chat crest. It was the second-hardest logo in the league to see on a dark background, and had been getting by on a thin rose-coloured outline the site drew around it automatically. That outline is now part of the artwork itself, so the crest reads cleanly instead of looking traced. Jewpacabra, No Soup For You and the Drunk Indians have dark-mode chat crests now, so three more AFL logos stop dissolving into the page after dark. Balls Deep now has a dark-mode chat crest to go with the dark icon it already had, so the pumpkin stops sinking into the background when you're reading the feed at night. Nine more team logos now have a dark-mode version, so they stop dissolving into the page when you're browsing at night. Midwestside got the full redraw it badly needed — measured against the dark card, only 24% of that crest was actually visible, the worst mark in either league, which is why it had been propped up by a thin white outline instead. Music City, the Ninjas, Da Dangsters, Running down the Dream, Badd Boys and Smokane all picked up proper dark artwork too, and Smokane's light crest got refreshed while we were in there. That puts thirteen of TheLeague's sixteen teams on purpose-drawn dark artwork, and no team icon in the league is leaning on a generated outline any more — Gridiron Geeks, Cowboy Up and the Dark Magicians are the three still to come. The AFL is the next job. A duplicate line in the AFL league config is gone. The Avenging Amish had their GroupMe avatar listed twice in the same record — same file both times, so nothing ever looked wrong, but any tool that rewrote the config would have quietly dropped one of them, and if the two had ever pointed at different art the winner would have come down to which line happened to be last. Removed, and there is now a check that fails the build if any league config repeats a field. The Avenging Amish crest gets a proper dark-mode version. The old one carried its own painted-on navy square, so on a dark card the Amish sat inside a visible box while every other crest floated free. The new artwork is cut out with a transparent background and a light rim, so it reads on the dark card and matches the rest of the AFL. The Amish GroupMe avatar gets the same treatment — its maroon ring swapped for a light blue one that survives a dark backdrop — and both are in the AFL Asset Library to download.

Notifications — The “Put us on your Home Screen” banner was showing to everyone — including owners already using the installed app, and on Android, where it gave iPhone instructions for a Share menu Android does not have. The banner was correctly deciding to hide itself; its own styling was overriding the decision, so it rendered anyway. It now appears only where it can actually help: a browser that can install the app, and never inside the app. The Sunday lineup check fired four days before the season started and told half the league their lineups were missing — for a Week 1 nobody could have set a lineup for yet. It was reading the calendar month, so September 1st counted as in-season even though Week 1 does not kick off until the Thursday after Labor Day. It now waits for actual kickoff. AFL push notifications arrived wearing a blank white square where the shield should be. The little icon Android shows next to an alert is not a logo slot — the phone throws away the colors and traces the transparent parts, so the flat, edge-to-edge favicon we were handing it came out as an empty box. The AFL now has a proper stencil of its football, TheLeague has one of its crest, and both leagues get their own mark on every alert instead of sharing one. The AFL's app install file pointed at an address the site does not use — it claimed the app lived at /afl-fantasy/ when afl-fantasy.com serves everything from the front door. Phones read that, decided the file did not apply to the page they were on, and quietly threw it away, which is why the AFL never offered to install to your home screen and why its notifications had no app icon behind them. It now points where the site actually is, and ships an Android-shaped app icon to go with it.

Trade Builder — The Trade Builder now wears one mark everywhere. Search for it and you got a pair of swap arrows in the AFL and a handshake in The League — same tool, two icons, depending on which site you searched from. It is the handshake in both now, and the “Trade Player” action in a player's ⋮ menu wears it too, so the button and the tool it opens finally look like the same thing. The trade builder only worked the first time you opened it. Come in from your roster and you could stack up an offer as usual; wander off to another page and come back, and the Add buttons stopped adding, the remove X stopped removing, and the fairness meter sat frozen at whatever it last said. No error, no spinner, nothing — just a page that had quietly stopped listening, because it was still wired to the copy of itself you had already left. It rebuilds on every arrival now, so the tenth visit builds a trade exactly like the first.

What's New — The Transaction Hub write-up described a bell. There has never been a bell — the button in the corner is, and always was, a handshake, which is the mark this site uses for trades and waivers. The article now says handshake in every place it said bell, and carries the handshake as its own icon, so the story matches the button you actually tap. What's New articles now link to the features they are talking about. The Strength of Division launch named the standings, the franchise pages and the division page itself across six paragraphs and you could not click one of them — the only link on the page was the button at the bottom. Every article since early August has had the links woven back into the prose, and they point at your own league's version of each page.

Homepage — The AFL homepage hero now tells you what shipped. Every new feature used to arrive under the same headline — “FRESH ON THE SITE.” — no matter what it was, so the biggest type on the page said only that something had happened and left the actual news to the small print underneath. The hero now leads with the feature itself, the way the rest of the site's headlines already do, and a launch can carry its own hero-sized line written for that spot. Long headlines step the type down instead of spilling past the card. The homepage hero was introducing you to someone else's player. On kickoff week it casts a likely starter from the week's first game — and if you didn't happen to roster anybody in the Thursday opener, it reached across the league and put a rival's star next to your own team card. It now only ever shows a player you actually own: your guy in the opener if you have one, otherwise a likely starter from whichever of your players kicks off first, captioned honestly ("Your First Starter" rather than pretending he's playing Thursday night). If none of your players are left to play, it falls back to your own headliner rather than borrowing a face from another team. Signed out, or before you've picked a team, the hero still shows the opener's headliner from anywhere in the league. The same fix reaches further on the AFL homepage: the game-day and live-scoring heroes pick their face the same way the kickoff hero does, so they were borrowing other teams' players too. Both now cast from your roster only. The bigger one is underneath: because the AL and NL run separate player pools, most of the league is rostered by two teams at once, and we had been crediting each of those players to just one of their owners — so the trade-block, matchup and recap heroes could all decide your own player wasn't yours. Every one of them now knows a player can belong to two teams. On the morning of your draft, the homepage hero now sends you to the draft itself. It counted down "0 days to AL draft" and then offered one button — the draft order, which is settled by then and tells you nothing you don't already know. The button is now the room you pick in: MyFantasyLeague's live draft room for the American League, and the email draft page for the National League, each opening in a new tab and each pointing at that conference's own page so the two never get crossed. The draft order moves down beside it, still one click away, and once picks start the live board joins it. Nothing changes before draft day. While the AL and NL drafts are actually running, the homepage hero's button said "Enter Draft Room" but sent you to the draft order page. It now opens the Draft Broadcast for the conference that's drafting. The AFL homepage hero had been showing the season-start countdown on every single visit, which meant anything new on the site launched into a wall. A countdown to something that hasn't happened yet is filler, so it now takes its turn like everything else: during a countdown, each fresh What's New article and the countdown itself get an equal share of your visits. Nothing new to show? The countdown still runs the whole homepage. Live events (draft day, deadline day, kickoff itself) still own it outright.

Rosters — The “Rostered by” strip in a player's profile card had a little black tile sitting behind the team crest. It was there for a reason — the crest was the dark-mode cut of the logo, drawn to sit on ink, so it needed ink to sit on — but it read as a sticker slapped onto the card. The strip now takes each franchise's normal crest and lets it follow your theme like every other logo on the site, so the mark sits straight on the card in both light and dark mode with nothing boxed in behind it. Set Lineup went dead the second time you opened it. Come in from the homepage and everything worked; click away to standings, click back, and the page turned into a photograph — tapping a slot brought up nothing, Set Optimal did nothing, Submit did nothing, and there was no error to tell you why. Reloading fixed it, which is a fine trick if you knew it. The page was still wired to the copy of itself you had already left. It now rebuilds itself every time you arrive, so the tenth visit behaves exactly like the first.

Sunday Ticket — The network logos on the Sunday Ticket board now hold their edge on a light card. Kayo's light green used to wash out against the white — the same hairline outline that keeps a dark team crest visible in dark mode now runs in the other direction, so a pale broadcaster mark reads as a shape instead of a smudge.

Admin — The Schefter admin dashboard has been reporting a dead GroupMe login as healthy. Its green "SET" row only ever meant the token existed as a line of text somewhere — not that GroupMe would still answer to it — so when the copy stored on the site's host was revoked, the panel kept saying everything was fine while every read of the group chat came back refused. The row now asks GroupMe directly and reports the answer: valid, revoked, or never configured, with the reason spelled out and a link to go regenerate it. The message sync route stopped taking the same thing on faith too, and fails loudly instead of walking into a refusal. Scheduled Schefter scans were never affected — those run on GitHub, which holds its own copy.

Live Scoring — The new pre-kickoff gameday health check cried wolf on its very first run, telling the commissioner both leagues' live scoring was down a week before Week 1 kicks off. Nothing was down. Two things were wrong with the alarm itself. It was asking for Week 1 live scores in a window where MyFantasyLeague has no games to score, so a perfectly healthy league had no honest answer to give — that probe now waits until the season is actually under way, while the NFL scoreboard and MyFantasyLeague checks keep running year-round. And the way it asked put a server address in the web address, which our own edge security reads as an attack and blocked before the request ever reached us. It now names the league and lets the site look up that league's server, which fixes a real trap underneath: every league sits on a different MyFantasyLeague server, and asking the wrong one for a league it does not host returns that server's league instead of an error. Live scoring now resolves the server from the league every time, so there is no path where one league's board can quietly fill with another league's scores. The NFL games rail on Live Scoring now actually appears. It has been on the page the whole time and has never once rendered outside demo mode — the page only handed it a slate of games when you passed ?demo=1, and with nothing to draw it stayed empty, which in turn meant the browser never woke it up to go fetch the real ones. It waits for the rail to scroll into view, and an empty rail never does. Both leagues and Best Ball now load the day's games on the server, so the row of matchups is there the moment the page is, with the carrying network's logo on each card. While fixing it: the network logos were loading lazily, which meant each one took up no space at all until it arrived and then shoved the row sideways — they load with the card now. Leave Live Scoring open on your phone and it kept asking ESPN for the scoreboard every sixty seconds all evening, long after the last game had gone final. It was going by the page's "it's game day" flag, which stays switched on until midnight, rather than by whether football was actually being played. It now watches the clock: it eases off once the day's games are done — even with Monday night still sitting on the schedule — and wakes back up a quarter of an hour before the next kickoff. Nothing looks any different. Your battery just stops paying for scores that finished hours ago.

Other — Schefter's trade-offer radar has been blind and nobody knew. Its reads of MyFantasyLeague's pending-trade list were losing their login on the way through — MFL forwards you from one server to another, and Node quietly drops the credential when it does — so every check came back as an anonymous visitor and the scan shrugged and logged a warning instead of an error. A dead feature that looked like a config nag. Fixed, along with the calendar-writing script that was one environment variable away from the same fate. The Draft Broadcast can now be flipped between the live board and a replay of last year's draft from the page itself, instead of hand-editing the URL. A replay is clearly flagged in amber so nobody mistakes last year's picks for tonight's. The Draft Broadcast reveal now reads left to right: the pick and the player's details on the left, the drafting team's logo in the middle, and the player himself on the right. Nine of the 24 AFL franchises have a team colour light enough that white text on it was hard to read on a TV — Suh Girls' tan and Minty Fresh's fade to white were the worst. Team colours are now deepened and saturated for the draft board, so every card reads from across the room. Franchise logos on the draft board were pulling the 100x100 icon and pixelating badly when blown up on a TV. The board now uses the 400x400 GroupMe art every team already had. The drafting team's logo on the Draft Broadcast is noticeably bigger and now sits low and to the right with the player, instead of small and centred behind his name. Teams whose second colour is white or grey no longer fade into a dead grey on the draft board — the fade now stays in the team's own colour, so Suh Girls run brown to brown and Minty Fresh green to green. The drafted player is bigger on the Draft Broadcast and now overlaps the team logo behind him, so the two read as one shot instead of two things sharing a screen. The between-picks screen on the Draft Broadcast was still using raw team colours, so a team with a light colour looked washed out there and then deep and saturated a second later on the pick reveal. Both screens use the same treatment now. The commissioner accounting console stopped refusing writes it had no reason to refuse. It had been demanding a second MyFantasyLeague credential before it would touch the books — and it turns out MFL never asks for that credential at all, so the console was locking the commissioner out of his own ledger while every other admin tool in the app worked normally. The extra demand is gone and the parts that actually keep a write honest are unchanged, so the console now works from an ordinary signed-in session and the scheduled year-end carry-over no longer skips every league in silence.

Rankings — Import Rankings no longer shows weights that refuse to add up to 100. If a ranking source in your composite had gone away — deleted on another device, or dropped from a daily refresh — its slice stayed on the books invisibly, so the header counted a source it never showed you and the weights you could see summed to 75. Your actual My Rank order was always computed correctly; it was the panel that was lying. Stale sources are now cleared out and the remaining weights rebalanced, so what you type is the share that source really gets.

Standings — The playoff-seed pills on the AL and NL standings cards flip in dark mode — white circle, navy number, instead of navy on navy. The top four seeds now read as the loudest thing in the table, which is what they are. Strength of Division was handing out participation trophies. The "Titles" number on every division panel — 15 for the Northwest, 19 for the Central — was just the number of seasons that division has existed, because a division crowns a winner every single year. It's gone, along with the sortable Titles column that ordered the table exactly like the Seasons column beside it. Divisions now report what their teams actually earned against the rest of the league: playoff berths, the share of franchise-seasons that reached the postseason, and championships with the runner-up finishes beside them. Division titles still show where they mean something — per owner, inside the division, where four owners split them unevenly. The "Together" column on Strength of Division was counting seasons with the same four franchises, which isn't the same as the same four owners — the Southwest was credited with nine shared years for a group that's only been together since 2020. Together now means exactly what it says: seasons this group of owners has played together, restarting when a team changes hands. A new Founded column carries the division's own age, so a young lineup in an old division reads right. The Division Strength rankings read straight down on a phone now. Team logos always drop to their own line under the division name instead of tucking in beside the short names, so every row is the same shape and the records line up in one column. The rows also lead with the division name again — the phone layout had been putting the year range first. The lineup board on Strength of Division now admits any group of owners that stayed together three seasons instead of four, which takes it from 6 rows to 10 in TheLeague and 4 to 10 in the AFL — the Atlantic of 2007-2009 turns out to be the toughest room TheLeague has ever put together, and the AFL North of 2019-2022 went .643 against the rest of the league. The two ranked boards on Strength of Division — Strongest to Weakest and Every Lineup, Ranked — had their headings sitting flush against the paragraph above them instead of clear of it like every other section on the page. They now use the same spacing as the rest.

Rules — The AFL rules page had two Wednesday deadlines an hour late. Waiver claims process at 8:00 PM PT — not 9:00 PM — and first-come-first-served opens the moment they do, so anyone who read the rules page and planned to get a claim in at 8:30 was submitting into a window that had already closed. The scoring-dispute cutoff is the same 8:00 PM PT. The rules page, the constitution and Roger's answer all say 8:00 PM PT now. The new waiver claim builder was never affected: it reads the live processing time off MyFantasyLeague's own league calendar rather than the rulebook, which is also how it knows the times shift before the season starts.

Draft — AFL franchise logos on the draft broadcast now hold their own against the board. That board is dark whatever theme you browse the site in, but the artwork was picked as if it weren't, so a crest drawn in near-black — Boondock Saints, Harambe, The Show — sank into the card behind it with nothing to separate the two. Twelve of the twenty-four AFL crests now get a fine outline traced around the logo's own shape, in white or in the franchise's own trim colour where one is set: Suh girls keep their pink, Jewpacabra their green, No Soup theirs. Five of those teams also have a small dark-mode crest drawn already, and the panel headers and pick rails now use it, since nothing at that size is big enough to show that the file is a smaller one. The reveal card and the on-the-clock logo stay on the larger artwork instead — they render past 700 pixels on a television and the small cut would visibly soften — which is what the outline is there to cover. TheLeague looks the same as it did yesterday, because every crest that needed one already got full-size dark artwork this week; the difference is that the board now works this out per franchise instead of assuming it. Traded draft picks now say who they came from — once, with the right team, and on every pick that was actually traded. The draft broadcast had been announcing "Pick 1.11 · via from Bring the Pain" on the TV, and the same doubled-up wording turned up wherever a traded pick appeared: the draft room's board, the draft predictor, your team's pick list. MyFantasyLeague writes these as "[Pick traded from Bring the Pain.]" and we were keeping the word "from" as part of the team's name, then putting our own "via" or "from" in front of it. Because "from Bring the Pain" matches no team in the league, every place that tries to show the original owner's crest beside a traded pick looked for that team, found nothing, and showed nothing — so those logos had never once appeared. Reading the comment properly turned up a second, quieter problem: MFL often files several notes about one pick together ("[Pick traded from Drunk Indians. / Pick made by Commissioner.]"), sometimes files them with no brackets at all, and sometimes lists a pick that changed hands twice. We only recognised the simplest of those, so 130 traded picks across both leagues' draft history were being shown as though they had never moved. All 287 are now read correctly, a pick traded twice is credited to the owner it started with, and a note about a pick traded away to someone else is no longer mistaken for one coming in. The draft broadcast's rehearsal mode shows the big reveal again. Rehearsal replays a season that has already finished so the board can be driven end-to-end before draft night, and last week's fix for autopick bursts — which stops the screen narrating picks the room watched happen minutes ago — judged a pick's newsworthiness by how recently it was made. Every pick in a finished season is months old, so the dry run quietly absorbed all of them: the board advanced pick by pick exactly as it should, and the card that is the whole point of the night never once appeared. A pick the rehearsal rolls forward is now treated as happening at that moment, which is what it is, so the dry run goes through the same check draft night does instead of around it. Live drafts were never affected. The draft broadcast board now keeps up with the room, and its images are ready before the first pick. Two separate problems, both outside our code and both worked around. ESPN expires player headshots after under four minutes, so every reveal was re-downloading a quarter-megabyte photo — which is why a card sometimes sat there with a name and no player; the board now pre-caches every headshot, crest and logo it could need before the draft starts, keeps them for a week, and shows a count in the corner so you can watch it finish. And MyFantasyLeague's draft feed turned out to serve whichever of several out-of-date copies it felt like — measured live, the correct board came back 8% of the time and one seven picks behind came back 70% — which had the board stuck rounds behind the room. It now reads the same file MFL's own draft room reads, so it tracks pick for pick. Hold your phone upright on the draft broadcast and the pick now reads top to bottom the way you'd expect: the pick, the name and the numbers first, the player underneath them. It used to lead with the player and bury the name below him, so the thing you actually wanted — who just went — was the last thing on screen. The copy and the cutout now sit together at the bottom of the card with the headroom above them, instead of a strip of empty gradient in between. When a team defense goes on the draft broadcast, the two defenders standing in for it now get their names side by side on one line, each one sitting in front of the man it belongs to. The names used to stack in a single plate in the bottom corner, which told the room the order they were listed in and nothing about which face was which — so the guy on the left and the guy on the right were a coin flip. Each name now rides its own chip under its own head, at every screen size, and if one headshot fails to load the survivor and his name slide to the middle together. The line above the player's name on a draft broadcast reveal is now two lines. "With the 1.02 Pick," and the drafting team get a row each, instead of running together into one long line that broke wherever the franchise name happened to be long enough to force it — sometimes mid-name. The draft broadcast's rehearsal mode now spends its time on the right screen. A dry run stepped a pick every 20 seconds while each reveal held the TV for 18 of them, which left the on-the-clock board on screen for about two seconds a cycle — the half of the broadcast you most need to watch while rehearsing was the half you never saw. A rehearsal now splits its time evenly: 8 seconds on the pick, 8 seconds on the board, and around again. Draft night's own timing is untouched. Both rails at the bottom of the draft broadcast board got reordered, and one of them got faces. Up next now leads each row with the franchise logo instead of trailing it, so the three teams warming up stack into one column you can read straight down rather than logos hanging off the end of names of different lengths. Just off the board picks up the player headshot the rest of the site uses — same circle, same team-colour backdrop behind the head — sitting between the pick number and the name. Once a reveal is over, that rail is the only place the room sees the guy who just went, and four rows of nothing but type read like a receipt instead of a draft board. Team defenses get their NFL logo there, in the dark cut, since a defense has no headshot to show. The draft broadcast board no longer wears a button on TV. Once you go full screen on a laptop or desktop, the Exit full screen chip in the top-right corner disappears completely and only reappears when you move the mouse up to that corner — so the room sees the board and nothing else. On a phone or tablet, where there is no mouse to bring it back, the chip stays put exactly as it is today. The draft broadcast's between-picks screen now wears the same colours as the card that follows it. Each franchise had one gradient for the pick reveal and a separately-composed one for the on-the-clock board, and for Midwestside Connection the two had drifted a long way apart — a gold screen between picks handing off to a near-black one on the pick, twice a minute. Both screens now paint the franchise's single configured gradient, so Midwestside's on-the-clock board is black to match its reveal, and every other team's two screens line up as well. The draft broadcast stops cutting between its two screens. Handing off from the on-the-clock board to a pick reveal used to swap the whole TV in a single frame, which looked less like the board reacting and more like somebody changing the channel. The two are now a pair of slides that dissolve into each other — the pick card comes up over the board as one piece, with nothing flying around inside it. The crest is bigger news than it was, too: it used to hide behind the player with half of it off the edge of the card, so from across the room it read as texture. It is now dead centre and noticeably brighter, with the player on one side of it and the pick on the other. The draft broadcast board makes it a lot harder to miss who's on the clock. The franchise crest was a small square sitting above the team name; it's now twice the size and moved alongside it, with the copy stacked to its right and left-aligned off the logo's edge. The type order flipped with it — "On the clock" is now the headline and the team name is the small line above it, because at that size the logo already tells the room which franchise is up. Phones keep the old stacked version, where there's no width to put the two side by side. Two draft broadcast cards get repainted. Midwestside Connection's used to be a wall of muted gold; it's now a hard, near-black card with a single band of gold rising out of the bottom-right corner behind the player — the black does the talking and the gold just signs it. Vitside Mafia's is the same idea flipped: the deep red now fills the card and the black is the corner anchor under the player, instead of the other way round. Every other franchise's card is unchanged, but all of them now carry their gradient in league config alongside their crest and team names, so the next one is an edit rather than a code change. The homepage now gets you to whichever conference board is actually drafting. The hero leads with your own conference, and the two drafts run on different days — so on American League draft Saturday a National League owner's homepage showed their own draft counting down to tomorrow, with no way through to the AL board that was live at that moment. A second link now appears on the hero for any conference currently drafting, marked live, and disappears again once that draft is done. If it's your own conference on the clock, the main button already goes there and you don't get a duplicate. The Draft Broadcast reveal now shows you where a player comes from before you finish reading it. The line under his name has always said the school or the pro team — "Notre Dame", "JAX" — and now the logo sits right there in front of the words. TheLeague's rookie draft gets college marks, the AFL's board gets NFL helmets, and either way a room ten feet from the TV recognises the shield before it reads the three letters. The marks are the dark-background versions, so the ones that normally disappear on a dark card — Raiders, Steelers, Jets — still show up, and a logo we don't have simply doesn't appear rather than leaving a hole in the line.

Owner Pages — Two more AFL blanks get filled. Reckless, who ran the franchise now known as Swiftie 4 Life in 2005 and 2006, is Kevin Smith — the 7-8 season and the 10-5 playoff year underneath it finally belong to a person. And Whitman's Wonders, two years on the Da Dangsters slot in 2011 and 2012, is Adam Inman. Six AFL owners are still headed by a team name instead of a person. Owner cards on the Owners page now show your current team, not your longest-running one. Shawn Huber gets Suh girls, one cup instead of a logo he retired in 2018, and Shawn Klezovich finally gets the Swiftie spelling. Last-place rebrands still don't count — Ross Lawrence keeps the Thundering Herd. The Owners page now leads with current owners — the "Champions you've never seen" callout moved below the card grid instead of sitting above it. Eighteen owners get a real name instead of a first name, an initial, or nothing at all — and two of them get their history straightened out. Maverick is Mick Travers, the LBer Decleaters’ “BSB” turns out to have been his initials all along — Brian Stanford-Brandt — the Gridiron Geeks are Bob Szelagowski, the Dark Magicians are Dan Le Cam, and Jomar Marinio finally gets a surname on the Computer Jocks in both leagues. On the AFL side: Nigel Dunnington (Titsburgh Feelers), Chuck Carper (M.L. Maniacs), Marnel Mangrubang, Boun Lovan, Jeffrey Tefertiller (ISIS), Justin “Pec” Collier (Cougs), Rafael Araiza — the Badd Boys’ “Ralfie” — plus originals who had no name at all — Andrew Wagner (2004 C.P. Bruisers), Pete Sisich (2003 Lucky Buck$), and, exactly as their team names always suggested, Trevor of Trevors Team and Joey of Joey’s Team. Bryan Sandes had been filed as two different strangers: Taco Hell 2004-06 and the Fly Fishermen in 2007 were the same man and the same franchise, so his four seasons now sit on one page. The Carolina Blues went the other way — they are Chris Broskey, not Coinflip, so the Angry Irish’s 2012 season moves back to a page of its own.

Playoffs — Twenty-two AFL third-place finishes are on the site for the first time. The code read third place out of the AFL Championship bracket's neighbour — which since 2018 has been the AL Championship, a semifinal bracket whose winner always goes on to win or lose the final. So the answer was always the champion or the runner-up, those two got claimed first, and third place quietly landed nowhere: 0 seasons out of 23. Every one from 2004 on has now been recovered from the actual bracket games. The East picks up six third-place finishes, the South five, the North and West four each. The AFL has seeded eight playoff teams every year since 2003, but the site had been crediting four or five a season since 2018 — it was reading the playoff field out of the AFL Championship bracket, which in 2018 stopped being the eight-team field and became the two-team final between the AL and NL winners. Every AFL playoff berth on the site was recomputed from the actual bracket games: North goes from 28 berths to 38, West 37 to 44, East 29 to 34. Playoff appearances on owner pages, franchise pages and the division report all move with it. Eight franchise-seasons between 2004 and 2014 were also credited to the wrong teams — 2014 had berths on two clubs that spent that postseason in the NIT.