From c343d236e9e7839636ff0de5dd7751e39797bdd0 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 11 Sep 2026 20:50:37 +0700 Subject: [PATCH] cooldowns survive a relog, the MOTD prints, and lost channels come back - a cooldown still running when you log out and back in keeps sweeping instead of vanishing, and another character no longer inherits the previous session's cooldowns (2116) - the server's Welcome and Patch 1.12 lines print at login in system yellow, and a character whose General, Trade and LocalDefense had gone silent for good gets them back at the next login (2119, 2120) - the stock Interface Options window loads hidden beside ours, so pfUI's options skin finds the real thing; the Auto-join Guild Recruitment Channel row has a real store, and a /reload no longer trips on its camera dropdowns (2115) - the combat log words a power gain on the display scale, so MikScrollingBattleText shows +1 Rage where it showed +10; a 1.12 predicate answers 1 or nil rather than a Lua boolean, the test ColorPickerPlus makes (2117, 2118) - a Lua error quotes a program element with a backquote the way 5.0 does, so AceLibrary's argument checks report their caller instead of raising inside the error path (2122) Co-Authored-By: Claude Fable 5.1 --- crates/benilla-app/assets/ui/OptionsFrame.xml | 448 ++++++------------ .../assets/ui/OptionsFrameTemplates.xml | 39 -- crates/benilla-app/assets/ui/benilla.toc | 116 +++-- crates/benilla-app/src/capture/fixtures.rs | 10 +- crates/benilla-app/src/char_select/mod.rs | 4 +- crates/benilla-app/src/cooldowns.rs | 56 +++ crates/benilla-app/src/cvars.rs | 31 +- crates/benilla-app/src/net/apply.rs | 1 + .../benilla-app/src/net/apply/combat_chat.rs | 143 ++++-- .../benilla-app/src/net/apply/combat_log.rs | 16 +- crates/benilla-app/src/net/apply/session.rs | 8 + crates/benilla-app/src/ui_chat.rs | 4 + crates/benilla-app/src/ui_chat/broadcast.rs | 1 + crates/benilla-app/src/ui_chat/edit.rs | 50 ++ crates/benilla-app/src/ui_chat/feed.rs | 7 + crates/benilla-app/src/ui_chat/input/mod.rs | 15 +- crates/benilla-app/src/ui_chat/settings.rs | 366 +++++++++++--- crates/benilla-app/src/ui_chat/tests.rs | 128 +++++ .../src/ui_script/action_bar_tests.rs | 87 +++- crates/benilla-app/src/ui_script/lifecycle.rs | 146 +++++- crates/benilla-app/src/ui_script/manifest.rs | 12 + crates/benilla-app/src/ui_script/mod.rs | 13 +- .../src/ui_script/multibar_stance_tests.rs | 20 +- .../src/ui_script/options_tests.rs | 43 +- .../src/ui_script/panel_template_tests.rs | 77 +-- .../benilla-app/src/ui_script/reference_ui.rs | 40 ++ .../benilla-app/src/ui_script/shape_gate.rs | 416 +++++++++++++++- .../src/ui_script/shipped_xml_tests.rs | 180 +++++++ crates/benilla-app/src/ui_script/test_ui.rs | 82 +++- .../src/ui_script/tooltip_anchor_tests.rs | 2 +- crates/benilla-app/src/ui_tooltip/mod.rs | 4 +- crates/benilla-app/src/vplates.rs | 2 +- crates/benilla-protocol/src/messages/group.rs | 6 +- crates/benilla-protocol/src/messages/mod.rs | 9 +- .../src/messages/update_object/fields/unit.rs | 35 +- crates/benilla-ui/src/script/action.rs | 4 +- crates/benilla-ui/src/script/addon.rs | 10 +- crates/benilla-ui/src/script/auction.rs | 10 +- crates/benilla-ui/src/script/binding_abi.rs | 25 + crates/benilla-ui/src/script/channel.rs | 138 +++++- crates/benilla-ui/src/script/char_stats.rs | 13 +- crates/benilla-ui/src/script/cursor/doll.rs | 3 +- crates/benilla-ui/src/script/cvars.rs | 10 +- crates/benilla-ui/src/script/loot.rs | 5 +- crates/benilla-ui/src/script/lua50.rs | 75 +++ crates/benilla-ui/src/script/mail.rs | 10 +- .../src/script/messageframe/plain.rs | 8 +- .../src/script/messageframe/scrolling.rs | 8 +- crates/benilla-ui/src/script/model.rs | 15 + crates/benilla-ui/src/script/object.rs | 10 +- crates/benilla-ui/src/script/quest.rs | 5 +- crates/benilla-ui/src/script/quest_log.rs | 20 +- crates/benilla-ui/src/script/spellbook.rs | 14 +- crates/benilla-ui/src/script/stdlib.rs | 4 +- crates/benilla-ui/src/script/tests/channel.rs | 84 ++++ .../src/script/tests/reference_surface.rs | 2 +- crates/benilla-ui/src/script/tick.rs | 20 +- crates/benilla-ui/src/script/trade.rs | 10 +- crates/benilla-ui/src/script/unit/bindings.rs | 16 +- crates/benilla-ui/src/script/unit/tests.rs | 15 +- third_party/lua-src/BENILLA.md | 7 +- third_party/lua-src/lua-5.1.5/luaconf.h | 19 +- 62 files changed, 2473 insertions(+), 704 deletions(-) delete mode 100644 crates/benilla-app/assets/ui/OptionsFrameTemplates.xml diff --git a/crates/benilla-app/assets/ui/OptionsFrame.xml b/crates/benilla-app/assets/ui/OptionsFrame.xml index f5dd916f..d70f7070 100644 --- a/crates/benilla-app/assets/ui/OptionsFrame.xml +++ b/crates/benilla-app/assets/ui/OptionsFrame.xml @@ -191,80 +191,57 @@ diff --git a/crates/benilla-app/assets/ui/OptionsFrameTemplates.xml b/crates/benilla-app/assets/ui/OptionsFrameTemplates.xml deleted file mode 100644 index 223ff8bd..00000000 --- a/crates/benilla-app/assets/ui/OptionsFrameTemplates.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - diff --git a/crates/benilla-app/assets/ui/benilla.toc b/crates/benilla-app/assets/ui/benilla.toc index 49863ce4..d0edeef4 100644 --- a/crates/benilla-app/assets/ui/benilla.toc +++ b/crates/benilla-app/assets/ui/benilla.toc @@ -375,23 +375,92 @@ ScrollTemplates.xml Interface\FrameXML\UIPanelTemplates.lua Interface\FrameXML\UIPanelTemplates.xml -# ══ THE WINDOW TAB — the reference's own, off the player's chain (1751; decision 1993) ══ -# `CharacterFrameTabButtonTemplate`, the big tab along a panel's bottom edge — the character, -# vendor and social windows' rows, and nothing else in the client (the small `TabButtonTemplate` -# is UIPanelTemplates.xml's, above). +# ══ THE OPTIONS WIDGET KIT — the reference's own, off the player's chain (1751, window 29) ══ +# The four templates addons name for an options panel: `OptionFrameBoxTemplate`, +# `OptionsButtonTemplate`, `OptionsCheckButtonTemplate`, `OptionsSliderTemplate`. Self-contained — +# no `.lua`, no `` — and a descendant of UIPanelTemplates (`OptionsCheckButtonTemplate` +# inherits `UICheckButtonTemplate`, `OptionsButtonTemplate` inherits `UIPanelButtonTemplate`), so +# it stays seated after that file, which is the line above. # -# THE REFERENCE NEVER GIVES THIS FILE A TOC LINE. Neither `FrameXML.toc` lists it (base or -# patch); `UIOptionsFrame.xml` pulls it in with `` -# above its own `