v1.16.0
Immutable
release. Only release title and notes can be modified.
Features
- i18n: add stream, spriteType, fading keys to matrix; add traditions to magic
- template: rework matrix tab for technomancy stream/fading/sprite config
- sheet: update matrix context for technomancy — streams, fading pool, sprite bindings
- actor: add system.technomancy field; migrate technomancer bool and sprite bindings
- models/magic: expand Traditions to 25; derive DrainAttributes from SecondaryAttributes
- models/matrix: add technomancy constants — streams, fading attributes, sprite types
- api: expose ThreadingFlow on globalThis.sr4
- technomancer: add hits selection dialog after threading roll
- technomancer: wire threading to character sheet, add threaded badge and roll button
- technomancer: implement Thread Complex Form flow
- dialog: auto-roll resist dialogs when flowOpposedRollTimeout elapses
- flows: use flowOpposedRollTimeout setting with fallback buffer
- settings: add configurable opposed roll timeout setting
Bug Fixes
- migration: correct traditionMap keys from lowercase to stored uppercase values
- tradition: pass TraditionLabels to selectOptions; migrate legacy tradition values
- docs: remove JSDoc prose from rollComplexFormDialog and offerEdgeRetry
- threading: use resonance fading pool with stream-specific fading attribute
- summoning: use resonance fading pool for sprite compiling drain
- utils: import clamp/resistanceValueFromHits into summoning-helpers local scope
- dialog: decouple autoRoll timer setup from dice guard
Improvements
- drain: extract generic calculateDrainPool; add calculateResonanceFadingPool
- models/shared: extract SecondaryAttributes constant
- effects: rename sustain template label from 'Sustained Spell' to 'Sustaining'
- flows: use shared drain pool and edge retry in spellcasting/summoning
- utils: extract calculateWillpowerResistancePool and offerEdgeRetry
- utils: extract clamp/resistanceValueFromHits to math.js and mapDocumentsByName to summoning.js
- flows: finish getGame() consistency pass, export apply-damage-flow
- flows: dedupe summoning flow socket-wait, edge and drain logic
- flows: dedupe socket-wait and target-warn logic in spell flows
- flows: use createDecisionRegistry for damage/effect decisions
- utils: add shared opposed-socket-wait, decision-registry and target-warn helpers
- flows: extract opposed roll fallback timeout into testable helper
- dialog: centralize skill roll title building
- dialog: extract rollSkillDialog helper to dedupe skill roll setup
Full Changelog: v1.15.1...v1.16.0