promotional bannermobile promotional banner

MailMatic

MailMatic greets you with an on-screen pop-up and a sound the moment new mail arrives, including at login. Per-race, per-gender voice lines, a wax-sealed envelope icon, and adjustable text, position, and timing. Fully localized. /mailmatic to set up.
Back to Files

v2.0.0

File nameMailMatic-v2.0.0.zip
Uploaded
Sep 12, 2026
Downloads
117
Size
4.7 MB
Flavors
MoP ClassicRetailClassic TBCClassic
File ID
8866184
Type
R
Release
Supported game versions
  • 12.1.0
  • 5.5.4
  • 4.4.2
  • 3.4.5
  • 2.5.6
  • 1.15.9

What's new

MailMatic Change Log

2.0.0

Changed

  • New-mail announcements now always use MailMatic's public emote announcement. The obsolete emote switch was removed from Social settings.

1.10.2

Changed

  • Maintenance update.

1.10.1

In-Game

  • MailMatic no longer announces to players around you. The new-mail line now shows only in your own chat, when the "Show in your chat" option under the Social tab is checked.

Changed

  • Social.lua's Social_OnMail() no longer sends SendChatMessage(text, "EMOTE") to the public EMOTE channel. It now prints locally through the existing MM:BrandPrint() helper, same as the other chat notifications. The {rt1} raid-target token is dropped from social_emote_newmail in every locale since AddMessage does not render it, and BrandPrint already supplies the "MailMatic" brand prefix. The options_social_emote / options_social_emote_desc labels are relabeled to describe the local-only print in all 11 locales. Saved profile key profile.social.emote and the 25s cooldown are unchanged.
  • MM:EmitMailAlert() now tells Social_OnMail() whether it already printed the chat notification line, so only one local line appears per mail event when both "Show Chat Notifications" and the Social emote toggle are on.

1.10.0

In-Game

  • Change logs open one at a time. If you run several Infinite Loop Alchemist addons, their change log windows no longer pile up on top of each other after an update. They come one at a time, and the next one opens when you close the one in front of it.
  • Turn the pop-ups off from the window. The change log window now has a checkbox that stops these pop-ups for each addon.

Added

  • Change log popups across every -Matic addon now open one at a time through a shared queue in LibMatic-ChangeLog-1.0 instead of stacking on the same login. MailMatic passes addon = "MailMatic" as its queue key and registers with the library in OnInitialize so the family-wide control can reach its own saved setting.
  • An auto-opened popup carries a suppress checkbox that writes every registered addon's own generalSettings.isChangeLogAutoPopUpEnabled, so the existing "Show Change Log On Update" toggle turns it back on. Popups already queued still get their turn; the checkbox governs the next update.
  • LibMatic-FitText-1.0 added to embeds.xml. Supporter names in the change log panel are now one autoshrinking single-line label each instead of a joined, wrapped column, so a long Name-Realm shrinks to fit rather than wrapping.

1.9.4

In-Game

  • The Supporters box draws once again. On Anniversary, Mists and Classic clients the supporter names and the Discord link box on the General settings page could pile up under the toggles, overlapping each other, after the window had been opened a few times. It draws once now, in every addon that shows it.

Fixed

  • Shared LibMatic-ChangeLog-1.0 MINOR 10 (libmatic commit c11f544): the change log popup's supporter banner, promo pane, and Discord invite box are now tracked in the pool the moment each frame is acquired, not after the draw finishes. A client error partway through a previous draw could leave those frames untracked, so the next draw recycled the tracked frames while the orphans stayed attached, doubling the supporter banner and pane on top of the General settings page's toggles.

1.9.3

Changed

  • Supporters credits refreshed.

1.9.2

In-Game

  • Fixed. Hovering a checkbox or any other setting in the options window no longer pops up an error window on every hover. The setting's tooltip shows as it should.

Fixed

  • The embedded Ace3 libraries (AceAddon, AceConfig, AceConfigCmd, AceConfigDialog, AceConfigRegistry, AceConsole, AceDB, AceDBOptions, AceEvent, AceGUI and all its widgets, AceLocale, AceTimer, LibStub) were brought up to upstream master (2026-09-08): AceConfigDialog-3.0 MINOR 93, AceDB-3.0 MINOR 35, AceConfigRegistry-3.0 MINOR 22. The old AceConfigDialog passed true in the alpha slot of GameTooltip:SetText, and WoW 12.1 now validates that argument as a number, throwing "bad argument #5 to 'SetText'" on every hover over a checkbox or any other option. Upstream passes an explicit alpha, and the same sweep also fixes CheckBox desaturation on 12.1 and secret text in the Heading widget.

Changed

  • tests/version_source_spec.lua: the popup entry is now only required to match the TOC version when that version's CHANGE_LOG.md section has an ### In-Game heading. A release with nothing player-facing can leave the popup on its last entry without failing the gate; the popup must still never be ahead of the TOC.
  • Supporters credits refreshed.

1.9.1

Changed

  • Supporters credits refreshed.

1.9.0

In-Game

  • Supporters. Every -Matic addon is built and updated by one person. A Supporter subscription on the Infinite Loop Alchemist Discord ($3.99 a month) keeps every addon updated, and puts your character name and realm at the top of the change log in every -Matic addon, in the General settings page of every -Matic addon, and on the Supporters page. Open the Discord invite from the box under the Supporters banner in this window.
  • Supporters in Settings. The Supporters banner, the copyable Discord invite, and the supporter name list now also sit at the top of the General settings page, so you can find them without waiting for the next change log.
  • Fixed. The Supporters section on the General settings page never appeared before this version. It shows now.

Added

  • Shared LibMatic-ChangeLog-1.0 MINOR 9: the change log popup now shows a supporter banner (promo art pinned on top at 92% alpha, a "Copy me" label and a read-only copyable Discord invite box under it), a crit-log style pane below it listing supporter names in gold and realms in cream across three columns with dividers, its own scroller with the bar hidden until needed, and a "No Supporters Yet" art state when the roster is empty. Clicking the art opens a copy dialog raised above the popup.
  • Shared LibMatic-Supporters-1.0 MINOR 5: name/realm split and colouring for the roster, a remembered shuffled rotation capped at 50 entries per open so every supporter takes a turn at the top, and localized tooltip/copy strings.
  • Shared LibMatic-Settings-1.0 MINOR 25: the same supporter banner now sits at the very top of the General settings page, laid out in two columns.
  • Modules/MailMaticOptions.lua passes supportersStore = MailMatic.db.global into BuildGeneralPage, and Modules/ChangeLogPopUp.lua passes the same table into the change log popup's spec, so the roster's shuffled rotation order is remembered across sessions and shared between the two surfaces.

Fixed

  • embeds.xml never loaded Libs\LibMatic\LibMatic-Supporters-1.0\LibMatic-Supporters-1.0.xml, so the Supporters roster on the General settings page silently never rendered even after LibMatic-Settings grew the banner in 1.8.0. It now loads before LibMatic-Settings-1.0.

1.8.2

In-Game

  • The What's New window no longer opens on every reload. It opens once when a new version arrives, then stays closed until the next one.

Fixed

  • Core.lua hardcoded MM.version = "1.6.1" and no release since 1.6.1 bumped it, while the TOCs and the newest popup entry said 1.8.1. After the popup showed, the addon saved 1.6.1 as the last seen version, so the 1.8.1 entry was still "newer" on every reload. The version now comes from the TOC through GetAddOnMetadata (global first, then C_AddOns, the same fallback RepMatic and LibMatic-Startup use), so it cannot lag a release. Test tests/version_source_spec.lua, which also checks every per-flavor TOC and the newest popup entry against MailMatic.toc.

Changed

  • release.sh: version drift gate runs tests/version_source_spec.lua before packaging and aborts on any mismatch.

1.8.1

In-Game

  • Alerts no longer wait for loot rolls. A new-mail alert that arrived while a group loot roll window was open waited until the rolls closed, and was lost when that took too long. The roll window no longer holds it; the alert shows right away.

Fixed

  • LibMatic-OverlayGuard-1.0 MINOR 8 (shared library, ships inside this release and wins the LibStub version race for every installed ILA addon): Blizzard registers GroupLootContainer as an externally anchored AlertFrame subsystem (Blizzard_UIPanels_Game/Mainline/GroupLootFrame.lua:9) and keeps it shown for the server's whole roll time, so the MINOR 6 toast condition treated every group loot roll window as an active toast and every alert queued behind it was silently discarded past the queue hold. Roll buttons are a panel the player is reading, not a presentation overlay, and no longer count; the talking head and the other watched frames still block. Arming also re-registers the toast condition on every pass, so a newer copy loading over an already-armed older one runs the current rule instead of the older closure for the rest of the session. LibMatic test tests/test_overlayguard_grouploot.lua. MailMatic's own alert already passes a 60s hold, so only the roll-window half applied here: a new-mail alert fired during a roll window waited for it and was dropped once the wait passed the hold.

Changed

  • release.sh: --notify accepts MailMatic's plain ## X.Y.Z changelog headings (6c2472c); post intake metadata with --form-string (f649793).

1.8.0

Added

  • A Supporters section on the General settings page, from the shared LibMatic-Supporters-1.0 library through LibMatic-Settings BuildGeneralPage: a thank-you header, the Discord supporters by name, the $3.99 a month pitch and the Discord link. The library's data and strings ship inside LibMatic (Supporters MINOR 1 to 4).

Fixed

  • LibMatic-ChangeLog MINOR 7 (shared library): the change log popup skinned its pooled AceGUI Frame with parchment and a wood border and handed the frame back to the shared pool still wearing them. AceGUI applies the Frame widget's backdrop once at construction and never on reuse, and Blizzard's ApplyBackdrop resets both colours to white, so the standalone Options window, AceConfigDialog's next Frame from that pool, opened on tan parchment whenever the change log had been shown earlier that session. The popup now captures the frame's backdrop and colours before skinning and restores them from the widget's OnRelease callback.

Changed

  • The change log popup opens on a version bump only when it carries an entry newer than the version the player last saw (LibMatic-ChangeLog MINOR 8 HasEntryNewerThan, through the existing MailMatic.showChangeLogIfNew on the login path). A release with nothing to tell the player, like this one, no longer reopens the previous version's notes.
  • release.sh: --notify re-posts the current version's CHANGE_LOG.md section to Addon Alchemist; the Fastlane branch dispatch is gone (388d39b, fba8442, 5b3633a, 2b4f37d).

1.7.1

Changed

  • Refreshed the GearMatic icon shown in the shared "More Infinite Loop Alchemist Addons" list to updated artwork.

In-Game

  • Refreshed the GearMatic icon shown in the "More Infinite Loop Alchemist Addons" list.

1.7.0

In-Game

  • The what's-new popup now appears in your language. All ten supported languages (German, Spanish, Mexican Spanish, French, Italian, Korean, Brazilian Portuguese, Russian, and both Chinese scripts) get translated release notes instead of English.

Changed

  • Changelog popup localized the GearMatic way: entries capped at the latest 10, every title, status line, label, and body resolved through clp_* AceLocale keys, translated at full key parity across all shipped locales.

1.6.9

In-Game

  • Fixed the custom font choices showing up on non-English game clients. The decorative fonts only contain Latin letters and render as empty boxes in other languages, so the custom fonts are now offered on English clients only; every other language keeps the game's own fonts.

Fixed

  • English-only gate on the LibSharedMedia font registrations in the SharedMedia module: non-English clients register zero custom fonts and LibSharedMedia's own locale default answers any saved custom font name.

1.6.8

In-Game

  • Fixed the settings window failing to open. Patch 12.1.0 removed a piece of the game's own interface code that every option checkbox was built on, so asking for settings produced an error instead of a window. Whether it hit you depended on which other addons you had loaded, because some of them carry a newer copy of that shared code and quietly fixed it for everyone.

Fixed

  • Refreshed the vendored AceGUI-3.0 widgets. Build 69404 deleted the global SetDesaturation from Blizzard_UIParent/Shared/UIParent.lua with no deprecation path; AceGUI CheckBox v26 called it while drawing the first checkbox, so the options panel died before it rendered. Ace3 already ships v27 using check:SetDesaturated(). The widget is registered once per session by whichever loaded copy has the highest version, so shipping current files repairs the panel even when the stale copy belongs to a third-party addon. CheckBox 26 to 27, ColorPicker 25 to 28, EditBox 28 to 29, Keybinding 26 to 27, MultiLineEditBox 32 to 33, Slider 23 to 24, TreeGroup 47 to 49.

1.6.7

Fixed

  • Shipped LibMatic-AlertStack-1.0 MINOR 4 (shared library fix, libmatic commit 47df851): a cinematic or in-game video hiding the UI fired OnHide on still-visible alert frames and silently untracked them from the shared cross-addon alert stack, so they stopped being reanchored, escaped the max-alert caps, and could end up overlapping other alerts at one spot. The stack now only drops a frame on a genuine self-hide. No MailMatic addon-code changes; MailMatic's own alert engine was audited for the wider ancestor-hide ghost-alert bug class and found not affected.

In-Game

  • Fixed the mail alert being able to land on top of other addons' alerts in one spot after a cinematic or in-game video played while an alert was showing.

1.6.6

Fixed

  • Bumped the Mainline TOC Interface to 120100, matching the WoW retail 12.1.0 client patch, and updated the bare multi-flavor MailMatic.toc's Interface list to match.

In-Game

  • Updated for the WoW 12.1.0 retail patch.

1.6.5

Changed

  • New-mail alert sounds gained a 2-second rate-limit floor via the shared LibMatic-SoundThrottle-1.0, underneath the existing configurable once-per-login / interval sound limit. A throttled attempt no longer consumes the configured interval.

In-Game

  • The new-mail sound can play at most once every 2 seconds, so overlapping mail alerts never stack sounds.

1.6.4

Fixed

  • Bumped the Classic Era (Vanilla) TOC Interface to 11509, matching the WoW Classic 1.15.9 client patch, and updated the bare multi-flavor MailMatic.toc's Interface list to match.
  • Bumped the embedded LibSharedMedia-3.0 library's TBC TOC Interface from 20504 to 20506, catching it up to the TBC 2.5.6 client patch that MailMatic_TBC.toc already targeted, to avoid a stale load-on-demand Interface mismatch.

Changed

  • Refreshed the RepMatic icon shown in the shared "More Infinite Loop Alchemist Addons" list to updated artwork.

In-Game

  • Updated for the latest WoW Classic Era and Burning Crusade Classic client patches.
  • Refreshed the RepMatic icon shown in the "More Infinite Loop Alchemist Addons" list.

1.6.3

Changed

  • Updated the embedded LibMatic library. The GearMatic entry in the shared "More Infinite Loop Alchemist Addons" description list was refreshed (simulated procs, trinkets, and set bonuses, best-in-slot skulls, durability alerts, and browsing your alts' gear) in all 11 locales.

In-Game

  • The Infinite Loop Alchemist addon list in Settings now describes GearMatic's newest features: simulated procs, trinkets, and set bonuses, best-in-slot skull marks, durability alerts, and browsing your alts' gear on the character sheet.

1.6.2

Fixed

  • Reloading the UI no longer re-fires the mail alert or the public social emote for mail that was already announced. PLAYER_ENTERING_WORLD's isReloadingUi path now seeds the mail-transition state from HasNewMail() without firing (new MailState:Seed), instead of running the full CheckMail transition against a freshly reset state. Initial-login behavior (alert, sound-once-per-login reset, login mail poll) is unchanged, and UPDATE_PENDING_MAIL still fires normally for genuinely new mail after a reload.
  • The Alert Display Duration Reset button restored 4.0 seconds while the shipped default is 3.0. Both the displayDuration and fadeTime resets in the options now read the AceDB defaults table instead of hardcoded literals, and Alert.lua's nil-fallback was corrected from 4.0 to 3.0 to match.
  • MailMatic's chat-prefix colors had drifted from the colors registered with LibMatic-Startup: BrandLine now resolves the brand color via Startup:GetBrandColor("MailMatic") (same pattern as RepMatic) and the body grey was corrected from c2bfb6 to d0cdc4 to match the registered textColor.
  • Bumped the TBC TOC interface from 20505 to 20506 to match the live 2.5.6 Anniversary client.

Changed

  • The update notice now runs on the shared LibMatic-VersionCheck-1.0 library used by the whole -Matic family, replacing MailMatic's own AceComm version broadcaster (Modules/VersionBroadcast.lua removed along with its spec). One shared comm prefix serves every -Matic addon; the notice still appears at most once per session, works ungrouped over the guild channel, and prerelease versions never advertise or nag. The existing "Notify Me About Updates" setting keeps working and now gates the shared notice; its description was reworded in all 11 locales. The old notify_update_available locale key was removed and the new notify_new_version_available key added in all 11 locales.
  • Removed Core.lua's hand-rolled versionParts/IsNewerVersion in favor of LibMatic-ChangeLog-1.0's ShowIfNew, which also strips leading "v" and prerelease "-suffix" tags before comparing. The changelog auto-popup gate (isChangeLogAutoPopUpEnabled) is preserved via the spec's freshInstall flag, and lastSeenVersion/oldVersion bookkeeping is unchanged. The version_compare spec now exercises the shared library directly.
  • Debug-only work in the alert hot path (the frame-geometry probe, the OverlayGuard blockers dump, and their string.format allocations in Alert:Show) now only runs when login debug is enabled instead of being computed and discarded on every alert. Debug output is unchanged when /mailmatic debug is on.

In-Game

  • Reloading your interface no longer repeats the "You've Got Mail!" pop-up or the public emote for mail you were already told about. You are still alerted when you log in with mail waiting and whenever new mail actually arrives.
  • The Reset button next to the alert's Display Duration slider now restores the true default of 3 seconds. It previously set 4 seconds, one second longer than a fresh install uses.
  • The "newer version available" chat notice now reaches you anywhere, even when you are not in a group, as long as a guildmate or group member runs a newer MailMatic. The "Notify Me About Updates" setting still controls it.
  • MailMatic's messages in the chat window now use the correct MailMatic colors.

1.6.1

Fixed

  • The "You've Got Mail" on-screen alert now always appears when new mail arrives. An alert rate-limit setting could previously suppress the visual pop-up even while you still had mail, which meant the mail indicator could be hidden when you had mail. That alert throttle has been removed entirely; the pop-up now fires on every genuine new-mail event. The sound cooldown (sound rate limit / once-per-login) is independent and unchanged.
  • Synced the in-code addon version, which had drifted to 1.3.0, back up to the shipped version, so the loaded banner and update-driven changelog pop-up report the correct version again.

Removed

  • The "Alert Rate Limit" option (and its 11 localized strings) has been removed, since it could hide the mail alert. Any previously saved value is simply ignored.

1.6.0

Added

  • New Social tab with an "Emote when you get mail" option, on by default. When mail arrives, MailMatic performs a /emote that nearby players can see, leading with the skull marker, so the people around you see your "you got mail!" too. It fires on the same events as the mail alert (login with mail waiting, and new mail during play), never on /mailmatic test, with a short cooldown to avoid spam. Fully localized into all 11 client languages.

1.5.3

Changed

  • Refreshed MailMatic's wax-sealed envelope artwork and the RepMatic icon shown in the in-game "More Infinite Loop Alchemist Addons" list to their new art, and added XPMatic's icon to that list.

1.5.2

Changed

  • The in-game AddOns-list description now shows in your client's language. Localized into all 10 client locales (deDE, esES, esMX, frFR, itIT, koKR, ptBR, ruRU, zhCN, zhTW), reusing the shared LibMatic addon descriptions.
  • Shared LibMatic update: the GearMatic entry in the in-game "More Infinite Loop Alchemist Addons" list now reflects its current best-in-slot features.

1.5.1

Changed

  • Bundled LibMatic-ChangeLog-1.0 updated to MINOR 5: the in-game changelog popup now shows up to the 10 most recent versions. No gameplay changes.

1.5.0

Added

  • 11 new bundled fonts, selectable anywhere MailMatic lets you choose a font: Capital Hill, Capital Hill Monospaced, Extra Thick, Extra Thick Monospaced, Fabled Font, Fabled Font Monospaced, High Birth More Letter Gap, Scrambled Eggs, Scrambled Eggs Bold, Tomorrow Night, and Tomorrow Night Monospaced.

1.4.2

Changed

  • Updated the retail (Mainline) interface to 120007 for World of Warcraft 12.0.7 (The War Within), so MailMatic no longer shows as out of date on the live retail client. No code changes; MailMatic's Blizzard API surface was checked against the 12.0.7 snapshot and nothing it uses is deprecated or removed. The Classic flavor interfaces are unchanged.

1.4.1

Fixed

  • Packaging: the 1.4.0 build shipped without the bundled LibMatic libraries. The repo uses a development symlink (Libs/LibMatic) that the BigWigs packager does not follow, and the .pkgmeta had no external to fetch LibMatic at build time, so the package was missing every LibMatic module. Added the externals entry the sibling addons already use, so the packager fetches LibMatic from its repo when building. No gameplay change; this only makes the 1.4.0 feature actually load.

1.4.0

Added

  • Custom Media tab: add your own new-mail sounds and alert fonts by dropping files into MailMatic's CustomSounds and CustomFonts folders, then scanning them in. New Modules/CustomMedia.lua wraps LibMatic-CustomMedia-1.0 to register the custom media at login from an account-wide cache (db.global.customSoundSlots) and to build the tab, which sits last before Profiles. Custom fonts validate silently at login and appear in the Alert tab font list; custom sounds are loaded by a Scan button that reports how many it found in a branded chat line. Both folders ship with a README.txt how-to, and the .pkgmeta ignore was narrowed so those READMEs package. All new strings localized into every shipped client locale. New tests/custom_media_spec.lua and tests/custom_media_lib_spec.lua.

Fixed

  • The custom font probe no longer raises an error or taint warning when a slot file is missing. LibMatic-CustomMedia-1.0 (MINOR 2) now wraps the candidate SetFont probe in pcall, so unused font slots (the normal case, since a player rarely fills all ten) are skipped silently instead of raising "Invalid font asset: file not found" and aborting OnEnable on clients where SetFont errors on a missing file.

In-Game

  • You can now use your own mail sounds and fonts. Drop a sound file into MailMatic's CustomSounds folder or a font into the CustomFonts folder, restart the game, then open the new Custom Media tab and click Scan for Custom Sounds. Your sounds then appear on the Sound tab and your fonts on the Alert tab.

1.3.0

Added

  • Out-of-date notification: MailMatic now quietly shares its version with your guild and group over addon comms, and prints a one-time chat line when someone nearby is running a newer build, so you know to update. Toggle it under "Notify Me About Updates" on the General tab (on by default). New module Modules/VersionBroadcast.lua with tests/update_notify_spec.lua covering the notify decision, the version-string guard, and the channel selection (guild/party/raid/instance, PvP skipped).

Changed

  • The change log popup now opens only when the installed version is genuinely newer than the last one seen (numeric semver comparison, so 1.10 ranks above 1.9), instead of firing on any version difference. The last-seen version is stored account-wide in db.global with a fallback to the per-profile value, so the popup no longer re-appears when switching profiles or downgrading. New IsNewerVersion method with tests/version_compare_spec.lua covering patch/minor/major ordering, numeric-not-lexical comparison, missing-part padding, and nil handling.

In-Game

  • MailMatic now lets you know in chat when a guildmate or group member is running a newer version, so you can grab the update. You can turn this off under "Notify Me About Updates" in the General options.

1.2.0

Added

  • Sound Rate Limit option (Sound tab): caps how often the new-mail sound plays so you do not get sound fatigue. Options are once per 1, 5, 10, 15, 30 minutes, 1 hour (default), or 2 hours. The pop-up still shows every time; only the sound is throttled. The limit is tracked per character and persists across reloads and relogs, so repeatedly logging in within the window stays quiet.
  • Play sound once per login toggle (Sound tab): when on, the new-mail sound plays at most once per character each login, overriding the rate limit and greying out the interval dropdown. It survives /reload and resets on a fresh login.
  • /mailmatic test and the options preview button always play the sound, ignoring both limits.
  • New test spec tests/sound_throttle_spec.lua covering the rate-limit window, the once-per-login override, login reset, and the test bypass.
  • Alert Rate Limit option (Alert tab): caps how often the on-screen pop-up appears for new mail, with the same intervals as the sound limit plus a None option that is the default (no limit, unchanged behavior). It is independent from the sound limit and tracked per character across reloads and relogs.
  • New test spec tests/alert_throttle_spec.lua covering the None default, the interval window, the test bypass, and independence from the sound limit.

In-Game

  • New Sound Rate Limit setting: choose how often the "you've got mail" sound is allowed to play, from once a minute up to once every two hours, with once an hour as the default. The pop-up still appears every time; only the sound is limited so it never gets annoying.
  • New "Play sound once per login" option: hear the mail sound just once each time you log in a character, no matter how the rate limit is set.
  • Testing the alert with /mailmatic test or the preview button always plays the sound so you can hear your pick.
  • New Alert Rate Limit setting on the Alert tab: choose how often the pop-up is allowed to appear for new mail, or leave it on None to see it every time. It works separately from the sound limit, so you can quiet the pop-up, the sound, or both.

1.1.0

Fixed

  • The login alert is no longer eaten by the post-loading render freeze. Login traces showed the popup was placed, visible, and full alpha, yet the client rendered no frames for ~4 seconds while streaming assets, and the fade animation consumed its whole missed wall-clock window in one step when frames resumed. LibMatic-OverlayGuard (MINOR 4) now holds the alert until rendering actually settles (10 consecutive smooth frames after LOADING_SCREEN_DISABLED), so the 3-second display happens entirely in frames the player can see.
  • The login alert now fires reliably on every character. On a fresh login the server pushes the unread-mail flag a few seconds after PLAYER_ENTERING_WORLD, so the single HasNewMail() check at PEW often ran too early and the alert never fired (reload worked because the flag is cached client-side). Login now polls once per second for up to 15 seconds and stops the instant the flag lands, so the alert fires the moment mail data finishes loading; MailState dedupes so characters whose flag is already present at PEW still alert exactly once.
  • The login mail alert no longer fires behind the loading screen. LibMatic-OverlayGuard (MINOR 3) now blocks on PLAYER_ENTERING_WORLD / LOADING_SCREEN_ENABLED and releases on LOADING_SCREEN_DISABLED, and the alert is queued with a 60s hold so even a long loading screen cannot drop it. Previously the popup ran its full display-and-fade cycle while the loading screen was still up, so only the tail end (or nothing) was visible while the sound still played.

Changed

  • Default alert display duration is now 3 seconds (was 4).
  • The default mail-alert icon is now a custom wax-sealed envelope texture shipped with the addon (Media/Textures/you-got-mail-envelope-v1.tga), replacing the Blizzard mailbox tracking icon. The alert-icon dropdown now lists Envelope (default) and Mailbox (Legacy); the separate Sealed Letter entry and its locale key were removed. Profiles that explicitly picked the old icon keep it; profiles that never touched the setting move to the envelope.
  • The addon-list / addon-compartment icon (TOC IconTexture across all flavors) now uses the wax-sealed envelope texture instead of the Blizzard mailbox/letter icon. The versioned filename lets a fresh texture bust the client texture cache on /reload.

Added

  • Per-race, per-gender "you've got mail" voice clips: 32 LibSharedMedia sound entries (16 races x 2 genders) registered as "MailMatic <Race> <Male/Female>" from Media/Sounds.
  • The default new-mail sound now resolves to the player's own race and gender at login (UnitRace raceFile token + UnitSex). Allied races map to their classic counterparts: Void Elf to Blood Elf, Lightforged Draenei to Draenei, Dark Iron Dwarf and Earthen to Dwarf, Kul Tiran to Human, Mechagnome to Gnome, Nightborne to Night Elf, Highmountain Tauren to Tauren, Mag'har Orc to Orc, Zandalari Troll to Troll. Vulpera and Haranir use their own recordings.
  • Unknown race tokens fall back to the Human clip; unknown sex falls back to the male clip. Goblin clips are wired but not yet recorded.
  • New test spec tests/mail_voice_spec.lua covering race resolution, allied mappings, fallbacks, and LSM registration.
  • Use shared LibMatic alert position option, on by default: alerts from all Infinite Loop Alchemist addons anchor to one shared screen position and merge into a single stack, newest on top. Turning it off restores this addon's own alert position.
  • Max Shared Alerts option, default 5: caps how many alerts the shared stack shows at once across all addons combined.
  • The shared position and limit stay in sync across addons and persist through reloads; setting them from any one addon applies to all.
  • Both new options are fully localized across every supported language.
  • Mail alerts arriving during combat are deferred and fire exactly once right after leaving combat (PLAYER_REGEN_ENABLED). Multiple mail detections during one fight collapse into a single alert. Combat detection uses InCombatLockdown with a C_RestrictedActions.InCombatLockdown fallback for retail.
  • /mailmatic test (and /mailmatic mail, /mailmatic preview) now runs the full alert pipeline: configured delay, combat gate, deferred fire after combat. Typed while in combat it prints a confirmation that the alert is queued. The options panel preview button remains an instant preview.
  • New test spec tests/combat_defer_spec.lua covering the combat gate, deferral, collapse, regen fire, API fallback, and the slash command path.

In-Game

  • The pop-up now waits for the loading screen to finish, so when you log in with mail waiting you actually see it instead of just hearing it.
  • The login alert now shows up reliably on every character, even when the mail info takes a few extra seconds to arrive after you enter the world.
  • The pop-up stays on screen for 3 seconds by default.
  • The mail alert now shows a hand-drawn wax-sealed envelope by default, and the same envelope is MailMatic's icon in your addon list. Want the old mailbox icon back? Choose Mailbox (Legacy) under Alert Icon in the General tab.
  • The mail alert now greets you in your character's own voice: every race and gender has its own "you've got mail" clip, picked automatically for the character you are playing.
  • Allied races hear their ancestral race's voice (Kul Tirans hear Human, Zandalari hear Troll, Dark Irons and Earthen hear Dwarf, and so on), while Vulpera and Haranir get their very own clips.
  • Prefer a different voice? Pick any race and gender clip from the sound dropdown in the Sound tab.
  • New option: alerts from all Infinite Loop Alchemist addons can share one position on screen and stack neatly together, newest on top. On by default; turn it off in the alert settings to keep this addon's own alert position.
  • New Max Shared Alerts setting controls how many alerts can be on screen at once in the shared stack, 5 by default.
  • Drag the alert position in any one addon and every addon using the shared position follows.
  • Mail alerts no longer interrupt your fights: if mail arrives while you are in combat, the alert waits and pops up right after the fight ends.
  • Want to see it? Type /mailmatic test during a fight: you get a chat line confirming the alert is queued, and the pop-up plus voice fire the moment you drop out of combat. Out of combat, /mailmatic test now previews the alert with the same short delay a real mail alert uses.

1.0.0

In-Game

  • MailMatic greets you with a pop-up and a sound the moment you log in with mail waiting, and again whenever new mail arrives. Set the text, color, sound, and position under /mailmatic.

Added

  • New mail alert: a single pop-up with the sealed-letter icon, bounce, and shadow. It fires on login when mail is already waiting, and again whenever new mail arrives while you play.
  • Login and live detection driven by HasNewMail and UPDATE_PENDING_MAIL, gated through the overlay guard so the alert waits past the loading screen and cinematics.
  • Configurable alert text, color, font, outline, shadow, display duration, fade time, bounce style, and on-screen position.
  • Sound on new mail with a mute-all toggle, plus the LibMatic sound pack.
  • General, Alert, Sound, Change Log, and Settings Profiles option tabs. Open with /mailmatic.
  • Localization scaffold for deDE, esES, esMX, frFR, itIT, koKR, ptBR, ruRU, zhCN, and zhTW.

This mod has no additional files