Sync upstream and restore license agreement distribution #10
Reference in New Issue
Block a user
Delete Branch "fix/upstream-license-20261018"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Packages omitted the loose eula.html and tos.html files read by stock GlueXML, leaving the agreement panes blank with zero scroll range. Stage the original documents (including standalone .html.MPQ variants), preserve root/Data lookup precedence, and reject missing/empty required documents before staging or publication. Region-specific scan/contest files are copied when supplied.
First incorporated 32 upstream commits through
a5cb73a8. Retained Russian localization and the upstream Support action. Reconnected the previous squash sync's ancestry only after verifying identical trees.Verification on Windows: player release build succeeds; all 7 packaging tests, package clippy (all targets, warnings denied) and formatting pass. Actual stock GlueXML reproduces 0 blocks/0 scroll range without documents. Recovered original enUS 1.12.1 EULA/TOS now yield 59/207 blocks and positive scroll ranges; arrows, wheel, Accept gating and scrolling back to top pass offline. Full workspace suites were not rerun.
Original data recovered with only 44,892 bytes of ZIP range reads from https://archive.org/download/WoW_1.12.1-5875/1.12.1-5875_enUS.zip. File SHA-1 values match https://github.com/anzz1/wow-client-checksums/blob/master/1.12.1.5875-enUS.sha1. Original files remain outside Git; the installed client stays read-only. Published production build 1c56c0de5c9d1d790e818d7b46aba88147d996f2c545f715d5f94f0a4901c64c from main
2bdb1798b7. Verified active/release manifests, all 20 remote objects, and executable/runtime/EULA/TOS SHA-256; all 15 MPQ immutable keys are preserved.`TargetUnit("npc")`, `AssistUnit("npc")` and `SpellTargetUnit("npc")` did nothing with a merchant, gossip or quest window open: the app's unit-token resolver answered nobody for `npc`. In 1.12.1 the resolver (`0x515970`) matches `npc` as a whole token (`0x515bec`, an unbounded compare, so `npctarget` stays unknown) and takes the interaction NPC's guid `[0xb4e2d0]`, which `0x4930d0` writes when the window opens. `npc` now resolves to the held unit `InteractNpc` names. Tests cover the three verbs, a closed window and a streamed-out NPC, and `/script TargetUnit("npc")` typed into the stock chat box. Fixes #707 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>`PLAYER_LOGIN` fired at the end of the UI load, before the player existed: its handlers saw `UnitExists("player")` nil and level, health and XP 0, at every login and `/reload`. Ace2's `OnEnable` runs there. In 1.12.1 the load only arms a one-shot (`0x49011d`). The world-enter cascade fires `PLAYER_LOGIN` if armed (`0x49094b`), then `PLAYER_ENTERING_WORLD` (`0x49096a`), inside a sound-suppression bracket (`0x4908d5`–`0x490a56`). It runs from the player's own create (`0x5deb60`), or on `/reload` from the load (`0x490168`) with the player still in the world. A worldport re-arms nothing. Now the load arms it, and the unit feed fires both, silenced, once the player is seated. A `/reload` loads under the live player and no longer plays the target-select sound. Tests cover login, worldport and reload; they fail without the fix. Fixes #189 Fixes #191 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>bevy/dynamic_linkingin crates/benilla-app (#853) 45da0a0850Lua bindings now read their arguments the way the 1.12.1 client does: - Numeric strings parse as Storm's `SStrToInt` (`0x64ac60`) and `SStrToFloat` (`0x64aaa0`). That covers channel keys, `GetNumber` and `item:` fields. - Flag arguments go through `GetBoolOrDefault` (`0x6f1c10`) with each site's default. That is about 40 bindings, `SetChecked()` and `ShowHelm()` among them. - Colour channels take numeric strings (`lua_tonumber`), and alphas are `isnumber`-gated: no raise, 1.0 by default. A three-argument `SetVertexColor` keeps the current alpha (`0x79ae0a`). So action-bar rings dimmed by a drag stay dimmed, as in 1.12.1. - `SetTexture("1")` takes the colour form. MessageFrame channels follow `0x795590`. - `LoggingChat`/`LoggingCombat` return the flag. Binding-level tests use the reference's values. Fixes #135 Fixes #144 Fixes #160 Fixes #161 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>1.12.1's MSG_MOVE_TELEPORT_ACK handler (0x603f90) reaches none of the loading screen's raises: 0x406800 is entered only from SMSG_TRANSFER_PENDING (0x401900), the glue EnterWorld (0x46b6f1) and 0x407de0. benilla raised the cover on a same-map snap twice over: the "focus not resident" backstop on the snap frame, and a >=100 yd relocation raise. The relocation raise goes, and the backstop stays off while a snap's settle hold is up; the body is held over the destination as before. Verified live against the local realm (map 0, Gmagent): .tele ironforge from Northshire (~3960 yd) and back covered 50 and 93 frames (0-916 ms, 0-1680 ms) before, 0 and 0 after; cross-map .tele valley and back still raise the cover ("worldport"). New tests in loading_screen.rs fail on the old code at the snap frame. benilla-app and benilla-world lib tests green, install-reading tests green with BENILLA_REQUIRE_DATA=1 (the addon corpus is absent on this machine). Built on macOS (arm64). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>In 1.12.1, `TargetByName` (`0x489d60`), `TargetUnit` (`0x4899d0`) and `ClearTarget` (`0x489ff0`) commit through `SetSelection` (`0x493540`) before they return, so the next line of the chunk reads the new target. benilla queued them, so `UnitName("target")` on the next line read the old unit. The bindings now update the `"target"` view and the resolver's guid at once. They rank over a per-frame candidate feed that shares the app scan's candidate test and rank. A pick `SetSelection` refuses (not selectable, `0x4935ee`) leaves the view alone. The unit feed re-pushes the committed selection the next frame. A full tie goes to the lower guid, written as a deviation. Tests: the chunk reads the pick; namesake ties, refused picks and the re-push, in benilla-ui and through the app's real feed. Supersedes #1225, whose branch GitHub would not let us push to. Co-authored-by: kalistoking <148718830+kalistoking@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>Splitting a quest item's stack could flash its objective line ("Wolf Pelt: 4/5"). The toast rode a per-frame diff of the bag count, and a split dips it for a frame: vmangos sends the shrunk source and the new stack's create at once, and the slot naming the new stack later, in the batched update (`Player.cpp:11100`, `10316`–`10327`). 1.12.1 toasts an item objective only from `SMSG_QUESTUPDATE_ADD_ITEM` (`0x5e5ad0`, case 0x19a). It walks the log to the first quest needing the item, and `0x5dd060` shows `ERR_QUEST_ADD_ITEM_SII` with min(held + added, need), then `QUEST_WATCH_UPDATE`. An uncached quest record defers the pair to its arrival (`0x5dd180`). Item lines now toast from that packet alone; kill and complete toasts are unchanged. Tests replay a split's update sequence (no toast) and a pickup (one toast); both fail without the change. Fixes #916 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>Texture paint answered and drew unlike 1.12.1: `SetTexture("")` and non-string names answered nil, a missing file cleared desaturation, `SetTexCoord()` and an unknown `SetBlendMode` passed quietly, a failing bar path still installed a bar, and DISABLE, ALPHAKEY and MOD drew as BLEND. 1.12.1's load (`0x770200`) writes the shader slot only for a file that loads (`0x7702c0`); the binding answers 1 for a null name (`0x79bdae`). The submit draws a coloured DISABLE or ALPHAKEY texture as BLEND (`0x76fb82`); ALPHAKEY alpha-tests at 224/255 and MOD multiplies the destination (DESTCOLOR, ZERO, `0x80a1fc`). Now one texture load serves every setter, the usage lines raise, the shader draws each mode with a MOD pipeline of its own, and a new test validates the UI shader with naga. The stock UI draws as before. Fixes #1425 Fixes #1864 Fixes #1863 Fixes #1521 Fixes #1556 Fixes #1550 Fixes #1559 Fixes #1555 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>feed_party and feed_units share FieldEventPushes with no order between them. When the party feed ran first, TargetFrame's RAID_TARGET_UPDATE handler read GetRaidTargetIndex("target") off the previous snapshot, so a new mark showed over the mob but not on the target frame until the target changed. A UnitSnapshots set holds feed_units, and the party feed runs after it. the_party_feed_runs_after_the_unit_snapshots reads the order off the declared graph; it fails on the tree before this change. Verified: cargo fmt --check, clippy -D warnings, cargo test -p benilla-app --lib (5093 passed). Live on a vmangos server, a build with this change shows raid marks set in a raid on the target frame. Built on macOS only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>a5cb73a80913e16df5WIP: Sync upstream and repair license agreement displayto WIP: Sync upstream and include missing license agreement filesWIP: Sync upstream and include missing license agreement filesto Sync upstream and restore license agreement distribution