Description
Sentinel
A modern, Secret-Value-safe Lua error watcher for World of Warcraft. It catches, dedupes, persists, and lets you share UI bugs.

Overview
Sentinel takes ownership of the game's error handler, captures the full call stack and locals at the fault site, and shows it all in a clean dark window. From there you can copy, export, or send a bug straight to a friend.
It's built for the Midnight era. Every value that touches the UI is checked against the new Secret Value system, so Sentinel degrades gracefully instead of throwing errors of its own.
- Catches what matters, Lua errors with stack and locals, plus blocked or forbidden action taint and Lua warnings.
- Never spams your frame rate, a token-bucket throttle pauses capture during an error storm so addon CPU never competes with rendering.
- Remembers across sessions, errors persist in SavedVariables, grouped by play session, with a hard cap so the file never balloons.
- Shares peer-to-peer, send a caught error to another Sentinel user and triage it together.
- Reaches you your way, a minimap button, an Addon Compartment entry, and a LibDataBroker source for broker bars, so you can keep your minimap clean.
- Native and modern, a Blizzard Settings panel, hover help on every tab and button, modern scrollbars, and a Maw frame skin over a flat dark theme.
Installation
Addon manager (recommended). Search for Sentinel on CurseForge and install.
Manual.
- Download the latest release from the Releases page.
- Extract the
!Sentinelfolder intoWorld of Warcraft\_retail_\Interface\AddOns. - Restart the game, or
/reloadif you're already in-game.
The leading ! keeps Sentinel near the top of the load order so it can hook the error handler as early as possible.
Getting Started
| Command | Description |
|---|---|
/sentinel or /sen |
Toggle the Sentinel window |
/sen help |
List every slash command |
/sen status |
Show capture, alert, taint, and stored-error status |
/sen config |
Open the settings panel |
/sen clear |
Wipe all stored errors (confirmation dialog) |
/sen pause |
Stop recording new errors temporarily |
/sen resume |
Start recording new errors again |
/sen sound |
Toggle the new-error sound |
/sen chat |
Toggle new-error chat announcements |
/sen test |
Fire a real test error to verify capture |
/sen build |
Print your WoW client and build info |
Minimap button
| Action | Result |
|---|---|
| Left-click | Open the error window |
| Right-click | Open settings |
| Shift-click | Reload the UI |
| Alt-click | Wipe all stored errors (confirmation dialog) |
| Drag | Reposition around the minimap ring |
Broker and data source
Sentinel publishes a LibDataBroker-1.1 data source, so any broker display (Titan Panel, ChocolateBar, Bazooka, and friends) can show the live error count, the full tooltip, and the same click actions on a panel of your choosing. It stays in sync even when the minimap button is hidden.
There's also an Addon Compartment entry, so Sentinel is reachable with the minimap button off. Hide the button in settings and use the broker source or compartment entry instead, whichever fits your UI.
Features
Error capture
- Full stack and locals, captured at the real fault site the same way the default handler does.
- Sole-owner handler, installs last, prevents itself from being silently replaced, and disables legacy grabbers (
!BugGrabber,!Swatter,!BaudErrorFrame) so nothing swallows capture. - Taint and warnings, records
ADDON_ACTION_BLOCKED,ADDON_ACTION_FORBIDDEN, the macro equivalents, andLUA_WARNING, while suppressing the default blue popups. - Dedupe and counts, repeated errors collapse into one entry with an occurrence counter and a re-stamped time.
- Flood protection, a token-bucket throttle pauses capture when errors arrive faster than a safe rate, protecting your frame rate.
The window
- Tabbed views, All bugs, This session, Previous session, Received, plus live Search.
- Smart default, opens to This session, or falls back to All bugs when the session is clean but older bugs exist, so you never land on an empty list.
- Syntax-highlighted detail, colourised stack traces and locals in a readable, scrollable pane.
- Hover tooltips everywhere, every row shows occurrences, last-seen time, session, and who sent a shared bug. Every tab and button explains itself too, so Copy (the selected error) and Export (the whole tab) are never a guess.
- Copy, Export, and Delete, copy one error, export the list as clean plaintext with colour codes stripped, or delete a single report without wiping your history.
Sharing
- Send to a player, share the selected error over a chunked, throttled channel (AceComm-3.0 and AceSerializer-3.0).
- Send session, whisper every error from the current session, up to 50 per payload. Shift+Send is still a shortcut.
- Chat hyperlinks, new-error chat lines carry a clickable link that opens the error in the window.
- Received tab, incoming bugs are tagged with the sender's name and marked with a
*. - Secret-safe transport, Secret values are stripped before sending, and sharing is disabled inside instances (where Midnight blocks addon messages) with a nudge toward Export.
- Hardened receive path, inbound reports are size-capped, field-capped, deduped per sender, rate-limited, and chat-throttled, so a buggy or malicious peer can't flood your chat or bloat your SavedVariables.
Settings
A clean options page built on the Blizzard Settings API. All toggles apply live and persist per account.
- Toggle the minimap button
- Throttled sound on new errors
- Chat announcement on new errors
- Auto-open the window on a new error (never during combat)
- Hide the window when entering combat
- Ignore blocked-action and taint noise entirely
- Pause and resume error capture
- Cycle the taintLog level (0 to 4) on retail clients
- One-click wipe of all stored errors
Localization
Full UI translations for deDE, esES, esMX, frFR, koKR, ruRU, zhCN, zhTW, ptBR, and itIT, covering the settings panel, slash help, tooltips, and taint log.
Performance and safety
- Event-driven, no idle
OnUpdate. The minimap button only polls while being dragged. - Combat-aware, hides the window on combat enter and restores after, with auto-open queued for after combat.
/senstill works mid-fight. - Memory-conscious, pooled list rows, reused tables, and a capped error store.
- Persistence done right,
LoadSavedVariablesFirst, default-merging, and schema versioning for safe upgrades.
Contributing
Bug reports and ideas are welcome. Open an issue or a pull request. When filing a bug, your client version and a repro you can trigger with /reload help a lot.
Credits
Sentinel is a ground-up rewrite that reuses none of another addon's code. It bundles a few shared libraries under their own licenses.
- The Ace3 team, for AceComm-3.0, AceSerializer-3.0, CallbackHandler-1.0, and LibStub.
- Tekkub and contributors, for LibDataBroker-1.1, the broker data-source standard.
Support
- PayPal, paypal.me/KkthnxTV
- Battle.net,
Kkthnx#1105 - In-game gold, Kkthnx on Area 52 (US)
License
All Rights Reserved. You may download and run Sentinel for your own personal use. Copying the source or assets into another project, redistributing the addon, or publishing a modified version is not permitted without written permission. Bundled libraries under Libs/ stay under their own licenses. See LICENSE for the full text.


