Syyke's Stats

Syyke’s Stats tracks your Daily and Lifetime WoW stats—jumps, XP, kills, damage, healing, movement, loot, and gold—plus Daily Records and a social leaderboard to compare and share progress.

File Details

Syyke's Stats v1.2.1

  • R
  • Mar 8, 2026
  • 4.18 MB
  • 13
  • 2.5.5
  • Classic TBC

File Name

SyykesStats-v1.2.1-curseforge.zip

Supported Versions

  • 2.5.5

Fixed

  • Fix Achievement Points not sharing in leaderboard: add achievementPoints to record-high tracked fields, day record self-entry, and UpdateRecordHigh on achievement unlock
  • Fix direct DAT leaderboard replies silently dropped when exceeding 255 bytes — now progressively strips day record and session blocks

Improved

  • Bump leaderboard protocol to 15 with base-36 encoding for all stat values, reducing message sizes by ~25-40% and allowing most 3-block messages to fit within the 255-byte SendAddonMessage limit

Added

  • Add test_events.lua: event handler tests for XP, money, death, quests, hearths, loot, merchant state, classification cache
  • Add test_movement.lua: movement mode, airborne detection, distance tracking, jump/fall detection, fall damage
  • Add test_combat_actions.lua: kill classification, interrupts, dispels, resurrections, combat log integration, environmental damage
  • Add test_display_helpers.lua: favorite stat formatters, format functions, FormatAge, UI style constants, color helpers
  • Add test_boss_database.lua: schema validation for all dungeon and raid boss entries, field checks, cross-database consistency
  • Add savedvariables-reviewer agent for auditing SavedVariables schema changes and migration safety
  • Add byte-budget agent for calculating worst-case leaderboard message byte costs per protocol version
  • Add /test-gen skill to scaffold test files following project conventions
  • Add /feature-slice skill to produce implementation plans from FEATURE_IDEAS.md candidates

Performance

  • Debounce RefreshKnownPlayerClasses on GROUP_ROSTER_UPDATE, GUILD_ROSTER_UPDATE, and FRIENDLIST_UPDATE via dirty flag (coalesces rapid-fire roster events into a single refresh per second)
  • Add TRACKED_COMBAT_SUBEVENTS lookup set to short-circuit HandleCombatLogEvent for irrelevant subevents, skipping all flag computation
  • Cache UnitGUID("player") in a module local instead of calling per combat log event; lazy-init fallback for test compatibility
  • Increase location broadcast interval from 10s to 30s when in a raid to reduce addon message traffic
  • Replace relay candidate sort with single-pass O(n) top-3 selection using pooled slots

Improved

  • Split SyykesStatsLeaderboard.lua (~3900 lines) into SyykesStatsLeaderboardData.lua (protocol, caching, social, encoding) and SyykesStatsLeaderboard.lua (rendering, UI)
  • Extracted history normalizers, filters, and tooltip builders from SyykesStatsDisplay.lua into SyykesStatsHistory.lua
  • Consolidated SendToSocialChannels to reuse GetSocialRoutes instead of reimplementing channel selection
  • Consolidated 14 duplicated motion/timing/classification constants from SyykesStats, SyykesStatsTracking, and SyykesStatsEvents into shared runtime.MOTION, runtime.TIMING, and runtime.CLASSIFICATION sub-tables
  • Replaced hardcoded pixel values in stats display rendering with named constants in the DISPLAY_STYLE table (row padding, column offsets, compact threshold, gap sizes, etc.)

Added

  • Daily rollover integration tests (test_daily_rollover.lua): 8 test cases covering rollover triggers, session commit, stats zeroing, and idempotency
  • Protocol build round-trip tests for v6, v7, v8: verifies encode/parse cycle preserves correct fields per protocol version
  • Truncated payload, extra field, and cross-version (v14→v6) protocol edge case tests
  • Added O(1) instance history lookup by name via lazy-built runtime.instanceHistory name index with automatic invalidation on trim/finalize
  • Refactored 35 of 37 achievement definitions from verbose per-tier tables to compact declarative thresholds format with auto-expansion at load time; auto-generated STAT_CATEGORY from achievement definitions