Commit graph

2 commits

Author SHA1 Message Date
Kelsi
fa30db7ae1 feat(editor): WMOD JSON round-trip closure
Adds --export-wmod-json / --import-wmod-json. Variable-length
dependency arrays serialize as JSON int arrays, enabling
hand-edits of dependency graphs. All 3 presets (std-addons /
ui-replacement chain Bartender4->ElvUI->SuperOrders / utility)
byte-identical binary roundtrip OK.

Cycle detection live-tested: hand-mutated ui.wmod.json to add
Bartender4 -> SuperOrders dep, re-imported, validator emits
"dependency cycle detected: 10 -> 12 -> 11 -> 10 — addon-loader
would deadlock" with the full back-edge path extracted.

CLI flag count 1326 -> 1328.
2026-05-10 03:33:29 -07:00
Kelsi
9df1fa39cd feat(pipeline): WMOD addon manifest catalog (125th open format)
Novel replacement for vanilla per-addon TOC (.toc) text files
scattered across Interface/AddOns/. Each WMOD entry binds one
addon to display metadata (name / description / version / author),
client-build gate (minClientBuild), persistence + lazy-load
flags (requiresSavedVariables / loadOnDemand), and required +
optional dependency lists.

Three presets:
  --gen-mod        4 vanilla-era addons (Recount standalone +
                   Atlas standalone + Auctioneer optional-dep
                   on Atlas + Questie standalone)
  --gen-mod-ui     3 UI-replacement chain (Bartender4 root ->
                   ElvUI required-dep on Bartender4 -> SuperOrders
                   required-dep on ElvUI). Exercises the chained
                   required-dep resolution path.
  --gen-mod-util   3 standalone utility addons (XPerl, Decursive,
                   GearVendor loadOnDemand) — empty-deps baseline.

Validator catches: id+name+version required, duplicate addonIds,
duplicate addon names (load-order ambiguity), self-dependency
(load deadlock), missing required-dep addonId, full DFS cycle
detection on required deps (deadlock at load — extracts the
back-edge path so the user can see the loop). Warns on optional
self-dep (no effect, prune) and on minClientBuild < 4500
(below vanilla floor — likely typo).

Format count 124 -> 125. CLI flag count 1319 -> 1326.
2026-05-10 03:31:21 -07:00