app: load the five FrameXML rows this client update added
benilla loads its own curated `benilla.toc`, not the chain's `FrameXML.toc`, so a row the realm adds is silently absent: no "not found", no warning, just a missing global. grom updated the client on 2026-10-23 and `/xpboost` did nothing. The chain itself was fine — every archive mounted, no DBC field-count mismatch, and the two sessions' warning sets differ by two lines *fewer* after the update. The command was simply undefined. Diffing the chain's toc against ours found five rows, all added here in the chain's own order: - `OctoXpBoost`: `/xpboost`, the bonus-experience opt-out. Slash commands never reach the server, so it sends the server's `.xpboost` as a SAY, which the server runs as a command and never broadcasts. This is the reported bug. - `OctoTurtleBridge`: Turtle_General's addon-message dispatcher, for the realm's inspect replies and `RESPONSE_PLAYER_CHALLENGES`. - `Turtle_GroupUI` + `OctoGroupUIFix`: the compact group/raid frames and three fixes to them. The fix stays immediately after, as the chain has it; the xml pulls its own .lua and templates. - `OctoTurtleStore`: transmog outfits and LFT presets kept on the realm over AIO, FrameXML having no SavedVariables. Verified with the real data: `b_opens_the_backpack_and_shift_b_opens_every_bag` (the only test that reads a new row's OnLoads) stays green, and the producer gate goes from red to green with it. Through the addon harness against grom's own corpus: `SLASH_OCTOXPBOOST1` is `/xpboost` with a function behind it, the bridge and all nine group frames exist, no session errors — and the group frames are hidden with no OnUpdate armed while solo, so they cost nothing until a group fills them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn
This commit is contained in:
@@ -206,8 +206,19 @@ Interface\FrameXML\LFT\LFT_Data.lua
|
||||
Interface\FrameXML\LFT\LFT.lua
|
||||
Interface\FrameXML\LFT\LFTTemplates.xml
|
||||
Interface\FrameXML\LFT\LFT.xml
|
||||
# OctoWoW's six baked single-file extensions (its `FrameXML.toc` 139-148), all Lua over verbs that
|
||||
# already exist, and baked into the chain rather than shipped as AddOns precisely so a player
|
||||
# `OctoTurtleBridge` is Turtle_General's addon-message dispatcher, baked into FrameXML: it answers
|
||||
# the realm's `TW_CHAT_MSG_WHISPER` inspect replies and `RESPONSE_PLAYER_CHALLENGES`, loading
|
||||
# `Blizzard_InspectUI` and `Blizzard_TalentUI` on demand and seeding `Turtle_ChallengesCache`.
|
||||
Interface\FrameXML\OctoTurtleBridge\OctoTurtleBridge.lua
|
||||
# TurtleWoW's compact group/raid frames (`GroupClusterFrame1..8` + `GroupPetsClusterFrame`); the
|
||||
# one row pulls `Turtle_GroupUI.lua` and `Turtle_GroupUITemplates.xml` through its own
|
||||
# `<Script>`/`<Include>`. `OctoGroupUIFix` must stay immediately after it, as the chain's toc has
|
||||
# it: it patches that module in place (saved position, a frame left stuck to the cursor, and the
|
||||
# `PLAYER_ENTERING_WORLD` setup appending its lists on every loading screen).
|
||||
Interface\FrameXML\Turtle_GroupUI\Turtle_GroupUI.xml
|
||||
Interface\FrameXML\OctoGroupUIFix\OctoGroupUIFix.lua
|
||||
# OctoWoW's seven baked single-file extensions (its `FrameXML.toc` 143-149), all Lua over verbs
|
||||
# that already exist, and baked into the chain rather than shipped as AddOns precisely so a player
|
||||
# cannot switch them off. In the reference's order, which puts the first of them above
|
||||
# OctoLFTBlinkPause.
|
||||
# `OctoWowWarModeConfirm` wraps `SlashCmdList["PVP"]`: on the War Mode challenge (spell named
|
||||
@@ -226,6 +237,11 @@ Interface\FrameXML\OctoChallengeTip\OctoChallengeTip.lua
|
||||
# `OctoWarModeOffer` renders the one-shot War Mode offer the server sends as a `TW_WARMODE`
|
||||
# `S2C_OFFER` addon message on arrival from the hardcore realm, and answers C2S_ACCEPT/C2S_DECLINE.
|
||||
Interface\FrameXML\OctoWarModeOffer\OctoWarModeOffer.lua
|
||||
# `OctoXpBoost` is `/xpboost`, the bonus-experience opt-out. Slash commands never reach the server,
|
||||
# so it sends the server's `.xpboost` as a SAY, which the server runs as a command and never
|
||||
# broadcasts. Nothing in it is ours; without the row the command is simply undefined, which is what
|
||||
# grom's 2026-10-23 report was.
|
||||
Interface\FrameXML\OctoXpBoost\OctoXpBoost.lua
|
||||
# `RestoreBugCommand` rebuilds `/bug` and `/suggest`: Turtle's FrameXML dropped the BugReport frame
|
||||
# altogether, so this builds its own dialog and sends the report as chunked `.bug` SAY commands.
|
||||
Interface\FrameXML\RestoreBugCommand\RestoreBugCommand.lua
|
||||
@@ -307,6 +323,10 @@ Interface\FrameXML\AIO\Dep_Smallfolk\smallfolk.lua
|
||||
Interface\FrameXML\AIO\lualzw-zeros\lualzw.lua
|
||||
Interface\FrameXML\AIO\queue.lua
|
||||
Interface\FrameXML\AIO\AIO.lua
|
||||
# `OctoTurtleStore` keeps `TransmogOutfits` and `LFTPresets` on the realm through AIO's
|
||||
# `OctoUIStore` handler, FrameXML having no SavedVariables of its own. After AIO, which it needs at
|
||||
# load: it returns early without `AIO.Handle`, `AIO.AddHandlers` and `Smallfolk`.
|
||||
Interface\FrameXML\OctoTurtleStore\OctoTurtleStore.lua
|
||||
# The realm's event calendar: `/cal`, `/calendar`, `/octocal` (`OctoCalendar.lua:925-928`).
|
||||
Interface\FrameXML\OctoCalendar\OctoCalendar_Holidays.lua
|
||||
Interface\FrameXML\OctoCalendar\OctoCalendar.lua
|
||||
|
||||
Reference in New Issue
Block a user