v1.6.3
What's new
MailMatic Change Log
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.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

