Weekly Fixes & Polish (Jul 15-26)
19 bug fixes and style improvements across schefter report, rosters, draft, design system & theming, and more.
The Full Story
This week's 19 bug fixes and polish improvements touched the following areas of the site:
Schefter Report — Schefter's Cut Watch column got its facts straight about the August auto-cut. Sunday's article claimed the system cuts your weakest players when you skip filing a cutdown plan — flat wrong, and dangerously reassuring if your roster is loaded with recent pickups. The real rule: the machine cuts your NEWEST waiver, free-agent, and auction adds first, value be damned, and trades don't count as pickups. The shipped article was corrected, and future Cut Watch fact sheets now compute each team's actual auto-cut order with the exact code the deadline job runs — so when Schefter says the machine is coming for your quarterback, believe him. Schefter's daily Cut Watch dispatches were going straight to the website and skipping the group chat entirely — he'd type up 'Midwestside Connection faces the guillotine, 6 over the limit' for the site feed and then just... not hit send on GroupMe. Turns out the article pipeline only pings the chat for story types that define a promo, and Cut Watch never got one. Fixed: whenever at least one team is over the 22-man limit, the chat now gets the headline stat, how many players the league still needs to shed, the countdown to the August cutdown deadline, and a link to the full chopping block. On days when everyone's compliant, he keeps it to himself — no buzz for a non-story. And while we were in there, his editor dialed the column back from daily to a proper Sunday feature: one Cut Watch every Sunday morning of the cut window instead of thirty-three straight days of guillotine coverage. He also got a new source inside the league office: Schefter now knows which over-limit owners have already filed their auto-cut plans — those teams get a respectful nod for having their affairs in order, while the heat goes straight to anyone over the limit with nothing on file. He knows THAT you've made your picks, never WHICH picks — your cut list stays sealed. His chopping-block picks got smarter too: instead of just pointing at the cheapest contracts, likely cuts now come from a combined value ranking that blends redraft and dynasty ADP by contract length — a 1-year rental is judged purely on this season's draft boards, a 5-year keeper purely on dynasty boards. (Fixing that also uncovered that the 'dynasty ADP' feed had been a carbon copy of redraft data all along — now it actually pulls dynasty leagues.). The 'whisper back' links in Schefter's GroupMe posts work now. Every clean link on the league domains — afl-fantasy.com/schefter/tip, theleague.us/rosters, all of them — was quietly being stamped page-not-found behind the scenes; most pages shrugged it off and displayed anyway, but the tip page's sign-in handoff couldn't, so tapping a tip link from GroupMe dead-ended on a 404. The routing now reports what actually happened, the sign-in bounce goes through, and the link even remembers which team's desk you were headed to after you log in. Bonus: a bare /schefter now drops you at the Schefter Report feed instead of a dead end. Claude Schefter no longer ghosts you after one bad draft. When his quality gate spiked a post for being too vague, the scanner still charged it against the day's posting budget — so one scrapped rumor at 7am could silence the rumor mill until midnight, tips waiting patiently the whole time. Budgets now only count posts that actually ship. And when the feed's been quiet for a week (or a subject hasn't come up all week), the bar for 'worth posting' drops — a scrappy 3/10 rumor beats radio silence.
Rosters — The August cutdown automation now honors the rookie rule: before cutting anyone, it moves your rookies into open practice-squad spots — those players are KEPT, and every taxi move is one fewer cut. Premium draft picks get the spots first when you have more rookies than room, and marking a rookie in your cutdown plan still means what it says (he gets cut, not saved). The Cutdown Plan panel, the commissioner's report, and Schefter's Cut Watch all show the taxi moves now — green badges for the kept, amber for the doomed. The contract-action sheet caught up with the rest of the site's wardrobe. Open a player's contract tools on your phone and the headshot used to sit in a plain gray box — while every roster table around it dressed the same player in his team's colors. The modal now wears the standard player-cell chip: a circular team-color backdrop with the spotlight behind the head in dark mode, and a clean team-color ring in light mode. Same player, same colors, every surface. The Cut Watch reorder buttons were playing hide-and-seek in dark mode. The little up/down arrows and the × for un-marking a player were drawn in default-black ink on a near-black button — technically present, functionally invisible, especially on a phone where those arrows are the only way to reorder your cut list. The icons now inherit the button's actual color like every other icon on the site, so they show up crisp in both themes. The clipboard on the MARKED badge got the same treatment while we were in there. The roster loading screen learned to breathe. Its rotating one-liners were flipping every 2.2 seconds — just enough time to read half a quip before the next one shoved it offstage. Each line now hangs around for a full five seconds, and the loader itself waits a beat longer before appearing so quick page loads skip the theatrics entirely. The 'How It Works' tab clinging to the side of the Rosters page has been retired. It spent the spring walking newcomers through contract declarations, but with declaration season behind us it was just photobombing your roster — so the guided demo has left the building. The contract tools themselves haven't gone anywhere. The contract-year chips on the Rosters page — the little blue '4' with its ticking '27d' deadline badge — were still dressed for daylight in dark mode, glowing like sticky notes on a midnight desk. They now wear proper dark-mode colors: translucent fills, readable text, and a deadline badge that shifts from amber to orange to red as the clock runs down without searing your retinas on the way.
Draft — The draft room's player card was the last holdout on team colors. Tap a player in the draft room and the detail card popped up with his headshot floating in a plain gray circle with a position-colored ring — while the player list you just tapped him from had already dressed the same headshot in his NFL team's colors. The card now wears the standard player-cell chip: team-color gradient backdrop, spotlight behind the head, team-tinted ring in both themes. Bijan glows Falcons red on the card, same as he does in the list. Defenses keep their clean logo treatment. The Draft Order page now knows what phase of the calendar it lives in. During the season it's a live prediction that moves with the standings; once the champion is crowned and the toilet bowl comp picks are settled, it wears an official badge instead of hedging; and now that the rookie draft is in the books, it says so plainly — final order as drafted, with the next prediction cycle firing up when the new season kicks off. The spring draft heroes got the same memo and link to 'View Draft Order' instead of a predictor that stopped predicting months ago.
Design System & Theming — Light mode finally got the memo about team colors. The little circular player headshots have been wearing their NFL team's colors in dark mode for a while — gradient backdrop, soft spotlight behind the face — while light mode made do with a plain gray circle and a thin colored ring, like everyone showed up to the team photo in street clothes. No more: every player chip now wears the full team-color treatment in both themes, on every surface — rosters, player pools, free agents, live scoring, the contract sheet. The ring around each chip is cut from the same cloth, mixed darker in light mode so it frames the chip against a white page, lighter in dark mode so it pops off a black one. Bo Nix glows Broncos orange at noon and at midnight. The dark-mode player-headshot fix from earlier today found four stragglers. The live-scoring scoreboard was mixing its own paint — player chips built from raw team colors with none of the brightness safeguards, so a Titan or Steeler could still vanish into a midnight circle mid-game. The Projected Free Agents table and the AFL player pool had quietly skipped team colors entirely, showing plain gray chips in dark mode while their sibling pages got the full treatment. And the Rosters page's players-by-team and players-by-college cards were hand-sewing their own player rows without the backdrop. All four now use the same spotlight-behind-the-head backdrop as everywhere else, plus a half-opacity white ring that lifts every chip off the dark page. A new build-time guard makes it structural: any future page that hand-rolls its own team-color-behind-a-player math — or renders a player chip without the backdrop — fails the build and gets pointed at the shared helper. One paintbrush, whole site. Dark mode stopped hiding half the league's rookies. The little circular player headshots wear their NFL team's colors behind them — great in theory, except a third of the league (Titans, Steelers, Bears, Seahawks, Texans...) wears colors that are basically midnight, so a guy like Cam Ward in a navy jersey on a navy chip on a dark page was just a rumor of a face. The chips now reach for each team's lighter brand color when the main one is too dark — Titans light blue, Steelers gold, Bears orange — and every chip puts a soft spotlight right where the player's head sits, brightest behind the face and deepening toward the rim. Every team's backdrop is held to a minimum brightness, enforced by a build-time guard so no future team-color tweak can sink a headshot back into the void. Light mode untouched; it was never the problem. Dark mode got a full sweep of the closet. The Admin Hub bug from earlier this week — styling against color tokens that don't actually exist, so everything silently rendered its light-mode fallback — turned out to have cousins in some forty files: white draft-queue rows on a dark draft room, lineup accordions and matchup pickers stuck with light text, homepage urgency chips glowing like flashlights, and a templates page whose headings had no color at all. Every one now runs through the real theme tokens, and a new build-time guard fails any future code that references a token that doesn't exist — so this whole class of bug is done recurring.
Navigation & Routing — The side menu's league-switch chevron now actually switches leagues. On theleague.us and afl-fantasy.com it used to strip the other league's address right out of its own link — so 'Switch to AFL' just reloaded the page you were already on. It now carries you straight to the same page on the other league's site, and the chevron shows for everyone instead of hiding unless you were logged in as a dual-league owner.
Admin — The Admin Hub finally respects dark mode — its cards were stuck glowing white on the dark background because they styled themselves against token names that don't exist — and the August Cutdown Report now has a card there, so the commissioner's audit trail is one click away instead of a memorized URL.
Standings — Standings finally sit still on your phone — the Premier League tables (and every other standings view) used to shove the whole page sideways, so you had to swipe left and right just to read a record. Now the columns that matter — rank, team, and record — fit the screen, the rest tuck away until you've got the width for them, and the desktop layout is untouched.
Message