Description
Super Swing Timer
Melee, ranged, and current-target enemy swing timer for World of Warcraft Classic and TBC (including Anniversary Edition).
Super Swing Timer tracks white-hit swing timers across main hand, off hand, ranged attacks, and your current hostile target. It is tuned for Classic/TBC mechanics such as next-melee-attack abilities, dual-wield desync, parry haste, extra-attack suppression, haste rescaling, druid form resets with a lightweight Maul queue tint path, warrior Shield Block duration timing, rogue Sinister Strike end-window timing, a Rogue energy-tick helper plus Slice and Dice upkeep bar, ret paladin seal-breakpoint timing, shaman weave breakpoints, and current-target enemy swing detection. All melee classes now have target debuff duration bars (Deep Wounds, Mangle/Rip/Rake, Rupture, Serpent Sting, Judgement, Seal Vengeance, Flame Shock) with small spell icons equal to bar height, gold glow in the last 4 seconds, and dynamic stacking — buff/CD icons always sit above all visible debuff bars. The current timing model keeps swing motion on a GetTime()-aligned precise clock, applies cached latency only to predictive windows such as Auto Shot safe-stop timing, rogue Sinister Strike queue guidance, and weave clip math, keeps Maul, Heroic Strike, Cleave, and Raptor Strike on separate next-attack paths, and avoids mixed clock-domain drift.
Dual-client CLEU architecture: Classic Era COMBAT_LOG_EVENT payloads use numeric spell IDs; TBC Anniversary sends localized spell names (strings) instead. All swing-affecting spell lookup tables (RESET_SWING_SPELLS, NO_RESET_SWING_SPELLS, PAUSE_SWING_SPELLS, RESET_RANGED_SWING_SPELLS) populate both key types at init time via ns.GetSpellInfo(id) so swing resets, pauses, ranged resets, and NMA queue detection work identically on both clients.
Current version: v0.1.8. Status: release-ready. Buff icon positioning fixed — icons no longer overlap the bar when debuff duration bars appear/disappear, with dynamic stacking above all visible bars and an 8px gap. Hunter MH bar no longer flickers during ranged-only auto shot. DB schema v54.
At a glance
| Area | What it covers |
|---|---|
| Hunter | |
| Warrior | Heroic Strike and Cleave queue tints with yellow/green MH bar coloring, Slam pause/extend timing with a live Slam cast bar above the MH bar, a Shield Block duration bar above the MH stack with configurable height and color, an Execute-phase EXEC badge on the rage bar, and next-melee queue cancellation support |
| Druid | Feral MH timing, form reset support, and a lightweight Maul queue tint path without extra helper-bar bloat |
| Paladin | Aura-aware seal breakpoint logic with a proportional-width red twist zone (right-anchored, matching Rogue Sinister Strike pattern) for Seal of Command, Blood, and Martyr timing, plus a GCD-aware reseal marker. Buff/CD icon group above the MH bar tracks Avenging Wrath, Divine Shield, Hammer of Justice, Blessing of Protection, Holy Wrath, Lay on Hands, and racials with gold glow in the last 4 seconds |
| Shaman | Lightning Bolt / Chain Lightning / Healing Wave / Lesser Healing Wave / Chain Heal weave markers with per-family toggles (auto-resolving to the highest rank you currently know per family), plus a red moving cast spark and cast-following breakpoint indicators that travel toward bar end while you cast, a 6px Flame Shock target-duration bar above MH (checkbox-toggleable), and a Lightning Shield / Water Shield 3-charge tracker with improved aura-refresh wiring plus configurable left-side gap spacing (checkbox-toggleable) |
| UI | Collapsible config sections, top Quick Controls columns for Visibility + Key Colors with a little extra breathing room under the titles, compact non-overlapping quick rows that now push later sections down automatically, slimmer 15px main bars with an 8px OH default, a 3-4px Rogue Slice and Dice bar above MH, a single 4px Rogue energy-tick helper to the left of MH, a scrolling full-preview bar-texture picker, mouse-wheel scrolling in /sst, class-color palettes, border/background controls, lock/unlock drag support, a red default enemy bar toggle, and the Test Bars preview |
CurseForge pages are easiest to read when they stick to standard Markdown tables, lists, inline code, and screenshots. This README avoids relying on Mermaid diagrams so the same content stays portable across CurseForge and GitHub. If you want diagrams, render them to PNG or SVG and embed the image instead of depending on a live diagram renderer.
Key features
- All melee classes: Warrior, Rogue, Paladin, Shaman, Druid, and Hunter
- Current-target enemy swing bar that tracks your selected hostile target from
PLAYER_TARGET_CHANGED,UnitGUID("target"),UnitAttackSpeed("target"), and hostileSWING_DAMAGE/SWING_MISSEDcombat-log events, while ignoring off-hand hits so the single enemy bar stays readable - Hunter auto shot with
GetSpellCooldown(75)+ ranged-speed sync for the ranged timer, plus ranged-haste-aware fallback resync whenUnitRangedDamage()is temporarily unavailable; while the cooldown API is active, live ranged resync also reuses the cooldown start anchor instead of only stretching duration mid-cycle; the addon now also cross-checks real Hunter auto-repeat state through Blizzard's current spell API before lettingSPELL_UPDATE_COOLDOWNseed a new cycle, treats mounted Hunters as not auto-repeating, blocks cooldown re-anchors while the bar is pinned in the red moving window, and no longer hard-resets the current ranged timer on transient stop events; the shared swing clock stays on aGetTime()-alignedGetTimePreciseSec()/GetTime()path while cached latency is applied only to predictive windows, the Hunter MH bar is anchored to the ranged stack and only appears for a live melee swing or a queued Raptor Strike, queued Raptor now uses its own yellow next-attack tint without sharing Warrior or Druid queue state, melee handoffs no longer leave the ranged bar stuck full red after the last ranged cycle expires, and the dedicated 13px hunter cast bar beneath ranged now resolves live Steady Shot / Aimed Shot casts through a Classic-safeUnitCastingInfo()spell-name-first path while tinting those casts by whether they still fit before the next Auto Shot and shading the final latency slice at the end of the bar. A 4-state Range Helper (melee/sweet spot/ranged/OOR) with configurable per-state colors sits next to the ranged stack, with an aspect/stance icon to its left showing the active Aspect. An adaptive 25x25 CD/buff icon group above the ranged bar tracks Bestial Wrath, Rapid Fire, The Beast Within, Quick Shots, and Rapid Killing with countdown dimming. A 0.1srangedTimerHoldEndholdover prevents MH bar flicker during ranged-only cycling. The hunter cast bar uses its own independent default color (light blue) separate from the ranged bar fill, and defaults to 13px height - Off-hand timing now requires a real off-hand weapon speed instead of fabricating hidden OH cycles, and the OH frame is reused cleanly across equipment swaps
- Dual-wield tracking with independent MH and OH timers
- NMA detection for Heroic Strike, Cleave, Maul, and Raptor Strike
- Warrior and Druid queue colors for Heroic Strike, Cleave, and Maul so the MH bar clearly shows which special is queued, while the spark remains on its own manual/default color for readability and Maul queue state stays isolated from the Warrior queue-cleanup path
- Warrior Shield Block now has its own slim duration bar above the MH stack, and Druid Ravage now gets an opener-ready amber cue when Cat Form Ravage is actually usable on the current target
- Haste rescaling when weapon speed changes mid-swing, while keeping live swing anchors on the addon's aligned precise timer path so bars do not lead early from alternate CLEU clock remapping
- Parry haste handling using the standard Classic 40% reduction with a 20% remaining-time floor
- Extra attack suppression for Sword Spec and Windfury
- Druid form reset handling
- Ret Paladin seal breakpoint line that shows the actual strike-edge end marker plus a GCD/swing-aware reseal point on twist seals, with the full seal list from
docs/spellIds.mdcovered by aura-name fallback and the breakpoint lines clamped above the bar texture - Shaman weave assist for Lightning Bolt, Chain Lightning, Healing Wave, Lesser Healing Wave, and Chain Heal breakpoints, with color-coded family timing, highest-known-rank spell resolution per family (so leveling profiles do not default to rank 1), a red moving cast spark that starts from the live cast-start point and advances with cast progress toward bar end, cast-following upper/lower indicators during active casts, Classic-safe spell-name resolution through the shared spell-info wrapper, stronger on-demand weave-overlay reinitialization if bars were rebuilt, clean hide/reset behavior when Minimal Mode, the weave toggle, or the cast state disables it, and a thin 6px Flame Shock target-duration bar above MH for player-applied dots
- Shaman Lightning Shield / Water Shield helper: 3 thin charge rectangles to the left of MH that refresh immediately on player aura changes, use hardened spell-ID plus aura-name fallback matching for better Classic/TBC payload compatibility, recognize Water Shield / Mana Shield alias paths, stay class-colored (with Water Shield override) from the Quick Controls swatch/toggle path, and now support an Appearance slider for left-gap spacing
- Shaman Quick Controls now expose explicit checkboxes for both
Lightning Shield TrackerandFlame Shock Bar, so each helper can be disabled independently without touching weave settings - Optional class colors for MH / OH / ranged bar fills, with the spark color kept independent so queue tints and white/manual spark colors stay readable, turning class colors off restoring the saved manual bar colors instead of leaving the class tint behind, and live bar text now flipping to black with a white outlined backing while class colors are enabled for better readability on bright fills
- Rogue latency-adjusted main-hand end window that turns red on the final slice of the MH bar so Combat Rogues can press Sinister Strike into the swing landing and more reliably fire it immediately after the main-hand hit, while the spark stays layered above that red slice for readability, the default alpha stays a little softer for clearer bar reading, and the helper now falls back to the live MH weapon speed whenever the MH bar itself is visible
- Rogue Slice and Dice helper: a slim duration bar above the MH bar that uses the shared bar texture path, matches MH width, tracks the active Slice and Dice buff in real time from a Classic-safe helpful-aura read (
UnitBuff/UnitAurasignature tolerant), rechecks its aura state on a short throttle for smoother live updates, and stays hidden whenever the buff is down or the MH bar itself is hidden - Rogue energy-tick helper: one slim 4px vertical bar to the left of the MH bar that fills on the Classic/TBC 2-second energy-tick cadence, re-syncs from likely natural energy gains, and keeps the swing timer stack cleaner than the earlier paired test helper
- Customizable bars, separate MH/OH and ranged textures, glow/opaque indicator mode, compact spark settings with a 3px default spark width, a slight forward-biased pixel-snapped spark edge so the thin spark reads closer to the live fill edge, alpha-enabled color pickers, configurable bar background tint and opacity, adjustable bar border color and thickness, widened drag hitboxes plus real drag handlers for easier bar movement, reset-to-default position restore, visibility, lock state, and the Test Bars preview via
/sst,/super, or/superswingtimer - When unlocked for setup, left-click still drags bars while right-click now preserves camera mouselook behavior over the bars so viewpoint control does not get blocked during adjustment.
- Toggle MH / OH / ranged / enemy bars, the Rogue Sinister Strike cue, the Rogue Slice and Dice bar, the Rogue Energy Tick checkbox, plus the shaman weave helper and its family controls from the config panel or Blizzard's Interface Options → AddOns list
- Collapse or expand the major config sections so the
/sstpanel stays easier to scan while you tune textures, colors, timing, and weave settings, with stable row groups that keep the panel rendering cleanly - Dual-client CLEU engine: Classic Era combat-log events use numeric spell IDs; TBC Anniversary sends localized spell names. All swing-affecting spell lookup tables (
RESET_SWING_SPELLS,NO_RESET_SWING_SPELLS,PAUSE_SWING_SPELLS,RESET_RANGED_SWING_SPELLS, plus next-melee-attack sets for Heroic Strike, Cleave, Maul, Raptor Strike, Paladin Judgement) populate both key types at init time vians.GetSpellInfo(id), so swing resets, pauses, ranged resets, and queue detection work correctly on both clients without runtime branches. - Texture picker: the MH/OH and ranged texture rows now open a scrolling full-preview list that keeps each texture stretched behind its label, stays focused on bar-style textures from Blizzard, WeakAuras, and installed LibSharedMedia media packs, and keeps the spark / shaman weave spark rows on the dedicated thumbnail browser seeded with the WeakAuras
Square_FullWhitepreset surfaced asNormal.
Timing model
| Situation | What you see | Why it matters |
|---|---|---|
| Auto Shot / Multi-Shot / Steady Shot | A dedicated hunter cast bar under the ranged timer: Auto Shot locks to the same end-of-cycle hidden cast window as the ranged red/green zone, BC Classic instant Multi-Shot shots use a short stored shot window when no live cast data is available, and real Steady Shot / Aimed Shot casts now use a Classic-safe UnitCastingInfo() lookup, safe/unsafe tinting (accounting for the 0.5s TBC Steady Shot grace period where Auto Shot can fire during the last 0.5s without clipping), and a latency slice on the trailing edge |
Shows the stop-to-fire window near cycle end without Auto Shot bounce, keeps instant Multi-Shot feedback visible on Classic/TBC clients that do not expose a normal live cast, and gives Hunters a live read on whether a cast is likely to clip the next Auto Shot (now with correct TBC grace-period timing) plus how much end-of-cast latency cushion remains |
| Rogue Sinister Strike | A red tail slice on the MH bar that scales with latency and uses a softer default alpha | Highlights the best press-into-the-landing window so Sinister Strike can fire immediately after the main-hand hit more reliably without overpowering the spark/readout |
| Rogue Slice and Dice | A slim bar above the MH frame that uses the main bar width and tracks the buff's remaining time | Gives Rogues a clean real-time read on SnD upkeep without cluttering the main swing bar |
| Rogue energy tick | One 4px vertical bar to the left of the MH bar that shows the next likely energy pulse cadence | Gives Rogues a quick read on the next energy tick without adding extra clutter or touching the authoritative swing timers |
| Paladin seal-twist zone | A proportional-width red fill zone anchored to the right end of the MH bar for Seal of Command, Blood, and Martyr, with the zone width matching (0.4s + latency) / swingDuration * barWidth, plus a separate thin GCD/swing-aware reseal marker line |
Makes the safe twist-before-landing period immediately visible as a red right-hand tail (same visual pattern as the Rogue Sinister Strike cue), with the reseal marker showing where to press the next seal |
| Paladin buff/CD icons | 25x25 adaptive icon group above the MH bar tracking Avenging Wrath, Divine Shield, Hammer of Justice, Blessing of Protection, Holy Wrath, Lay on Hands, and racials (Blood Fury, Berserking, Stoneform, Shadowmeld, War Stomp, Gift of the Naaru, Escape Artist, Will of the Forsaken, Perception, Arcane Torrent) | Icons glow gold with a pulsing ADD blend effect in the last 4 seconds, show countdown text, and are configurable via Quick Controls toggle + Buff Icon Size slider |
| Queued next-melee tint | MH bar tint changes to show the queued next-melee attack while the spark keeps its manual/default tint | Shows the queued state and helps you cancel or preserve rage before the hit lands without losing the spark contrast |
| Slam | MH bar pauses and resumes instead of behaving like a next-melee queue ability | Preserves Slam's unique pause/extend mechanic while keeping the raw swing anchor stable through the pause/extend step |
| Shaman weave | A red cast spark plus upper/lower indicators now move with cast progress from cast start toward the end of the bar during active weave casts | Gives an immediate visual of where your cast currently sits in the swing timeline instead of looking static at one breakpoint |
| Hunter bar-jump prevention | 0.1s rangedTimerHoldEnd holdover keeps the ranged timer from zeroing during ranged-only cycling |
Prevents the MH bar from flickering when auto-shot transitions between cycles without a real melee swing, keeping the display stable |
Texture sources
| Source | Used for | Notes |
|---|---|---|
| Blizzard | Bar textures | Built-in fallback skins are always available in the scrolling bar-texture picker |
| SharedMedia | Bar / ranged textures | Any installed LibSharedMedia statusbar pack, including SharedMedia-Blizzard when present, shows up automatically |
| WeakAuras media | Spark and weave thumbnail browsers | Square_FullWhite is surfaced as Normal in the picker |
| Installed addon packs | Extra texture catalogs | Bar-style textures are auto-discovered when the pack exposes them |
Installation
Download the latest release ZIP from GitHub Releases
Extract the archive into your AddOns folder so the final path looks like:
World of Warcraft\_classic_\Interface\AddOns\SuperSwingTimer\Log in and play
Usage
Opening /sst previews the bars for setup, but the live gameplay bars remain combat-driven and stay hidden out of combat unless you are using preview/test mode. Hidden or idle live bars reset to an empty state so entering combat no longer shows stale full bars from the previous cycle. The ranged bar for Hunters also appears when auto-shot mode starts, and the smaller hunter cast bar appears beneath it for the fixed Auto Shot hidden cast window (ns.CAST_WINDOW plus cached latency) instead of the full ranged cooldown cycle; BC Classic instant Multi-Shot shots now seed that helper with a short stored shot window when the client does not expose a live cast, while real Steady Shot / Aimed Shot casts use a Classic-safe UnitCastingInfo() path plus a trailing latency slice that scales with the current cached latency and cast duration.
| Bar | Default | Meaning |
|---|---|---|
| Ranged | Black | Auto Shot cooldown |
| Ranged | Green by default | Safe stop before the cast-window breakpoint (configurable) |
| Ranged | Red by default | Cast window - you are still moving (configurable) |
| Enemy | Red | Current hostile target main-hand swing cooldown |
| Hunter Cast | Light blue (independent) | Auto Shot hidden-window bar, stored short Multi-Shot shot bar, or real Steady Shot / Aimed Shot cast progress beneath the ranged timer, with a trailing latency slice. Defaults to its own hunterCastBar color (0.35/0.65/0.95) independent from the ranged bar fill |
| Hunter Range Helper | Green / Yellow / Blue / Gray | 4-state distance strip: green melee, yellow sweet spot, blue ranged, gray out of range |
| Main Hand | Black | MH swing cooldown |
| Off Hand | Black | OH swing cooldown |
The main commands are /sst, /super, and /superswingtimer. /swang remains as a legacy alias.
Class support
| Class | Bars | Special |
|---|---|---|
| Hunter | Ranged + MH + cast bar + Range Helper + CD icons | Auto Shot cooldown sync, a ranged-linked MH bar that only appears for live melee / queued Raptor Strike, yellow Raptor queue tint, movement clipping protection with green/red safe-stop feedback, real auto-repeat gating for cleaner cycle starts, a dedicated hunter helper bar for the hidden Auto Shot window plus real Steady Shot / Aimed Shot casts with live no-clip feedback and a latency end slice, a 4-state Range Helper strip (melee/sweet spot/ranged/OOR), an aspect/stance icon, a Rapid Fire CD bar toggle, and an adaptive 25x25 CD/buff icon group with countdown dimming. Cast bar has its own independent color (default light blue) and default height 13px. |
| Warrior | MH + OH + Shield Block + CD icons + debuff bars | Heroic Strike, Cleave, Shield Block timing, Slam handling, an Overpower proc glow on the MH bar, a Deep Wounds target debuff bar (6px, orange-red, above MH), a Sunder Armor debuff bar (6px, tan, above MH), and a full buff/CD 25x25 icon group above the debuff bars tracking Flurry, Death Wish, Bloodrage, Rampage, Sweeping Strikes, Recklessness, Bloodthirst, Shield Wall, Last Stand, Retaliation, racials, and external buffs (Bloodlust, Heroism, Drums, Haste Potion) with gold glow in last 4s |
| Rogue | MH + OH + Rogue helpers + CD icons + debuff bar | Dual-wield tracking plus a latency-adjusted MH end-window cue for Sinister Strike timing, a slim Slice and Dice duration bar directly above MH with Classic-safe helpful-aura parsing, a dedicated Adrenaline Rush duration/cooldown bar with adjustable height, Blade Flurry and Cold Blood badges, a Rogue energy-cap warning tint, a single vertical energy-tick helper to the left of MH, a Rupture target debuff bar (6px, purple, above MH), and a full buff/CD 25x25 icon group above debuff bars tracking Adrenaline Rush, Blade Flurry, Cold Blood, Sprint, Evasion, Cloak of Shadows, racials, and external buffs with gold glow in last 4s |
| Paladin | MH + debuff bars + CD icons | Seal breakpoint line plus a small Reckoning stack badge. Judgement of the Crusader debuff bar (6px, gold, above MH) and Seal of Vengeance/Corruption debuff bar (5px, dark gold, above MH), both with left-aligned spell icons + gold countdown + glow in last 4s. Full buff/CD 25x25 icon group above debuff bars tracking Avenging Wrath, Divine Shield, Hammer of Justice, Blessing of Protection, Holy Wrath, Lay on Hands, Holy Shield, Divine Protection, Vengeance, racials, and external buffs with gold glow in last 4s (toggle + icon size slider in Quick Controls) |
| Enhancement Shaman | MH + OH + CD icons + debuff bar | Weave assist for LB, CL, HW, LHW, and CH breakpoints with spell-haste fallback support (UnitSpellHaste → GetSpellHaste), fixed breakpoint markers plus a moving active-cast icon/spark that starts from the live cast-start point and continuously resizes with current haste/buffs toward projected impact timing on the MH bar, Windfury ICD tracking, a Flame Shock target debuff bar (6px, fire orange, above MH), a Lightning Shield charge tracker (rectangles to the left of the bar), and a full buff/CD 25x25 icon group above debuff bars tracking Flurry, Shamanistic Rage, Stormstrike, Heroism, Bloodlust, Windfury Weapon, Elemental Devastation, racials, and external buffs |
| Feral Druid | MH + debuff bars + CD icons | Form reset support, Maul queue tinting, Mangle target debuff bar (6px, orange, above MH), Rip target debuff bar (6px, green, dynamically above Mangle), Rake target debuff bar (5px, burnt orange, dynamically above Rip), all with left-aligned spell icons + gold countdown + glow in last 4s. Full buff/CD 25x25 icon group above all debuff bars tracking Tiger's Fury, Frenzied Regeneration, Barkskin, Dash, Enrage, Bash, Innervate, racials, and external buffs with gold glow in last 4s (toggle + icon size slider in Quick Controls) |
| Mage / Priest / Warlock | None | No auto-attack bars |
Enemy bar support is not class-restricted: if you have a hostile target selected, the addon can track that target's main-hand swing timer with the red default enemy bar.
Configuration
Type /sst, /super, or /superswingtimer to open the config panel.
| Command | Action |
|---|---|
/sst |
Open or close the config panel |
/super |
Open or close the config panel |
/superswingtimer |
Open or close the config panel |
/sst reset |
Restore default settings |
/sst help |
Show command help |
Config Panel Walkthrough
The /sst panel is organized into collapsible sections. Here's how they lay out:
+------------------------------------------------------------------+
| Super Swing Timer [X] |
| Global Scale [=====slider (0.5x–3.0x)=====] [1.0] |
| Proportionally scales all bars, icons, sparks, borders, fonts |
|------------------------------------------------------------------|
| Quick Controls (always visible) |
| Left: Visibility toggles | Right: Key Color swatches |
| Use Class Colors | MH Color [■] |
| Show Main Hand | OH Color [■] |
| Show Off Hand | Ranged Color[■] |
| Lock Bars | Enemy Color [■] |
| [class-specific toggles] | [class swatches] |
|------------------------------------------------------------------|
| Appearance (collapsible) |
| Bar Width [slider] Bar Height [slider] |
| MH Texture [picker] Layer [dropdown] |
| Spark settings, Border, Background, Glow mode |
|------------------------------------------------------------------|
| Combat & Timer Behavior (collapsible) |
| Minimal Mode, Swing Flash, GCD Ticker, Test Bars |
|------------------------------------------------------------------|
| Shaman Weave Assist / Shaman Weave Spells (collapsible, Shaman) |
------------------------------------------------------------------+
Quick Controls (top section)
Two compact columns for your most-used settings:
- Visibility — checkboxes to show/hide bars, lock position, and class-specific helpers (Rapid Fire, Shield Block, Buff Icons, Lightning Shield Tracker, etc.)
- Key Colors — click any color swatch to open the color picker. Swatches show their name directly on the colored button. MH/OH/Ranged can use class colors via the toggle in the left column
Appearance
All visual sizing and texture settings:
- Global Scale — first control at the top. Multiplies all bar dimensions, icon sizes, sparks, borders, and fonts proportionally (0.5x–3.0x). Individual sliders below fine-tune each base size
- Bar Width / Height — set the base dimensions for all bars. Off-hand height derives automatically
- Texture pickers — click to browse installed textures. Bar and ranged rows use a scrolling preview list; spark rows use a thumbnail browser
- Spark settings — width, height, alpha, color, draw layer
- Border / Background — color and thickness controls for bar borders and background fill
- Indicator Glow Mode — ADD (bright glow) or BLEND (opaque)
Combat & Timer Behavior
Toggles for timing helpers:
- Minimal Mode — hides all non-essential overlays
- Swing Flash — brief spark flash on each swing landing
- GCD Ticker — thin bar above MH showing the 1.5s global cooldown
- Test Bars — runs a 16-second animated preview so you can reposition bars without being in combat
Class-Specific Sections
- Shaman Weave Assist — weave marker textures, sizes, layers. Quick Controls row for Lightning Shield Tracker, Flame Shock Bar
- Shaman Weave Spells — per-family toggles for Lightning Bolt, Chain Lightning, Healing Wave, Lesser Healing Wave, Chain Heal
- Quick Controls per-class rows appear dynamically: Warrior gets Shield Block + Rage Bar toggles, Hunter gets Range Helper + Rapid Fire + Cast Bar + Buff Icons, Rogue gets Sinister Cue + SnD + Energy Tick + Adrenaline Rush, etc.
General tips
- Hover any control for a tooltip explaining what it does
- Scroll with mouse wheel in any section
- Collapse section headers to reduce visual noise
- Reset Defaults button at the bottom restores all settings including positions
- Lock Bars to prevent accidental dragging during combat. Unlock to reposition
- Opening
/sstshows a preview with all bars filled; they return to combat-only behavior when you close the panel
Feedback
Found a bug or want a feature? Open an issue at: GitHub Issues
Changelog
See CHANGELOG.md for the release history.
Testing
SuperSwingTimer includes an optional in-game unit test suite powered by WoWUnit (Jaliborc).
Setup
- Install WoWUnit from CurseForge
/reloadin-game- Open WoWUnit's test UI to see results
Tests run automatically on PLAYER_ENTERING_WORLD and relevant game events. 9 test groups cover:
| Group | Tests | Coverage |
|---|---|---|
SST-Constants |
12 | Spell IDs, DB defaults, clock domain, seal families |
SST-Timers |
3 | ns.timers.* existence, monotonic clock |
SST-AuraParsing |
4 | GetHarmfulAuraData Classic + TBC shapes, physical debuffs, nil |
SST-StackOffset |
3 | GetDebuffStackOffset sign, highest-bar tracking, hidden bars |
SST-HunterSerpentSting |
4 | Detection by ID + name, caster filtering, no-target safety |
SST-MigrateDB |
4 | Fresh DB, v1→v54 chain, v54 no-op, factory reset |
SST-Dispatch |
3 | Nil-guards on public API functions |
SST-HelpfulAura |
2 |
Tests are loaded as ## OptionalDeps: WoWUnit and skipped entirely when WoWUnit is not installed — zero overhead outside testing.
CI (GitHub Actions)
Every push to main runs luac -p syntax check on all 8 Lua files via .github/workflows/luac.yml.
