One part per plugin

Features

Data plugins write; display plugins read. Twenty plugins over the DMK core. Screenshot slots are placeholders — captures land here later.

CharData CharLogs RealtimeData AHSync Telemetry UnitFrames Damage DamageSimulation Map MiniMap Bags Anchor Status Threat AHSearch Heal GearMGR Radar Chat Debug

Data plugins

Own disk writes

DMK_CharData

Data · writes DMKCharacterDB → DMK_CharData.lua · feeds the armory ingest

Character snapshots: identity, stats, gear, skills, talents, completed quests, professions, reputation.

DMK_CharLogs

Data · writes DMKCharacterLogDB + DMKChatLogDB → DMK_CharLogs.lua · feeds the armory ingest

Activity logs: kills, quests, zones, npcs, deaths, levels, gold and xp series.

Also chat capture (ChatLogs.lua, since v1.3.0): window buffers hooked post-filter via historyBuffer.PushFront, whisper and Battle.net conversations keyed per correspondent — BNet by battletag, since account ids and |K tokens do not survive sessions. 500 lines per key, two-week prune, raw storage decorated at render. DMK_Chat is the display consumer.

DMK_RealtimeData

Data · writes DMKCombatEventsDB → DMK_RealtimeData.lua · feeds the armory ingest

CombatData engine: raw combat event log (packed rows, roughly 38 bytes per event), fight history, EngageRoster.

DMK_AHSync

Data · writes DMKAHDB, account-wide · slash /dmkah, /dmkah status

Automatic full AH scan on house open (getAll query, 15-minute server cooldown honored, auto-retry). Listings processed in 250-item batches with yields so the client never freezes; uncached names resolved by a retry pass. Captures price, bid, owner, stack, quality, timeLeft, class ids per listing.

Keeps the newest 3 scans plus an icon cache and a cross-session cooldown clock. Never reads its own DB back: wow-ah-gen ingests and clears it.

DMK_Telemetry

Data · writes DMKTelemetryDB, per character · renders nothing

Positional data layer: mode detection (world/corridor), odometry, anchor chain, melee-range proof edges, learned range rings — interact and spell gates calibrated against party members in the open world; combat-skipped, the gates are protected in combat. Radar and Map consume.

Display plugins

Read via accessors

DMK_UnitFrames

Display · requires Realtime Data

Replacement unit frames: player, target, ToT, focus, party, pets in full/compact/mini variants; hover-reveal bar text, secure click targeting, edit-mode drag and resize, Blizzard unit/party/cast frames suppressed. Nameplate rings: plate art alpha'd out, segmented health/power/cast rings on the target, optional threat percent from EngageRoster.

Custom aura icons with combat-safe cancel macros (fixed alpha-painted grid). Threat Cards: scaled target-frame clones per threat-table mob, ranked above/below the target, ghost cards for fled mobs. Aura Tracker window: timed auras longest-first with drain bars, optional mouse mode for tooltips and cancel. Ten-tab settings; Original vs Class color themes. Reads CombatData snapshots.

Frames, nameplate rings, threat cards.

DMK_Damage

Display · requires Realtime Data · writes DMKDamageCharDB (accumulator, opacities)

Damage meter over CombatData. Six window types: Overall, Damage Done, DPS, Healing Done, By Target, By Source; class-colored bars, per-view opacity. Footer fight selector: follow live combat or pin a past fight from FightHistory.

Clicking a bar opens a per-player spell breakdown (top 12 spells, share, crit percent), GUID-keyed so renumbered actors never repoint a window. The Overall accumulator sums closed fights across sessions; reset from settings or /dmk damage resetoverall.

Meter windows and spell breakdown.

DMK_DamageSimulation

Display · requires CharData · writes DMKDamageSimCharDB · slash /dmk sim · default off

Loadout A/B damage simulation. Capture snapshots the current loadout: gear links, per-school spell power and crit, stats, buffs, talents, spell hit (via CharData); newest 50 kept. A/B pickers diff two captures in a table of the class's damage-spell ranks: hit chance and dps per side plus color-coded delta percent.

Model: base damage, level scaling, SP coefficient, additive damage talents, crit and miss tables, DoT ticks, GCD floor; target-level dropdown +0 to +3. Spell data is a generated DB2 export, mage only so far.

A/B capture diff.

DMK_Map

Display · writes DMKMapCharDB (hidden quests and POIs, arrow center)

World map window: zoom/pan canvas, click zone navigation (left into child, right to parent), player auto-follow, multi-floor dungeon navigation with a custom art loader for 100+ interiors built from unreferenced client tiles.

Layers: quest POIs (Questie bridge read-only, toggle-gated, 150-marker cap, native API fallback), gathering nodes, dungeon entrances, boss and rare pins with lore panels and loot sheets, party blips, off-screen edge arrows. Side rails: quest list (progress, zoom-to-quest, arrow pin) and townfolk POI categories. Quest arrow: dart orbiting the player, auto-nearest objective or manual pin. Telemetry anchor pin inside tracked dungeons. Reads generated Dungeons, TownFolk, FloorNames, DungeonBosses, BossLore, BossLoot data.

Map canvas, layers, side rails.

DMK_MiniMap

Display · writes DMKMiniMapCharDB (geometry)

Blizzard minimap reskinned in place, never reparented (reparenting kills the 3D terrain model on this client): square mask, themed border, drag strip, wheel zoom, size slider, grid snap. Bottom bar with zone name and clock (local or server time).

Blizzard ornaments hidden, self-healing re-hide ticker for the stubborn ones, optional hiding of minimap buttons. Publishes GetMinimapShape SQUARE for LibDBIcon-style buttons; captures HybridMinimap's mask when it loads late. Fully reversible: restores exact Blizzard defaults on disable, no reload.

Square mask and zone bar.

DMK_Bags

Display · writes DMKBagsDB (item flags, hidden bags)

Bag and bank replacement windows on one render path; bank shown only while at the bank. Slot grid: quality borders, cooldown sweep, quest marks, junk tint, stack split, secure use in combat. Alt-click marking: Junk, Always-have, Safe; marked and quest items live in a Reserved group and never sell.

Vendor auto-sell of junk; bank auto-deposit of trade goods. Native bag-swap buttons reparented into the window, keyring toggle, Alt-click hides a bag from the grid. Layout: per-bag split or fixed columns. Handles C_Container and legacy APIs.

Bag and bank windows.

DMK_Anchor

Display · owns no data · the suite's shared integration surface

Two full-width edge bars. Top: name and level, professions with trainer-available dot, XP, watched reputation, location, Status readout, sync chip, clock; a 2px rested-aware XP strip and a reputation strip. Bottom: micro-button glyph row (character, spellbook, talents, quests, social, DMK settings), bag free/total and gold, click opens Bags.

Feature quick-toggle icons (Sync, AH, Gathering, Sim, Gear, Threat, Radar, Map): each appears only when its plugin is installed and enabled, lights while its window is open, click toggles it. New plugins land here.

Edge bars and quick toggles.

DMK_Status

Display · requires Character Logs · owns no data

Gold/hr and xp/hr readout in the Anchor top bar: 1-hour rolling window over played time, 5-second refresh, xp segment hidden at level cap.

Chart window: gold/hour and xp/hour column charts over the last 6 hours of played time in 5-minute buckets; gold losses draw downward in red, sessions concatenate on the played-time axis so logged-off gaps do not exist. Reads the CharLogs GoldXPSeries accessors.

Gold and XP per hour.

DMK_Threat

Display · requires Realtime Data · in in-game verification

Engagement window over EngageRoster: every mob in the pull as a pooled plate, split ON ME vs OTHERS, plates gliding between columns as aggro moves, overflow as +N. Per plate: health fill, attacker count, accent on your target, dead fade, stale-reading dim.

Tank inference: the party member holding the most mobs, their mobs tinted. DPS and Tank color modes. Auto-shows on engagement, hides 3 seconds after the pull empties; keep-idle pin available. Plates are insecure frames, so restructuring is combat-legal.

Engagement plates.

DMK_AHSearch

Display · requires AH Sync · writes DMKAHViewDB snapshot · slash /dmk ah · default off

Auction search window over DMK_AHSync scans: sortable columns (ilvl, price, min, qty, listings, vendor, margin, duration), column picker, saved searches, shift-click item linking. Query grammar ported from the web dashboard: class, subclass, quality, suffix, stat, and numeric filters with comparisons and ranges, plus sort:.

Engine aggregates the latest scan per item and suffix: median and min unit buyout, listing and qty totals, margin, dominant duration; joins generated AHCatalog, AHSuffixes, and AHLookups DB2 data. Persists a snapshot so results survive the warehouse clearing DMKAHDB (marked cached).

Search grammar and results.

DMK_Heal

Display · reads Realtime Data

Healing panel: party and pet health bars with damage projection from the PartyIntake engine — intake rate, target pressure, and our own in-flight heal drawn on the bar. Casting is hover-scoped chord casting with live rank rules: hover a bar, press a chord key, the right rank goes out. Dispels highlight by school; right-click cures.

With Realtime Sync up, HealSync folds in-flight heals from every synced healer into the projection, not just our own. Out-of-range members dim, range read from the first wired chord spell; stuck hover bindings mop up within one tick out of combat.

Party bars with projection.

DMK_GearMGR

Display · writes DMKGearDB, per character

Gear sets in a standalone window: save a set from worn gear, equip it with one click, rename and delete from the same surface. Every item in a set is tracked across worn, bags, and bank — the set list shows where each piece sits and flags what is missing, with per-set totals (spell damage, crit, hit, haste, stamina and the rest).

Equipping respects combat lockdown: weapon slots swap immediately in combat, armor queues and lands the moment combat ends. An Update from Worn pass refreshes a set after upgrades. Writes DMKGearDB, per character.

Gear set window.

DMK_Radar

Display · depends on Telemetry

Tactical range-band HUD: player centered, band circles drawn at Telemetry's calibrated ring radii (interact gates, nameplate range, per-character spell rungs), roster mobs and party members placed on the bands. Mob blips color by threat state — red on us, gray tanked, amber loose; party blips are class-colored and exact in the open world. The client withholds bearings; the window draws bands, not angles.

With positional sync up, a mob observed by two or more synced members in the open world resolves to a real position — its blip angle becomes a true bearing and the status line shows a fix. In dungeons, blips pull toward the party member closest to them (melee contact weighs triple), and members elsewhere in the dungeon dim on the radar. Requires Telemetry.

Concentric distance bands.

DMK_Chat

Display · requires Character Logs · owns no data

Full replacement for the default chat windows: one tabbed DMK window over the live-but-suppressed Blizzard chat windows (General, Guild, Party, Loot, Trade seeded), per-conversation whisper windows (character + Battle.net, IM model: click a name or receive a whisper), pop-outs with large title bars, tab right-click menu.

Tab Manager modal: create/rename/reorder/hide, message groups, channels, per-tab text overrides. Global text settings, two-column timestamps, channel-tag stripping in locked tabs, reply (R) routed to conversation windows. Blizzard-backed tabs type through their own edit boxes so /cast works; whisper inputs send only whispers. Reads the ChatLogs accessors in DMK_CharLogs.

Tabs, whisper windows, Tab Manager.

DMK_Debug

Display · writes DMKDebugDB (cap 200, newest win) · slash /dmk probe

Probe workflow: write a probe in Probes.lua, publish, run in game (/dmk probe), paste output back, retire with a verdict comment. Client uncertainty resolves here.

Error capture: chained Lua error handler plus ADDON_ACTION_BLOCKED, ADDON_ACTION_FORBIDDEN, and LUA_WARNING events feed one buffer, persisted to DMKDebugDB.