File Details
v0.2.0-classic
- R
- May 22, 2026
- 2.41 MB
- 8
- 1.15.8
- Classic
File Name
HelloTotems-v0.2.0-classic.zip
Supported Versions
- 1.15.8
HelloTotems
v0.2.0 (2026-05-22)
Full Changelog Previous Releases
- Bump version to 0.2.0.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com - Close flyout and reassign main in combat via macro + /click chain.
SecureHandlerWrapScript wouldn't fire its post body on entries in this
Classic Era client (empty preBody silently no-ops the wrap, nil preBody
errors as "Invalid pre-handler body"), so post-cast cleanup couldn't run
in combat — flyout stayed open, main button kept casting the previously
assigned totem.
Switch each entry to type1="macro" with macrotext "/cast Spell\n/click
PostHandler". Both run inside SecureActionButton's secure macro
execution, so the /click on a per-entry SecureHandlerClickTemplate post-
handler also runs in secure context. The post-handler's _onclick snippet
reassigns main's spell1 (SetAttribute on a frame ref) and hides the
flyout (Hide on a SecureHandlerBase frame ref) — both permitted in the
restricted env. The whole chain — cast + reassign + close — now works
in and out of combat.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com - Revert flyout entry to PostClick after WrapScript proved non-functional.
SecureHandlerWrapScript's post body isn't actually running on entry
clicks in this Classic Era client — the cast itself worked (so the
SecureActionButton OnClick is intact), but the flyout-hide and main-
spell reassign never fired, leaving the flyout open and the main button
casting the previous totem on its next click. Same symptom we'd seen
earlier when trying to wrap the main button's OnClick.
Move both side effects back into PostClick, combat-guarded as before.
Out of combat: flyout closes and main reassigns. In combat: cast still
fires; flyout stays open until the user dismisses it (chev or open
another flyout) and the main button reassigns from the DB on
PLAYER_REGEN_ENABLED via Bar.needsRefresh.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com - Use SecureHandlerWrapScript on flyout entries for in-combat close.
Click() isn't exposed in WoW's restricted execution env, so the previous
SecureHandlerClick + castHelper:Click() approach failed with "attempt to
call method 'Click' (a nil value)" — and meant the entry never cast at
all. Revert entries to SecureActionButton (cast on click via type1=spell)
and attach a SecureHandlerWrapScript post body with the chev as header.
The post snippet only does SetAttribute (main spell1) and Hide (myflyout),
both of which the restricted env permits on frame refs, so the entry
casts, reassigns the main button, and closes the flyout in combat too.
The chev now also carries a "main" frame ref for the post body to reach.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com - Close the flyout when picking an entry in combat.
Entries were SecureActionButtons that cast on click, with an insecure
PostClick hiding the flyout — and PostClick can't Hide() a flyout
parenting secure children during combat, so the flyout stayed open
after picking. Switch entries to SecureHandlerClickTemplate and route
the cast through a shared hidden SecureActionButton (HelloTotemsCastHelper):
the entry's _onclick snippet sets spell1 on the helper, fires its Click,
reassigns the main button's spell1, and hides the flyout — all in the
secure execution context, so the whole chain works in combat.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com - Open totem flyouts in combat via secure-handler snippets.
The previous flyout open/close path used insecure HookScripts, which
fail in combat because Hide/Show on a frame parenting SecureActionButton
children is protected. The chev is now a SecureHandlerClickTemplate with
an _onclick snippet that toggles the flyout in the restricted execution
environment, and the main button routes right-click through the secure
cast handler (type2="click", clickbutton2=chev) so right-click toggle
also works mid-combat. The flyout itself is now a SecureHandlerBaseTemplate
so its visibility methods are exposed to the snippet env. Closing other
flyouts after a left-click cast stays insecure (PostClick, combat-guarded);
the chev's snippet already hides siblings when opening, which covers the
in-combat close-on-open path.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com - Remove the now-shipped action-button dimming entry from DESIGN.md.
The previous commit's message claimed this was done; it wasn't.
Cleaning up now.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com - Drop completed and out-of-scope ideas from DESIGN.md.
Lightning Shield charge count and bar scale are shipped; Totemic Call
is a TBC ability (not in Classic Era); per-character totem ordering
is dropped by preference. Action-button dimming is now shipped too;
removing the leftover entry leaves the section empty for now.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com - Dim out-of-mana buttons with a blue icon tint.
IsUsableSpell(spellName) returns noMana=true when the player can't
afford the assigned spell; applyUsable sets the icon's vertex color
to a faint blue in that case and clears it otherwise. Driven by
SPELL_UPDATE_USABLE and also called from applySpell so a fresh
reassignment reflects the right state immediately. Empty/placeholder
slots are untouched — applySpell owns their vertex color.
Out-of-range dimming isn't added: every spell on this bar is
self-cast (totems, weapon imbues, Lightning Shield).
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com - Add Settings config panel and scale configuration.
/ht config opens a Blizzard Settings panel registered under
AddOns -> HelloTotems. The panel exposes a "Lock bar position"
checkbox bound to HelloTotemsDB.barLocked (same effect as
/ht lock|unlock) and a "Bar scale" slider (0.6-1.6, step 0.05)
wired to HelloTotemsDB.scale via the new Bar:ApplyScale.
Scale is also settable via /ht scale <0.5-2.0>. ApplyScale is
combat-guarded since SetScale on a frame with protected children
is restricted in lockdown; all entry points (slider, slash) no-op
or print a notice during combat.
Also: default bar y-offset bumped from -200 to -230 for fresh
installs, and a few em dash / arrow characters in user-facing
strings replaced with ASCII since the in-game default font
renders them as rectangles in Classic Era.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com - Show Lightning Shield charge count on the shield button.
Adds a NumberFontNormal overlay in the top-right of slot 6, parented
to the cooldown frame so it renders above the swirl. updateMainCooldown
already iterates UnitBuff for the slot's duration — picking up the
3rd return (count) is free. Cleared whenever the buff isn't active.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

