File Details
v0.2.0-bcc
- R
- May 26, 2026
- 126.50 KB
- 2
- 2.5.4
- Classic TBC
File Name
Quiver-v0.2.0-bcc.zip
Supported Versions
- 2.5.4
Quiver
v0.2.0 (2026-05-26)
Full Changelog Previous Releases
- Version 0.2.0: macro bindings, config overhaul, feed pet fixes
Sphere click bindings now support full macros — type any multi-line
macro body into the settings panel, no macro slots used. Supports all
standard macro features: conditionals, focus targets, cancel-aura, etc.
Settings panel rebuilt with native scrollable spell lists (mouse wheel
supported) showing every known spell dynamically. No more missing spells
from a fixed whitelist.
Sphere plays a ripple animation on every click.
Fixed food picker icons disappearing on click (PushedTexture was not
updated to match the food icon). Fixed picker buttons getting stuck in
a pressed visual state after selection. Fixed backdrop API error on
Anniversary client. - Pet food: pet-buff items first, disable food button when no pet active
- Add petBuffIDs to PetFoods.lua (Kibler's Bits 33874, Sporeling Snack
27656); these items bypass diet filtering and always appear first in
the food picker regardless of pet type. - GetSuitableFood sorts pet-buff items before regular food (numeric
priority sort avoids Lua boolean-return edge cases). - Food orbit button dims to 40% and blocks picker when no pet is active.
- Pet:UpdateState() drives food button state so it reacts immediately
on Call/Dismiss Pet without UNIT_PET timing race. - Fix RebuildFoodPicker count-disappearing bug: "not in top-5" restore
branch no longer clears the count set by RefreshFoodPicker's bag scan. - Store foodID and foodIsBuff alongside food name in menuSelections for
reliable icon restoration and correct macro (direct /use vs Feed Pet). - BAG_UPDATE → BAG_UPDATE_DELAYED so count updates after slots settle.
- Add petBuffIDs to PetFoods.lua (Kibler's Bits 33874, Sporeling Snack
- Update README: add food/feed pet button, five orbit buttons
- Pet food system: itemID database, select/right-click feed, live count badge
- Add Data/PetFoods.lua: hardcoded itemID→diet lookup (Meat/Fish/Bread/
Cheese/Fruit/Fungus) covering Vanilla+TBC era items, sourced from
FeedOMatic with attribution. Excludes item 6889 (Small Egg — bird egg,
rejected by pets in TBC Classic). - Rewrite GetSuitableFood to use PetFoods:IsPetFood() instead of the
unreliable itemSubType heuristic (GetItemInfo returns "Food & Drink"
for all food, never the diet category name). - Food orbit button: select food via left-click in picker, right-click
orbit button quick-feeds. Count badge shows stack count of selected food. - Count badge updates via BAG_UPDATE_DELAYED (fires after all bag slots
settle) using a direct bag scan instead of the top-5 list, so feeding
decrements correctly and looting/buying increments correctly. - Food picker expands rightward from food button (was leftward, caused
overlap with traps button at same y-level). - Remove all debug prints from Pet.lua and Menus.lua.
- Add Data/PetFoods.lua: hardcoded itemID→diet lookup (Meat/Fish/Bread/
- Fix food buttons intercepting clicks when hidden: EnableMouse(false) at alpha 0
- Add verbose bag scan debug to diagnose food filter mismatch
- Move food orbit button to 330deg (mirror of traps at 210deg)
- Fix debug prints: use print() not Quiver:Print()
- Move food picker to top-level orbit button (300deg), add debug prints
- Fix bag scan: use C_Container API for TBC Classic Anniversary client
- Feed Pet: bag-scanning food picker with diet filter, count badges, top 5 by item level
- Disable OmniCC/cooldown addons on trap menu cooldown frames
- Cooldown text: hardcode FRIZQT__ 12pt instead of NumberFontNormal face
- Fix cooldown font: use (fn()) to truncate multi-return, both buttons now 11pt
- Cooldown display: desaturate icon, fix text alignment, bump trigger font to 11pt
- Fix cooldown text: restore OUTLINE flag, use select() to avoid multi-return drop
- Consistent 10pt font for cooldown countdown text on all buttons
- Persist quick-cast selections across reloads
- Fix GitHub releases permission for packager
- Exclude .mcp.json and .claude from release package
- Add CurseForge release pipeline
BigWigs packager action triggers on version tags, uploads to CurseForge
and creates a GitHub release. .pkgmeta excludes dev files from the package. - Trap cooldown on trigger button, fix decimal overflow, add README
- Mirror trap cooldown (dim + countdown) onto the orbit trigger button
- Run cd ticker always, not just when trap menu is open
- Use NumberFontNormalSmall so "9.3" fits in the 26px button
- Add README
- Fix trap cooldown display: remove invalid TBC API calls, add dark icon tint
SetDrawEdge/SetSwipeColor may not exist in TBC Classic and were silently
breaking the Cooldown frame. Removed them; the bare Cooldown frame should
now render its sweep. Added a dark texture overlay over each trap icon so
the on-cooldown state is clearly visible regardless of sweep support. - Trap cooldown sweep + live countdown text on menu icons
- Remove non-existent CooldownFrameTemplate; use plain Cooldown frame type
- Add FontString overlay showing remaining seconds (one decimal < 10s)
- Refresh cooldown display when the trap menu is opened
- 0.1s OnUpdate ticker keeps the countdown live while the menu is visible
- Fix: move UpdateTriggerReadiness before PopulateMenu so local is in scope
Lua resolves local names at compile time; declaring the function after
its call site caused the 'attempt to call global' error on load. - Trap cooldowns, clarify click behavior, fix immediate-cast on aspects/tracking
Menu item buttons use type2 (right-click cast only); left-click selects
for quick-cast without immediately firing the spell. This fixes aspects
and tracking casting on left-click unintentionally.
Trap menu buttons get a Cooldown frame overlay driven by SPELL_UPDATE_COOLDOWN.
Menu item tooltips now show "Left-click: select / Right-click: cast now". - Add quick-cast readiness indicator on trigger buttons
Trigger buttons dim to 60% alpha and show "no quick-cast set" in the
tooltip when no selection has been made. Full alpha and the selected
spell name appear in the tooltip once a left-click selection is stored. - Defer SetAttribute for quick-cast selection to next OnUpdate frame
Calling SetAttribute on a secure trigger button from PostClick immediately
after a secure spell cast fires can be silently blocked in TBC Classic.
Writing to pendingSelectionMenu and applying it in the next OnUpdate frame
sidesteps this restriction. - Restore right-click menu behavior: cast without closing or changing selection
Left-click: casts spell, selects it for quick-cast, closes menu.
Right-click: casts spell only, menu stays open, selection unchanged.
Both clicks use type/type2 so casting works in combat lockdown. - Fix menu buttons: set type2/macrotext2 so right-click also casts
Bare 'type' is left-click only; right-click needs explicit type2.
Both left and right click on menu items now cast and select. - Fix menu buttons casting in combat: use type/macrotext (any-click) not type2
Clicking a menu button now casts the spell on any button press and also
selects it for quick-cast via the trigger button's right-click. - Implement quick-cast selection for all menus (issue #17)
Left-click a menu button to select it as the active choice for that
section — trigger button icon updates to match. Right-click the trigger
button to cast the selection instantly without opening the menu.
Right-click a menu button to cast it directly. Selection is validated
on rebuild (clears if spell becomes unknown). Trigger buttons are now
SecureActionButtonTemplate so right-click cast works in combat. - Fix mana API: UnitPower/UnitPowerMax(unit, 0) and UNIT_POWER_UPDATE event
- Add low mana blue pulse and change no-aspect pulse to maroon (issues #10, #19)
New Mana module tracks player mana via UNIT_MANA + 2s poll. Sphere now
pulses maroon when no aspect is active, blue when mana < 30% and not on
Viper. Blue takes priority over maroon. Stops pulsing once conditions clear. - Revert sphere texture and vertex colors to original
- Darker sphere: deep orb texture + stronger aspect colour overlay
- Replace sphere texture with 3D-shaded orb (specular, rim, engraved rings)
- Remove /quiverdebug diagnostic command
- Poll aspect state every second to catch removal missed by UNIT_AURA
In TBC Classic Anniversary, UNIT_AURA does not reliably fire when an
aspect is cancelled. A 1s OnUpdate ticker ensures the sphere responds
within a second regardless of which events fire. - Revert aspect detection to UnitBuff — aspects are buffs in TBC Anniversary
Debug confirmed GetShapeshiftForm()=0 and GetNumShapeshiftForms()=0.
UnitBuff correctly returns 'Aspect of the Hawk'. Shapeshift approach
was wrong for this server version. - Add /quiverdebug command for aspect detection diagnostics
- Fix aspect detection: use shapeshift form API instead of UnitBuff
In TBC Classic, aspects are shapeshift forms, not aura buffs.
UnitBuff never returned aspect names so Aspects.current was always nil,
causing the pulse to run continuously. Switch to GetShapeshiftForm() +
GetShapeshiftFormInfo() and UPDATE_SHAPESHIFT_FORM event. - Fix menus blocked during combat lockdown
Show()/Hide() on SecureActionButtonTemplate frames is protected and
fails during combat. Pre-position all menu buttons in PopulateMenu
(which only runs outside combat) and use SetAlpha() in Toggle/HideAll
instead — alpha is not a protected operation and works in combat. - Fix aspect pulse: use dedicated frame for OnUpdate, increase pulse intensity
SecureActionButtonTemplate can block OnUpdate in TBC Classic. A plain
Frame is used instead. Pulse is now white at 0-0.7 alpha for a clearly
visible glow effect. - Add aspect reminder pulse when no aspect is active (issue #19)
Sphere overlay pulses silver/white at a ~2-second cycle via OnUpdate +
math.sin when Aspects.current is nil. Stops immediately and shows the
aspect tint color once an aspect is detected. - Fall back to entry icon for trigger button when GetSpellInfo returns no icon
- Trim sphere spell list to relevant utility/offensive spells, sorted alphabetically
- Show UIErrorsFrame hint when sphere clicked with no spell configured
- Block middle and right clicks from catching left-click spell via type3/type2 no-ops
- Move sphere drag to middle mouse button
- Simplify drag: OnMouseDown StartMoving + ResetCursor, drop OnUpdate
- Fix drag: deferred StartMoving via OnUpdate threshold, drop RegisterForDrag
- Use OnDragStart+Alt check for drag so cursor only changes when actually dragging
- Add Alt+Left-click drag hint to sphere tooltip
- Change sphere drag to Alt+LeftClick; suppress secure cast when Alt held
- Fix sphere click: CVar RegisterForClicks, MiddleButton drag, bare type attributes
- Fix UpdateOnClick called before self.frame assigned in Initialize
- Fix sphere click attributes: use *type1/*type2 wildcard prefix for SecureActionButtonTemplate
- Migrate leftClick/rightClick saved variables from old table schema to string
- Simplify sphere click config: spell dropdowns, fix window sizing
Replace free-text + type-dropdown with a single spell dropdown per
binding, populated from the player's known spells. Leftclick/rightclick
DB schema simplified to a plain spell name string. Config window sized
to fit its contents. - Add configurable sphere click actions with settings panel
Left-click and right-click on the sphere can now be bound to any spell or
macro text via a config panel opened with Alt+Right-click. Sphere converted
to SecureActionButtonTemplate so click actions cast in combat without taint.
Hover tooltip shows the configured bindings and the settings shortcut. - Add Beast Training to pet menu (#15)
- Fix spell button casting via SecureActionButtonTemplate
Rewrote menu button system to use SecureActionButtonTemplate with
macro-based casting (/cast SpellName). Key fixes:- Scan spellbook to build a known-spells cache (GetSpellInfo searches
the full DB in TBC, not just the player's book) - Alias "Call Pet" → actual "Call <PetName>" entry from spellbook
- Use DIALOG strata so buttons aren't blocked by ElvUI frames
- Match ActionButtonUseKeyDown CVar for RegisterForClicks so clicks
fire at the right time (was always registering LeftButtonUp, breaking
keydown-mode users) - Buttons are children of UIParent for secure frame ancestry
- Guard RebuildAll with InCombatLockdown; rebuild on PLAYER_REGEN_ENABLED
- Scan spellbook to build a known-spells cache (GetSpellInfo searches
- Fix aspect detection/cast and API correctness issues
- Aspects are regular buffs in TBC Anniversary, not shapeshift forms;
replace GetShapeshiftFormInfo loop with UnitBuff index iteration - Switch aspect detection event from UPDATE_SHAPESHIFT_FORM to UNIT_AURA
- Aspects:Cast reverted to CastSpellByName (CastShapeshiftForm returned 0 forms)
- Menu action buttons now rebuild on PLAYER_ENTERING_WORLD so spell icons
populate correctly after the spell book is available - Remove bogus SavedVariablesPerCharacter QuiverCharDB from toc;
AceDB-3.0 stores char scope inside QuiverDB - Strip debug prints, remove unused spellID fields from ASPECTS table
- Aspects are regular buffs in TBC Anniversary, not shapeshift forms;
- Visual overhaul: sphere texture, spell icons, lock placeholder, pet ring
- Replace minimap background with custom sphere.tga (128x128 with specular shading)
- Replace ammo dot indicator with ring.tga border around sphere for pet happiness
- Trigger buttons now show spell icon via GetSpellInfo; fallback to empty slot
- Lock icon (lock.tga) shown on trigger buttons when no spells are learned yet
- Tooltip on locked buttons: "No spells learned yet"
- Remove stings radial menu (sting is rotation, not a QoL menu)
- Pet menu entries now use spell names for IsSpellKnown filtering
- Menu buttons fetch spell icons from GetSpellInfo in PopulateMenu
- Trigger button spacing: radius = SPHERE_SIZE/2 + BTN_SIZE/2 + 6
- Get addon loading and functional in-game
- Fix .toc load order: Quiver.lua must precede all other files
- Remove AceDB-3.0 from NewAddon mixin (not embeddable)
- Merge charDB into single AceDB using char scope
- Fix menu anchoring: each menu now anchors to its trigger button
- Left-side menus (Traps, Tracking) expand leftward
- Filter menu buttons to known spells via GetSpellInfo
- Rebuild menus on SPELLS_CHANGED for leveling compatibility
- Fix Tracking.lua charDB ref -> db.char
- Replace missing Media textures with built-in WoW textures
- Copy Ace3 libs from existing installed addons
- Add wow-api-mcp project config and update CLAUDE.md
- Initial scaffold for Quiver hunter addon
Necrosis-style sphere UI for TBC Anniversary hunters. Skeleton
structure for all core modules: aspects, ammo, pet, stings, traps,
tracking. Sphere and menu UI stubs ready for full implementation.