• v1.17.0 bcc577d7e7

    v1.17.0 — espnff opens up, and learns whose team is whose
    All checks were successful
    CI / build-and-test (push) Successful in 2m53s
    CI / docker-build (push) Successful in 58s
    Stable

    joeyr released this 2026-09-10 21:59:33 -05:00 | 57 commits to main since this release

    Added

    • ESPNFF_TEAM_MAP — who is who in the league. Comma-separated
      discordUserId:teamId pairs, telling the bot which ESPN team each Discord
      user manages.

      This closes a wrong-answer bug, not a missing feature. The fantasy
      server is configured with exactly one team id and flags it is_your_team.
      That is correct for whoever set it up and wrong for every other manager in
      the league — and the flag says nothing about who is typing. So "how did my
      team do?" from a second manager came back complete, confident and about
      somebody else's team, with nothing in the answer to give it away. The
      asker's own team id now goes into the system prompt for every request, and
      the is_your_team flag is explicitly demoted where they disagree.

      Nothing can derive this mapping: ESPN knows a manager by an ESPN display
      name, Discord knows a snowflake, and no field joins them. An unmapped user
      is told apart from a mapped one and asked which team they mean rather than
      being given a guess; /aufhocker espnff help tells each person which team
      the bot has them as, or that it has none. A malformed entry is dropped with
      a warning — including 123: and 123:0, which would otherwise map someone
      onto a team that does not exist.

    Changed

    • /aufhocker espnff mcp is no longer admin-only. The ten fantasy tools
      are read-only and see one league, so the reach that makes web_search
      admin-gated does not apply; the rate limiter is the cost control, as it is
      for every other command.

      The gate this required is in ClaudeClient: naming an explicit tools
      list now authorizes that list.
      isAdmin still gates the DEFAULT set —
      general-purpose reach onto the open internet, spending an API key, for
      anyone who can type in a channel. A named list is a narrower claim the
      calling command has already made. Without this the command would have kept
      working for non-admins while quietly dropping its tools, which produces a
      fluent fantasy answer with nothing behind it.

    Downloads