promotional bannermobile promotional banner

RGX-Framework

Modern, self-contained WoW addon framework
Back to Files

v2.10.0

File nameRGX-Framework-v2.10.0.zip
Uploader
DonnieDiceDonnieDice
Uploaded
Oct 22, 2026
Downloads
210
Size
4.5 MB
Flavors
MoP ClassicClassic TBCClassicTitan Reforged ClassicForeverRetail
File ID
9291254
Type
R
Release
Supported game versions
  • 12.1.7
  • 5.5.4
  • 4.4.2
  • 3.80.2
  • 2.5.6
  • 1.60.1
  • 1.15.9

What's new

RGX-Framework v2.10.0

Package: RGX-Framework-v2.10.0.zip, 105 runtime files, plus release.json.

Behavior changes

  • CreateProfile on an existing name now returns false instead of wiping the profile, and RenameProfile refuses same-name and occupied targets. Previously a duplicate create silently reset the user's settings; these paths now fail loudly and safely. DeleteProfile on the active profile falls back to the protected Default profile deterministically.
  • Declaring options without db (and without a table carrying its own db) now errors at registration instead of silently building no panel at ADDON_LOADED. The declarative contract documents options as db-bound; consumers now see the mistake immediately.
  • Strict control-table validation on page/card layouts: unknown or empty control tables ({}, { toogle = "x" }), multi-kind controls, buttons without actions, and holes in control lists are rejected at declaration instead of silently rendering nothing.
  • The C_AddOns global polyfill is removed. The framework no longer writes _G.C_AddOns on clients that lack it; every framework call site carries its own legacy fallback, so behavior is unchanged on every supported flavor, but co-loaded addons that test C_AddOns to detect the client no longer misdetect.
  • RGX:QueueForCombat now returns false, "queued" when deferring so callers can distinguish a combat-deferred call from an immediate execution result; queued operations remain fire-and-forget at the flush.
  • RGXReputation seeds first sightings silently: a faction seen for the first time (login, discovery, a Classic header expanding) no longer fires a spurious OnRankUp from zero or a phantom OnGain; gains fire only for real deltas, and duplicate faction names are tracked separately by faction ID.

Fixed

  • A non-callback error inside event dispatch can no longer wedge the session: RGX:FireEvent restores _dispatchDepth on every exit path and reports the fault through the failure-isolated error channel instead of latching registrations pending forever. String-method owners that break after registration are isolated per handler.
  • Profile serialization round-trips backslash paths: Interface\AddOns\BLU\sounds\levelup.ogg and every escape character survive export/import through a single-pass decoder (the old chained-gsub decode corrupted them). Table keys are escaped; the wire format is unchanged.
  • Migration progress is durable: a failing migration step no longer re-runs earlier steps on every login.
  • Unit-event dispatch snapshots its handler bucket like the plain-event path, so handlers registered mid-dispatch no longer run in the same dispatch.
  • OnPlayerHealed passes the real overheal (payload index 16) instead of the absorbed amount, and the combat-log payload is captured exactly once per event instead of up to nine API calls.
  • Light media rescans no longer wipe generic-scan bridge results; first currency gains of a session fire via the event's own quantityChange; quest progress suppressed by the 0.25s cooldown is delivered on the next update instead of being lost.
  • The default slash handler prints actionable guidance instead of a literal v? placeholder.
  • Slider snapping is relative to min, so sliders can reach their own minimum (min=1 step=2 now yields 1,3,5,7,9).
  • The internal error log is bounded at 50 entries and drops the oldest reports.
  • Dead code removed: the never-called reportEventRegistrationError and the never-true allFrameEventsRegistered flag; the superseded colorpicker SV-box/hue-bar builders (~168 lines) whose live counterparts already guarded dragging.
  • Dispatch-side test coverage grew the events harness 74→120 checks and the login harness 32→123, plus new combat (13 checks) and reputation/loot/quest gameplay gates. A dev-only mutation-smoke tool measures test strength: events 69%, runtime 68% killed on full enumerations.

Tooling

  • The shared GitLab mirror:github job now falls back to plain forward-only pushes for consumer repos (the sanitizer path stays framework-only), fixing consumer tag mirroring.
  • The framework-only framework:gates GitLab job runs the full validation set on every push and MR.
  • Release secrets are step-scoped; validation installs run --ignore-scripts.
  • Font binary gate: every shipped .ttf/.otf must carry real sfnt/OTTO magic; font license terms now ship with the package.

Contract provenance

  • RGX.CONTRACT_FORMAT_VERSION (independent of release numbering), RGX:SupportsContract, and RGX:RequireContract implement the compatibility handshake; generated TOCs carry ## X-RGX-Contract-Format and engine-computed ## X-RGX-Framework-MinVersion.
  • The approved module API catalog now records safety categories and preview modes for all shipped modules, and the coverage boundaries are documented (automatic external discovery is sound-only).

Compatibility

  • Retail 120105, WoW Forever 16001, Classic Era 11509, TBC 20506, Wrath/Titan 38002, Cataclysm 40402, Mists 50504 — unchanged from v2.9.0.

This mod has no additional files