• v0.64.0 25ab2cad4a

    v0.64.0 Stable

    joeyr released this 2026-09-29 19:27:45 -05:00 | 26 commits to main since this release

    The fantasy tenant can change its own team, behind a new ESPN_WRITES setting that
    defaults to off.
    Under off nothing changes: the same ten reads, name for name. Under
    dry_run or live it gains four tools, all acting on ESPN_TEAM_ID alone. dry_run
    runs every check and sends nothing.

    Added

    • ESPN_WRITES: off (default), dry_run or live. Anything else fails the boot.
      The boot summary's writes= line says which, and with changes on, preflight adds
      check=espn_owner, confirming the cookies manage the team.
    • update_lineup: move players between starting slots, BENCH and IR in one
      transaction. It takes effect immediately. It is refused, with nothing sent, when a
      player cannot play the slot, is locked because his game has started, or would overfill
      a slot. FLEX means the league's one flex slot and is refused where there are two.
    • create_waiver_claim: add a player on waivers and drop one of the team's own. The
      claim runs at the next waiver process, and the drop only happens if it succeeds. It
      refuses a free agent, a FAAB league, a player on another roster, and a claim identical
      to one already pending.
    • list_waiver_claims: the team's pending claims in order, each with the
      claim_id the reorder takes, plus the team's waiver priority.
    • update_waiver_claim_order: set the order, naming every pending claim once.
    • preview: true on all three changes: run every check and return what would be
      sent, without sending it.
    • Every change names each player by id AND exact name, whitespace aside and case
      kept, and refuses on a mismatch. Every change checks that the cookies own the team
      before sending. Every change is read back and reports verified.
    • change on every change response: the change in words, with ESPN's names for the
      players and no status prefix. The bot shows it beside its Confirm button.
    • Tool labels. Every read carries readOnlyHint: true. The four above carry
      _meta.owner_only: true, list_waiver_claims included, because pending claims are
      private on ESPN. The bot decides who may use a tool from these labels.
    • espn/write, a log phase of its own for every request that changes the team.

    Measured before it was built

    All live, on 2026-09-29, from gitignored probes. The checklist is in docs/operations.md.

    • A lineup change is a ROSTER transaction POSTed to
      lm-api-writes.fantasy.espn.com/.../transactions/, answered status: EXECUTED. The
      roster shows it on the very next read. Nine moves in one transaction all landed.
    • A waiver claim is a WAIVER transaction with ADD/DROP items and bidAmount: 0,
      answered status: PENDING and appended to the end of the claim order.
    • Pending claims come from mPendingTransactions under the key pendingTransactions,
      ordered by subOrder. Claims and reorders made in the ESPN app appear there too.
    • Claim order is the request ESPN's own site sends (updateTransactionOrder in its web
      bundle): every pending id with a 1-based subOrder, POSTed to
      /teams/<id>/pendingTransactions.
    • A player filter with a limit and no sort is a 400 (FILTER_LIMIT_MISSING_SORT).

    Changed

    • The server instructions and the get_free_agents description say what this deployment
      can change, per mode. Under off they still say it cannot change anything.
    • The boot summary's writes line reads the setting. It had been a constant.

    Fixed

    • A weather test failed every evening from 20:00 New York time. It counted "twelve
      days out" from the UTC date, while get_outlook counts from the coordinate's own
      date, so after UTC midnight its target was day 13 and outside the 6-10 day window it
      was testing. It now counts the way the tool does. The tool was right throughout.
    Downloads