Releases: brendanlefebvre/spud-coach
Release list
v0.14.1
Hotfix: cap the MCP SDK dependency at mcp<2.
mcp 2.0.0 (2026-07-28) removed mcp.server.fastmcp and renamed the server class to MCPServer. Because the dependency was unbounded (mcp>=1.2.0), uvx spudcoach re-resolved to 2.0.0 and crashed on import with ModuleNotFoundError: No module named 'mcp.server.fastmcp'.
This release pins mcp>=1.2.0,<2 (resolves to 1.29.0, which still ships fastmcp), restoring uvx spudcoach launches. The port to the mcp 2.0 MCPServer API is tracked in the roadmap.
v0.14.0 — character tool-surface parity
Characters get first-class treatment on the tool surface. A client asking "which character suits an engineering build?" previously had to guess names one at a time — an observed 7 round-trips and 42 seconds. It's now one call.
Added
list_characters— survey characters byscaling_stat,wanted_tag,banned_item_group,special_effect,class_bonus_setorcan_start_with. Returns full records, not summaries, so no follow-upget_characteris needed;detail="summary"opts out.- Batch lookups —
get_weapon,get_itemandget_characternow acceptnameas a string or a list of strings, returning{"results": [...]}in order. One bad name doesn't fail the batch. starting_weapon_poolon every character record (schema v7 → v8).- Six character filter vocabularies in
get_filter_options.
Notes for consumers
scaling_statis a derived union — characters have no scaling-stat field. Matched records carry ascaling_matchobject naming which signal fired (positive gain modifier, positive flat bonus, or wanted_tag) so you can weigh matches yourself: Engineer{gain_pct: 25, flat: 10, wanted: true}is not the same as Technomage{wanted: true}. Characters penalised in a stat are excluded from matches.starting_weapon_poolis the run-start selection pool, not a fixed starting weapon. Most characters offer a dozen or more; Beast Master and Bull offer none. Only 46 of 62 weapons can ever start a run.- Backward compatible — passing a plain string to the three
get_*tools behaves exactly as in 0.13.0. Tool count 21 → 22. - Rebuild your dataset with
build_dataset.pyto pick up schema v8; the character tools needstarting_weapon_poolforcan_start_with.
Full changelog: v0.13.0...v0.14.0
v0.13.0 — Stat-aware DPS engine
Stat-aware DPS engine
The big change: weapon DPS is now computed from your actual stats, not a
generic reference dummy.
- Stat-aware
weapon_dps/compare_weapons— game-exact per-hit damage,
crit expectation, and cycle time derived from your damage %, attack speed,
crit chance, ranged/melee/elemental bonuses, and player level. Every result
carries an explicitassumptionsblock. - New
stat_gradienttool — tells you which single stat point buys the most
DPS right now. evaluate_runupgrades — addstop_stat_gradientand stat-aware ranking.- Numeric merge-path crossover — merge decisions are solved on the
stat-aware engine (the old RD-line model is gone).
Data / fixes
- Schema v6 dataset: raw stat-aware weapon fields + structured proc
descriptors. - Player level now flows from saves into the stats block and merge-path profiles.
- Weapon-stats file selection generalized to exact-match (fixes Pruner; excludes
companion_proj_stats.tres). - Documented the negative-attack-speed cooldown penalty; tightened weapon
validation; guardedstat_gradientagainst empty loadouts / non-positive step.
Full history: v0.12.0...v0.13.0
v0.12.0 — Weapon cadence reporting
Weapon cadence reporting
v0.12.0 teaches the coach when a weapon fires, not just how hard it hits. Every weapon now carries a verified cadence profile derived from the game's own randomized-cooldown (cooldown_jitter) model.
New on weapon records / tools
weapon_dps,compare_weapons, andevaluate_runnow surface a cadence profile: attacks per second, damage per attack, a human-readable cadence label, and the verified inter-shot gap range (gap_range_s).- Burst-reload weapons (e.g. Revolver) are flagged so their reload cycle isn't mistaken for steady fire.
evaluate_runcomputes cadence at your actual weapon count.
Verified, not guessed — the model reflects weapon.gd's per-shot randomized cooldown, whose jitter grows with weapon count and deliberately de-syncs volleys (so there is intentionally no cross-weapon "sync risk" metric). See docs/cadence-mechanics.md. Nominal DPS still uses the raw basis cooldown and does not model the cooldown floor-skew for very fast multi-weapon builds — logged on the roadmap.
Also — includes the #14 fix: evaluate_run / weapon_dps previously used raw stats, understating DPS for gain-modifier characters.
Install / update: uvx spudcoach
v0.11.0 — Bestiary awareness
Bestiary awareness
v0.11.0 teaches the coach what the game throws at you — enemy stats and per-wave spawn composition, distilled deterministically from the game data (dataset schema v4).
New MCP tools
get_enemy(name, wave=None)— an enemy's base stats, per-wave scaling, and attack profile; pass a wave to get effective stats at that wave.list_enemies(...)— filter the roster by attack kind, ability, or where it appears.wave_composition(wave, danger=None)— the exact base-game (Crash Zone) enemy groups for waves 1–20, danger-gated.
Post-mortem — evaluate_run now includes a wave_context section: what was spawning at your death wave, what threat ramped just before it, and effective enemy stats at that wave.
Honesty envelope — enemy stats and base composition are exact; realized counts (number-of-enemies %, co-op) and elite/horde presence are labelled as run-variance, never asserted as guaranteed. read_me primes callers on all of this.
Scope — base-game Zone 1. DLC zones and boss multi-phase kits are follow-ups (bosses carry a bespoke_kit_not_modeled flag).
Install / update: uvx spudcoach
v0.10.0
What's Changed
- docs: refresh roadmap against actual current state by @BrendanL79 in #7
- feat: model the burning DoT proc + stat_range projectile-speed nuance by @BrendanL79 in #8
- feat: triage the full proc worklist — model companion-projectile procs, classify every non-DPS effect by @BrendanL79 in #9
- read_me orientation tool + 1-indexed item tiers (schema v3) by @BrendanL79 in #10
Full Changelog: v0.9.3...v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
What's Changed
- fix(build): resolve weapon effect + class-set ext_resources (were dropped) by @BrendanL79 in #1
- docs: add project roadmap by @BrendanL79 in #2
- Roadmap Phase A: proc-aware DPS, set-bonus reasoning, stat summaries, localization plumbing, ship prep by @BrendanL79 in #3
- Roadmap Phase B: verified proc models, complete stat mechanics, localized dataset (schema v2) by @BrendanL79 in #4
- Run-save post-mortem tool + pet-item discovery fix by @BrendanL79 in #6
New Contributors
- @BrendanL79 made their first contribution in #1
Full Changelog: https://github.com/BrendanL79/spud-coach/commits/v0.9.0