TotemBar v0.2.5

This commit is contained in:
2026-08-05 15:54:45 +02:00
commit 8dbc411e80
35 changed files with 5934 additions and 0 deletions
+195
View File
@@ -0,0 +1,195 @@
# Changelog
All notable changes to TotemBar are documented here.
## v0.2.5 — 2026-07-25
### Added
- **New option: "Show drop-all button".** The drop-all-totems button can now be
hidden from the bar, for anyone who drives it purely from a keybind or a macro
and would rather not spend the slot on it. On by default, so nothing changes
unless you turn it off.
- **The keybind keeps working while the button is hidden.** It is bound to the
cast function, not to the frame, and the entry stays listed in the Esc key
bindings menu — otherwise you could never assign it again.
- **The bar resizes instead of leaving a gap.** In the 1×6 layout it shrinks by
one slot. In 2×3 and 3×2 the frame keeps its size on purpose: Recall still
needs the last column, and shrinking there would break up the 2×2 block of
the four element totems. What remains is one empty grid cell in the trailing
corner — invisible, and it simply adds drag area.
## v0.2.4 — 2026-07-14
### Fixed
- **Totemic Recall no longer refuses to fire after a /reload.** The "no totems
out — not recalling" guard could block a legitimate recall: TotemBar tracks
which totems you've dropped in memory only, and a `/reload` wipes that memory.
On 1.12 there is no `GetTotemInfo` / totem unit-id to re-detect a totem that
was placed before the reload, so the addon wrongly concluded nothing was out
and refused to recall. The guard now blocks **only** when it is certain nothing
is out (it tracked totems this session and they've all expired); after a
/reload the state is unknown, so it fails open and lets the recall through.
Worst case is one needless recall right after a reload — far better than a
blocked one.
## v0.2.3 — 2026-07-13
### Fixed
- **Totemic Recall no longer sweeps away a freshly-placed set (nampower).**
With nampower installed, dropping your set while the global cooldown was
active could make the new totems appear and then instantly vanish: nampower
queued Totemic Recall behind the GCD, so it fired *after* the (off-GCD)
totems were placed and pulled them right back down. TotemBar now casts
Recall via `CastSpellByNameNoQueue` when nampower provides it, so a
GCD-blocked Recall is skipped for that press instead of firing late. No
effect for setups without nampower.
### Changed
- **The drop-set keybind now recalls on key-down and places on key-release.**
This keeps the recall and the totem placements as separate hardware events;
for a normal tap the difference is imperceptible.
## v0.2.2 — 2026-07-10
### Added
- **"Button spacing" slider** in the options panel (1030 px) — adjusts the
gap between bar buttons live, including the flyout and assignment panel.
### Fixed
- **Keybind casts now start TotemBar's own duration/pulse timers.**
Per-totem and element key bindings call the same tracking as click-casts.
Previously, setups without pfUI got no timer/ring/pulse feedback for
keybind-cast totems, and even with pfUI the spawn ripple and out-of-range
tint were missing for them.
### Removed
- **Dead `pulseGlow` setting** — the anticipation glow is part of "Show
pulse waves"; stale saved values are cleaned up automatically.
## v0.2.1 — 2026-07-10
### Fixed
- **Tooltips showed rank 1 instead of your highest rank.** Both totem
tooltips (element buttons and the flyout) resolved the spell by its first
spellbook match — which is rank 1 — so mana cost, damage and duration read
far too low. Display-only: the actual cast is name-based and always used
your highest rank. Tooltips now resolve to the highest known rank **and
show the rank** next to the spell name (vanilla's tooltip omits it).
## v0.2.0 — 2026-07-10
**The Pulse UI release** — a complete visual rework of the bar around one idea:
you should see at a glance *how long* each totem still stands and *when* it
pulses next.
### Added
- **Round floating slots.** Buttons are free-floating round icons in a subtle
shadow-rim frame — the square boxes and backdrops are gone. Flyout, Recall
and drop-set share the round look (round hover/pressed states included).
- **Duration ring (time traffic light).** The outer ring drains with the
totem's remaining lifetime and blends green → yellow → orange → red as time
runs out.
- **Pulse ring.** A thin inner arc in the totem's element color fills toward
the next pulse and resets when it fires — animated per frame, no stutter.
- **Server-accurate pulse timing.** Intervals and first-tick behavior come
from TurtleWoW server data, not guesswork: e.g. Tremor pulses every **4s**
(not the commonly cited 3s) and ticks **immediately** on placement, while
Magma/Healing Stream/Mana Spring first pulse one full interval after
placement. Water totems additionally re-anchor on the real observed
mana/heal ticks.
- **Pulse waves & anticipation glow.** An expanding ripple in the element
color marks each pulse; a soft halo builds around the ring during the last
stretch before it. A spawn ripple confirms every placement.
- **Bar layouts.** Cycle between 1×6, 2×3 (elements grouped as a 2×2 block)
and 3×2 in the options panel.
- **Custom art set.** Element glyphs for empty slots (no more question
marks), a four-element drop-set icon, a minimap glyph, a custom options
panel skin with rounded corners, and grounding shadow plates under the
slots. All art is generated by scripts in `tools/` — reproducible, no
binary-only assets.
- **New options:** Show duration ring · Show pulse ring · Show pulse waves ·
Show countdown text · Layout.
- **`/tb pulsecal` (dev aid):** captures pulse-timing telemetry to
`imports\totembar_pulsecal.txt` (SuperWoW) for verifying timings in-game.
### Changed
- Button spacing widened (4 → 10 px) to give the ring frames air; multi-row
layouts use the same tight pitch vertically.
- Options panel restyled with the custom skin and section dividers.
- The remaining-time countdown text is now optional (on by default).
## v0.1.3 — 2026-07-09
### Fixed
- **Totemic Recall no longer wastes its 6-second cooldown.** Recall — via the
button, its keybinding, or the "Totems" macro's auto-recall — now only fires
when you actually have totems out. Casting it with nothing down put Recall on
its 6s cooldown, so a set placed right after couldn't be recalled for 6
seconds. With nothing out, TotemBar now skips the cast (with a brief note).
## v0.1.2 — 2026-07-09
### Added
- **Mana cost on the drop-set tooltip** — hovering the drop-set button (and the
"Totems" macro action) shows the total mana to drop your four chosen totems.
- **Refund on the Totemic Recall tooltip** — shows the mana you'll get back,
computed live from the totems currently out (expired ones are excluded) and a
refund percentage that is learned from your real recall mana-gain (defaults to
25% until learned).
- **Totemic Mastery duration** — when the talent is skilled, helpful totems'
own-tracked timers get the +20% duration so they no longer read short.
- `/tb manadump` dev aid — writes the raw mana-cost scan (resolved rank, tooltip
lines, parsed cost) to `imports\totembar_manadump.txt`.
### Fixed
- Totem mana costs were read from **rank 1** instead of the highest rank you
actually cast, so the displayed mana was far too low. The scan now resolves
the highest known rank.
## v0.1.1 — 2026-07-09
### Added
- **Drop-set button** on the bar (right of the Totemic Recall button): one
left-click casts all four chosen totems (the same action as the "Totems"
macro, with the 2-second double-press guard).
- **Key bindings** — a **TotemBar** section in the Esc → Key Bindings menu:
Drop all totems, Totemic Recall, Toggle bar, Toggle options, Toggle key-bind
mode, Cast *element* totem (chosen, one per element), and — under per-element
sub-sections — a binding to cast **every individual totem** (Cast Searing
Totem, Cast Windfury Totem, …).
- **Hover-bind mode** (`/tb bind`, or the options panel's "Key bind mode"
button): hover any bar button or a flyout totem and press a key to bind it
(a button binds its action; a flyout totem binds that specific totem). ESC
over a button clears its key; ESC over empty space (or the options button)
exits. A "Key-Bind Mode ACTIVE" box is shown while active. The
currently-bound key is displayed on each button at all times (abbreviated,
e.g. `N7` for Num Pad 7). Bindings are saved by the game and persist.
### Notes
- Totemic Recall cast **deliberately** (the Recall button, or its keybinding)
is never guarded — only the Totems macro's built-in recall respects the 2s
double-press guard.
## v0.1.0 — 2026-07-09
Initial public release.
### Added
- Totem bar: four element buttons + a Totemic Recall button. Left-click an
element casts its chosen totem; right-click clears the slot. Hover an element
for a flyout of the element's other known totems (left-click to cast once,
right-click to set as the new default).
- One-press "Totems" macro (`TotemBar.recallAndCastAll()`) with a 2-second
double-press recall guard (a rapid second press won't recall the totems you
just dropped).
- Native cooldown swipes + OmniCC-style duration timers; out-of-range red tint
(buff-presence based); the Recall button pulses when a totem is out of range.
- Real in-game spell tooltips on the element buttons and the flyout.
- Minimap button (orbit-draggable; left-click = options, right-click = toggle
bar); pfUI-safe, with `/tb options` as a fallback.
- Options panel: lock bar, auto-recall, show bar, recall guard, cycle-reset
gap, UI size (scales the bar, anchored top-left), reset position, create
"Totems" macro, and per-setting tooltips. Adopts pfUI's look when pfUI is
installed, a clean Blizzard look otherwise.
- Assignment-receiver API (`TotemBar.ReceiveAssignment`) for a future raid
totem-assignment addon — see [`docs/API.md`](docs/API.md).