Releases: Gabbajoe/SaveWhispers
Releases · Gabbajoe/SaveWhispers
Release list
v1.4.1
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
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
- Names render as real |Hplayer:...|h tokens through the existing link
- 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
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
- Bookmarks: star any message, exempt from the per-category message cap,
v1.2
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
- Guild Chat is a single fixed conversation (always sorted first already),
- 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
- SetAlpha on the field wasn't visibly dimming its EditBox text on either
- 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 abelowmode 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
- flashSaved's text landed on top of/behind sibling widgets in tighter
- 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...
- Symmetric 0.70-1.30 range on both sliders puts 100% exactly in the middle
SaveWhispers v1.1
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.