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, andruntime.CLASSIFICATIONsub-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.instanceHistoryname index with automatic invalidation on trim/finalize - Refactored 35 of 37 achievement definitions from verbose per-tier tables to compact declarative
thresholdsformat with auto-expansion at load time; auto-generated STAT_CATEGORY from achievement definitions