Releases: oxedtv/OxedHub
Releases · oxedtv/OxedHub
Release list
v2.3.39
Oxed Hub
v2.3.39 (2026-08-28)
Full Changelog Previous Releases
- Release 2.3.39
- Make the Debug tab actually receive errors
The journal was recording nothing while BugSack showed the very same
faults. BugGrabber ends its setup with an empty seterrorhandler, so every
addon loading after it installs a handler into a function that does
nothing. It publishes what it catches, so the journal subscribes to that
instead; where it works, our own handler was never installed, so nothing
is recorded twice.
The list now marks what appeared since the last visit, carries a Copy on
each row for pasting one problem rather than the whole journal, and the
top button says Copy All because that is what it does. One formatter
serves both, so a row and the report read identically.
Self Aura asks the client for a native aura sound once instead of twice
before accepting the refusal. - Make toy tiles clickable, and add a My Mixes section
Clicking a toy in the ToyBoxes grid did nothing, and never could: the
tiles were plain buttons, while using a toy is protected and needs a real
click on a secure one. The floating dock had secure tiles but registered
only for button-up, so on a client set to act on key-down its secure
handler was never reached either. Both now register both edges, the way
the quick slots that always worked do.
Clicking is tied to the lock: locked uses the tile, unlocked moves it.
The attributes are set once when the panel is drawn and when the lock is
toggled, rather than flipped on every click -- doing it per click left a
tile disarmed whenever anything returned early, with nothing to restore
it.
Dragging a box onto another never moved a shipped category, because the
saved order was only ever seeded when empty and the categories were
missing from it, so their position came back nil and the move was
abandoned silently. The order is rebuilt from what is on screen instead.
The drop target is also found by asking which row the cursor is over: the
receiving row cannot detect it, since the mouse-up goes to the row the
drag started on.
Boxes can be hidden from a button of their own rather than only from
inside the delete confirmation, and the header row lays itself out over
the buttons actually showing.
The sidebar carries a My Mixes section built from the saved mixes. It
holds names rather than item IDs, so the toy APIs that would raise on a
string are kept away from it and the box cannot be written into.
Adds /oxedhub toydebug, which reports what a tile actually is at runtime.
Every guess about the click problem was about how the attributes get set;
none of them checked whether the button was still reachable when clicked. - Split mix execution into secure and plain halves
A mix is two different things at once: toys and spells, which only a real
click on a secure button may use, and sound, animation, emote and chat,
which are plain Lua. PlayMixActions is that second half on its own, so a
secure button can drive the first through macro text and add the rest
without trying to use the toys a second time from a path where it can only
fail.
The split icon a mix shows in My Mixes is shared the same way, instead of
each view drawing its own.
Saving or deleting a mix now also refreshes the toy box views, which did
not exist when the notification list was written. - Ship the full toy category catalogue
The eight grouped categories were a summary of a larger set. This is the
catalogue itself: thirty-five categories in their own order, each with the
blurb that explains what belongs in it, shown on hover.
Icons are hardcoded paths rather than looked up. Two earlier attempts --
the first owned toy in the category, then an item icon resolved at runtime
-- produced duplicates and blanks, because the client only answers for
items it has cached and most of these toys have never been seen.
v2.3.38
Oxed Hub
v2.3.38 (2026-08-27)
Full Changelog Previous Releases
- Release 2.3.38
- Register the new modules and ignore local reference addons
Also raises the Interface version for 12.1. - Release an animation frame even if its ticker never finishes
The frame was released only on the ticker's final tick, and the ticker was
created with exactly enough iterations to reach it. Anything that stopped
that one tick left the last sprite frame on screen for the rest of the
session: an error raised inside the callback, or the iteration budget
running out before the release branch was reached.
Rather than guess which, playback now records the time it should be done by
and a sweeper clears anything still active past it. A healthy animation is
long gone before the sweeper looks at it.
ActionHub runs its own ticker instead of the shared player and had the same
fault, so it records a deadline too. It also names the clicked slot for the
error journal. - Stop PvP kill triggers firing on raid and dungeon trash
A hidden target GUID was treated as proof of instanced PvP, but 12.0 hides
GUIDs across all instanced content, so every NPC kill passed the "victim is
a player" check. Hidden GUIDs now only count inside a battleground or
arena.
The honorable-kill fallback had a second fault: with no baseline recorded,
the first reading after achievement data loaded looked like an increase and
fired on an unrelated kill. That is the "random in raid" part.
PvP triggers also default to their own zones now instead of every zone.
Kills default to battlegrounds; the aura alerts get arenas too, since that
is where they matter. A zone ticked by hand opts the trigger out of these
defaults for good, and a zone table that was never the trigger's own no
longer swallows the tick.
Carries the slash command for the What's New window. - Add a What's New window
Shown once after an update, then not again for that version. Reopen at any
time with /oxedhub whatsnew, which lists the full history rather than only
what is new.
Seen-version and the opt-out are tracked separately because they answer
different questions, and both live in globalSettings: an update is an
account level event, so the notes should not re-announce themselves on
every character or after a profile switch.
Marking as seen happens on hide rather than on the Close button, so
dismissing with Escape or the title bar counts too. - Rework toy boxes: ID categories, hiding, and names that fit
The suggested boxes matched keywords against toy names, so they only
worked on an English client and missed any toy whose name did not happen
to contain the word. Eight shipped categories now match on toy ID and are
seeded per category, so one added in a later version still reaches an
install that already has the earlier set.
Boxes can be hidden instead of deleted. Deleting a filled box was easy to
do by accident and impossible to undo; the Hidden button only appears once
something is hidden, which is also the hint that it can be brought back.
The sidebar leaves about ninety pixels for a name, which truncated the
shipped names to "Stuff & Ca...". They are shorter now and the font steps
down for anything that still does not fit. Two category icons pointed at
paths that do not exist in the client and rendered as a blank square. - Call the aura sound API directly instead of through pcall
Registering an aura sound was blocked on every attempt, so Self Aura and
all five PvP alerts never fired. pcall puts a C boundary between the addon
and the protected function, and the blocked-action traceback pointed
straight at it.
The existence checks around the call are what keep this safe on clients
without the API; the pcall was never doing that job.
SelfAura also gives up after the first refusal instead of repeating the
call for every configured spell ID, which is what produced 86 blocked
actions per session, and names the trigger for the error journal. - Add an error journal with a Debug tab
OxedHub's own failures were only visible through BugGrabber, which reports
the file and line but not which of the user's triggers was running. A
blocked call in SelfAura read as "SelfAura.lua:353" and nothing more.
The journal records that context, collapses repeats into a counter, and
filters out other addons' errors. It chains the previous error handler
rather than replacing it, so BugGrabber and BugSack keep working unchanged.
Also carries the toy box strings used by the next commits.
v2.3.34
Oxed Hub
v2.3.34 (2026-08-26)
Full Changelog Previous Releases
- Release 2.3.34
- Restore the backslash in the TOC path check
Rewriting the workflow collapsed the escaped backslash in the sed
expression, so TOC paths were never converted to forward slashes and every
listed file looked missing. - Fix the failing Lua syntax check
Two sources start with a UTF-8 BOM. WoW loads them fine, but luac5.1 stops
on the first byte, so every push has been failing on an encoding detail
rather than on real syntax.
Strip the BOM from both files, and strip it from a copy in CI as well:
GeneratedSoundCatalog.lua is generated, so the BOM would come back on the
next regeneration and break the check again. - README: use project IDs for the CurseForge and Wago links
The slugs were guessed and would 404 if they do not match the real ones.
Project IDs are known to be correct and resolve to the same pages. - Sync local development up to 2.3.33
Brings the repository in line with the working copy and adds release
automation.
New modules: Anti-AFK BG guard, Prey hunt tracker, profile sharing over
the addon channel, ToyBoxes, Shattersight, and the PvP trigger set.
Release tooling: .pkgmeta for the BigWigs packager, GitHub workflows for
checks and tag-driven releases to CurseForge/Wago/WoWInterface, and
scripts/set-version.sh so the version cannot drift between the five files
that carry it.
Removes EventFrame.xml, which was not referenced by the TOC and never
loaded. - Merge pull request #1 from codeandtesting/main
Contributions to OxedHub - Contributions to OxedHub
v2.0.5
Oxed Hub
v2.0.5 (2026-07-03)
Full Changelog Previous Releases
- Update release.yml
- Create release.yml
- Remove CurseForge project ID to target WoWInterface only
- Configure release IDs and packaging metadata
- Delete .gitignore
- Add README.md with features, usage instructions, and tips
- Delete .claude directory
- Initial commit of OxedHub WoW Addon