-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathchangelog.txt
More file actions
640 lines (511 loc) · 31.7 KB
/
Copy pathchangelog.txt
File metadata and controls
640 lines (511 loc) · 31.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
# Bazaar Access - Changelog
---
## July 14, 2026 (v1.10.1)
### Translation fixes
- Fixed enemy item names not agreeing in gender in the languages that need it. The mod said
"Espada enemigo" / "Épée ennemi" / "Nemico Spada"; it now says "Espada del oponente" /
"Épée de l'adversaire" / "Spada dell'avversario" (and the same in German and Portuguese), which
reads correctly whatever the item is called
- Spanish now uses one word for the rival ("oponente") instead of mixing two
Remember: if a phrase sounds wrong in your language, you can fix it yourself in
"BepInEx/plugins/BazaarAccess-lang" - it applies on the next launch, no rebuild needed.
---
## July 14, 2026 (v1.10.0)
### The mod now speaks your language
- The mod's own text (announcements, menus, messages) is now translated into the 9 languages The
Bazaar supports: English, Spanish, German, French, Italian, Portuguese (Brazil), Turkish, Korean
and Simplified Chinese. It follows the language you picked in the game, and it switches on the
fly when you change it in the options - no restart needed
- Mechanic words (Shield, Burn, Bronze, Weapon...) are taken from the game itself, so the mod says
exactly the same word the card does, in your language
- Translations live in editable text files in "BepInEx/plugins/BazaarAccess-lang". If a phrase
sounds wrong in your language, you can fix it there and the change applies on the next launch -
no need to rebuild anything. Corrections are welcome
- Only English and Spanish have been checked by a human. The other seven are machine translations
that follow the game's own vocabulary: please report anything that sounds wrong
### Bug Fixes
- Fixed cards whose text became unreadable after the game replaced words with icons. Cards like
Unibou read "this gains 5" with no clue what the 5 was; they now read "this gains 5 Shield".
The word is taken from the game's own icon table, so it comes out in your language and matches
what a sighted player sees. This affected a large number of cards
- Fixed time values (haste, slow, freeze, charge) being read as raw milliseconds in some card
texts ("gains 2000" instead of "gains 2")
- Fixed counts always using the plural: it said "1 items", it now says "1 item"
---
## July 11, 2026 (v1.9.2)
### Bug Fixes
- Fixed the Back key (Backspace) doing nothing on the hero select screen. It now returns to the
main menu directly (before, you had to arrow down to the "Back" option and press Enter). It is
wired to the game's own back button so it works on every return path
- Fixed the Season Pass reading collection items (hero skins, card backs, etc.) when opening
chests. The collection scene is reused for chest opening, and the mod no longer takes it over in
chest mode, so the chest screen is read instead
- Fixed "Hour 1" / "Day 1" being announced by mistake when returning to the hero select or menu
screens after a run. Day and hour progression is now only announced while actually in a run
### New (from a review of the game's patch notes 13-16)
- Delivery packages (the start-of-run package objective added in game patch 16) are now announced
as "Delivery package" when navigating your items, so you can tell which item is the objective
- Free item encounters now announce that the selection is free (the item rarity was already read
via its tier)
---
## July 11, 2026 (v1.9.1)
### Fixes
- Item tooltips now read the stat that auras affect: passives like "Your items have +1" or
"Your rightmost Shield item has +10" now say "+1 damage", "+10 shield", etc. (the stat was
shown only as an icon before, so it was invisible to the screen reader)
### Options menu overhaul
- The options menu is now organized as a single flat list with a header before each section
(Audio, Video, Gameplay, Keybindings, Accessibility, Support). Every setting is reachable in
order — including Language and Keybindings, which could not be reached before
- Fixed having to press Escape twice before the options menu got focus
- Dropdowns (Language, Resolution, Framerate) now preview options as you arrow through them and
only apply on Enter. Browsing the language list no longer re-localizes the game or pops the
"restart required" prompt on every step
---
## July 11, 2026 (v1.9.0)
Big thanks to community contributors **Neurrone** (bazaar-13-fixes) and **mohammad-aloufi**
(readme improvements) for the new features in this release.
### New Features (contributed by Neurrone)
- Item inspect panel: press X on any item (or use the context menu) to open the game's full inspect view
- Combat encounter preview: press X on a combat encounter to preview the monster's loadout
- Combat encounters now read the monster's level, experience, and gold
- Rage support: the rage stat is now readable on both your hero and the opponent
- Enrage announcements: you and the enemy gaining or losing enrage are now announced
- Shop items now have a "Details" menu entry; buying no longer requires a separate confirmation
- The focused hero skill is now announced when entering the skills list (fixes single-skill lists not being read)
### Changes
- Combat recap now uses the game's native recap statistics instead of the mod's custom tracker (more accurate)
- Upgrade and enchant previews (which were unreliable) were removed in favor of the item inspect panel
- Buy / sell / upgrade / enchant confirmation menus now cycle with Up / Down (was Left / Right) for consistency with every other screen
- Battle pass challenges are now read from the client cache; rank and play-mode use the new game cache API
- Chest rewards handle the updated collectible IDs
### Game Update Compatibility (2026-07 game builds)
- Updated the mod to compile and run against the latest game builds, which made several game APIs
synchronous and reshaped others (static data access, monster templates, tooltip context,
challenge lookup, and chest reward data)
- Fixed the mod not reading anything at all after the latest game update, which made the pause
menu and options dialog types internal and caused every patch to fail to load
- Patching is now resilient: if a future game update breaks one hook, only that hook is disabled
instead of the whole mod going silent
- Fixed the options menu leaking focus to the gameplay screen when opened from the pause menu
- Fixed keybind entries in the options menu not reading the action name (new Input System)
- Re-hooked image/text tutorial dialogs (SequenceDialogController) so new players' tutorials are read
- Fixed equipping a hero skin in the Collection menu playing the wrong hero's audio/loadout
(now equips to the skin's own hero instead of the last-selected hero)
### Known remaining
- The options dialog is now a single tabbed window (Audio/Video/Gameplay/Keybindings/Accessibility);
reworking the accessible options menu to expose those tabs (keybindings, language) is in progress
---
## March 3, 2026 (v1.8.5)
### Bug Fixes
- Fixed stash getting stuck open after enchanting an item from the stash
- The game closes the stash UI when leaving Pedestal state but doesn't fire a close event
- The mod's internal stash state stayed "open", making Space toggle ineffective
- Now forces stash state to closed when transitioning away from Pedestal state
- Fixed combat damage tracking (H key) not accounting for skills that amplify damage
- Skills like Glass Cannon (doubles weapon damage) were not reflected in combat stats
- Root cause: damage was read from item's base DamageAmount attribute instead of actual damage dealt
- Now uses HealthBefore/HealthAfter diff from combat events, which includes all skill amplification
- Also fixes heal and shield tracking for amplified effects
---
## February 27, 2026 (v1.8.4)
### Bug Fixes
- Fixed enchant pedestals still showing upgrade confirmation instead of enchant
- Root cause: `TCardEncounterPedestal.Behavior` defaults to `TPedestalBehaviorUpgrade` when deserialization doesn't populate it, making ALL pedestals appear as upgrade
- Added new detection strategy via `Data.CurrentEncounterController.CardData.Template` (same path the game's own UI uses)
- Added cross-validation: checks `SelectionCriteria` type to catch false upgrades (enchant pedestals use `TCardConditionalEnchantmentEligible`, upgrade pedestals use `TCardConditionalTier`)
- Recursive search through composite conditionals (`TCardConditionalAnd`/`TCardConditionalOr`) to find the enchant criteria
- Detection now uses 3 strategies + cross-validation instead of 2 strategies alone
---
## February 27, 2026 (v1.8.3)
### Code Refactoring
Refactored ItemReader into focused sub-modules. No behavior changes.
- **ItemReader** (1,690 → 141 lines): Now a thin facade delegating to 7 sub-modules in `CardReading/`
- `CardReading/TextResolver.cs` - Localized text and token resolution
- `CardReading/CardProperties.cs` - Name, tier, size, price, tags, temperature, descriptions
- `CardReading/DetailLineBuilder.cs` - Detail lines, short/detailed descriptions, combat stats
- `CardReading/EncounterReader.cs` - Encounter info, PvP opponent data
- `CardReading/QuestReader.cs` - Quest conditions, progress, rewards
- `CardReading/PropertyDescriber.cs` - Tag and keyword descriptions (I key)
- `CardReading/RankReader.cs` - Player rank, ranked mode detection
- Zero changes to 14 consumer files — public API unchanged
---
## February 27, 2026 (v1.8.2)
### Code Refactoring
Further refactoring of GameplayNavigator for modularity. No behavior changes.
- **GameplayNavigator** (1,789 → 594 lines): Extracted 4 sub-modules
- `Navigation/NavigationTypes.cs` - Shared enums (NavigationSection, RecapSection, etc.) and NavItem class
- `Navigation/BoardStashNavigator.cs` - Board/stash refresh, slot navigation, stash toggle, capacity announcements
- `Navigation/SelectionNavigator.cs` - Selection data (shop/encounters/loot), card description formatting
- `Navigation/GameplayAnnouncer.cs` - All announcements, state descriptions, game actions (exit/reroll)
- GameplayNavigator is now a thin facade that delegates to sub-navigators
- Removed unused legacy `BoardNavigator.cs` file
- Zero changes to consumer files (GameplayScreen, ActionMenuHandler, CombatInputHandler, ReplayInputHandler)
---
## February 26, 2026 (v1.8.1)
### Bug Fixes
- Fixed enchant pedestals incorrectly showing upgrade confirmation instead of enchant
- Entering a pedestal now announces the correct type: "Enchant altar, [name]" or "Upgrade altar"
- Detection now checks for enchant behavior BEFORE upgrade (prevents false matches from default initializer)
- When detection fails: U key sends command directly to game instead of guessing wrong
- When detection fails: Action menu shows "Use pedestal" instead of incorrectly guessing upgrade/enchant
- Added type-name fallback detection for unrecognized behavior types
- Added detailed logging at every detection step for future debugging
---
## February 26, 2026 (v1.8.0)
### Code Refactoring
Major codebase refactoring for maintainability and modularity. No behavior changes.
- **GameplayNavigator** (3,357 → 1,775 lines): Extracted 5 sub-navigators
- `Navigation/HeroNavigator.cs` - Hero stats/skills navigation
- `Navigation/EnemyNavigator.cs` - Enemy board/stats/skills navigation
- `Navigation/RecapNavigator.cs` - Post-combat recap mode navigation
- `Navigation/DetailReader.cs` - Line-by-line detail reading
- `Navigation/VisualSelector.cs` - Visual selection feedback
- **GameplayScreen** (2,257 → 1,342 lines): Extracted 3 input handlers
- `ActionMenuHandler.cs` - Action mode overlay (sell/upgrade/move/reorder)
- `CombatInputHandler.cs` - Combat-mode input routing
- `ReplayInputHandler.cs` - Replay/recap input routing
- **CombatDescriber** (1,442 → 728 lines): Extracted 3 sub-components
- `Combat/HealthTracker.cs` - Health monitoring and threshold alerts
- `Combat/CardStatsTracker.cs` - Per-card combat statistics
- `Combat/EffectFormatter.cs` - Combat effect text formatting
- **ActionHelper** (1,305 → 421 lines): Extracted pedestal code
- `PedestalManager.cs` - Pedestal detection, caching, upgrade/enchant actions
- **StateChangePatch** (997 → 717 lines): Extracted event handler groups
- `CombatEventHandler.cs` - Combat lifecycle events
- `CardEventHandler.cs` - Card transaction/modification events
- `ErrorEventHandler.cs` - Error/rejection events
- **Shared utilities**: `TierHelper.cs` (single source of truth for tier progression), `CoroutineHelper.cs` (safe coroutine management)
- **ItemReader**: Eliminated duplicated cooldown (4→1), size (2→1), and stat block (3→1) code
---
## February 26, 2026 (v1.7.4)
### Bug Fixes
- Fixed Legendary items being unable to receive enchantments at enchant pedestals
- The game has no tier restriction on enchanting - any tier (including Legendary) can be enchanted
- Our code incorrectly blocked Legendary items when pedestal detection failed, falling through to upgrade logic
- Fixed enchant previews showing upgrade tier info instead of enchantment effects
- All code paths (action menu, U shortcut, sell redirect) now correctly identify enchant vs upgrade
- Overhauled pedestal detection with cache + dual-strategy system
- Pedestal type is now detected ONCE when entering pedestal state and cached for the entire visit
- Primary detection: game's public Data API
- Fallback detection: reflection on PedestalState object
- When both fail: safe fallback that lets the game handle the action directly
---
## February 21, 2026 (v1.7.3)
### Bug Fixes
- Fixed pedestal type detection (enchant vs upgrade) once and for all
- Pressing U at enchant pedestals was showing "upgrade from tier X to Y" instead of enchant dialog
- Root cause: Previous approach used reflection on PedestalState's private `_pedestalTemplate` field, which silently failed and defaulted to upgrade
- Fix: Now uses the game's public Data API directly (`Data.GetStatic().GetCardById(Data.CurrentEncounterId)`) - the same approach the game itself uses
- Uses direct type checking (`is TPedestalBehaviorEnchant`) instead of fragile string matching on type names
- Zero reflection needed for pedestal detection
---
## February 21, 2026 (v1.7.2)
### Bug Fixes
- Fixed enemy board showing wrong items during recap (G key after combat)
- Some enemy items were misread (e.g., showing "Gumball" for items not on the board)
- Items that dealt damage during combat (e.g., Boulder) were missing from board navigation
- Root cause: The game's `opponentItemSockets` array is never cleared between combats, retaining stale references
- Fix: Enemy board navigation now uses `Data.GetCards` API (the game's source of truth) instead of reading from UI socket array
- Visual feedback (card hover) now uses `Data.CardAndSkillLookup` for reliable Card-to-Controller mapping
---
## February 21, 2026 (v1.7.1)
### Bug Fixes
- Fixed enchant pedestals incorrectly showing "upgrading from gold to diamond" instead of enchantment info
- Completely rewrote pedestal detection to use a more reliable method (2-step reflection instead of 8-step)
- Fixed tier name formatting in all upgrade/enchant dialogs and action menus
- Fixed skin equipping not working in the Collection screen
- The game's CollectionManager now receives the correct hero context before equipping
- Equip operations now properly await completion and announce success/failure
- Fixed upgrade stat preview being unreliable
- Now shows full post-upgrade stats (e.g., "After upgrade: Damage 15, Cooldown 2.5s") instead of attempting to compute diffs
### New Features
- New combat action types announced during combat:
- Flying effects: "started flying", "stopped flying", "toggled flying" (Freefall Simulator and similar items)
- Item disable: "disabled [item name]"
- Card transform: "transformed"
- In-combat upgrades: counted as buff
- Quest completion: "quest complete"
---
## February 19, 2026 (v1.7.0)
### Bug Fixes
- Fixed player hero stats (V key) not navigable with arrow keys during combat
- Down/Up arrows now work to read hero stats during combat (was only working for enemy stats with F key)
- Left/Right arrows switch between Stats and Skills subsections
- Backspace exits hero stats view
- Fixed passive/utility items (Water Wheel, Keychain, etc.) not appearing in combat stats (H key)
- Items that produce haste, charge, aura effects, or other non-damage actions now show trigger counts in recap
- Combat stat tracking now counts ALL item triggers, not just damage/heal/shield events
### New Features
- New combat action types announced during combat:
- Haste effects: "Item: hasted"
- Charge effects: "Item: charged"
- Item destruction: "Item: destroyed Target"
- Regen application: "Item: X regen"
- Gold steal: "Item: stole X gold"
- Max health changes: "Item: max health +X" / "Item: max health -X"
---
## February 15, 2026 (v1.6.3)
### Bug Fixes
- Fixed enchant pedestal preview incorrectly showing upgrade tier text (e.g., "Upgrade from Diamond to Legendary" instead of "Enchant with X")
- Confirmation dialog now uses already-detected action type instead of re-detecting via reflection
- Shift+U shortcut also explicitly passes the detected pedestal type
- Fixed quest items not showing completion rewards/effects
- Quest detail lines now include "Reward: [effect description]" showing what happens when the quest is completed
- Reads from the game's quest reward localization data (TQuestEntry.Reward.Localization.Tooltips)
---
## February 14, 2026 (v1.6.2)
### Bug Fixes
- Fixed Diamond tier items being incorrectly blocked from enchanting at enchant pedestals
- Fixed upgrade preview incorrectly showing "upgrade to Diamond" for Gold stats-only upgrades
- Now correctly shows "Upgrading stats" when pedestal targets same tier
- Uses actual pedestal target tier instead of hardcoded next tier
- Enchant option at pedestals no longer depends on upgrade capability check
- Only checks if item is already enchanted (no tier restriction)
- Added Diamond to Legendary tier progression (was previously treated as max tier)
---
## February 10, 2026 (v1.6.1)
### Bug Fixes
- Fixed enemy skills and items appearing under player's stats in combat recap
- Enemy skill triggers (e.g., heal, shield from opponent's skills) no longer count as your items
- PvP opponent items now correctly separated into "Enemy items" section
- Changed card ownership detection to use Card.Owner property instead of socket iteration
- Fixed quest item conditions/requirements not being shown
- Quest items now display their requirements and progress: "Quest: Deal 500 damage (350/500)"
- Completed quests show: "Quest: Deal 500 damage (Complete)"
- Short description shows progress: "Item Name, Bronze, Quest 350/500"
- Shop navigation shows: "Quest 350/500: Item Name" instead of just "Quest: Item Name"
- Detail view (Up/Down arrows) shows full quest condition text from game data
---
## February 10, 2026 (v1.6.0)
### New Features
- **Per-card combat stats in recap**: Press H in recap mode to see damage, heal, shield, triggers, and crits per item
- Up/Down arrows to navigate through items sorted by damage
- Shows both your items and enemy items with full stats
- Data accumulated during combat and preserved for recap review
- **Player rank display**: Your ranked rank now shown in multiple places
- Hero select: Selecting Ranked announces your rank (e.g., "Ranked selected. Rank: Silver 3")
- Hero select: Ranked button shows rank when selected (e.g., "Ranked, selected. Rank: Silver 3")
- Hero stats (V key): Rank shown as last navigable stat when in ranked mode
- Recap hero stats also include rank announcement
- **Quest item identification**: Quest items now labeled with "Quest:" prefix in shop and "Quest item" in detail view
- **Stash rearranging**: Shift+Left/Right now works in stash section to reorder stash items
### Bug Fixes
- Fixed PvP encounters always showing "Viper" as enemy hero name
- Navigation now shows correct hero name (reads from opponent data instead of card template)
- Pressing Enter on PvP encounter now shows full info with correct hero name and rank
- Fixed loot items not showing "Loot" tag (e.g., now shows "Loot, Weapon" instead of just "Weapon")
- Fixed enchantment altar reading as upgrade instead of enchant when using Shift+U shortcut
- Added error handling around upgrade preview to prevent silent failures
- Updated recap entry message to list all available sections (V, F, G, B, H)
---
## February 9, 2026 (v1.5.9)
### Documentation Updates
- Updated installation instructions: Full release now includes BepInEx, no separate installation needed
- Simplified installation: Extract ZIP and copy all files to game folder
- Fixed control descriptions: Backspace is the cancel key, not Escape
- Clarified Enter key behavior: Opens Action Menu on board/stash items, buys from shop
---
## February 6, 2026 (v1.5.8)
### Bug Fixes
- Fixed hero selection screen not working after game update
- Game now loads heroes asynchronously; mod adapted to handle heroes being invisible during loading
- Heroes appear in menu as they become available via visibility callbacks
### New Features
- Random Hero toggle: Navigate to "Random Hero: on/off" option and press Enter to toggle
- Screen announces "Random hero mode enabled" when entering hero select with random mode active
- Individual hero "selected" indicator hidden when random mode is on
- Repair mechanic support in combat:
- Individual mode: "repaired [item name]" when a repair event fires
- Batched mode: "repaired [item name]" for single repairs, "X repairs" for multiple
- Repair Targets stat now shown in item reading (I key) for items with repair abilities
---
## January 31, 2026 (v1.5.7)
### Improvements
- Critical hits now announced prominently: "Critical hit! Sword: 180 damage" instead of "180 damage, crit"
- Reload announcements now always include item name and amount: "Grenade reloaded 2 ammo"
- Modified attribute announcements now show what changed when possible: "damage increased by 50"
- Batched mode now accumulates reloads and buffs/debuffs to prevent spam on fast builds:
- Instead of spamming "Sword modified" 10 times, announces "You: 150 damage, 10 buffs, Grenade reloaded 5"
- Multiple reloads summarized: "8 reloads" or "Grenade reloaded 3" for single item
- Buffs/debuffs counted: "3 buffs, 2 debuffs"
---
## January 30, 2026 (v1.5.5)
### Bug Fixes
- Fixed pause menu and options menu synchronization issues
- Escape now properly closes the entire pause system (game handles it natively)
- Fixed options menu getting stuck when opened from pause menu
- Fixed UI state not syncing with actual game menus
- HideDialogs now cleans up all accessibility UIs (Options + FightMenu)
- Prevented duplicate FightMenuUI creation when OptionsUI is open
- Fixed volume sliders not applying changes correctly
- Now explicitly triggers onValueChanged event when adjusting
---
## January 30, 2026 (v1.5.4)
### Bug Fixes
- Fixed options menu not appearing when opened from pause menu during gameplay
- Old OptionsUI from main menu is now properly cleaned up
---
## January 30, 2026 (v1.5.3)
### Bug Fixes
- Fixed upgrade/enchant preview not showing in confirmation dialog
- Action menu U key shortcut now shows preview before executing (was bypassing confirmation)
- Preview dialog supports U key to confirm (in addition to Enter)
- Preview now correctly shows stat changes: "Changes: Damage 10 to 15, Cooldown 3.0s to 2.5s"
---
## January 30, 2026 (v1.5.2)
### New Features
- Upgrade/Enchant preview in confirmation dialog
- When pressing U to upgrade, the dialog now shows stat changes: "Changes: Damage 10 to 15, Cooldown 3.0s to 2.5s"
- When pressing U to enchant, the dialog shows enchantment effects when available
- Screen reader users now have the same preview information as sighted users
### Bug Fixes (v1.5.1)
- Fixed upgrade preview showing wrong tier: Now reads actual target tier from the altar
- If upgrade only improves stats (same tier): "Upgrade Bronze stats (U)"
- If upgrade changes tier: "Upgrade to Silver (U)"
### Bug Fixes (v1.5.0)
- Fixed item reordering via action menu (Home/End keys) causing adjacency effects to not update correctly
- Now uses delayed step-by-step movement to let the game properly recalculate effects
- Example: Swash Buckle's crit bonus should now correctly apply after moving
- Fixed action menu reorder (Left/Right arrows) not triggering visual selection update
- Fixed potential "item disappearing" issues caused by stale navigation state:
- Refresh() now clears detail cache to prevent stale card references
- Reorder operations now track items by InstanceId instead of slot position (more reliable)
- GoToBoardSlot() now validates index and logs warnings when slot not found
- Added GoToItemById() method for reliable item tracking after moves
### Improvements
- Action menu now shows Upgrade/Enchant option first when at a pedestal (altar)
- This prioritizes the main action when at upgrade or enchant altars
- Sell and other options follow after
### New Features
- Ammo reload announcements during combat: "[Item name] reloaded [amount]"
- Attribute modification announcements: "[Item name] modified by [amount]" when items receive temporary buffs
- Unsellable item detection: Action menu no longer shows "Sell" for items that cannot be sold
- New feedback when trying to sell unsellable items: "[Item name] cannot be sold"
### Known Limitations (Game Restrictions)
- Item stats (damage, heal, etc.) show BASE values only, not combat-modified values
- Example: Orange Julian's "+100 Damage for the fight" buff won't show in item reading
- During combat, the ACTUAL damage dealt IS announced correctly via combat events
- Items may have game-side restrictions on selling from stash that we cannot override
---
## January 26, 2026
### New Features
- Action menu system: Press Enter on a board/stash item to open action menu
- Up/Down: Navigate options (Sell, Upgrade, Enchant, Move to Stash/Board)
- Enter: Confirm selected option
- Backspace: Exit action menu
- Keyboard shortcuts in action menu:
- S: Sell item directly
- U: Upgrade/Enchant item directly
- M: Move to stash/board directly
- Left/Right: Reorder item on board
- Home/End: Move item to left/right edge of board
- Reorder feedback: "Between [item1] and [item2]", "Left edge", "Right edge"
- Combat board navigation: View boards during combat (after items load)
- B = Navigate your board with arrow keys
- G = Navigate enemy board with arrow keys
- F = Navigate enemy stats, Right arrow to access skills
- V = Navigate your hero stats
- Backspace = Exit current navigation mode
- Enemy board reading optimized for combat analysis:
- Navigation shows compact info: "Item Name, 4.0s, 50 damage"
- Detail reading (Up/Down) prioritizes: Name → Description → Abilities → Cooldown → Stats
- Metadata (tier, tags, size) moved to end of detail list
### Improvements
- Health display now includes shield: "400 with 50 shield"
- Pedestal detection for upgrade/enchant altars
- Simplified announcements:
- G key now says "Opponent's board, X items" (removed skills count)
- F key now says "Enemy stats" (access skills with Right arrow)
- Combat navigation only available after 1.5s delay (waits for items to appear)
---
## January 19, 2026
### New Features
- Combat announcement mode toggle: Press Ctrl+M to switch between batched (wave summaries) and individual (per-effect) modes
- Quick combat stats keys during combat:
- 1 = Player health
- 2 = Enemy health
- 3 = Damage dealt
- 4 = Damage taken
- Day/Hour announcements: Automatically announces "Day X" or "Hour X" when progressing through the run
### Improvements
- Improved cooldown reading for cards
- Enhanced card name announcements
- Better UI scrolling across menus
- Arrow keys now work for reading cards and hero stats
- Encounter scrolling enhancements
---
## January 14, 2026
### New Features
- Press W to hear current run wins (e.g., "3 wins")
### Bug Fixes
- Fixed opponent skills not showing when switching with Ctrl+Right
- Fixed opponent board (G) being accessible without entering Recap first
### Improvements
- Opponent skills navigation now works like hero skills:
- Ctrl+Right to switch to Skills announces first skill with description
- Ctrl+Up/Down navigates between skills with name + description
- G key now requires pressing E (Recap) first for a cleaner post-combat flow
- Post-combat messages updated for clarity
---
## January 13, 2026
### New Features
- Wave-based Combat Describer: Complete rewrite for less spam and more context
- Effects accumulated during combat waves (1.5s pause closes a wave)
- Symmetric summaries: "You: 45 damage (Water Dagger). Enemy: 30 damage (Poison Dagger), poison."
- Shows top damage-dealing item for each side
- Immediate alerts: "Low health!", "Critical health!", "Frozen!"
- Press H during combat for summary ("You dealt X, took Y. Health: A vs B")
### Bug Fixes
- Fixed free items (loot, rewards, events) now correctly say "Acquired [name]" instead of "Bought for X gold"
- Fixed chest rewards finally working correctly with real item names
### Improvements
- Press S to hear stash capacity (items stored / total slots)
---
## January 12, 2026
### New Features
- PvP encounters now show opponent name before hero (e.g., "PlayerName, Vanessa, PvP")
- Press G in post-combat to view opponent's board (same navigation as your own board)
- Left/Right arrows: Navigate items or skills
- Ctrl+Left/Right: Switch between Items and Skills subsections
- Ctrl+Up/Down: Read item details line by line
- Enter: Read full description
- Backspace: Exit opponent board
- Best used with E (Recap) for static view without Combat Describer interruptions
- If Replay animation is active, G suggests using Recap instead
### Bug Fixes
- Fixed shield being added to health in combat announcements (now shows separately)
- Fixed enemy effects announcing item names (now only announces the effect received)
- Fixed enchanted items not showing enchantment name and properties (e.g., "Radiant Water Dagger" with Crit Chance)
- Fixed chest rewards popup getting stuck (only Enter closes it now)
- Fixed heroes with placeholder descriptions showing "Description" instead of nothing (Vanessa)
- Fixed combat describing events from previous combats
- Fixed pressing F during combat showing names from previous opponents
- Fixed PvP encounters in menu now correctly show opponent name (was showing previous opponent)
### Improvements
- Enemy effects are now aggregated: multiple hits announced as total damage (e.g., "13 damage received" instead of spam)
- Menus now read current item at limits instead of "Start/End of list" (Board section keeps limit messages)
- Enchanted items show "Enchanted: Type" line in detail view (Ctrl+Up/Down)
- Keyboard navigation now plays the same hover sounds as mouse navigation
- Upgrading items with Shift+U now triggers full visual/audio feedback like mouse drag-drop
---
## January 11, 2026
### New Features
- Fast Navigation Keys: Home/End to jump to first/last, Page Up/Down to move 10 items
- No Wrap-Around Navigation: Lists announce "Start of list" or "End of list" at limits
- Collection Screen: Navigate categories and items, equip with Enter
- Chest Opening: Navigate chest types, open single or 10 at once, rewards announced
- Battle Pass Screen: Challenges and Tiers sections, claim rewards with Enter
- Hero Select: Game mode selection, Ctrl+Up/Down for hero details
- Board Capacity: Press T to hear slots used/available
- Board Reorder Feedback: Announces when item can't move further left/right
- Jules Hero Support: Items announce Heated/Chilled state after tier name
### Bug Fixes
- Fixed duplicate/triple announcements across the entire mod
- Fixed incorrect "Shop" announcement at game start
- Fixed stash close only switching to Board if user was in Stash section
- Fixed duplicate move item error messages
- Fixed enchanted/upgraded items not showing updated stats
### Improvements
- Back button now shows "Back" instead of "Button Large"
- Marketplace button hidden until accessible implementation is ready