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.3

All releases, newest first

For you

  • A game's players panel no longer prints player names on top of the position rank beside them. The two teams stack when the panel is too narrow to hold both side by side, so every name reads in full instead of colliding with the column next to it.
  • The navigation links, the week chips, the team badges on a game card and the skip link are all easier to hit on a phone. The marks themselves are unchanged; the area that responds to a tap is bigger.
  • The track record page opens at a readable length. Published calls are grouped by the week they were made, newest first, and a week opens as soon as it has a result to show. Before the season starts every published call is still awaiting its game, so the weeks begin closed and each states its own count of calls, hits, misses and results still pending. Nothing is removed from the page: every call is one click away, and still found by a browser's own find on the page.
  • The weekly rankings page is shorter. The overall value table shows its top 25 and links to a new page carrying the complete list for that lineup format, the same way each position's table already links to its own page.
  • Nothing on the site drags sideways any more. Every wide table, the rankings, the value tables and the published game calls, becomes one card per player or per row on a phone instead of a grid you had to scroll across. The rankings table alone was 1280px wide in a 351px window, so about a quarter of a row was visible at a time. No column was dropped to make this fit; they are stacked, and each names itself.
  • The week strip fades out on its right, so it is clear the weeks carry on past the side of the screen.
  • The navigation wraps to a second row on a narrow phone instead of hiding the last link off the side behind a sideways drag nothing advertised.
  • The footer states the year.
  • The rankings table fits the page now at every width, not just on a phone. Its columns were split evenly, so Rank was handed 157px to print "QB1" while the floor to ceiling band, which needs 258px, was squeezed into the same 157px. The columns are sized to what they hold, and the table no longer reaches wider than the page it sits on.
  • On a phone a ranking now reads as four short rows, the player and their rank, the projection beside its band, and the projected stats. The first version of this stacked every column as a labelled field and ran to 312px per player, which read as a form rather than a ranking; it is 181px now, and a row no longer says "No designation published" when there is nothing to say.
  • The forecast history table is gone from the game page. It listed the same published points the drift chart above it already plots. The run id that table carried moves to the published stamp, so the page still names the run every number on it came from.
  • The Week 1 cold start notice is gone from the rankings pages.
  • A ranked player is shown at the club the published roster has him at. The rankings carry a club of their own, but it is the club a player last played for, so before a season's first game it names the club he left: on the week 1 artifact that was 108 of 591 ranked players, Kyler Murray among them, ranked at Arizona while the published roster has him at Minnesota. The club now comes from the roster, which is the channel that knows it.
  • No table cell is cut off any more, at any screen size. A source mark carries a detail string beside its label, and the badge it is drawn as refused to wrap, so at a table's column width the mark ran past its cell and the cell clipped it: a provenance mark that exists to be read was in the page and not on it. It wraps now, and the wide tables carry column widths and a middle step that fit their container instead of splitting it evenly.
  • The forecast chart on a game page reads against a scale. Dashed marks at 25%, 50% and 75% sit behind the two clubs, with the even-money mark drawn a step stronger, so a published 58 can be placed against how likely that actually is instead of floating in an unscaled box.
  • Both clubs are now drawn as solid curves that bend gently through the forecasts we published. One club used to be drawn broken, which read as a lesser reading rather than the other side of the same game; each is told apart by its own colour and the label at the end of its run.
  • The forecast heading puts a space between each club and its percentage, which had been running together as "Seahawks59%".
  • On the forecast chart each reading is written on the outside of its own club's run, above when that club is the one on top and below when it is not. They were pinned, one always above and one always below, which only held while the home club led: once the other club went ahead the numbers were written across the wrong run, across the dots, or across each other. Two forecasts a fraction apart now still read cleanly.
  • Every bar on the site is rounded to match the cards around it. They were drawn inside artwork that scales width and height by different amounts, so the rounding came out stretched and the ends read as almost pointed.
  • A game's projection card lays its two clubs out one per row wherever the card is too narrow for three columns, which on a game page is every screen size, not just a phone. The card sits in a column about 416px wide even on a large display, so the club badge, the name and the record had been wrapping into three rows apiece at two different heights.
  • A game's matchup card no longer repeats the same absence six times. Before a season's first game every season to date row is empty for both clubs, so the card printed "season to date unavailable" once per row beneath a heading promising a comparison. Those rows stand down now and one sentence names them, while the rows that do carry something, the road and home record and the injuries that matter, keep the card.
  • The row of buttons at the top of a game page carries only sections of that page now. Players and Injuries have gone: both pointed at panels that sit beside the reader on a wide screen and directly below on a narrow one, so each offered a trip to something already in view. A preseason game has no section of its own and carried those two alone, so it carries no row at all now.
  • Pressing Forecast reaches the forecast chart. It pointed at the projection card, which is the first thing in the article, so the one button a reader would press to reach the chart barely moved the page and read as broken. The buttons also run in the order the sections appear; Forecast came first while the matchup card sat above it.
  • Clicking a different game updates the players and injuries panels beside it. They kept showing whichever game the page was first served with, so reading the Ravens at Colts forecast came with New England and Seattle player names and injury designations in the column next to it, attributed to two clubs not in the game being read.

Under the hood

  • games-shell.ts swaps [data-games-aside] alongside [data-games-detail]. The master detail enhancement fetched the target page and replaced the middle column alone, and the aside had no hook to find it by. A target page carrying no side panels, which is what a week with no games renders, empties the aside rather than stranding the previous game's. Three tests in games-shell.test.ts cover the swap, the empty case and the extractor.
  • GameDetail's section list drops the two anchors that point outside the article, orders each variant by where its sections actually sit, and renders no nav at all below two entries: one link is a button that scrolls to the only thing on the page. The forecast anchor moves from the GameProjection wrapper to the GameDrift wrapper, the section headed Forecast, and the projection card keeps a target of its own at #projection. games-pages.test.ts asserts the anchor opens the drift chart rather than the card above it, and that a preseason page renders no nav.
  • GameSidePanels splits its two teams on a container query against the panel's own inline size rather than a hard two column grid. The same panel renders inside a 21rem aside and in the full width flow, and at the aside's width each list had about 139px for three columns. The head row shares those tracks through subgrid, so its "Pos rank" label claimed 60px to name 34px of data and squeezed the name track to 33px. Player names are single unbreakable tokens, so they could not wrap out of that track and painted on top of the next column on all ten rows, at every viewport, by up to 54px. The divider between the two teams flips from a left border to a top border when they stack.
  • global.css carries a shared .table-cards pattern: below 48rem a marked wrapper stops scrolling sideways and lays each row out as a card, every cell naming itself from its own data-label. RankingsTable adds only the placement its own card needs, a headline projection and a band rather than labelled pairs, and drops the three stat columns and the status column between 48rem and 52.5rem where a trimmed table still fits. Applied to the rankings tables, both value tables and all four track record tables. A build measured 90,312 bytes of CSS before this and 101,299 after, so scripts/check-budget.mjs raises its CSS cap to 105,000 with that measurement written down.
  • The primary nav, the brand lockup and the skip link now take their height from --touch-target, which the project already defined at 44px and which .icon-button and .toggle already honoured. The week chips and a game card's team badges keep their visible size and grow their hit area to the same token with a centred pseudo element, so the marks are unchanged. The team badges were 23px tall, below the 24px floor of WCAG 2.2 SC 2.5.8.
  • track-record.astro groups engine1.calls into one details element per week instead of a single table. Every row stays in the DOM, so find on the page and a crawler still reach every published call, and each week's summary states its calls, hits, misses and pending at one weight and one colour, which is the same rule the row styling contract already enforces on Hit, Miss and Pending. A week opens only once it carries a scored call. Measured at 375px wide the page was 15,943px, of which the 272 row calls table was 13,127px; with every call still pending it is 2,894px.
  • New route rankings/value/[format] carries the published top 100 for one lineup format. It builds from a fixed list of the four formats rather than from whatever the current artifact holds, the way rankings/[position].astro builds from RANKING_POSITIONS, so the route and its sitemap entry resolve whether or not a run valued that lineup and a format with no data says so instead of returning a 404. rankings.astro now renders 25 rows rather than 100 and links out; the artifact ranks 591 players per format but the published surface has always been the top 100, so that page carries the same hundred and the split loses nothing that ever shipped; all four format panels render into that one page, so the old table was 400 rows of markup for the 100 a reader could see. Measured at 375px wide the page was 10,642px and is 7,042px.