Published artifacts

Search Sporacle

Use the up and down arrow keys to move through results. Press Enter to open a result and Escape to close search.

Type to search published players, teams, and games.

Releases

1.8.0

All releases, newest first

For you

  • Team colors are more distinct on both the light and dark themes. A few clubs used to render a chip identical to another club's (Denver's orange next to Cincinnati's, the Rams' navy next to Dallas', Seattle's navy next to New England's); each of those now shows its own separated shade a reader can actually tell apart, and every chip stays legible against the page's own text color.
  • Every graphic that names a team now draws in that team's own color instead of the site's single accent color: the win probability bar, the projected margin range, the finished game's outcome ladder, the forecast drift chart, and a team page's own rating history chart. The margin range splits at an even matchup and colors each side by whichever team it favors, instead of one shade covering the whole range. The drift chart now traces both teams' probability across every published run, each in its own color, instead of drawing only the home team's.
  • The week strip covers all four weeks of the preseason instead of one combined week. Week 1 is the Hall of Fame game on its own, and weeks 2 through 4 each get their own page, matching the league's own schedule instead of folding a full slate down to a single chip.
  • A game's broadcaster is a link to that broadcaster's own site, wherever we can vouch for the address. A local station or a team's own preseason feed still prints as plain text rather than guessing where it streams.
  • The key players panel names what its own numbers mean: a column heading names the position rank, and another names the projected points, so a rank like "QB9" and a projection like "17.6" are no longer left for a reader to work out alone.
  • A team's schedule row for a game that has not been played yet no longer uses the site's own highlight color; it reads in the same neutral gray every other not-yet-known figure on the site already uses.
  • Team labels at the end of the forecast drift chart are easier to read: each one sits in a small colored chip with readable text on it, instead of colored text placed directly on the card, which was too faint to read for many clubs.
  • Every remaining week of the season now carries a live forecast, not only this week and next. A game far off on the calendar shows a real number as soon as the season starts pricing it, instead of a skeleton waiting for the season to reach it.
  • A far week's forecast shows exactly the history it has, as short as that is, rather than stretching or padding it to look like a full season of updates, and says how old its last number is once a later run has moved past it, in the same words the site already uses for a published stamp.
  • The Arizona Cardinals page lists its roster again. The published roster file names that club by a code the site did not recognise, so the page had been showing an empty squad while every other club showed a full one.
  • Every rostered player now has their own page: team, jersey number and depth chart slot, plus a projection for the players our model ranks, including a rookie with no NFL games logged yet, whose projection is labeled as an estimate built from a cohort of comparable rookies rather than their own history. A player at a position we do not model, or one too far down the depth chart to make this edition's ranked list, still gets a page that plainly states which of those is true instead of a number. Rankings rows, a game's key players list and a team's roster page all link straight to it.
  • Rankings pages show all six position tabs together (QB, RB, WR, TE, DST and K); QB, RB, WR and TE each carry the actual count of players ranked there. DST and K stay in the row, dashed and marked not ranked, rather than vanishing from it, with a plain explanation on request: we built a defense ranking, tested it, and it beat guessing, but beating guessing was not enough to clear the bar we set for publishing it. We have not built a kicker ranking at all, and it will face the same bar when we do.
  • Switching a rankings page between standard, half point per reception and full point per reception scoring now reorders every row to match, not just the printed number. Two players can genuinely trade places between formats, and the table now shows it.
  • A ranked player's projected range, floor to ceiling, now fills in their own team's color on the rankings table, matching the win probability bar, the projected margin range and every other team graphic already colored this way.
  • A player's floor to ceiling range on a rankings table, or on the player comparison page, now shares one scale with every other player in that same table or comparison, so a wider range actually reads as wider. Before this, each player's own range always filled its own full width, so the 231st ranked receiver at a position drew exactly as wide as the best. Each table now also states the scale's own maximum in its caption.

Under the hood

  • A team's chip color is accepted only when it clears a perceptual distance from every other club's chip and from the surface's text color, not just when its hex value happens to be unique. The three pairs that previously resolved to an identical hex now each derive a genuinely separated color for the yielding club instead.
  • Every team color graphic reads the same `--team-<ABBR>` custom property the chip and roster already use, rather than drawing from the interface accent, and a test now confirms the accent is absent from each of those surfaces rather than relying on review alone.
  • The preseason week key splits into `pre1` through `pre4`, keyed off the schedule's own preseason week number instead of one collapsed `pre` key. The matchup deduplication guard that already existed for two preseason meetings of the same pair now scopes to a single preseason week rather than the whole preseason, since two clubs meeting in different preseason weeks are two different pages, not a collision.
  • The broadcaster to link map lives in one place and is checked against the real published schedule's own spellings, not only a test fixture, after an earlier pass keyed it to the fixture's spellings and missed 36 real games that used the schedule source's own abbreviations for two already verified national networks.
  • The key players panel's column headers and each player row share one CSS grid track, so a label actually aligns with the value it names, rather than two independent rows that only happened to agree at one side.
  • The drift chart's team labels at the end of each trace reuse the site's existing team color chip pairing (the team color as the fill, its matched ink color as the text on it), already held to a 4.5:1 contrast floor for every club in both themes, instead of team colored text placed straight on the card surface, which only cleared the lower 3:1 floor meant for graphics.
  • A finished game's result panel carried a second copy of the forecast drift chart that no page could ever reach, because nothing passed it the forecast history it needed. It is removed; the chart a reader sees is the one the game page renders directly, and it is unchanged.
  • Pricing every remaining week of the season, not just this week and next, would have multiplied two artifacts that used to grow only with the near term: the narrative preview batch and the forecast history file. Both are contained. Previews are still written only for the games about to be played (this week and next); a far game's forecast history gains one point per weekly full run instead of one every six hours once it enters that near window. Measured at a full season's cadence, the history file's peak size lands at roughly 8.6 times smaller than pricing every week without either containment would have produced.
  • A played game's forecast history now lingers three weeks after it airs before it is removed from the file, up from one, so its drift chart stays reachable a little longer than it used to.
  • The site resolves the six team codes the pipeline already aliases (Arizona, the Rams, and four relocated clubs), at the point a published artifact is read rather than at each of the several dozen later places a team code is compared, routed or rendered. A code that is neither one of the 32 clubs nor one of those six still stops the build loudly, because silently dropping one is how a whole roster went missing from its own team page. A Gate 1 check reads both copies of the map, the pipeline's and the site's, and fails when they disagree in either direction.
  • The floor-to-ceiling band on every rankings page was never actually positioned: the Astro feature it relied on to place the range and the median tick does not compile on this version, so a real build printed the literal string "[object Object]" in place of every position, 1185 times across the site. The band now computes its own positions directly, and a build check on the real output confirmed zero of that string anywhere, down from 1185.
  • PercentileBand takes an optional shared scale maximum; passing nothing leaves its old per-row behavior unchanged. RankingsTable computes it as the highest published ceiling among the players in its own table and passes it to every band in that table, and compare.astro computes it across whichever comparison slots are actually filled, recomputed on the client each time a reader swaps a selection. A build check confirms two rows with different ceilings now render genuinely different band widths, which the old per-row scaling could never do.