Commit Graph
80 Commits
Author SHA1 Message Date
Brues 6edd37a76f Require ClassicAPI v1.15.0
An out-of-date ClassicAPI did not degrade the addon, it decapitated it.
Utility.lua calls ev:RegisterUnitEvent at file scope (v1.15.0), so on an
older build that call raises and Lua abandons the rest of the chunk --
every definition below line 4118 of a 10040-line file, some 6000 lines,
silently never happens. What the user sees is the first one a common path
reaches: PLAYER_TARGET_CHANGED calling a nil ClearResistState, once per
target swap, forever.

The requirement check still said v1.12.1 (the positional
C_UnitAuras.UnitAura), so the affected client sailed through it and the
warning it did print promised only that "dispel-type conditionals will be
unavailable" -- describing a graceful degradation that was not happening.
The gate is now v1.15.0 and says the addon cannot finish loading, with the
installed version in the message the way the Nampower branch does it.
ClassicAPI.lua gains GetVersion() to decode CLASSIC_API_VERSION, keeping
the X*10000 + Y*100 + Z encoding inside that module, and its header notes
that the minimum has to rise with any ClassicAPI call adopted at file
scope -- that is the property that turns a version mismatch into a silent
half-load rather than a missing feature.

C_Macro.SetMacroDisplay also ships in v1.15.0, which retires the last
pre-ClassicAPI display path:

  useClassicAPIDisplay folds into ClassicAPIMacroDisplay. The two were
  always equal -- set together at load, cleared together in
  ReleaseDisplays -- and one of them is a handshake ClassicAPI reads, so
  a second name for the same state could only ever drift.

  TestForAllActiveActions loses the per-slot ACTIONBAR_SLOT_CHANGED
  fan-out. Publishing repaints every slot holding the macro through the
  client's own notifier; the fan-out was what ran when SetMacroDisplay
  was unavailable, and its one remaining reachable state was after
  DisableAddon, where ReleaseDisplays has already handed all 36 macros
  back and ClassicAPI repaints them itself.

The load-time feature detect stays, with a new reason: below the minimum
the addon is already broken, so a nil SetMacroDisplay now means ClassicAPI
is absent outright -- the case the requirement check warns about and then
keeps running.
2026-09-11 13:44:09 -05:00
Brues 5213bd5474 Migrate to ClassicAPI for macro display, auras and timing
Squash of the classicapi_next branch (10 commits). ClassicAPI is now a hard
requirement, and the Lua-side reimplementations it supersedes are gone:
net -1087 lines across 12 files.

Macro display: resolved macro actions are published through
C_Macro.SetMacroDisplay, so the client draws macro buttons and the
action-bar function overrides this addon used to install are removed.
Ownership is per macro -- ClassicAPI keeps the macros we never claim.

Auras and timing: ClassicAPI is the source of truth for non-player aura
timing via the positional C_UnitAuras.UnitAura, replacing the write-only
buff tracking tables and the overflow-slot fallback.

Cleanup: the hasPfUI76 flag and the pfUI 7.6 branches it gated, two
silently-shadowed code paths, and per-call allocations in the event and
publish paths (SPELL_CAST_EVENT merged). Packaging moves to
brues-code/packager@vCAPI.

Macro syntax: a clause may carry a leading run of [group] blocks sharing
one action, Blizzard-style -- groups are OR'd, first pass wins, and []
always passes. The ;-separated form is unchanged and mixes freely. @focus
clauses with no focus set now fail quietly instead of printing
"Invalid target" on the way past.
2026-09-11 00:30:36 -05:00
Brues 00caff0c9b Bump the README conditional count to match the wiki 2026-09-10 14:24:46 -05:00
Brues c710ccf832 Identify action-bar macros by slot/index; drop name restrictions
Resolve a slot's macro by its Blizzard macro index via ClassicAPI's
GetActionInfo instead of GetActionText -> name -> GetMacro, so action-bar
macros no longer depend on the macro name.

- Core.lua: GetAction uses GetActionInfo(slot) -> macro index ->
  GetMacroByIndex; falls back to the name path for SuperMacro (no index).
  ParseMacro split into a shared BuildMacro + ParseMacroByIndex (caches by
  index) + ParseMacro(name). Added GetMacroByIndex. The macro cache is now
  keyed by index for action-bar macros, so blank/duplicate names no longer
  collide. GetMacroIndexByName remains only for genuine name references
  ({MacroName}, /runmacro, /macrocheck).
- MacroErrorUI.lua: remove the now-obsolete macro-name warnings (duplicate,
  blank, spell-conflict, item-conflict) from both the live editor validation
  and the on-close report; delete the unused name-set helpers.
- README: update the known-issue to note only name-referenced macros need
  unique names.
2026-06-21 00:30:30 -05:00
Brues b28f4452b9 Make ClassicAPI a hard requirement; remove movement fallbacks
ClassicAPI is now required, not optional. The load-time requirement
check warns when it's missing (Core.lua), the same as Nampower/UnitXP,
and ClassicAPI-backed code calls the API directly with no fallbacks.

- ClassicAPI.lua: drop the HasUnitAuras/HasUnitSpeed/HasIsFalling
  capability gates and pcall hedging; wrappers call C_UnitAuras /
  GetUnitSpeed / IsFalling directly. Keep IsAvailable (used by the
  requirement check) and the version helpers.
- [moving]: ClassicAPI GetUnitSpeed is the only source. Removed the
  MonkeySpeed integration, the Nampower PlayerIsMoving branch, and the
  100 Hz position-tracking buffer in Core.lua's OnUpdate (with its
  POS_TRACK_INTERVAL constant and UnitPosition upvalue). Removed the
  now-dead speed==nil guards and WarnNoSpeedSource.
- README: ClassicAPI moved to Required; MonkeySpeed dropped from
  Supported Addons.
- docs/CLASSICAPI-TODO.md: record the mandatory/no-fallbacks policy.
2026-06-20 23:47:23 -05:00
Brues 59aad5b662 correct links 2026-06-20 23:11:38 -05:00
Brues 0ec082992d Add ClassicAPI (optional) to README requirements
List ClassicAPI in the Requirements table as Optional — it enables the
dispel-type conditionals ([magic], [curse], [disease], [poison],
[dispellable], [magicbuff]), which degrade gracefully without it.
2026-06-20 23:05:08 -05:00
Brues 86d16f507b Point README wiki links to brues-code fork
The wiki lives on the brues-code fork; update all 10 Full Documentation
links from jrc13245 to brues-code. SP_SwingTimer download links (a
separate project) are left untouched.
2026-06-20 23:02:09 -05:00
Jrc13245 ff73210d2d some debug 2026-03-09 15:37:51 -04:00
Jrc13245 da7c7ab437 update readme to point to wiki 2026-03-03 16:19:01 -05:00
Jrc13245 c8fce0e6db update readme 2026-03-02 20:01:45 -05:00
Torio 45d821d5c9 Fix non alphabetized entry for 'keydown' in README.md 2026-02-22 20:00:25 -05:00
Jrc13245 9811d9c894 update for nampower 2_41_0 and update readme 2026-02-22 20:00:21 -05:00
Jrc13245 bc193c24bc update overflow frame to disable default, rename frame for clarity, update readme for information 2026-02-21 11:39:27 -05:00
Jrc13245 59b48bf660 readme update 2026-02-18 18:04:09 -05:00
Torio 98ede46c58 Update pfUI repository link in README 2026-02-14 20:51:07 -05:00
Torio cb41cf80e1 Clarify swimming status for Druid only 2026-02-14 20:49:28 -05:00
Jrc13245 f2bce42acb fix some blizzard commands missed in the macro checker, updates for nampower 2.33 2026-02-11 17:22:08 -05:00
Jrc13245 c2c8af7d2d pfui 7_6 update compatibility and reformat readme 2026-02-08 17:42:16 -05:00
Jrc13245 50a29e0fee pfui nameplate tank list support for targeting conditional 2026-01-24 17:12:08 -05:00
Jrc13245 6199279272 range and position conditionals now accept unit counts 2026-01-24 16:00:40 -05:00
Jrc13245 ce4e4eb95f clean debug and add movingand nomoving conditionals that use monkeyspeed 2026-01-24 15:39:08 -05:00
Jrc13245 612873260d add gcd conditional and firstaction slashcommand and fix stopmacro 2026-01-15 16:16:49 -05:00
Jrc13245 649586c552 fix stopmacro and implement skipmacro 2026-01-15 14:50:55 -05:00
Jrc13245 167fd8e079 fix buffcount conditionals and update readme 2026-01-12 17:20:34 -05:00
Jrc13245 7d0dec2a2b cursive mouseover support, applymain and applyoff slashcommands, nampower feature update with incominghit, lastswing, buffcap, debuffcap conditionals 2026-01-12 17:13:40 -05:00
Jrc13245 438c6d0f23 update readme with pfui fork 2026-01-10 12:03:54 -05:00
Jrc13245 728cf92ed2 fix debuff timer checks, nodebuff existence checks with ranked spells, and split type spells having both types immune checked for cast, improve readme 2026-01-09 08:00:08 -05:00
Jrc13245 aaef3b82d8 update readme 2026-01-05 15:58:58 -05:00
Jrc13245 973595d08a feature name conditional and clean up readme 2026-01-05 15:37:13 -05:00
Jrc13245 199520ced4 fix 2026-01-04 19:06:51 -05:00
Jrc13245 96ae51a228 ensure all conditionals are noable 2026-01-03 17:20:37 -05:00
Jrc13245 f901cfed80 update readme 2026-01-03 16:57:58 -05:00
Jrc13245 339ad18e75 remaster readme, fix cursive conditional not activation for 0 or not up = less than 1 2026-01-03 16:49:25 -05:00
Jrc13245 b69c832ceb update readme 2026-01-03 16:33:07 -05:00
Jrc13245 a0c1564fad update readme 2026-01-03 16:30:57 -05:00
Jrc13245 64c0d9949d re add trinket and ring slashcommands and implement cursive support 2026-01-02 23:37:27 -05:00
Jrc13245 003d230e52 revert multi target tracker 2026-01-02 23:16:57 -05:00
Jrc13245 fe6982ddf6 add equip11 equip12 equip13 and equip14 commands for trinket swapping and ring swapping as theres two choice of slots 2026-01-02 18:45:47 -05:00
Jrc13245 6af06f1ee3 feature addition multi target debuff tracker 2026-01-02 15:52:55 -05:00
Jrc13245 83cdecdb29 update 2025-12-28 09:37:41 -05:00
Jrc13245 4af46934c6 update readme 2025-12-28 08:49:24 -05:00
Jrc13245 723cbb0642 update debuff duration systems 2025-12-28 08:32:06 -05:00
Jrc13245 145ed92f77 multiscan targeting based on pepopos cursive 2025-12-26 14:57:54 -05:00
Jrc13245 167ab96d34 consolidate some cc types 2025-12-24 11:13:40 -05:00
Jrc13245 473e7f8741 crowd control conditionals 2025-12-24 11:01:57 -05:00
Jrc13245 a619aa4d30 expand group party raid conditionals slightly 2025-12-22 15:50:56 -05:00
Jrc13245 426971e117 notarget and hastarget conditionals 2025-12-14 13:19:21 -05:00
Jrc13245 b36416f38a revert & / noable multi usage 2025-12-08 14:17:56 -05:00
Jrc13245 0f4392b590 update how & and / work in conditionals to be more user friendly 2025-12-08 10:46:56 -05:00