-
v5.1.0
Stablereleased this
2026-10-07 18:10:38 -05:00 | 10 commits to main since this releasedebug:Trueshows what Claude looked up to answer.Added
debug:Trueonquery-chatandespnff mcp. It adds a few lines of
small grey text under the answer: how many rounds and lookups it took and
how long, each round's lookups with what was asked
(get_team_info (team 4)), and the tokens in and out, with how many of
those in came from the cache. An answer given with no lookups says
0 rounds, no lookups, which is how an answer from memory shows itself.
Only the asker sees it. It is not saved with the conversation, so a
follow-up is unaffected, and Make Public posts the answer without it.
Changed
- The
usagein theclaude/apisuccess log line now includes the cache
totals of every request a question sent. It used to count input and
output only, with cache figures from the last request alone, so a question
with tool rounds under-reported what it read and wrote. The separate
cacheReadInputTokensandcacheCreationInputTokensfields beside it are
unchanged and still show the last request.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v5.0.0
Stablereleased this
2026-10-07 17:09:10 -05:00 | 12 commits to main since this releaseEvery Claude call moves from Haiku 4.5 to Haiku 5.5, a tenth of the price.
query-chatandespnff mcpnow share one conversation, so a follow-up in
either remembers what you asked the other.Changed
query-chatandespnff mcprun on Claude Haiku 5.5 athigheffort,
with thinking on. Haiku 4.5 sent no thinking or effort setting and
answered without thinking. Haiku 5.5 thinks before it answers, steered by
the newCLAUDE_CHAT_EFFORT(low,medium,high,xhighormax;
defaulthigh). Both commands use one level because they share a
conversation, and changing effort between requests misses the prompt
cache.CLAUDE_MAX_TOKENSgoes from 5,000 to 10,000, because thinking now
counts toward the cap. The prompt cache stays at one hour
(PROMPT_CACHE_TTL). Haiku 5.5 caches prompts from 512 tokens, where Haiku
4.5 needed 4,096, so shortquery-chatquestions now cache too.- The two commands share one conversation per person per channel. Ask
about your lineup inespnff mcp, then follow up inquery-chat, or the
other way round. Each command still sends its own instructions and tools,
so the first question after switching re-reads the conversation at full
price. Follow-ups in the same command are cached again after that. A chat
question after fantasy questions alone still gets the channel history of
its window, since fantasy turns carry public answers but no channel
history.new:Truein either command starts the shared conversation over. - LoL lane detection runs on Haiku 5.5 at
mediumeffort, with thinking
still off and nothing cached: one short call per game.
LOL_LANE_DETECTION_MODELnow defaults toclaude-haiku-5-5. - The start-up key check runs at
loweffort, uncached. It uses
CLAUDE_MODEL, like the commands. - Breaking:
CLAUDE_MODELandLOL_LANE_DETECTION_MODELmust name a model
that accepts an effort setting. Claude Haiku 4.5 does not, so a stack
that still sets either toclaude-haiku-4-5-20251001gets an API error on
every question and every lane lookup. Update the stack file before this
image rolls out: set both toclaude-haiku-5-5,CLAUDE_MAX_TOKENSto
10000, and addCLAUDE_CHAT_EFFORT: high. Those values work with 4.2.2
as well, so the stack can go first.
Fixed
- A question Claude's safety filters decline gets a plain answer saying
so. Haiku 5.5 runs classifiers that can stop a reply, sometimes part-way.
The bot used to fail as if the API had broken, or show the half answer. It
now says the question was declined and that rewording it may help.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v4.2.2
Stablereleased this
2026-10-05 00:08:49 -05:00 | 13 commits to main since this releaseFixed
- The matchup header says "expected" instead of "proj". The number in
brackets after each score is ESPN's live guess at the final score, but
"proj" read as the table's PROJ column, which is the pre-game projection.
So the header said(proj 125.0)above a TOTAL row that said111.7, and
the two seemed to disagree. The table's matching row is nowEXPECTEDtoo,
sitting under the points columns, from mcp-gateway 0.68.0.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The matchup header says "expected" instead of "proj". The number in
-
v4.2.1
Stablereleased this
2026-10-04 18:57:46 -05:00 | 15 commits to main since this releaseFixed
- Injury letters in the matchup table are bold red, so they no longer read
as part of a name. Plain,Rice QandMcConk Olooked like a surname
and an initial. ESPN marks the same letters in red, and so does the table
now. Only the letter changes, so the columns stay where they were. A
one-letter position such asKis left alone, because a number comes
before it rather than a name. In a Discord app too old to draw ANSI the
letter shows plain, as before.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Injury letters in the matchup table are bold red, so they no longer read
-
v4.2.0
Stablereleased this
2026-10-04 18:09:10 -05:00 | 16 commits to main since this releaseChanged
/aufhocker espnff matchup's table has a bold header and bold totals.
The header row is bold and underlined, and the rows fromTOTALdown are
bold. Markdown does nothing inside a code block, and the code block is what
keeps the columns lined up, so the table is now anansicode block. The
codes take up no columns: an older Discord app that doesn't draw them shows
the table plain, still aligned. The fantasy server's own table stays
unstyled, because Claude reads it too.- The header line rounds scores the way the table does. The scores and
projections above the table now round half up from the two decimals the
fantasy server sends.toFixedrounded the stored binary value instead, so
a figure like 116.85 came out 116.8 in the header and 116.9 in the table
under it. The table's newLIVErow and wider name columns come from
mcp-gateway 0.67.0.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v4.1.1
Stablereleased this
2026-10-04 17:38:25 -05:00 | 17 commits to main since this releaseFixed
/aufhocker espnff helpworks for the team's owner again. Their card
lists all sixteen fantasy tools plus the paragraph on changing the team,
which came to 2,260 characters. Discord refuses a message over 2,000, so
the owner got an error instead of the card. Everyone else, with ten tools,
was unaffected. Tools that change the team are now named once, in the
paragraph that says which wait for Confirm, instead of also getting a
line in the list. That brings the owner's card to about 1,900 characters
with every summary still in it. The tool list comes from the fantasy
server, so it can grow without a change here. The card now always fits:
when the summaries don't, it lists the tool names alone, and if even
those don't fit, as many as do plus "and N more".
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v4.0.0
Stablereleased this
2026-10-04 14:06:09 -05:00 | 20 commits to main since this releaseRemoved
- LoL win predictions are gone. A game-start post no longer gets a third
edit with a 🔮 Prediction field: no win percentages, reasoning, squad tips
or win condition. The result no longer says whether the prediction was
right or shows a running 🎯 Record. That is one Claude call less for every
game the monitor announces. Ranked data, recent champion form and lane
order are unchanged. /aufhocker lol predictionsis gone, and/aufhocker lol helpno
longer mentions predictions. Discord drops the subcommand when the bot
registers its commands at boot.- The prediction settings are gone:
LOL_PREDICTION_ENABLED,
LOL_PREDICTION_TIPS_ENABLED,LOL_PREDICTION_CLASSIC_ENABLED,
LOL_PREDICTION_MODELandLOL_PREDICTION_API_KEY(with its_FILE
form). The bot ignores them if they are still set. The
aufhocker_lol_prediction_keySwarm secret is no longer read. Drop its
LOL_PREDICTION_API_KEY_FILEline and itssecrets:entries from the
stack file, then delete the secret. That leaves seven secrets. - Migration 017 deletes the stored predictions. It drops
lol_prediction_history, which held the past predictions and their
accuracy, and strips the_predictioncopy from
lol_active_games.spectator_data. It runs at boot like every migration.
Its rollback recreates the empty table, but the deleted rows can't be
recovered. Tested against a real Postgres by applying 001–017 over seeded
rows, rolling back and applying again.
Changed
- Lane detection has its own model setting,
LOL_LANE_DETECTION_MODEL.
It used to borrowLOL_PREDICTION_MODEL. The code default is still Haiku
4.5, and.env.configsets Sonnet 5.5, which is what lane detection was
already running on. SetLOL_LANE_DETECTION_MODELin the stack file,
or lane detection drops to the Haiku default. It now always bills
CLAUDE_API_KEY. - A remake's result now reads "no stats recorded". It used to add
"prediction not counted". - A game announced before the upgrade and finished after it keeps its
🔮 Prediction field. Its result just doesn't get a verdict line.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- LoL win predictions are gone. A game-start post no longer gets a third
-
v3.6.0
Stablereleased this
2026-10-02 18:21:49 -05:00 | 21 commits to main since this releaseChanged
- The bot runs on Node 24, the current LTS, instead of Node 22. The
Docker image, CI's build container,.nvmrcandenginesall moved
together, and@types/nodemoved to 24 with them. Node 22 was still
patched, but only as maintenance LTS until April 2027. Nothing in the
stack file changes, because the image carries its own Node. Running from
source now needs Node 24. On 22,npm ciwarns about the engine but
still installs. The whole suite, the build, lint and the type check pass
on Node 24.21.0 with npm 11.19.0. The only native packages are two dev
tools, which ship prebuilt for 24. - CI reinstalls dependencies when the Node version changes. The
node_modulescache was keyed on the lockfile alone, so the first run on
a new runtime would have restored modules installed by the old one.
.nvmrcis now part of the key.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The bot runs on Node 24, the current LTS, instead of Node 22. The
-
v3.5.2
Stablereleased this
2026-10-02 12:34:42 -05:00 | 23 commits to main since this releaseFixed
- A fantasy question reconnects to the fantasy server instead of waiting
on a timer. If the fantasy server wasn't answering when the bot started,
the bot retried it on a timer that grew to two hours apart. So once the
server was back,/aufhocker espnff mcpcould keep saying it wasn't
connected for up to two more hours, while telling people to try again in a
few minutes. Now a question asked while the server is missing tries it
again on the spot, and gets answered if it's back.espnff helpstarts an
attempt too, so running it again shows the result. Two people asking at
the same moment share one attempt rather than connecting twice. - The background retry tops out at 15 minutes instead of two hours. It
still starts at a minute and doubles, so a server that's down all day
costs about a hundred log lines.helpand the log now catch up on their
own within 15 minutes, even if nobody asks. - The "not connected" replies name both log lines to check:
preflight/mcpfor a failure at boot, andclaude/mcpfor each retry
since. Pointing only at the first meant an outage that started after boot
had nothing in the log where it said to look.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- A fantasy question reconnects to the fantasy server instead of waiting
-
v3.5.1
Stablereleased this
2026-10-02 09:36:22 -05:00 | 24 commits to main since this releaseFixed
- Make Public says why it can't post instead of failing silently. A
slash command works even in a channel the bot can't see, because its reply
goes back through the interaction. Make Public posts as the bot, so a
channel that hides itself from the bot accepted the private answer and
then refused to publish it. The click went unanswered, and Discord showed
only "This interaction failed". Now the bot replies privately and names
the two permissions it needs in that channel (View Channel and Send
Messages). The answer stays pending, so once an admin grants them, the
same button works. Any other failed post gets a "try again" reply. This
covers chat and fantasy answers and the D2 Terror Zone and DClone embeds.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Make Public says why it can't post instead of failing silently. A