promotional bannermobile promotional banner

CombatAnalytics

CombatAnalytics is a combat session tracking addon for World of Warcraft: Midnight

File Details

1.6-release

  • R
  • Mar 29, 2026
  • 637.72 KB
  • 22
  • 12.0.1
  • Retail

File Name

CombatAnalytics-1.6-release.zip

Supported Versions

  • 12.0.1

tag 3a8052e972f63425100406365109f8a35ef5949c 1.6-release
Author:    Lazar Dilov <ldilov@yahoo.com>
Date:    Mon Mar 30 00:50:11 2026 +0300

Release v1.6

commit a98233b4920fbda03bf250bda10a2ff89e8482ad
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Mon Mar 30 00:48:39 2026 +0300

    Removed garbage

commit 17de0e80702f70134c8cba5aee2ea2d48e23943e
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Mon Mar 30 00:32:52 2026 +0300

    fix: builds page layout — text overflow, badge positioning, vertical spacing

commit aa9dae5f8dd892a5d4fe8677e9d255328bef6ad7
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Mon Mar 30 00:23:18 2026 +0300

    chore: ignore .claude/worktrees/ in git

commit 17de0e80702f70134c8cba5aee2ea2d48e23943e
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Mon Mar 30 00:32:52 2026 +0300

    fix: builds page layout — text overflow, badge positioning, vertical spacing

commit 492c4f339cb4c47aa2677f58b9f1e52dff0473ba
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Mon Mar 30 00:28:44 2026 +0300

    fix: replace unicode arrow in Swap button — WoW fonts don't render U+2194

commit 131395becbb732be126e93aa1a5af4ab491b6c2e
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Mon Mar 30 00:28:11 2026 +0300

    fix: post-import spell backfill distributes unaccounted damage to cast-only spells

commit 3dec9911a13637f7c257aed623b3261f63e7a0f7
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Mon Mar 30 00:25:46 2026 +0300

    fix: getExpectedDamageTotal falls back to session.totals.damageDone

commit 07170c496b36809609989dce29bff4d4a1f1354f
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Mon Mar 30 00:25:04 2026 +0300

    fix: relax DM session baseline filter — include at-baseline sessions for dummy/PvE

commit 6ca3cb37c366b7e1b1c4dee7482f595389c78974
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Mon Mar 30 00:24:28 2026 +0300

    fix: re-snapshot DM data during import — captures settled data for short-lived sessions

commit aa9dae5f8dd892a5d4fe8677e9d255328bef6ad7
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Mon Mar 30 00:23:18 2026 +0300

    chore: ignore .claude/worktrees/ in git

commit f5efa5036957e4a883aa3f8483642f271d2ce140
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Sun Mar 29 23:55:41 2026 +0300

    fix: UI polish — friendly badges, cast counts, label overflow, unicode

    - Centralize formatDisplayLabel into Widgets.lua with 40+ enum mappings
      covering CONTEXT, SESSION_CONFIDENCE, MATCH_RESULT, PROVENANCE_SOURCE
    - Summary badges now show "Training Dummy" instead of "TRAINING_DUMMY",
      "State + DM" instead of "STATE_PLUS_DAMAGE_METER", "Log" instead of
      "UNKNOWN" for non-PvP contexts
    - Confidence badge colors now align with CONFIDENCE_BADGE_COLORS for v6+
      SESSION_CONFIDENCE values
    - MergeSpellTotals: floor castCount from hitCount when CLEU didn't
      provide cast data (fixes "Casts 0" on all DM-imported spells)
    - BuildComparatorView: replace broken UTF-8 sequences (U+22A0, U+2286)
      with ASCII-safe alternatives; add width constraint + truncation to
      panel.label; hide Build B label in single-build empty state

commit d7004b21688ec4b7d10258b29a40267ba9443c1a
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Sun Mar 29 23:26:36 2026 +0300

    fix: arena damage pipeline — seed identity before DM import, relax scoring, extend fallbacks

    Root cause: CopyStateIntoSession ran after DM import, leaving collectExpectedOpponentGuids
    with an empty GUID set during scoring. Combined with -18 penalty for GUID mismatch,
    no valid candidate was selected → Damage 0, Unknown opponent, VISIBLE_CC_ONLY confidence.

    Changes:
    - ArenaRoundTracker: add SeedSessionIdentity() — lightweight slot identity seed
      (GUIDs, names, specs) without pressure scoring, callable before DM import
    - CombatTracker: call SeedSessionIdentity before DamageMeter import in FinalizeSession;
      add pre-import diagnostic trace (session.pre_import); T021 post-finalize re-import
      listener for late-arriving DM events (capped at 1 retry, 10s window);
      SetImportAuthority helper for consistent authority tracking
    - DamageMeterService: relax GetOpponentFitScore — return neutral/positive score
      for arena/BG when expected GUID set is empty (secret values); extend enemy
      damage fallback gate to ARENA/BATTLEGROUND contexts; call ApplyPrimaryOpponent
      on cached and current fallback paths (not just historical success path);
      enrich opponent spec from session.arena.slots first, ArenaRoundTracker fallback;
      add arena-aware GetContextFitScore scoring; add opponent_fit trace
    - UI/BuildComparatorView: show captured build name in single-build empty state

commit 342f1fdbb12323d119224f35b75268fe30ba7c41
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Sat Mar 28 22:43:32 2026 +0200

    feat: build comparator overhaul — canonical identity, catalog, scoped comparison, diff, migration

    Implements all 31 tasks from specs/003-build-comparator-overhaul (FR-001–FR-048, US1–US7).

    Core changes:
    - Constants.lua: SCHEMA_VERSION=7, BUILD_IDENTITY_VERSION=1, SNAPSHOT_FRESHNESS, CONFIDENCE_TIER enums
    - Utils/BuildHash.lua: ComputeBuildId() and ComputeLoadoutId() — slot-stable canonical identity
    - SnapshotService.lua: stamps buildId/loadoutId/snapshotFreshness; wires TRAIT_CONFIG_UPDATED refresh
    - CombatTracker.lua: attaches buildId/loadoutId/snapshotFreshness to session snapshots
    - CombatStore.lua: v6→v7 migration gate; build catalog persistence API; scoped session query with cache
    - BuildCatalogService.lua (new): catalog CRUD, live build detection, alias management, display labels
    - BuildComparisonService.lua (new): scoped comparison, confidence classification, metric aggregation, diff
    - UI/BuildComparatorView.lua: full redesign — scrollable selector, search/sort, scope banner, confidence
      badges, diff panel (compact/expanded), quick actions (Swap, vs-Previous, vs-Best, vs-Most-Used),
      freshness warning, single-build and empty-scope states
    - Core.lua: extended /ca debug export with buildId, loadoutId, freshness, catalog summary

    Post-analysis remediations (speckit.analyze findings):
    - C1: added 'vs Most Used' quick-action button completing all 4 FR-035 quick actions
    - I2: GetDisplayLabel now appends first user alias in brackets when present (FR-039)
    - I1: FR-010 wording clarified to distinguish persisted flags from scope-derived properties

commit 342f1fdbb12323d119224f35b75268fe30ba7c41
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Sat Mar 28 22:43:32 2026 +0200

    feat: build comparator overhaul — canonical identity, catalog, scoped comparison, diff, migration

    Implements all 31 tasks from specs/003-build-comparator-overhaul (FR-001–FR-048, US1–US7).

    Core changes:
    - Constants.lua: SCHEMA_VERSION=7, BUILD_IDENTITY_VERSION=1, SNAPSHOT_FRESHNESS, CONFIDENCE_TIER enums
    - Utils/BuildHash.lua: ComputeBuildId() and ComputeLoadoutId() — slot-stable canonical identity
    - SnapshotService.lua: stamps buildId/loadoutId/snapshotFreshness; wires TRAIT_CONFIG_UPDATED refresh
    - CombatTracker.lua: attaches buildId/loadoutId/snapshotFreshness to session snapshots
    - CombatStore.lua: v6→v7 migration gate; build catalog persistence API; scoped session query with cache
    - BuildCatalogService.lua (new): catalog CRUD, live build detection, alias management, display labels
    - BuildComparisonService.lua (new): scoped comparison, confidence classification, metric aggregation, diff
    - UI/BuildComparatorView.lua: full redesign — scrollable selector, search/sort, scope banner, confidence
      badges, diff panel (compact/expanded), quick actions (Swap, vs-Previous, vs-Best, vs-Most-Used),
      freshness warning, single-build and empty-scope states
    - Core.lua: extended /ca debug export with buildId, loadoutId, freshness, catalog summary

    Post-analysis remediations (speckit.analyze findings):
    - C1: added 'vs Most Used' quick-action button completing all 4 FR-035 quick actions
    - I2: GetDisplayLabel now appends first user alias in brackets when present (FR-039)
    - I1: FR-010 wording clarified to distinguish persisted flags from scope-derived properties

commit 0901563469ca159bb0c8162963e06345ceb9aef2
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Sat Mar 28 19:27:38 2026 +0200

    chore: add speckit specs and dev tooling for features 001-002

    - specs/001-midnight-compliance-overhaul/: full spec/plan/tasks/research/
      data-model/contracts/quickstart for the compliance overhaul
    - specs/002-pvp-session-hardening/: full spec/plan/tasks/research/
      data-model/quickstart for pvp reliability hardening
    - .specify/: speckit workflow state, scripts, templates, memory
    - .agents/: agent skill wrappers (speckit, engineering-assistant)
    - .hforge/: Harness Forge runtime, library, and manifest
    - .claude/: Claude Code project runtime config

commit 0901563469ca159bb0c8162963e06345ceb9aef2
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Sat Mar 28 19:27:38 2026 +0200

    chore: add speckit specs and dev tooling for features 001-002

    - specs/001-midnight-compliance-overhaul/: full spec/plan/tasks/research/
      data-model/contracts/quickstart for the compliance overhaul
    - specs/002-pvp-session-hardening/: full spec/plan/tasks/research/
      data-model/quickstart for pvp reliability hardening
    - .specify/: speckit workflow state, scripts, templates, memory
    - .agents/: agent skill wrappers (speckit, engineering-assistant)
    - .hforge/: Harness Forge runtime, library, and manifest
    - .claude/: Claude Code project runtime config

commit a174bc4717d79f2bcab127e34694dc7e5980ae0e
Author: Lazar Dilov <ldilov@yahoo.com>
Date:   Sat Mar 28 19:27:26 2026 +0200

    feat: midnight compliance overhaul + pvp session reliability hardening

    001 - Midnight Compliance Overhaul:
    - Rework core pipeline for WoW Midnight (no CLEU): SpellAttributionPipeline
      now drives all damage/heal/aura tracking via C_DamageMeter and PvP APIs
    - Add TimelineProducer: structured event lanes (DM_ENEMY_SPELL, ARENA_CC,
      PLAYER_ABILITY) for death-recap and replay
    - Add ArenaScoutService, CCCoachService, OpenerLabService: pre-match intel,
      CC family tracking, opener recommendation
    - Add DuelLabService, PracticePlannerService, MatchupMemoryService,
      TradeLedgerService: extended coaching and opponent history modules
    - Expand SessionClassifier for Solo Shuffle round detection
    - Expand Constants with new context/subcontext/timeline enums (SCHEMA_VERSION=3)
    - Add RatingView, ArenaScoutView, TradeLedgerView; overhaul all existing
      UI views (SuggestionsView, HistoryView, MatchupDetailView, Widgets, etc.)
    - Register all new modules in CombatAnalytics.toc and Core.lua

    002 - PvP Session Reliability Hardening:
    - ArenaRoundTracker: add evidence-based pressure scoring via
      ApplySessionPressure (bySource attribution + death-recap timeline);
      add findSlotByGuid + ensureSelectionEvidence helpers; update
      GetPrimaryEnemy with stable 5-tier ranking + 85% sticky GUID rule;
      export className/specName/specIconId + full selection diagnostics
    - DamageMeterService: add GUID-overlap candidate scoring via
      GetOpponentFitScore (+28 primary match, +10/overlap capped +30,
      -18 zero-overlap penalty, context source-count fit, -20 duration
      mismatch >15s); return enemySources from snapshot collector;
      emit opponentFitScore/enemySourceCount on all import paths including
      fallbacks
    - CombatTracker: move CopyStateIntoSession to pre-classifier position
      so metrics, suggestions, and identity sync consume hardened opponent;
      stage preMatchRatingSnapshot on matchRecord.metadata at
      PVP_MATCH_ACTIVE time; inherit snapshot at CreateSession for
      late-created sessions; preserve direct-session path (no regression)

commit 23959de26fcfd3f19f3897f0e492b56d46541423
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Date:   Mon Mar 23 06:22:27 2026 +0000

    chore(seed): auto-update seed data 2026-03-23