Skip to content

Releases: dandwhelan/SpeakStone_Main

v2.0.6

Choose a tag to compare

@github-actions github-actions released this 30 Sep 06:58

SpeakStone Narration

v2.0.6 (2026-09-30)

Full Changelog Previous Releases

v2.0.5

Choose a tag to compare

@github-actions github-actions released this 29 Sep 10:19

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

Choose a tag to compare

@github-actions github-actions released this 29 Sep 09:30

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

Choose a tag to compare

@github-actions github-actions released this 29 Sep 07:16

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

Choose a tag to compare

@github-actions github-actions released this 29 Sep 04:19

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

Choose a tag to compare

@github-actions github-actions released this 28 Sep 12:15

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
  • 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

Choose a tag to compare

@github-actions github-actions released this 27 Sep 19:40

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

Choose a tag to compare

@github-actions github-actions released this 24 Sep 20:30

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

v1.5.2

Choose a tag to compare

@github-actions github-actions released this 23 Sep 21:55

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

Choose a tag to compare

@github-actions github-actions released this 23 Sep 10:46

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
  • 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
  • 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
  • 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
  • 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