0.3.0
What's new
AutoSetup
0.3.0 (2026-10-17)
Full Changelog Previous Releases
- Add the in-game test checklist
docs/TESTING.md holds the 14-item release checklist from #8 for Retail and WoW Forever, with the setup files and commands each item needs. docs/ stays out of the release (.pkgmeta). - Build the profile list on show and gate controller support by capability
Closes #15: the options panel builds its list when shown instead of from a
load-time timer, controller support checks for C_InputInterfaceStyle instead
of the Forever flag, the unused Retail flag is gone, and the reload popup
hides its inherited OKAY button at load without the dead timer. - Run one resolution check per size/scale event burst
- Register target events only while a target layout applies
Target, soft-enemy and combat-start events are registered only while the
current profile has a target layout that AutoSetup would apply, recomputed
on every full evaluation and written to the debug log. The profile's
layout names are cleaned once per evaluation, so the per-event path no
longer looks up the profile or cleans names. EDIT_MODE_LAYOUTS_UPDATED is
unregistered once the initial evaluation has run.
Refs #13 - Version the saved data and run each migration once
AutoSetupDB is now { version = 2, profiles = { ["WIDTHxHEIGHT"] = profile } }.
The unversioned shape counts as version 1. LoadDB runs the migrations at
ADDON_LOADED, one version at a time, on a copy, and stores the result only
when every step succeeds. 1 -> 2 moves the profiles under their own key,
drops autoReload and suppressChat, and renames ForeverQoL: features to QoL:,
keeping the QoL: value when both exist. This replaces the two migrations
that ran on every load, and the rename map moves into the migration step.
A missing table starts at the current version. Data from a newer version is
used as it is, without being migrated. A failed migration goes to the error
handler and the saved data stays as it was. When the saved data can't be
used, profiles live for this session only and a chat line says so.
Closes #12 - Read and write profiles only through the database functions
AutoSetup.DeleteProfile and AutoSetup.IterateProfiles join
GetProfileForResolution and EnsureProfile. The options panel's profile
list and delete button use them instead of indexing AutoSetupDB, and
the load-time migration gets the table from GetDB(), so GetDB() is the
only code that names the saved variable. The AutoSetup.GetDB export is
gone; nothing outside AutoSetup.lua needs the raw table any more.
Players see no change. This is groundwork for versioned saved data,
which then only has to change these functions and the migration.
Closes #11 - Protect calls into feature providers
A feature provider counts as loaded only when its global is a table
with IsFeatureEnabled and SetFeatureEnabled functions
(AutoSetup.GetFeatureProvider); anything else, such as an outdated addon
or a name clash, is skipped as not loaded without an error.
Every call into a provider goes through AutoSetup.CallFeatureProvider,
an xpcall with CallErrorHandler, so a failure reaches BugSack or the
script errors frame with the provider's own stack. A failed check or set
skips only that entry: applying a profile goes on with the next one, and
a save still prints its message, refreshes the list and applies the
profile.
Closes #10 - Switch layouts silently and remove "Suppress chat"
Layouts are switched with C_EditMode.SetActiveLayout instead of
EditModeManagerFrame:SelectLayout, which calls the same API but also
prints "layout applied" in chat. AutoSetup no longer replaces
ChatFrame1.AddMessage, so no chat line passes through its code (no more
errors or lost lines on secret chat text in Retail instances).
The "Suppress chat" checkbox and the suppressChat profile default are
removed; saved suppressChat fields stay until the saved data is versioned.
Closes #9 - Add agent skill docs and keep docs out of the release package
docs/agents/ tells the engineering skills where issues live (GitHub
Issues via gh) and how to read GLOSSARY.md and docs/adr/ once they exist.
.pkgmeta ignores docs/ and GLOSSARY.md, so they don't end up in the
packaged addon.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

