Boss Jukebox v1.5
What's new
# Boss Jukebox - Changelog
## v1.5.0
- **Fixed:** overlapping/multi-boss encounters could cause more than one
track to play at once, and could leave a track playing after the fight
ended that `/bjb stop` couldn't stop. Root cause: the addon only ever
tracked "the current track" in a single slot, so a second `ENCOUNTER_START`
arriving before the first `ENCOUNTER_END` would overwrite that slot and
orphan the original track's loop timer, which kept firing indefinitely
with no way to reach it.
- Encounter tracking now uses a counter (`activeEncounterCount`) instead
of a true/false flag, so overlapping encounters are handled correctly:
a second simultaneous pull no longer restarts/replaces the already
playing track, and boss music (and the game-music duck) only actually
stops once *every* overlapping encounter has ended.
- Every loop timer is now tagged with a generation number. If playback
is stopped or replaced by anything (a new track, a hard stop, a zone
change) before an orphaned timer fires, that timer recognizes it's
stale and does nothing, instead of replaying an old track forever.
- `/bjb stop` and zoning/reloading now both force a full reset
regardless of how many overlapping encounters or stray timers exist.
## v1.4.0
- Added a "Sound channel" setting (Options panel + tooltip) so playback
channel is configurable instead of hardcoded: `Music`, `Dialog`,
`Master`, `SFX`, or `Ambience`, each with different tradeoffs between
reliability (not getting interrupted by other sound effects) and being
audible regardless of the in-game music on/off setting.
- Default channel changed to `Music` after testing confirmed it and
`Dialog` are the two channels that don't get cut off during busy fights
with lots of simultaneous sound effects (the others share a limited
sound-slot pool with regular SFX and can get cut off).
- Fixed a crash in `generate_tracks.py` on filenames containing certain
Unicode characters (was writing `Tracks.lua` without an explicit UTF-8
encoding).
- Fixed the standalone `.exe`/binary builds looking in the wrong folder
for `Sounds\` (PyInstaller onefile builds resolve `__file__` to a temp
extraction path, not the actual exe location).
## v1.3.0
- Added Victory Sound: a one-shot sound that plays when a boss is
actually defeated (`ENCOUNTER_END` success only, not on a wipe).
- Separate `Sounds\Victory\` folder and `BossJukebox.VictoryTracks`
table, alongside the existing Boss Music folder/table -- keys only
need to be unique within their own category.
- Own "Enable victory sound" toggle, independent of the master
Boss Jukebox on/off switch.
- Never loops, regardless of the track's duration.
- New options panel tab (Victory Sound), alongside the existing Boss
Music tab, sharing the same mode/specific-track/track-pool UI.
- New slash commands: `/bjb testvictory`; `/bjb stop`, `/bjb list`,
and `/bjb preview` all extended to cover both categories.
- `generate_tracks.py` updated to scan both folders and report
additions/removals per category independently.
## v1.2.0
- Added a Preview button (speaker icon) next to each track in the
options panel, plus a "Stop Preview" button, so tracks can be
auditioned without needing to pull a boss.
- Track list changed from always-visible to collapsed-by-default behind
a "Show Tracks (N)" toggle button, to keep the panel compact.
- Removed duration display from track rows (name only).
- Fixed a "tofu box" placeholder character showing up on UI buttons --
WoW's default font doesn't include the arrow glyphs originally used.
## v1.1.0
- Added looping: if a boss fight runs longer than a track, the track
now replays automatically (timed via the track's known duration),
since WoW's sound API has no native loop flag.
- `generate_tracks.py` rewritten to require no external tools at all
(previously used `ffprobe`/ffmpeg for duration detection) -- reads
MP3 frame headers and Ogg page data directly in pure Python.
- Added `generate_tracks.py` add/remove diff reporting, so re-running it
after changing files in `Sounds\` clearly shows what changed.
- Added standalone Windows/macOS build scripts for people without
Python installed on their gaming PC.
## v1.0.0
- Initial release: plays a custom track (random from an enabled pool,
or a fixed specific track) when a boss encounter starts, and stops it
when the encounter ends.
- Options panel: enable/disable, mute Blizzard's own music during the
fight, playback mode, per-track enable/disable for the random pool.
- `Tracks.lua` + `generate_tracks.py` for listing/auto-generating the
track list from files dropped into `Sounds\`.
This mod has no additional files

