Persists every currently-loaded mod’s in-memory configuration
(overrides only, never a mod’s mod.json defaults) into the active
configuration in mods.json. Merges with whatever’s already
there rather than replacing it wholesale, so a mod not currently in
mods (temporarily removed, or failed to load this session) keeps its
saved overrides rather than losing them the next time anything else
gets persisted. Never touches any mod’s own mod.json, so an edit
here can’t clobber a mod author’s rules/parameters/defaults, and
replacing a mod’s whole directory (e.g. an update) can’t take a
person’s overrides for it along with it.
Persists the current display order and enabled set of mods to
mods.json: active.order is set directly from mods’ current
list order, this is what makes reordering in the UI stick, and, since
display order is DLL merge priority for the active configuration,
what makes a drag-reorder change priority too. active.enabled is set
to the checked subset (membership only; its effective order always
comes from active.order via ModsPreset::priority_order, never
stored separately). A single call covers both a checkbox toggle and a
drag-reorder, since mods already reflects whichever just happened.
Called after every checkbox toggle or reorder.
The Play button becomes “Online” when an enabled mod with
tournament ui actions has a selection in its active configuration
(there is no extra selection file).
Returns that selection (for the footer tooltip), or None for a normal
Play!.