Releases: dandwhelan/SpeakStone_Main
Releases · dandwhelan/SpeakStone_Main
Release list
v2.0.6
SpeakStone Narration
v2.0.6 (2026-09-30)
Full Changelog Previous Releases
- Release 2.0.6: latest base addon changes
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
v2.0.5
SpeakStone Narration
v2.0.5 (2026-09-29)
Full Changelog Previous Releases
- Release 2.0.5: book text for the last 25 voiced pages (from the website's submissions)
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
v2.0.4
SpeakStone Narration
v2.0.4 (2026-09-29)
Full Changelog Previous Releases
- CurseForge project ID 1708764 (owner's project list is the source of truth); v2.0.4
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
v2.0.3
SpeakStone Narration
v2.0.3 (2026-09-29)
Full Changelog Previous Releases
- Release 2.0.3: startup pack check knows Cataclysm Part 1/2 and Forever Chatter
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - Settings pack check: Cataclysm_Part1/Part2 and SpeakStone_Forever_Chatter
The v2.0.0 packs split Cataclysm below CurseForge's ~600 MB upload limit (413 above it),
and WoW Forever gets a Chatter pack (gossip + books). The dashboard's list of expected
packs names the new ones. Not released until the new packs exist on CurseForge.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
v2.0.2
SpeakStone Narration
v2.0.2 (2026-09-29)
Full Changelog Previous Releases
- Release 2.0.2: book text for every voiced book
BookTexts.lua rebuilt after the 2026-09-29 install: 746 books, 2,315 pages (was 353 / 1,120),
so the Audio Library's book view shows the words of every newly voiced book.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
v2.0.1
SpeakStone Narration
v2.0.1 (2026-09-28)
Full Changelog Previous Releases
- Release 2.0.1
- Audio Library: Quests / Gossip / Books tabs. Books shows each book as a book:
the page text, Page X of N, Prev/Next, Play page, Read book (turns pages on its own). - Settings: a "Play" section with Books / Gossip / Quests buttons.
- Books keep reading after the window closes; opening a book reads the whole book;
Play/Stop button on the book window; books that share a title get the right audio. - Quest lines keep playing after closing/accepting the quest and do not restart on reopen.
- Wording: voices "similar to the in-game NPCs"; unofficial / not affiliated notice.
- Forever: pack check expects Forever Audio Pack 1 + 2.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
- Audio Library: Quests / Gossip / Books tabs. Books shows each book as a book:
- Settings: Play section (Books/Gossip/Quests); book view shows the page text
Owner 2026-09-28: replace 'Open Audio Library' with a 'Play' section of three
buttons, each opening the library on that tab; and add the book text to the book
view. New BookTexts.lua (tools/build_book_texts.py): the text each page was
voiced from, filled from emulator page_text where missing; $B/$N/$C/$R/$G
resolved for the player.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - Books tab: book view with pages; fix tab-switch error
Owner testing 2026-09-28: the list was 'not actually a book'. The Books tab now lists
one row per book (Open / Read); Open shows the book as a book: title, Page X of N,
Prev/Next (and mouse wheel), Play page, Read book/Stop, Back. While reading, the page
shown moves on by itself.
Fixes 'attempt to concatenate field variant (a nil value)' / 'attempt to index field
book (a nil value)': switching tabs redrew the previous tab's list under the new mode,
because resetting the scrollbar in FilterList redraws before the list is replaced.
SetMode now drops the old list first.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - Test build: books/quests keep reading, whole-book queue, Play/Stop book button, shared-title book keys
Ported from the workspace SpeakStone_Main.lua (hunks marked owner 2026-09-28) onto
v2.0.0 + Books tab + wording. For owner testing in game; not pushed.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - Merge branch 'main' of https://github.com/dandwhelan/SpeakStone\_Main into books-tab
- Wording: voices "similar to the in-game NPCs", add unofficial / not-affiliated notice
Owner, 2026-09-28: align public copy with the CurseForge-safe wording already
used on the CurseForge project pages. Player-facing text only says the voices are
similar to the in-game NPCs (Forever: characters, not a generic narrator), never
how they are made, and always carries "Unofficial; not affiliated with Blizzard
Entertainment."
Also fixes the settings dashboard pack check for WoW Forever: the live set is
SpeakStone_Forever_Audio_Pack1 + Pack2, not the retired Audio_Part1-4, so a
Forever player with both packs was told packs were missing.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - Audio Library: Books tab — play whole books or single pages
Owner, 2026-09-28: "Add an option to play books in the audio library, it's a
button across the top called books and you can play entire books, or each page."
BuildAudioIndex now also collects book clips ("_page.", the names
PlayItemAudio already looks up), grouped by with sorted pages. Only book
clips go into that list; quest and gossip clips are unaffected.
The library's single Quests <-> Gossip toggle becomes three tabs across the
top: Quests, Gossip, Books. The Books tab lists each book (button "Book" reads
every page in order, the next page starting when the previous one ends) with a
row per page under it (button "Play" for that page alone). Search matches book
names. Stop Audio, switching tabs or closing the window ends a reading.
Names come from the file name ("item_abandoned_tablet" -> "Abandoned Tablet");
item-ID books use the client's item name when it knows it.
Not tested in game yet.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
v2.0.0
SpeakStone Narration
v2.0.0 (2026-09-27)
Full Changelog Previous Releases
- Release 2.0.0
Release day. Brings the first-start tutorial with settings profiles, the
audio pack prompt, and voice race/sex in the Audio Library, to the same
version number on retail and Forever, matching the v2.0.0 tag.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - Merge pull request #12 from dandwhelan/claude/voice-info-sex-only
Audio library: voice race/sex from packs, plus tutorial follow-ups - Tutorial: reposition when already open, and when Settings opens
Still overlapped for the owner after the last fix, because the placement
code never ran. The tutorial now opens at login, so it is usually already
visible when the player opens Settings or clicks Profiles. Show() on a
visible frame doesn't fire OnShow, and Settings appearing on top moved
nothing.
Placement is now addon.PlaceTutorial(). It is called from OnShow, from
ShowTutorial() after Show(), and from a hook on Settings' OnShow, so all
three ways the two windows meet end with them side by side.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - Tutorial: pick a side of Settings that fits, or make room
Anchoring the tutorial to Settings' left still overlapped on the owner's
screen: Settings sits near the left edge, so there was no room, and the
clamp-to-screen rule pushed the tutorial back over it. It now goes left if
it fits, else right. If neither fits, Settings slides over so the two sit
side by side, centered.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - Tutorial: show until actually closed, and open beside Settings
The owner never saw the tutorial. It set tutorialDone the moment it
tried to show, so anything that hid it at login used up its one
appearance: his saved variables had tutorialDone = true and a profile
applied, and he had seen nothing.
It is now marked done only when the player closes it. Hiding the whole UI
(Alt+Z, a cinematic) fires the same OnHide and doesn't count. The flag is
now tutorialVersion, so players left with the old tutorialDone see it once,
and bumping TUTORIAL_VERSION re-shows it after adding a page.
Opened from the Profiles button it covered the Settings window. It now
anchors to Settings' left; the Audio Library already takes the right.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - Audio library: show a sex-only voice code as "Male"/"Female"
The pack builder emits a bare "M" or "F" when the NPC's race in the ledger
is not a real race name (model-folder names like Dragonspawn2Caster, or
blank). About a quarter of shipped clips are like that. DescribeTag split
the empty race code off and produced " male", with a leading space and
lower case. It now labels those "Male"/"Female", and search still keeps
"male" from matching female voices.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - Audio library: take voice race/sex from each audio pack, drop extra addon
Packs pass optional voice info as a third argument to
SpeakStone_RegisterSoundPack (or entry.voice in the pending queue).
No separate Load-on-Demand addon.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_016NzkE42P4mnfrrAd3eLX16 - Audio library: show and search voice race/sex from a load-on-demand addon
SpeakStone_VoiceInfo is a LoadOnDemand addon loaded the first time the
audio library opens. Rows show the voice (e.g. Human male), tooltips
show it per clip, and the search box matches race and sex words.
Ships sample data until the voice pipeline generates the real file.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_016NzkE42P4mnfrrAd3eLX16 - Tutorial: only default to Full Narration on a fresh install
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_016NzkE42P4mnfrrAd3eLX16 - Tutorial: add Help SpeakStone grow page, default to Full Narration, show once
Page 5 covers lending your voice (record in browser or upload) and
submitting captured quests, NPC talk, books and items via
speakstone.beanw.co.uk, with a capture toggle and export button.
Closing the tutorial without picking a profile applies Full Narration.
tutorialDone is saved when the tutorial opens, so it only appears once.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_016NzkE42P4mnfrrAd3eLX16 - Merge pull request #11 from dandwhelan/claude/audio-pack-prompt-rldj3a
Audio pack prompt + first-start tutorial with settings profiles - Turn debug messages off by default
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_016NzkE42P4mnfrrAd3eLX16 - Add first-start tutorial with premade settings profiles
Five profiles (Full Narration, Story Only, Blizzard First, Manual,
Helper/Tester), a setup wizard shown once on first login, a Profiles
button in settings, and /ss tutorial | /ss profiles.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_016NzkE42P4mnfrrAd3eLX16 - Audio pack prompt: show once, add copyable CurseForge link
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_016NzkE42P4mnfrrAd3eLX16 - Prompt players with no audio packs to get them from CurseForge
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_016NzkE42P4mnfrrAd3eLX16
v1.5.3
SpeakStone Narration
v1.5.3 (2026-09-24)
Full Changelog Previous Releases
- Release 1.5.3: instance secret-value fix, lower memory use
- Fix a Lua error in instances (seen in Proving Grounds): UnitSex("npc")
can return a WoW 12.x secret number, and comparing it tainted and threw.
It is now pcall-wrapped and treated as unknown when secret, like the
GUID/name/race guards beside it. - Cut memory: the settings dashboard built the full per-quest audio index
(~35k rows) just to show three counts, and kept it all session. It now
counts without keeping the rows, and the Audio Library builds its index
on open and releases it on close. The base addon measured 26 MB before. - Gossip capture debug now says why a line was not recorded (already
captured, already voiced, already exported).
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
- Fix a Lua error in instances (seen in Proving Grounds): UnitSex("npc")
v1.5.2
SpeakStone Narration
v1.5.2 (2026-09-23)
Full Changelog Previous Releases
- Release 1.5.2: today's settings and harvester work
Ships the 2026-09-23 changes to settings and the harvester (NPC chat
capture, per-character capture index, sent-line hashes so exports stop
resending everything) together with VoicedLines.lua, which the .toc now
loads. The Forever fork is regenerated from the same code by
build_forever_main.py, with its own QuestTitles/NPCNames from the Forever
harvest.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
v1.5.1
SpeakStone Narration
v1.5.1 (2026-09-23)
Full Changelog Previous Releases
- Settings panel: show missing packs, drop standalone Harvester, new defaults
The Voice Packs card listed installed pack names, which ran off the card
and answered the wrong question. It now compares against the full expected
set (retail expansion packs, or the four Forever audio parts) and says either
"All voice packs installed" or exactly which packs are missing. The
suppressed-gossip line is gone; players do not need to know about it.
The standalone SpeakStoneHarvester addon is retired. Capture is owned by this
addon alone and no longer stands down when that addon is loaded; its leftover
saved variables are still merged on export so nothing recorded with it is lost.
Labels: CAPTURED -> YOUR CAPTURES; "Auto capture quest text to help voice
missing quests"; the debug-messages toggle moves to the Contribute section.
Defaults (owner's call): Blizzard voice lines silenced, debug messages on,
wait before speaking 1.0s (the unreleased 0.5 -> 1.5 migration now targets 1.0).
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com - Merge pull request #10 from dandwhelan/claude/quest-dialogue-npc-sync-gdc07s
Narration gives way to Blizzard's voice lines; leaner, smarter capture - Store NPC traits once per NPC, not on every quest passage
Each quest passage carried its speaker's name, sex, race, race token and
creature type -- about 150 bytes of saved variables apiece, repeated for
every step of a quest chain from the same giver, on a store every
character on the account feeds. They now live once in h.npcs, keyed by
creature ID; passages keep the npcID. Existing stores are converted on
load (schema 4), and NPCs no remaining passage points at are dropped
after a submit. The site reads the new layout (speakstone#21).
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_018iBViKwoa2jujs3HtMsbYj - Tag captures with their character, track gossip variants, match $c/$r
- The capture store is account-wide but the export header describes only
the character logged in at export time, so the site resolved $c/$r
against the wrong class for every alt's capture. A deduplicated chars
list (class/race/sex/faction, no names) now travels with the export and
each quest passage and gossip variant points into it. - Gossip variants carry seen = {count, first, last}, so the site can tell
the current line from one a story beat retired. - GossipTexts lookups also try the live text with this character's class
and race swapped to $c/$r, so a resolved line matches every class. - NPC chat capture is capped at 300 NPCs.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_018iBViKwoa2jujs3HtMsbYj
- The capture store is account-wide but the export header describes only
- Gap after NPC lines follows the wait slider; capture NPC chat; weekly voiced-line refresh
- Narration now waits the 'Wait before speaking' setting (default 1.5s)
after a Blizzard voice line ends, not a fixed 0.4s. - Harvester captures NPC /say, /yell, whisper and party lines per NPC
(creatures only, not in combat, not already known voiced, max 25 per
NPC) as npcChat, with the same sent-ledger handling as the rest. - Settings card shows NPC chat lines captured and lines already sent.
- build_voiced_lines.py takes --product; a weekly workflow rebuilds
VoicedLines.lua and opens a PR when it changes.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_018iBViKwoa2jujs3HtMsbYj
- Narration now waits the 'Wait before speaking' setting (default 1.5s)
- Wait for any voiced NPC line; stop re-sending captured text
Voiced lines:- VoicedLines.lua (generated by tools/build_voiced_lines.py from the
client's BroadcastText) lists hashes of NPC chat lines Blizzard voiced.
A listed /say, /yell, whisper or party line from any NPC holds back or
stops narration, like a talking head. Unlisted lines still count from
the narrated NPC only, as before.
Harvest: - Export window gets 'Submitted -- clear it': removes exactly what was
exported and keeps a hash ledger so the same lines aren't captured or
sent again. The store (and SavedVariables) no longer grows forever. - Quest passages that already have audio, and greetings already matched
to a voiced clip, are no longer captured. - The size reminder is a popup with 'Export now', held until combat ends.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_018iBViKwoa2jujs3HtMsbYj
- VoicedLines.lua (generated by tools/build_voiced_lines.py from the
- Default autoplay wait to 1.5s; cover gaps in multi-line talking heads
- autoPlayDelay default 0.5s -> 1.5s so quest-giver greetings finish
first. One-time migration moves players still on the old 0.5 default. - A held clip no longer starts in the pause between talking-head lines
(and gets cut off by the next line): the wait is extended while more
lines are to come; TALKINGHEAD_CLOSE still releases it early.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_018iBViKwoa2jujs3HtMsbYj
- autoPlayDelay default 0.5s -> 1.5s so quest-giver greetings finish
- Hold narration for Blizzard's voiced NPC lines
Autoplay only waited a fixed delay (0.5s), so talking heads and quest
givers speaking aloud after accept/turn-in were talked over.- Pending narration now waits until a talking head or the narrated NPC's
/say, /yell, whisper or party line finishes (talking-head length from
C_TalkingHead, chat lines estimated from text length). - A talking head stops narration already playing.
- New setting 'Give way when an NPC speaks' (on by default); no effect
while Blizzard's voice lines are muted. Manual plays are unaffected.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session\_018iBViKwoa2jujs3HtMsbYj
- Pending narration now waits until a talking head or the narrated NPC's