Skip to content

Releases: Gabbajoe/SaveWhispers

v1.4.1

Choose a tag to compare

@github-actions github-actions released this 22 Jul 14:04

SaveWhispers v1.4.1 SW

v1.4.1 (2026-07-22)

Full Changelog Previous Releases

  • Hotfix v1.4.1: update Interface version, add icon and Chat category
    The addon showed as out of date and needed "Load out of date AddOns"
    enabled just to load - the .toc's Interface number (11508) hadn't been
    bumped for the client's current version (1.15.9, interface 11509).
    Also fixes two AddOns-list gaps noticed alongside it: no IconTexture was
    ever declared (showed no icon at all), and no Category (the actual
    client-read tag - X-Category is CurseForge-only and never shown in-game)
    so it wasn't grouped under Chat with other chat addons.
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com

v1.4

Choose a tag to compare

@github-actions github-actions released this 22 Jul 02:51
3a2e14b

SaveWhispers v1.4 SW

v1.4 (2026-07-22)

Full Changelog Previous Releases

  • Merge pull request #1 from Gabbajoe/agent/add-guild-and-current-group-chat-input
    Add guild and current group chat input
  • Add presence detection for DM contacts, bump to v1.4
    Sends a lightweight addon-message ping when opening a DM (cooldown per
    contact) - if the other side also has SaveWhispers loaded, they answer and
    that's recorded as a much stronger "are they actually online" signal than
    the existing Friends-list/lastSeen fallbacks, which only work for friends,
    group members, or someone who whispered recently. Shown as a small icon
    next to the online-status text once confirmed, separate from the
    online/busy/offline dot itself.
    Also updates the in-app Changelog tab and README for everything on this
    branch since v1.3 (the context-menu rework, clickable chat-log names,
    shift-click linking, guild/party chat input) and bumps both .toc files'
    Version/Title and SW.version to 1.4.
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Replace conversation header buttons with a right-click context menu
    Watchlist/Pin/Delete/Copy Name/Export Chat were a row of buttons above
    every open chat, crowding the header once Guild/Party/Raid also needed
    the message row for the new send-input feature on this branch. Right-click
    a conversation (in the list or the open chat's name) for a themed popup
    menu showing only the subset of actions that make sense for that
    conversation's type - built as a small custom widget rather than
    Blizzard's UIDropDownMenu template, which is awkward to reskin across the
    three flat UI styles.
    Also, while wiring up the same right-click pattern for sender names inside
    the chat log itself:
    • Names render as real |Hplayer:...|h tokens through the existing link
      pipeline, but get their own click handling (a custom Copy Name/Invite
      menu) instead of Blizzard's native SetItemRef/GameTooltip - Classic
      Era's GameTooltip:SetHyperlink doesn't recognize "player:" links, and
      worse, right-clicking through an addon-created button taints the click
      chain enough that even Blizzard's own "Copy Character Name" silently
      fails with ADDON_ACTION_FORBIDDEN (confirmed by testing - CopyToClipboard
      is fully off-limits to addon code, no workaround).
    • Invite is offered next to Copy Name whenever the target isn't already in
      your current party/raid (checked against the live roster, not
      UnitInParty/UnitInRaid which want a unit token rather than a name).
    • Shift-clicking an item to link it into the message box already worked
      (ChatEdit_InsertLink hook), but quests shift-clicked from the Objective
      Tracker didn't - the tracker checks ChatEdit_GetActiveWindow() first to
      decide whether any chat box is active before it bothers linking instead
      of untracking, and that function needed hooking too.
      Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Add guild and current group chat input
  • Update README for v1.3
    Was still titled V1.1 with a Changelog that stopped at V1.2, and the
    Features list didn't mention bookmarks, search, infinite chat history,
    or the theme-aware icon/scrollbar art added this release.
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com

v1.3

Choose a tag to compare

@github-actions github-actions released this 17 Jul 20:56

SaveWhispers v1.3 SW

v1.3 (2026-07-17)

Full Changelog Previous Releases

  • Add message bookmarks, chat search, infinite scroll, and a reorganized Settings tab (v1.3)
    • Bookmarks: star any message, exempt from the per-category message cap,
      new Bookmarks tab lists them all across every conversation with Jump.
    • Search: per-conversation and global "All Chats" search, jump-to-result
      scrolls to and briefly highlights the exact message.
    • Chat history loads more as you scroll up instead of hard-stopping at
      the last 200 messages, for both normal browsing and search results.
      Sticky-bottom scrolling: new messages only pull the view down if you
      were already at the bottom; otherwise a "N new messages" button appears.
    • Members popup (Party/Raid): smaller, sizes itself to the group, scrolls
      past 20 members, names individually clickable to copy just that one.
    • Settings tab reorganized into a compact two-column layout.
    • Theme-aware logo (window title + minimap) and custom scrollbar
      arrows/resize grip per UI Style, instead of tinted Classic Blizzard art
      on the flat themes.
    • Escape now closes the SaveWhispers window and its Members/Copy popups.
    • Button labels made consistent (Title Case) throughout.
    • Fixed: window couldn't be resized to fully fill the screen.
    • Fixed: Party/Raid chat could occasionally sort out of chronological
      order against other conversations.
    • Fixed: switching characters mid-session could keep writing into the
      previous character's Party/Raid log.
    • Fixed: ElvUI theme's window border was a flat gray instead of its own
      accent color.
      Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com

v1.2

Choose a tag to compare

@github-actions github-actions released this 16 Jul 09:37

SaveWhispers v1.2 SW

v1.2 (2026-07-16)

Full Changelog Previous Releases

  • Restore X-Curse-Project-ID in both .toc files, fix stale v1.1 in Title
    Lost at some point this session - the v1.2 release run just completed
    without it, so the packager skipped the CurseForge upload entirely (it
    only detected "GitHub: ... [token set]", never "CurseForge ID: ... [token
    set]", unlike the v1.1 run's log). GitHub release still went out fine
    since that doesn't depend on this field.
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Fix the actual cause of the Settings scroll area showing a void
    The last two commits (reapplying the backdrop on resize, capping max
    window height) didn't fix this - both were chasing the wrong cause. The
    real problem: content:SetSize(800, 1150) was a hardcoded guess, not
    measured from the actual placed widgets. Different themes have
    differently-sized checkboxes/buttons/sliders, so whichever theme's real
    content came in under 1150 left a permanently empty gap in the scroll
    area below it - showing the game world through, since nothing here puts
    an opaque background behind scroll content (only the outer window's own
    backdrop sits behind all of it, and empty space just passes that through).
    Happened regardless of window size, which is why capping resize height
    didn't help. Now measures the real height from content's top to the last
    button's bottom instead of guessing.
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Cap the window's max resize height at 1050 instead of near-full-screen
    Reapplying the backdrop after a resize (previous commit) didn't fix the
    void showing the game world through the bottom of a very large window -
    whatever the actual cause, it's below whatever Blizzard's tiled dialog
    background can reliably handle. The tallest panel's own content (Settings)
    is only ~1150px tall anyway, so allowing the window to resize much bigger
    than that was mostly just empty scrollable space past that limitation.
    Existing saved window sizes above the new cap shrink to fit automatically
    on next load (the restore logic already clamps against maxHeight).
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Fix window backdrop not covering the full frame at large sizes
    BackdropTemplateMixin is meant to redraw its tiled background automatically
    on every size change, but that didn't reliably keep up with a large native
    drag-resize or a large saved size restored on open - the tiled center fill
    stopped covering the frame partway down while the border kept stretching
    fine, leaving a "void" showing the game world through the rest of the
    window. Explicitly reapplying the backdrop after a resize settles (and
    after restoring a saved size, not before) forces a full redraw at the
    frame's actual current size.
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Rewrite v1.2 changelog to cover the full Settings/Guild/Party-Raid pass
    Consolidates everything from this dev cycle into fewer, clearer bullets:
    the Settings reorganization (including the Saved confirmation and No-limit
    toggles, previously two separate bullets), the Channels filter pill and
    its now-filter-aware counter, Guild Chat's simplified button row, the
    Party/Raid Members popup fix, and all three real bug fixes discovered
    along the way (blurry chat text, scale-dependent slider/drag jumping, and
    the session-fragmentation bug). Drops nothing that shipped - only folds
    duplicated bullets together and reflects the final shipped behavior.
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Fix a raid session getting silently orphaned mid-conversation
    StartGroupSession(kind) only checked its own kind's open-session slot
    before creating a new one. IsInRaid()/IsInParty() can briefly misreport
    right after a loading screen or raid conversion, so GROUP_JOINED firing
    again mid-raid (with the group never actually having left) could compute
    the wrong kind and start a second, competing session while the real one
    was still actively receiving messages. The moment that stray session later
    got relabeled via ConvertGroupSession (GROUP_ROSTER_UPDATE catching up),
    it claimed the openRaidSessionKey/openPartySessionKey slot out from under
    the real session, silently redirecting all further messages into the new
    one and leaving the original to just stop mid-conversation - confirmed in
    a live SavedVariables file where a continuous ~1h raid ended up split into
    three sessions that all "ended" within about a minute of each other.
    Now checks BOTH kinds' open-session slots first and reuses whichever one
    is already active instead of starting a competitor.
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Rename G/R to Grp in the "All" filter's combined counter
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Show a combined DM/G-R/Chan summary on the "All" filter's counter
    No single limit applies while viewing everything, so instead of falling
    back to just the DM number, show "DM x/y G/R x/y Chan x/y" all at once.
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Messages counter now reflects the active filter pill, not always DM
    Each category has its own separate "to keep" limit now, but the header
    counter was hardcoded to DM conversations/maxConversations regardless of
    which filter pill (DM/Guild/Group/Chan) was selected. Now shows the
    matching count/limit per filter - Party/Raid sessions vs maxGroupSessions,
    Channels vs maxChannels, DM vs maxConversations - Guild Chat just shows
    its name since it's a single fixed conversation with no "keep N" limit.
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Guild Chat: drop Pin/Members buttons; Party/Raid Members: drop online status
    • Guild Chat is a single fixed conversation (always sorted first already),
      so pinning it does nothing, and a members list here just duplicates the
      default Guild Roster window - removed both buttons for that one channel.
    • The Party/Raid Members popup queried the player's CURRENTLY grouped
      units, which for an old/closed session shows whoever they happen to be
      grouped with today (or nobody) - not the actual roster from that
      session. Now lists conversation.members (captured when the session
      started) with no online/offline text or color, which wasn't meaningful
      data for a historical snapshot anyway.
      Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Fix disabled message-limit field not visibly greying out, checkbox flash anchor
    • SetAlpha on the field wasn't visibly dimming its EditBox text on either
      theme - set the text color directly to grey instead, which unlike alpha
      is guaranteed visible regardless of any EditBox rendering quirk.
    • The "No limit" checkbox's own OnClick still called flashSaved(field)
      without the unlimitedLabel anchor (only apply() had been fixed earlier),
      so clicking the checkbox itself still put the "Saved" text behind the
      checkbox instead of after "No limit".
      Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Drop the "Saved" text on the count-limit fields, border flash only
    Anchoring it below the field still collided, this time with "Channels to
    keep" sitting in the next row. These fields have no free space on any
    side (two-per-row, next row right below), so text never fits regardless
    of placement - the green border flash alone already shows the save
    unambiguously. Message-limit fields keep both, they have room.
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Grey out the message-limit field when its "No limit" box is checked
    Disable() alone doesn't change appearance on either theme - alpha dims it
    uniformly without needing per-theme color handling.
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Fix Settings "Saved" flash overlap and message-limit checkbox alignment
    • flashSaved's text landed on top of/behind sibling widgets in tighter
      rows: "No limit" checkbox+label on the message-limit rows, and "Party/Raid
      sessions to keep"'s caption (which sits immediately right of "DM
      conversations to keep" with no gap at all) on the count-limit row.
      flashSaved now takes an explicit anchor widget, and a below mode for
      rows with nothing safe to the right.
    • The "No limit" checkbox is now centered on the field's actual height
      instead of a fixed downward nudge - it's a different size per theme
      (32px native vs. 24px flat) and was visibly lower than the field on both.
      Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Shorten Messages filter pill labels to fix overlap at narrow widths
    DMs -> DM, Channels -> Chan. The 5-pill row (All/DMs/Guild/Group/Channels)
    overlapped at narrower window widths / flat themes with less padding.
    Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
  • Rework Interface/Chat scale sliders: centered 100%, off-track reset button, step ruler
    • Symmetric 0.70-1.30 range on both sliders puts 100% exactly in the middle
      instead of off to one side.
    • The 100% reset control is now a real button beside the track instead of...
Read more

SaveWhispers v1.1

Choose a tag to compare

@Gabbajoe Gabbajoe released this 15 Jul 16:19

Native Blizzard window redesign, Raid Chat + Party/Raid session history, clickable item/quest links (incl. Questie), conversation list filters, Settings Danger Zone, four selectable UI styles (WoW Classic/ElvUI/Modern/Dragonflight), and a minimap unread badge.

Co-Author: Gabbajoe

Available on CurseForge.