Releases: kyletravis/grim-arithmetic
Release list
Grim Arithmetic v0.8.1
Compatibility bump only; no changes to the underlying mortality math.
Compatibility
- Verified against Foundry VTT v14.364.
Grim Arithmetic v0.8.0
Renamed grim-arithmetic zip to module.zip in the release so that it can be counted accurately atop the README.md file.
Grim Arithmetic v0.7.3-rc1
First release using updated CI process. No other material changes.
Grim Arithmetic v0.7.2-rc3
Release candidate focused on decluttering and unifying the three windows; no changes to the underlying mortality math (KHT-129).
Usability
- Encounter Forecast: shows only the selected tactics profile's description instead of all five; keeps the vital "not modeled" caveat inline and collapses the rest; moves the high-risk warning below the statistics; adds a "Forecast Completed" status chip; the run button toggles to Cancel while running; light dividers separate the result tables.
- Encounter Danger Board: the version now sits as small text under the title; a single-line risk-band legend (Grim → Low) with thresholds sits above the lists; removed the redundant header instruction line; each row shows the risk label before the percentage; the window starts wider; tighter row spacing.
Look & feel
- Unified typography across all three windows on Foundry's native Signika body font with Modesto Condensed titles, replacing the previous mix of fonts.
- Optimized spacing, sizing, and semantic box colors throughout.
Grim Arithmetic v0.7.2-rc2
Release candidate building on v0.7.2-rc1; no changes to the underlying mortality math.
Usability
- The Encounter Forecast's Biggest Threats table now lists enemies from most to least dangerous, sorted by their share of total damage descending; enemies showing the same percentage are ordered alphabetically by name (KHT-126).
- The Encounter Forecast's Most Likely to Drop table now lists party members from most to least at risk, sorted by their chance of being downed descending; party members showing the same percentage are ordered alphabetically by name (KHT-127).
Grim Arithmetic v0.7.2-rc1
Release candidate. Three usability fixes on top of v0.7.1; no changes to the underlying mortality math.
Usability
- The Grim Arithmetic settings section is now GM-only — regular players no longer see any module options (KHT-118). The GM-facing options carry clearer descriptions of what each one does.
- Hover help across all three windows now waits a beat (750ms) before appearing, so tooltips no longer flicker continuously while scanning down a list of values (KHT-120).
- The risk-rating tooltip now spells out the full ladder — Low, Guarded, Dangerous, Severe, Grim, with the chance-of-being-downed band for each — instead of just "Low → Grim" (KHT-121).
Grim Arithmetic v0.7.1
Builds on v0.7.0's ApplicationV2 migration with internationalization groundwork, on-hover help across every window, clearer tactics options, and a real CI/release pipeline. No changes to the underlying mortality math.
Internationalization (i18n)
- The GM-facing UI is now translation-ready. The three settings, all window titles, and every static label, heading, button, and tooltip across the Encounter Danger Board, Pair Detail, and Encounter Forecast load from a bundled language file (
lang/en.json). English ships in the box, with no visible change for English users.
Usability
- On-hover descriptions on every labeled metric, control, and table header across all three windows — e.g. "Any PC down", "TPK risk", "Recovery checks per run", "MAP", "Damage swing", "Dying if downed" (KHT-108).
- The Encounter Forecast lists an inline definition for each tactics profile (Random Legal, Spread Damage, Focus Fire, Predator, Boss Cinematic) above the selector, and tactics labels read more clearly (KHT-111).
Compatibility & packaging
- Verified against Foundry VTT v14.363.
- Removed the unknown
system/templatesmanifest keys that triggered a Foundry package warning. - Added GitHub Actions CI (lint + tests + build on every push/PR) and a tag-driven release workflow; published the
docs/reference set on GitHub.
v0.7.0 — ApplicationV2 migration + window UX fixes
Migrates Encounter Danger Board, Pair Detail, and Encounter Forecast off the deprecated V1 Application framework to foundry.applications.api.HandlebarsApplicationMixin(ApplicationV2), clearing the v13+ console deprecation warning ahead of V1 removal in Foundry v16.
Highlights
- ApplicationV2 migration for all three windows (KHT-106)
- Window UX fixes against the V2 dark theme: bounded heights with
.window-contentoverflow-y: autoso long content scrolls; label colors inherit the V2 theme (replacing#3f2418that read muddy on dark windows); simplified in-contenth2titles - Encounter Danger Board: button reordering and title-case
Compatibility
- Foundry minimum: v13
- Verified: v14.361
- System: PF2e
Install (prerelease)
While this remains a prerelease, the releases/latest/... manifest URL still resolves to v0.6.1. To install v0.7.0, point Foundry at the direct manifest:
https://github.com/kyletravis/grim-arithmetic/releases/download/v0.7.0/module.json
v0.6.1 — Forecast safety-net UI + PF2e prepared-Heal fix
Bugfix prerelease surfacing the Phase I-A safety-net stats that v0.6.0 was already computing but never displaying, plus a more robust PF2e Heal-spell extractor for real-world prepared-caster actors.
Forecast panel
- Added a Heals per run / Recovery checks per run / Hero Point saves row under the headline metrics so GMs can see whether PC healing, recovery checks, and Hero Point death prevention actually fired during the simulation (KHT-105).
PF2e adapter — heal-capability extraction
- Prepared casters (clerics, druids, divine font, etc.):
extractHealCapabilitynow walksspellcastingEntry.system.slots.slotN.prepared(the canonical PF2e v6+ shape) and counts un-expended preparations whoseidreferences a Heal spell item, instead of only reading anitem.system.slotsRemainingfield that real prepared spells do not populate. Root-cause fix for "cleric Heal slots never fire." - Spontaneous casters: when an entry's
prepared.value === 'spontaneous'and Heal is in its spell list, the entry's per-rankvalue(remaining slots) is counted as Heal-castable. - Item access now prefers
actor.itemTypes.<type>(PF2e's pre-filtered arrays) over walkingactor.items, with the latter as a fallback.
Debug diagnostics
- Enable Debug logging in module settings to see one structured
Grim Arithmetic | PC healing capabilitylog per PC, plus a verboseGrim Arithmetic | extraction probedump (item-type counts, every Heal spell found, raw slot/prepared structure for every spellcasting entry). Future PF2e shape mismatches are now diagnosable from a console paste.
Known issues (deferred to v0.7.0)
- Foundry v13+ logs a console deprecation warning for the V1 Application framework. The warning is non-fatal until Foundry v16; the three panels will be migrated to ApplicationV2 in v0.7.0 (KHT-106).
- A "message channel closed before a response was received" console error reported in some sessions traces to a browser extension's chrome.runtime.onMessage listener, not Grim Arithmetic. The module uses zero Chrome extension APIs (KHT-107 — closed as external).
v0.6.0 - Monte Carlo Forecast + PC Action Modeling
Summary
v0.6.0 introduces a Monte Carlo encounter simulation engine, a Forecast panel, and Phase I-A PC survival mechanics.
Monte Carlo simulation engine
- Seeded PRNG (mulberry32 + xmur3 hash) for deterministic runs
- Five tactics profiles: random-legal, spread-damage, focus-fire, predator, boss-cinematic
- Round orchestrator aggregates any-PC-down, TPK, mean/median rounds-to-first-down, per-PC down/death/HP
- Web Worker integration for responsive UI during 1k–10k iteration runs
- Engine guardrails: MAX_ITERATIONS=10000, round cap (5), cooperative abort
- Default round cap lowered from 10 to 5
Forecast panel
- New ~800w Forecast window from Encounter Danger Board header
- Headline metrics: Any PC down, TPK risk, Expected first down
- Per-PC breakdown with down %, death %, mean first-down round
- 95% confidence intervals on all proportion and continuous metrics
- Pessimism banner at ≥80% any-PC-down
- Simplified controls: fixed 5,000 iterations, default tactics = Spread damage
Phase I-A: PC survival mechanics
- PCs now take 2 Strikes per turn against most-dangerous standing enemy
- Healing: Battle Medicine, Heal spell (1/2/3-action), Heal cantrip with heightened scaling
- Recovery checks: dying PCs roll DC 10+dying, degree-of-success steps dying
- Hero Point death prevention (one survival per iteration per PC)
- PC tactics substitutes Strikes for heals when allies are dying or below 40% HP
- SimulationResult.safetyNet aggregates surface in UI
Security fixes
- H-1: Dice formula budget limits (max 500 dice, 100 per term, 50000 outcomes)
- M-1: Debug capture gated behind debugLogging + GM check
- M-2: Dev dependencies pinned to exact lockfile versions
- Low: No source maps in production builds
Not modeled (deferred)
- Shield Block and Champion reactions
- Spells beyond Heal / save-based threats
- Persistent damage, attacks of opportunity, movement/reach/LoS
- Permanent-death probability
Install
Module manifest: included in the zip as module.json
Direct install URL: https://github.com/kyletravis/grim-arithmetic/releases/download/v0.6.0/grim-arithmetic-v0.6.0.zip
Changelog
See CHANGELOG.md for full details.