# Changelog

## Score

- CAI 47 → 52 (+5.3)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

## Lenses

- Code Health 80 → 79 (-0.3)
- Architecture 95 → 88 (-6.9)
- Maturity 51 → 51 (-0.7)
- Readiness 45 → 45 (-0.3)
- Security 34 → 55 (+21.3)
- Domain Modelling 91 → 91 (+0.0)
- Performance 60 (new)

## Resolved (77)

- ArenaPickHelperViewModel.updateHoveredChoice (cognitive 16) (HSTracker/UIs/Arena/ArenaPickHelperViewModel.swift)
- BoardMinionView.tooltipDisplay (cognitive 29) (HSTracker/UIs/Trackers/BoardOverlay.swift)
- BoardMinionView.tooltipDisplay (cyclomatic 18) (HSTracker/UIs/Trackers/BoardOverlay.swift)
- BoardOverlayView.updateAbilitiesVisibility (cognitive 26) (HSTracker/UIs/Trackers/BoardOverlay.swift)
- BoardOverlayView.updateBoardState (cognitive 46) (HSTracker/UIs/Trackers/BoardOverlay.swift)
- BoardOverlayView.updateBoardState (cyclomatic 31) (HSTracker/UIs/Trackers/BoardOverlay.swift)
- CardHudContainer.update (cognitive 68) (HSTracker/UIs/Trackers/CardHudContainer.swift)
- CardHudContainer.update (cyclomatic 20) (HSTracker/UIs/Trackers/CardHudContainer.swift)
- Change coupling: Game.swift ↔ Tier7PreLobbyViewModel.swift (HSTracker/Logging/Game.swift)
- Change coupling: MirrorHelper.swift ↔ Watchers.swift (HSTracker/HearthMirror/MirrorHelper.swift)
- Change coupling: PlayerTrackersPreferences.swift ↔ Tracker.swift (HSTracker/UIs/Preferences/PlayerTrackersPreferences.swift)
- ClassTooLong: Tracker (HSTracker/UIs/Trackers/Tracker.swift)
- ConstructedMulliganGuide.update (cognitive 22) (HSTracker/UIs/Constructed/Mulligan/ConstructedMulliganGuide.swift)
- ConstructedMulliganGuidePreLobby.update (cognitive 31) (HSTracker/UIs/Constructed/Mulligan/ConstructedMulliganGuidePreLobby.swift)
- ConstructedMulliganGuidePreLobby.update (cyclomatic 16) (HSTracker/UIs/Constructed/Mulligan/ConstructedMulliganGuidePreLobby.swift)
- Coverage not measured — no coverage collector is wired up
- Documentation: no architecture or design documentation (README.md)
- Duplicated block (10 lines × 2) (HSTracker/Hearthstone/CounterSystem/BgCounters/DemonFodderCounter.swift)
- Duplicated block (10–11 lines × 4) (HSTracker/UIs/Trackers/CardHudContainer.swift)
- Duplicated block (15–16 lines × 2) (HSTracker/UIs/Trackers/Tracker.swift)
- …and 57 more

## New (127)

- BattlegroundsCompGuideViewModel.pinnableCardIds (cognitive 16) (HSTracker/UIs/Battlegrounds/Guides/Comps/BattlegroundsCompGuideViewModel.swift)
- BattlegroundsMinionArtView.body (cognitive 18) (HSTracker/UIs/Battlegrounds/Guides/BattlegroundsMinionArtView.swift)
- BattlegroundsMinionArtView.body (cyclomatic 17) (HSTracker/UIs/Battlegrounds/Guides/BattlegroundsMinionArtView.swift)
- BoardMouseOverDetection.update (cognitive 44) (HSTracker/UIs/Overlay/Board/BoardMouseOverDetection.swift)
- BoardMouseOverDetection.update (cyclomatic 21) (HSTracker/UIs/Overlay/Board/BoardMouseOverDetection.swift)
- BoardOrderViewModel.update (cognitive 19) (HSTracker/UIs/Overlay/Board/BoardOrderViewModel.swift)
- CardTileView.content (cognitive 16) (HSTracker/UIs/Overlay/Trackers/CardTileView.swift)
- CardTooltipPanel.placedFrame (cyclomatic 17) (HSTracker/UIs/Battlegrounds/Guides/CardImageTooltip.swift)
- Change coupling: RootOverlayViewModel.swift ↔ WindowManager.swift (HSTracker/UIs/Overlay/Root/RootOverlayViewModel.swift)
- Change coupling: SizeHelper.swift ↔ RootOverlayViewModel.swift (HSTracker/Core/SizeHelper.swift)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 2) (HSTracker/Hearthstone/CounterSystem/BgCounters/FreeRefreshCounter.swift)
- Duplicated block (10 lines × 2) (HSTracker/Hearthstone/CounterSystem/Counters/BeastsSummonedThisGameCounter.swift)
- Duplicated block (10 lines × 2) (HSTracker/Hearthstone/CounterSystem/Settings/CounterVisibilitySettings.swift)
- Duplicated block (10 lines × 2) (HSTracker/UIs/Battlegrounds/MinionPinning/BattlegroundsMinionPinningView.swift)
- Duplicated block (10 lines × 2) (HSTracker/UIs/Preferences/CountersPreferences.swift)
- Duplicated block (11 lines × 2) (HSTracker/UIs/Arena/ArenaPlaqueViewModel.swift)
- Duplicated block (11 lines × 2) (HSTracker/UIs/Arena/ArenaPreDraftView.swift)
- Duplicated block (11 lines × 2) (HSTracker/UIs/Battlegrounds/Guides/Comps/CompGuideDetailView.swift)
- …and 107 more

## Changes since last survey

- 102 commits — 80 feature/other, 22 fixes

## By area

- HSTracker/UIs — 38 commits
- (root) — 26 commits
- HSTracker/Logging — 13 commits
- HSTracker/Hearthstone — 4 commits
- HSTracker.xcodeproj/project.pbxproj — 3 commits
- HSTracker/BobsBuddy — 3 commits
- HSTracker/HSReplay — 3 commits
- HSTracker/Utility — 3 commits
- HSTracker/Assets — 2 commits
- HSTracker/BobsBuddy-version.txt — 2 commits
- HSTracker/Database — 2 commits
- HSTrackerTests/DatabaseTests.swift — 1 commit
- HSTrackerTests/SecretTests.swift — 1 commit
- Translations/macOS — 1 commit

## Notable commits

- fix: Add Comp Guides scrolling fix to the changelog
- fix: Fix the mulligan guide outstaying the mulligan
- fix: Stop one broken Bob's Buddy install drowning out the real simulation bugs
- fix: fix: add the Reign of the Black Empire card set
- fix: fix: apply Battlegrounds tag overrides to card races
- fix: fix: attach the Bob's Buddy exception text instead of sending it as extra
- fix: fix: blank Aberration icon while the Deity portrait is loading
- fix: fix: fade the Battlegrounds overlay while a leaderboard hero is hovered
- fix: fix: give Bob's Buddy each side's own objectives
- fix: fix: hide Battlegrounds tavern pinning when the minion browser is off
- fix: fix: hide the Battlegrounds max gold counter once the game shows it
- fix: fix: include Duos-exclusive tavern spells in the keyword filter in Duos
- fix: fix: render deities in the last known board popup with white stats
- fix: fix: rewind replays not processing
- fix: fix: show only the golden version for ONLY_GOLD_IN_GUIDE minions
- fix: fix: skip the discover card mask for Battlegrounds shop choices
- fix: fix: sort the Battlegrounds minion type filter alphabetically
- fix: fix: stop adding ghost board's Fang Anklet enchant
- fix: fix: stop the comp guide truncating long names and crowding its headings
- fix: fix: stop the mulligan guide's show/hide button stretching the overlay
- …and 82 more
