Skip to content

Releases: SysAdminDoc/FantasyLeagueFootball

v0.3.0

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 17 Aug 02:20

The in-season half. league import --yahoo ID reads every roster in your Yahoo league into a plain league.json (optional [yahoo] extra; sign in once). Then:

  • league show — every team's best lineup, strongest first, by rest-of-season projection
  • lineup — this week's best lineup from the week's projections, and the START/SIT moves to get there
  • waivers — free agents ranked by how much your best lineup improves, with a drop paired to each
  • trade — both best lineups before and after a proposal, with a verdict
  • trades — win-win trades with every partner (raise your lineup without lowering theirs)
  • serve --yahoo ID — follow a live Yahoo draft through its Draft Results page

Weekly and rest-of-season numbers come from Sleeper's public projections; everything falls back to the board's season projections offline and says so. Names join suffix-blind across sites (board.join_key). 337 tests.

Assets: wheel, sdist, and draft-board.html (the 2026 board, works offline).

v0.2.0

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 16 Aug 21:40

The 2026-08-16 audit filed 35 findings against v0.1.0. This release ships all 34 that could be built here.

Live mode was the worst of it. Ownership of a pick lived only in the browser, so every reload or dropped
connection emptied "Your roster" — and a pick arriving from Sleeper could never be claimed as yours at all,
which meant roster tracking, lineup needs and bye warnings were dead in the exact mode the feature exists for.
Ownership is now server state. Picks of players the board doesn't rank are counted instead of dropped; losing
them used to put the pick counter, "your pick", the survival odds and opponent attribution one behind for the
rest of the draft. A pick undone in Sleeper is now undone on the board. Snake maths follows board depth, so a
10-team league drafting 20 rounds is no longer told "no picks left" from pick 161.

Security. POST /state refuses cross-origin writes. No raw angle bracket reaches the page's inline data:
escaping only </ left <!--<script> in any dataset string able to render a blank board. A javascript:
source URL no longer executes on click.

On a phone, best available, your roster and the managers picking before you sat roughly 15,000 px below
the top of the board. They now lead the page.

Accessibility. Secondary text — notes, tier ranges, rank numbers, every card heading — ran between 3.4:1
and 4.4:1. The lowest ratio on the board is now 4.7:1, in both themes, guarded by a test. The toast keeps Undo
on screen at 390 px, waits while you're reading it, and takes focus when the cross-off came from the keyboard.

Also: a Theme toggle (the light palette was unreachable without changing your OS setting); a superflex board
now plans and prices with two QB slots instead of claiming "QB Single"; validate reports malformed datasets
instead of raising tracebacks; name search ignores punctuation, so "jamarr" finds Ja'Marr Chase; and repainting
the board is no longer quadratic.

Full detail in CHANGELOG.md.

Verified: 282 tests, ruff clean, Chromium and Firefox, wheel installed from a clean venv, and refresh /
variant / tiers run against the live public APIs.

v0.1.0

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 16 Aug 19:47

The roadmap is drained. Everything below is live and verified against the real APIs.

Grab draft-board.html and open it — 200 players, works offline, nothing to install.

At the table

  • Will he last? Set your league size and slot; every player shows the odds of surviving to your next two picks, and the bar tracks the pick on the clock.
  • Live value re-sorts each tier by value over replacement against who's actually left — the number that moves when a position dries up.
  • Before your next pick lists every manager drafting ahead of you and the slots they still need. Two of them needing the same position is your warning.
  • Your roster fills Yahoo's default lineup, flags bye-week clusters, and exports to CSV.
  • Undo on everything, including Reset.

Data, refreshed on demand

fantasyleague refresh pulls ADP + spread + byes (Fantasy Football Calculator), season projections and auction values, injury designations, trending adds, and keeper ages — all from public APIs, no key, cached for a day, and it degrades to cache offline.

Live sync

fantasyleague serve --host 0.0.0.0 --sleeper DRAFT_ID puts the board on your phone and follows a Sleeper draft pick by pick. No browser extension.

Also

variant 2qb for superflex (priced off a two-QB lineup), export to CSV, validate for custom datasets, a one-double-sided-sheet print layout, and a CSP-hardened page.

191 tests including a real-browser suite. See CHANGELOG.md for the full list.

v0.0.1

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 16 Aug 18:10

Initial release.

What you get

  • draft-board.html — the 2026 half-PPR board as one offline file: 75 players in 7 tiers, value/reach/watch flags, do-not-draft, injury board, late-round targets. Click players off as they go; tier headers warn when a tier is down to its last two. Just open it.
  • fantasyleaguefootball-0.0.1-py3-none-any.whl — the Python package: fantasyleague build | list | values | next. Zero runtime dependencies, Python 3.11+.

Data current through 2026-08-16. Recheck the injury board before you draft.

See CHANGELOG.md for the full list; ROADMAP.md for what's next (snake-draft awareness, live sync, K/DST, print sheet).