merge: absorb samwhosung/main on top of the upstream merge

Same fork policy: upstream structure wins, local-unique re-instated.

Cargo.toml unions both measured dev-profile philosophies (codegen-units=1 +
lto=off from samwhosung, debug=line-tables-only + split-debuginfo from the
fork's disk measurements).

glue_booth.rs takes samwhosung's typed GlueScene (token/of_race/from_model_path)
and re-adds the fork's TurtleWoW races (Goblin=9, BloodElf=10) as variants;
their glue fog stays on Human's row, exactly as the fork's scene_fog fallback did.

ui script takes samwhosung's mouseover/hyperlink rework (world_mouseover,
minimap_blip, hyperlink.rs) over the fork's inline hover_link/span_at/pointer
path — the rework covers the same OnHyperlinkEnter/Leave behaviour.

game_plugins.rs keeps the fork's re-measured ceilings (466 / 5,509); mail.rs
keeps the explicit 13-tuple with a float daysLeft; MAP.md takes the superset.
This commit is contained in:
chairmanpow
2026-10-12 17:24:31 +01:00
403 changed files with 52938 additions and 9951 deletions
+13
View File
@@ -107,6 +107,9 @@ play`, wraps one command. Without it a clone builds exactly as before; an existi
- `WOW_UNATTENDED=1` reconnects instead of waiting at a dialog, and exits non-zero on a login
it cannot pass. `WOW_NOSOUND=1` runs silent. A capture (`WOW_CAPTURE`) is both, and a rig
(`WOW_RIG`) is unattended. `WOW_ALLOW_ACCOUNT=1` overrides the account guard.
- An unattended run starts from defaults in a fresh state folder of its own, printed at boot
(`state:`), so it never reads or overwrites your settings, layout or addons. `BENILLA_HOME`
pins a folder, for a run that needs addons, seeded files or state kept across runs.
- On vmangos, `WOW_RIG="tauren druid 60 gear:heal-preraid-bis spec:heal-preraid-bis
at:ThunderBluff"` finds or creates that character on the account and applies the server's
premade sets (`WOW_RIG="gear:?"` lists them). `WOW_PROBE_CHAT="<command>"` sends one GM
@@ -115,6 +118,16 @@ at:ThunderBluff"` finds or creates that character on the account and applies the
`WOW_GOD=off` leaves it off.
- A trace is `WOW_MOVE_TRACE=<file>`, filtered with `WOW_MOVE_TRACE_TAGS` (`"move,snd,in"`) and
ended by `WOW_PROBE_EXIT_AT=<seconds>`; grep it for the `rly` and `snd` lines.
- To sniff the wire, trace the tags `in` and `out` (`WOW_MOVE_TRACE_TAGS="in,out"`): one line
per world packet, with its opcode, name, `len=` and the body as `hex=`, the bytes after the
packet header. An `in` line also has `ev=`, the events it decoded to; a server packet that
failed to parse is a `skip` line with its bytes. Traces get attached to public issues, so two
kinds of body are kept out. A client packet that carries a secret, the auth session, a channel
password or any chat text starting with `.` or `!` (a server command), shows
`hex=<redacted>` always, and so does a dropped command's log line. Chat in both directions
and the bulk name lists (`SMSG_WHO`, the friend, ignore, guild roster and channel lists) show
`hex=<withheld>`, with `len=` kept, unless `WOW_MOVE_TRACE_CHAT=1` is set, for a developer who
needs those bodies and will read the file before sharing it.
- A capture runs through `scripts/visual.sh`, whose recipe is the header of
`crates/benilla-app/src/capture/mod.rs`. Pixel questions go through `benilla-visual crop`,
`series` and `hotspot`.
+11 -3
View File
@@ -51,6 +51,7 @@
- ProbeFocusPlugin
- ProbeChatPlugin
- ProbeLuaPlugin
- ProbeGlueLuaPlugin
- ProbeDragPlugin
- ProbeHoverPlugin
- ProbeKeyPlugin
@@ -188,7 +189,6 @@
- `WOW_BLOB_VIS_UID` — benilla-world/src/terrain_stream/merge.rs
- `WOW_BOOTH_DUMP` — benilla-app/src/portrait/test_bake.rs
- `WOW_BOOTH_LOG` — benilla-app/src/portrait/mod.rs
- `WOW_BUBBLE_TRACE` — benilla-app/src/chat_bubble.rs
- `WOW_CAM_CHANGED` — benilla-app/src/perf/mod.rs
- `WOW_CAM_DUMP` — benilla-app/src/player/camera.rs
- `WOW_CAPTURE` — benilla-app/src/capture/mod.rs, benilla-app/src/capture/scenarios.rs, benilla-app/src/char_select/addons.rs, benilla-app/src/cvars/mod.rs, benilla-app/src/dynamic_interior.rs, benilla-app/src/lib.rs, benilla-app/src/local_state.rs, benilla-app/src/login/mod.rs, benilla-app/src/name_persist.rs, benilla-app/src/net.rs, benilla-app/src/player/camera_saved.rs, benilla-app/src/run_mode.rs, benilla-app/src/sound/mod.rs, benilla-app/src/ui_chat/settings.rs, benilla-app/src/ui_chat/tests.rs, benilla-app/src/ui_macro/tests.rs, benilla-app/src/ui_saved.rs, benilla-app/src/ui_script/addons.rs, benilla-app/src/ui_script/layer_tests.rs, benilla-app/src/ui_script/mod.rs, benilla-app/src/ui_script/world_entry_tests.rs, benilla-app/src/video.rs, benilla-app/src/volumetric_fog.rs, benilla-app/src/volumetric_light.rs, benilla-world/src/bgwin.rs, benilla-world/src/clouds/mod.rs, benilla-world/src/dev_state.rs, benilla-world/src/liquid/surface.rs, benilla-world/src/sky_fx.rs, benilla-world/src/terrain_stream/queries.rs, benilla-world/src/wind/mod.rs
@@ -291,6 +291,7 @@
- `WOW_FX_YAW` — benilla-app/src/capture/mod.rs
- `WOW_GHOST_PROBE` — benilla-app/src/death/mod.rs
- `WOW_GLUE_ROUNDTRIP` — benilla-app/src/char_select/mod.rs, benilla-world/src/bgwin.rs
- `WOW_GLUE_STOCK` — benilla-app/src/ui_script/glue.rs
- `WOW_GLYPH_CACHE` — benilla-app/src/ui_text/engine/gpu.rs
- `WOW_GM` — benilla-app/src/probe_shield.rs
- `WOW_GOD` — benilla-app/src/preflight.rs, benilla-app/src/probe_shield.rs
@@ -356,6 +357,7 @@
- `WOW_MONKEY_ROOM_INDEX` — benilla-world/src/lighting/global_light.rs
- `WOW_MOVE_SPEED` — benilla-app/src/player/setup.rs
- `WOW_MOVE_TRACE` — benilla-assets/src/trace.rs
- `WOW_MOVE_TRACE_CHAT` — benilla-app/src/net/io/wire_trace.rs
- `WOW_MOVE_TRACE_TAGS` — benilla-assets/src/trace.rs
- `WOW_MSAA` — benilla-app/src/cvars/mod.rs, benilla-world/src/view.rs
- `WOW_MT_EXTRACT` — benilla-app/src/lib.rs
@@ -446,6 +448,10 @@
- `WOW_PROBE_DRAG_LUA` — benilla-app/src/capture/probes/act.rs
- `WOW_PROBE_DRAG_STEP` — benilla-app/src/capture/probes/act.rs
- `WOW_PROBE_EXIT_AT` — benilla-app/src/capture/probes/run.rs, benilla-app/src/dev.rs
- `WOW_PROBE_GLUE_LUA` — benilla-app/src/capture/probes/act.rs, benilla-app/src/dev.rs
- `WOW_PROBE_GLUE_LUA_AT` — benilla-app/src/capture/probes/act.rs
- `WOW_PROBE_GLUE_SHOT` — benilla-app/src/capture/probes/act.rs
- `WOW_PROBE_GLUE_SHOT_AFTER` — benilla-app/src/capture/probes/act.rs
- `WOW_PROBE_GMTICKET` — benilla-app/src/dev.rs
- `WOW_PROBE_GOQUEST` — benilla-app/src/capture/probe_goquest.rs, benilla-app/src/dev.rs
- `WOW_PROBE_HOVER` — benilla-app/src/capture/probes/act.rs, benilla-app/src/dev.rs
@@ -482,7 +488,7 @@
- `WOW_RESIZE` — benilla-app/src/capture/mod.rs
- `WOW_RES_CENSUS` — benilla-app/src/perf/census.rs
- `WOW_REVEAL` — benilla-app/src/capture/probes/reveal.rs, benilla-app/src/dev.rs
- `WOW_RIG` — benilla-app/src/capture/probe_rig.rs, benilla-app/src/dev.rs, benilla-app/src/login/mod.rs, benilla-app/src/net.rs, benilla-app/src/probe_shield.rs, benilla-app/src/realm_select/smoke.rs, benilla-app/src/run_mode.rs, benilla-world/src/bgwin.rs
- `WOW_RIG` — benilla-app/src/capture/mod.rs, benilla-app/src/capture/probe_rig.rs, benilla-app/src/dev.rs, benilla-app/src/local_state.rs, benilla-app/src/login/mod.rs, benilla-app/src/net.rs, benilla-app/src/probe_shield.rs, benilla-app/src/realm_select/smoke.rs, benilla-app/src/run_mode.rs, benilla-world/src/bgwin.rs
- `WOW_RIG_CENSUS` — benilla-world/src/rig_palette.rs
- `WOW_RIG_COST` — benilla-world/src/rig_palette.rs
- `WOW_RIG_SKIN` — benilla-assets/src/materials.rs
@@ -531,7 +537,8 @@
- `WOW_UI_PROBE` — benilla-app/src/ui_pass.rs
- `WOW_UI_SCALE` — benilla-app/src/cvars/mod.rs, benilla-app/src/ui_script/mod.rs
- `WOW_UI_SPLICE_VERIFY` — benilla-app/src/ui_script/extract/mod.rs
- `WOW_UNATTENDED` — benilla-app/src/login/mod.rs, benilla-app/src/net.rs, benilla-app/src/run_mode.rs, benilla-world/src/bgwin.rs
- `WOW_UISCRIPT_DUMP` — benilla-app/tests/ui_script_wall.rs
- `WOW_UNATTENDED` — benilla-app/src/local_state.rs, benilla-app/src/login/mod.rs, benilla-app/src/net.rs, benilla-app/src/net/session.rs, benilla-app/src/run_mode.rs, benilla-world/src/bgwin.rs
- `WOW_UNIT_VISUALS` — benilla-app/src/capture/probes/visual_census.rs, benilla-app/src/dev.rs
- `WOW_UNIT_VISUALS_RADIUS` — benilla-app/src/capture/probes/visual_census.rs
- `WOW_UPLOAD_BUDGET` — benilla-world/src/world_plugins.rs
@@ -584,6 +591,7 @@
- `gen-message-catalog.py` — Generate `crates/benilla-ui/src/messages/catalog.rs` from `reference/1.12-message-catalog.tsv`.
- `gen-reference-events.py` — Regenerate `reference/1.12-events.tsv`: each 1.12 FrameScript event and the arguments it carries.
- `gen-reference-globals.py` — Regenerate `reference/1.12-globals.tsv`: the 1.12.1 client's global namespace, by origin.
- `gen-reference-glue-surface.py` — Regenerate `reference/1.12-glue-surface.tsv`: every Lua function the glue screens' VM has in `_G`.
- `gen-reference-verb-events.py` — Regenerate `reference/1.12-verb-events.tsv`: the events 1.12 Lua verbs fire, keyed by verb.
- `mixsum.py` — Read a `$WOW_MIX_TAP` capture and say, in numbers, what the mix was doing when.
- `pass-span-lint.py` — Refuse a second open `pass_span` on the same render pass (a wgpu validation error on Vulkan).