Tidy Plates

Change log

*Please excuse any mistakes in packaging this release; My repository server has been down, and I'm shootin' from the hip, here...

- Rogue Anticipation stacks are now displayed on the combo point widget
- AuraWidget.lua Added some (currently inactive) code within aurawidget.lua for, "Personal Aura Tracker".  Feel free to mess with it.  Search for, "Personal Aura Tracker"
- AuraWidget.lua Added some (currently inactive) code for highlighting abilities that can be activated.  Again, if you want to mess with it on your own, feel free.
- Made some changes to the Off-Tank Color feature; Enabling it will force detection of Off-Tanks, even if you are not a tank.  NOTE: There are still limitations inherent in the WoW-API which limits the ability of this feature to track all on-screen targets and target-ofs.

- TAPPED mobs now are a unit.reaction member.  No way to tell between tapped friendlies and tapped enemies (this does occasionally happen).  I will make the Reaction colors configurable within the Hub UI in the near future.
- Added "Filtered Unit Scale" to the Hub:Filter category
- Removed test code, which was accidentally causing Mages to get Priest coloring and Icon
- Support for Phanx's "Class Colors" addon, http://www.wowinterface.com/downloads/info12513-ClassColors.html

- "Tapped" units (colored light purple by the Blizz nameplate system) will now register as "Hostile NPCs" in Tidy Plates.  This is partially inaccurate, since the tapped mobs could be neutral (like target dummies), but there is no way to discriminate this from the plate.
- Fixed several tainted global variables
- Added custom Monk and Priest color lookups for class recognition.  (RAID_CLASS_COLORS is not completely accurate)
- Changed the way the class colors are stored, hopefully fixing some other class ID problems
- Disable Tanks module by default.  Add option button to hub.
- Hopefully Fixed Off-Tank coloring issue.

Tidy Plates 6.8...
- Fixed nil local border bug

(Decided that I needed to advance the sub-version number for 5.1, since there's no backward compatibility at this point)

Tidy Plates 6.7...

- Patch 5.1 Compatibility: The Blizzard nameplate format changed, breaking the addon. This update restores Tidy Plates' functionality.
- TOC updates to 50100

- Corrected another error in the spell cast watcher; "StopCastAnimationOnNameplate" is now properly referenced.  This only affects arena matches.  I don't do arenas, so this was never properly tested.  Let me know if more errors pop up.

- Corrected a typo in the spellcast watcher; "StartCastAnimation" is now properly, "StartCastAnimationOnNameplate".

- Fixed: Monk Tank mode (Stance of the Sturdy Ox stance added to the shapeshift list)
- Corrected various threat values coming into the threat line widget
- Core: extended plate verification process

- Added code to verify healthmax values.
- Sets framelevel to 0.  Targetted plates are raised to 1, which still does obscure the chatbox and minimap.  This also occurs with the standard Blizz nameplates, and cannot be corrected without raising the strata or level of those other frames.  
- Added a rudimentary localization framework.  To use: Create an addon named, "TidyPlatesHubXX" where the XX is the last two letters of the localization code.  Ex. "TidyPlatesHubDE".  Within the code for that addon, create a table called, 'TidyPlatesHubLocalization', and add the translations.  For example:
TidyPlatesHubLocalization["Style"] = "Translation of STYLE".   See TidyPlatesHub\Lists.lua for an example.  Future versions will add a "Dump" mode for outputting all the text that needs translating.
- Changed the background, anchoring, and font sizes in the Hub, for readability.
- Changed the core template, and added a 'default' style, which looks like the Blizzard nameplates.  (will be useful in a future version)

- Removed framestrata code from, MinimapCluster, PlayerFrame, and TargetFrame
- Threat Line Widget:  WTF!!!!! Shootin' from the hip, again.

- Fixed giant threat bar issue (Corrected group size ranges in GetRelativeThreat() utility function)
- Raised MinimapCluster, PlayerFrame, and TargetFrame to "LOW" framestrata to prevent nameplates from obscuring those UI elements.
- Currently, there is no way to fix the brief 'flash' of the Blizzard nameplate art before it becomes active; It's a bug for the Blizz folks to solve.

- Removed debug code from GroupCache.lua (Chat log spam)

- Aura Widget: Fixed error, where certain auras filtered by spellid were not being displayed.
- Group Cache: Fixed updates for friendly group class colors (hopefully!)
- Group & Unit Cache: Will not try to search the global unit cache for class information while you are in a dungeon (could slow things down, and it isn't needed)
- Core: Reverted to earlier method of discriminating nameplates
- Threat Line Widget: Added some code to prevent it from accidentally becoming REALLY long.

Does anyone still use the Threat Line Widget?  Tank Threat is so high, now, that I wonder if this will/has become irrelevant.  Let me know;  http://wow.curseforge.com/addons/tidy-plates/forum/

- Fixed Range Widget bug

6.7.0 Release:
    - Uploaded as "Release"

    - Upgraded the TOC file version number to 50001
    - Added: TidyPlates:EnableFadeIn() and TidyPlates:DisableFadeIn() functions, to control the nameplate fade-in mechanic.  Default: Enabled.

    - Removed debug console output

Beta7: r506
    - Added "Stance of the Sturdy Ox" to the Tank Aura list.  This should fix some "By Threat" oddities.
    - Added Monk specs to the HealerTrack widget.
    - Added PLAYER_ENTERING_WORLD to Tank watcher events (to fix the line 39: nil errors)
    - (hopefully) fixed pauses while using the Arena mode with the Spell Cast Warning system
    - Jinx:
        - Right now, it looks like the debuff is applied by the server, not Your Character.  This is important because Tidy Plates ignores debuffs without a source.  In the beta, this debuff is properly displayed.

    - Fixed: Bug where current theme selection would be lost when logging-in.

    - Added BUFFS to the aura widget.  
    - Added texture coordinate function to tidyplates statusbar widget.  Usage/Example: healthbar.left = 0, healthbar.right = 1, healthbar.bottom = 0, healthbar.top = 1

    - The most visible change in Beta3 is the rearrangement of the Hub panel.  The debuff widget has been moved to its own category.
    - I've been working on a new way to control the health bar style.  I'm not sure when/if this code will become active.  I will probably post it as an alpha version after 6.7 is released.
What have I done so far?
    - Enhanced both the debuff widget and the spell cast warning module with support for Arena unitid event capture (via the standard event system, rather than the combat log).
    - Updated to MoP standards (which will work with 4.3, too)
        - Functions which have been renamed for MoP have been replaced by an internal function (provided by Tidy Plates) which is aware of the current client version, and will choose the appropriate function.
        - Tidy Plates now uses an internal button template, which replaces the UIPanelButtonTemplate2, which was removed in MoP
    - Need to test the Arena-Mode enhancements for the Debuff widget and Cast Warning system

Tidy Plates 6.6...
    - Fixed UnitCache Toolip 'nil' error
- Modified Unit Description Caching to work properly with addons that change the color of the tooltip text. (Like elvUI)
- The Hub checks to see if the user has enabled any of the Aggro or 'By Threat' features, and automatically enables Blizz's Threat Warning feature. (which is required)

6.6 Highlights

Headline Mode
Instead of displaying a graphical health-bar, we can display critical information using just text, reducing the surface area of the nameplate and revealing more of the game world.  The Headline style can be mixed with traditional Health Bar nameplates to improve your awareness and reduce visual clutter.

Compact Debuff Widget
In addition to numerous performance improvements, the current version of the Debuff widget now includes the option to use Square icons!
Detachable Hub Panel
Click the minimize button to unsnap the Hub panel into it's own smaller, draggable configuration window.

Speedy Configuration
Use '/hub' to quickly enter the active Hub Panel.

In the Hub, use the 'Bookmarks' button to jump to a category.

Improved Copy & Paste
This is a simple method of transferring profiles between characters.  Clicking the Hub's 'Copy' button will save your settings to a global database.  The data persists even if your computer is turned-Off.  Clicking the 'Paste' button will replace your current settings with the Copied settings.  You can paste between characters on different servers.  

Using the 'Shift' key while clicking will use a different clipboard, isolated to the Hub's Role Type, but still acessible between characters.  In other words, you've got three slots (Universal, Tank, and Damage) to copy your settings.

Performance Improvements
Refinement of the caching systems has reduced Memory and CPU usage.  Some folks have seen dramatic FPS drops.  This update should fix that stuff!

All Changes, since 6.5:

(r457 Beta6)
    - More memory tricks/optimization for Mr. Debuff Widget.
    - Added a few more Headline Modes

(r452 Beta5)
    - Fixed nil table index in HealerTrack.lua
    - Added a Prefilter option for the debuff widget cache
        * The hub enables the prefilter, when you're using the 'By Prefix" mode
        * Debuffs NOT on your list are not cached
        * This should save a ton of memory, if you're using 'By Prefix'

(r451 Beta4)
- Made some changes to reduce memory use, and avoid certain 'lag' events...
    * Pet/Companion NPC titles are no longer cached
    * Cached unit guild and npc titles are now stored within the TidyPlatesWidgetData variable, keeping this data out of the base TidyPlates saved variables
    * Hub/Reset button will now clear the cached unit descriptions/titles and guilds
    * Unit descriptions (player guild name, or NPC role/title) will not be displayed while in an instance.  This is to avoid the CPU overhead that occurs when searching the database.
- Healer track should work again.  Expect some new graphics in the future.
- Matched widget duration timer to default blizz interface standard (using 'floor' rather than 'ceil')
- Fixed SpellId variable name in widgets\tank.lua
- Spell Cast Monitor: If cast time is not greater than 0, make it a minimum of 1.5s

(r447 Beta)
    - Added NameColorByEnemyClass to function list
    - Minimize Hub now scales the frame to 90% for an even more compact frame
    - Rearranged Name Color: By Friendly Class and By Enemy Class
    - Made some changes to HealerTrack.lua not quite sure if it's working properly. Please test!

(r444 Beta)
    - Improved HealerTrack.lua provided by Curseforge user, dakunesu.  Improves detection of healers in battlegrounds. Rockin!
    - Added a "Minimize" button to the /hub UI panel.  Clicking this will detach the Hub panel from the Interface Options window, and make it smaller.  Good for configuring stuff while playing.
    - The Copy & Paste buttons for the Hub panels now work with a unified Clipboard, so you can Copy & Paste between Tank and DPS panels.  Holding down "Shift" while clicking Copy or Paste will use the original Tank/DPS-specific caches.
    - New Hub Option: "Bring Casting Units to Spotlight Scale"

(r440 Beta)
    - Square Debuff Icons: Added a new Debuff Widget option, "Debuff Style", which allows the user to select between the traditional "Wide" debuff format, or a more squareish "Compact" style.  The column count is increased to 5 for the "Compact" style.
    - Bookmark System: Added a "Bookmark" system to the Hub panels, which allows a user to jump directly to any of the categories
    - On certain themes, the position of your debuffs will be adjusted to allow the combo point widget to comfortably fit (on Rogues and Druids, only).  When the combo widget is disabled, the icons will "snug" themselves closer to the plate.
    - Using the '/hub' command will bring you to the Hub Configuration panel for your current theme
    - Added click sounds to the 'Copy' and 'Paste' buttons
    - My OCD: Under the "Style" category, all references to "Text-Only Plates" or "TextPlates" have been changed to "Headline Mode".  This change is intended to distinguish the style modifier from other references to "Text".  I'm sure some of you will hate this (can you come up with something better?), but I'm hoping that less cranky folks find the new grammar to be more intuitive.
    - To support the "Headline Mode" name change, I've added a new category.  Can you guess? "Headline".  
    - I've grouped the "Color" and "Text" categories into "Color & Text", and moved them to the second-category position.  Why??  1: "Color & Text" controls the appearance of the default 'Health Bar' style.  2: Underneath, "Headline" controls the appearance of the 'No Bar' style.  Thus: This arrangement puts these options close to where the user selects the modes, in the "Style" category.
Bug Fixes...
    - Unit Cache should filter out reputation names.  This fixes an issue occuring when "Colorblind" mode is active, causing Reputation to be displayed instead of an NPC's Title.
    - "Filter > Filter Inactive": When a unit is marked with a target/raid-icon, it's now assumed to be Active.

    * The "By Class" function of Health Bar Color has been changed to, "By Enemy Class".
    * Added a Health Bar Color function called, "By Friendly Class".
    * Added some code to make built-in themes use the default Blizzard nameplate font when a non-latin language locale is detected
    * Updated combo widget artwork: higher resolution, etc.
    * Fixed file path to Neon's Target selection artwork

    * Fixed text-plate target and highlight art (I messed it up while cleaning duplicates)
    * Changed fonts... Neon, Graphite, Grey, and Quatre now use the same font, to keep the package size smaller.

    * Added Text Modes: Level & Level and Health
    * Changed some panel text, colors, explanations
    * Added some Text-Only style functions
    * Cleaned theme folders (removed old art and consolidated duplicates)

    * Changed some text descriptions to better explain the feature/option
    * Hub: Moved the two Text-Plate config options from 'Color' and 'Text', to 'Style'
    * Changed 'Frame' category to 'Advanced'
    * Added an option under 'Advanced'; "Enable Unit-Data Caching".  (Disabling this will stop non-party/pvp class-coloring)
    * Added a filter to the Unit-Data cache, to skip characters from other other realms
    * Unit-Data caching is bypassed while in an instance (Both PvP and PvE)
    * The caching system will peek at /who requests, and store the info on the Unit-Data table (Unless it's disabled)
    * Changed Neon's font to Accidental Presidency (Why?  Because I like it!)

* When "Show Party Aggro" (under Threat) is enabled, the "By Threat" spotlight systems for Opacity and Scale will now highlight your unfortunate party members.
* The Health and Text colors mode, "By Threat" has been changed to, "By Threat (Auto-Detect)". The previous implementation has been renamed to "By Threat (Legacy)"
* "By Threat (Auto-Detect)" Color Mode: When using a tank stance, aura, or form, you'll see the "Safe" color when you have aggro, and the "Warning" color when you don't. When NOT in a tank mode, you'll see the "Warning" color when you have aggro.
* Changed default Spotlight Opacity to 100%

    * Reversion of Default Scale to 100%/120%
    * By Class color modes will now apply coloring to both Friendly and Enemy players  (Removed option, "Show Class Color for Party/Raid Members")
    * By Class color mode will also source non-party/pvp colors from a cache.  Mouseovering a unit will add it to the cache.
    * By Threat color modes will automatically swap colors to match the tank status
    * Changed names of Color options to: Warning, Transition, and Safe

+ Fixed mouseover bug (Added a seed value for OpacityFullMouseover)

(r373 - r395)
+ Introduction of Universal Hub Core, which centralizes the creation of the Hub UI Panels
+ Reset of Hub Settings (necessary, due to the relocation of saved variables)
+ Added "By Health" and "By Low Health" modes to Scale, Colors, and Opacity.
+ Added Low/High Health Threshold sliders, and color selection for Low/Mid/High Health
+ Reorganized the Hub panel (in particular, the Opacity filter section is now under its own heading)
+ Improved theme format error handling
~ Reversed changes to Graphite
~ Reversed Neon font changes (If you liked the 6.4 font, I'll post instructions for modding)
+ Added: Hub, Opacity Filter, "By NPC"
+ Added: Hub, Health Bar Coloring Mode: "By Raid Icon" Colors
+ Added: Hub, Health Bar Coloring Mode: "By Level Color"
+ Added: Hub, Name Color Mode: "By Level Color"
+ Added: Hub, Name Color Mode: "By Boss/Elite"
+ Added: Hub, Opacity, Scale, and Warning Glow Modes: "By Enemy Healer"
Supported by the addition of a Healer Detection system
+ Added: Hub, "By Threat (Auto-Detect") modes to Opacity, Scale, and Warning Glows
Supported by the addition of code to detect the current tanking state based on auras/stances/forms
+ Fixed Party member aggro alert

Please look through the new options. I'll happily answer any question.

- TOC Update

- Fixed: Re-Added unit.spellIsShielded to cast color delegate (Which fixes non-interruptable cast display)
- Added: MaximumDisplayableDebuffs variable under Debuff Widget.  This will allow user-configurable debuff quantities.

6.4.7 (r358)
- Added: Tip text next to Hub Debuff widget config
- Fixed: Friendly Group unit class coloring
- Re-removed: Minimap button.  The code is still there, but hidden.  If you liked the button, use this command:   /run TidyPlatesOptions._EnableMiniButton = true; ReloadUI()

- Fixed: List-to-lookup table conversion for Unit Filter, By Name
- Fixed: Hub/Tank slider ranges (They were not actually broken, just different from the Damage Hub)

- Fixed: Incorrect Paths in TidyPlatesWidgets (causing several widgets to not work)
- Fixed: Hub Tank Panel, SplitToTable error

- More messing around with debuff widget
- Cleaned up some of Neon's artwork
- Changed default Neon font to Headache
- Debuff & Buff display for Friendly units is internally complete, but is disabled until the Hub can be updated
- Debuff widget now provides .unit table from the underlying nameplate, to allow better filtering.

- No clue

- Fix for Debuff Widget empty table/sort error
- Corrected a mistyped line for indexing Aura_Dispell type

- Debuff Priority works for "Show Specific" and "Show My Specific" modes, in addition to "By Prefix"
- Class Icon Widget: Returned to using internal artwork
- All textures are now Non-blocking (the game won't wait for textures to load into memory before it draws the scene), preventing texture changes from affecting frame rate
- The debuff widget (should now be called Aura Widget) will track buffs for friendly players

- Debuff widget now uses single dimension tables to store cached data, to improve memory management
- Moved Widgets to their own addon/folder (For memory usage tracking)
- Statusbar gradients are now supported via additional return values in theme.SetHealthbarColor()...
    * return r1, g1, b1, [r2, g2, b2]
- The Debuff widget now supports 'priority' through the existing .filter function... example:
    * return showThisAura, auraPriority
- The Hub Panels will check the order of the debuffs in its list to determine priority.
- Class Widget no longer uses internal class artwork; Instead, the class icon is pulled from the Blizz UI library.
- If theme.SetCastbarColor returns nil, the cast animation will be skipped
    * This can be used to filter spell casting data
    * SetCastbarColor is passed the 'unit info' table, which contains: unit.isCasting unit.spellName unit.spellID unit.spellInterruptible

6.3.8 (r307)
* Disabled: Minimap/LDB Icon  (Will come back later when it's ready)

6.3.6 (r301)
* Fixed: UnitCache Error
* Fixed: Graphite Loading Error
* Added: Spell Cast Monitor will not look for casts from current target
* Added: Hub Option, Scale: Ignore Inactive/Undamaged Mobs
* Added: Hub Option, Alpha: Filter Inactive/Undamaged Mobs
* Added: Minimap/LDB Icon
* Fixed: Debuff Widget Nil Raid Icon Lookup Index

6.3.5 (r296)
- Self-Test for DebuffWidget.lua added, in order to inform users of possible issues.  (I hope to address auto-updater bug)
- Cleaned up some code to reduce "double calls" to delegate and update functions

6.3.4 (r293)
- More Debuff Widget fixes
- Improved Debuff Widget memory usage

6.3.3 (r292)
- Debuff widget should gracefully handle certain aura events.  (GetSpellInfo errors)

6.3.2 (r291)
- Tidy Plates Hub: Debuff Widget: Spell IDs can now be used instead of spell names in the filter system.
- Fixed: Crazy debuffs during Firelands dailies.
- Aurainstance table (for debuff widget) and functions have been converted to a smarter format
- When auras are updated on your current target, the caching function will clear the cache before it repopulates the list.
- Increased the scope of name/elite status updates.  Hopefully this will accommodate the Firelands Smoldering/Blazing Elemental Bug.

6.3.1 (r289)
- TOC files updated for Wow 4.2
- Fixed debuff update stalling
- Added nil value error protection to debuff prefix sorter

* Updated functions for 4.2
* Increased width of sliders in Hub
* Opacity functions now use a transfer function to correct the opacity (currently, .5 does not translate to 50% opaque; it's more like 65%)
* Channeled spells now move the cast bar in reverse.
* Friendly/Enemy "V-key" Automation; In Combat, Out of Combat, Always
* Debuff widget now Caches texture of debuffs (to fix sunfire phenomenon, and similar)

6.2.1: (r275)
- Neon and Grey were not meant to show guild names (yet), so that's been removed.  (It will come back, but only when I have a UI option)
- added "marked" condition to the "By Active" style mode
- "No Overlap" removed from Panel.  Please see "Interface > Names> Nameplate Motion" from now on.
- Changed text in a few spots
- SetCustomText can now accept RGBA colors (but it's not required)...  return string, r, g, b, a
- Text Plate for Quatre will show the supplemental text with 70% opacity
- Fixed Damage Hub Vertical position sensitivity
- Removed force-enable of aggro detection.  First-runs and resets will re-enable aggro detect if it was turned off

6.2 (r269)
* The Hub gets a new category: Style
    - This new category has two menus for Friendly and Enemy nameplates
    - Users can select between two styles (Health Bars vs Text Only), and several different visibility conditions.
    - If you use the Text Only bars, you might want to check out the Name Text Color options, to spice up that text!
* Spell Cast Monitor name search will now strip the "-" from the combat log name, which should fix PvP cast association issues.
* Debuff Widget will now strip the "-" from combat log events, which should fix pvp association issues
* fixed a 'nil' error during pet/tank association
* "Avoid Overlap" has been updated for the new CVar types
* Fixed a bug where the debuff widget was not getting the correct data from the combat log

- TOC interface number update

Remember, if you're having a problem, make sure "Display LUA Errors" is turned on.  You can find that option under, "Interface > Help".  Knowing what line the error occurred (and what happened before it) is crucial to fixing the problem.

6.1.13 (r253)
    - tweaked name color function
    - Debug widget should clear its cache more often

    - Fixed Hub/Tank NameTextColor errors
    - Updated description of "Vertical Position of Frame" to "Vertical Position of Artwork"

    NEW! Keyword filtering for the Debuff Widget
    - See Demo on Youtube: http://www.youtube.com/watch?v=2KjGFd0TgvM
    - By Prefix.. Mode for Debuff Widget
        - ALL, MY, NO, OTHER, CC
        - Using CC will eventually highlight the debuff on the widget, but for now it just acts as "ALL"
    - Fixed UnitChannelInfo interruptable spell argument bug
    - Found a bug; The Editboxes contained in my ScrollFrames seem to invisibly extend past the bottom of the scrollframe, which can block underlying UI controls.  I've dropped the editboxes to a lower frame level, which is a hack method of preventing problems with it interferring with controls anchored to the bottom of the scrollframe.  Will attempt to figure out a better solution.
    - Name text coloring modes
    - By Raid Icon modes for Opacity and Scale

r230 (6.1.9)
    - Oops, fixed Quatre castbar position

r229 (6.1.8 )
    - PTR bug fixes (Neon Threat Glow was turning green)
    - Debuff widget will clear aurainstance tables when combat ends (regen returns)
    - Added Health Text option: Approximate Health (will show 2 decimal places for thousands (k) and millions (M), with suffix)
    - Added Text option, "Use Default Blizzard Font"; This will use the font defined by the global variable, 'NAMEPLATE_FONT'.  This should improve the situation for non-latin charcter sets (this is for you, Chinese, Russians, Taiwanese, and Koreans.. xoxo)    

r212 (6.1.7)
    - Changed from thousand/million suffix for health text to using a thousands seperator
    - Restored PTR support (last time I checked)
    - Moved Quatre Raid Icon to similar position as Neon (to left side of health bar)

    - The update function for debuff icons are now exposed via, widget.Poll
    - Added Threat Wheel to Hub/function set
    - Reverted to original health % mode; ie. does not show % when full health.  if you like it the other way, edit TidyPlatesHub\functions.lua like it this way, and dammit, it's my software ;-)
    - WoW 4.1 Compatibility (should work on 4.0.x and 4.1, concurrently.  I have not tested on the PTR, though)

r199    - Raid Tank Coloring in Tank mode.  Automatically used when in "By Threat" Modes.  
        - Theme list is now Alphabetized
        - Better handling when previous theme selection does not exist
        - Debuffs of the same spell-id are now handled more securely
        - Reset button in main panel will now reset variables on 'click', turn enemy plates ON and friendlies, OFF
            - 'shift-clicking' will clear and restore the variables, and reload the ui
        - Reset buttons in hub panels also now have a 'click' behavior to reset the variables without reloading the UI
            - 'shift-clicking' will still clear the tables and reload the ui
        - First-run config, turns off friendly nameplates by default
        - Added a link to the Blizzard "Names" panel via the Tidy Plates theme chooser panel
r186    - Default Hub Values changed to more closely resemble 6.0.8 defaults  (Blue, Orange Scheme, Threat Warning Glow/Triangles turned On)  
            - A variable reset may be required to revert to the defaults
        - First-run config, "friendly unit bug" fix

- added some reset buttons to Hub panels

- removal of TidyPlates_Graphite and TidyPlatesIcon (they will either become their own package, or be included again at a later date)

- Fixes for Bugs in Hub functions
- New hub features
- Fixes for Bugs in Debuff widget

- Debuff Widget Modifications, mainly

- New Debuff Widget tech.
-- it will now display all debuffs, not just ones from the player.
-- Filter function is passed debuff and plate unit: Filter(debuff, unit)
- debuff.name, debuff.spellid debuff.stacks debuff.duration debuff.caster (caster guid)    
-- it will attempt to search for marked and pvp named plates (unteseted), and reassociate the debuffs upon reshowing.
-- limitation: we cannot detect the duration of a debuff unless it is moused-over or on a target
- Other stuff... I can't think of it right now
- removed IsRaidTanked functionality from the health bar coloring. used this coloring during Wrath, but it never really worked well, and it was mostly just confusing.
- added some new debuff filtering options in the Hub

- Bug fixes
- a few new hub functions
- Tidy Plates Icon addon, which adds a mini icon to your UI, allowing rapid theme changes

6.0.8 is a fix for the CrowdControl widget bug that keeps popping up.

- The LoadTheme function is now accessible to external software, via: TidyPlates.LoadTheme("name").  
- Removed the '.InterfacePanel' interface panel pointer variable.  Replaced with .ShowConfigPanel, which is a function that is called when the wrench icon is clicked
- Threat Line (Tug) widget scales to frame width (default of 100)
- Added Name text color delegate, SetNameColor
- Sets a unique frame level for each plate (up to 125)
- Raises frame level of current target to a high frame level (126), and return it to previous when done.

- bug fixes
- layering tweaks
- changed default hitbox size to match original
- Grey and Neon tweaks

- fixed: Neon/Tank Health Text
- fixed: Neon/Tank Threat Wheel
- fixed: Mouseover errors during nameplate init

- fixed: highlight region used to occasionally turn on when the nameplates would show.
- fixed: Selection box couldn't be turned off in Neon
- fixed: depth/layering  (ok, i went back to using active alpha override, rather than virtual parenting)

- Fixed Neon Tank variables

- More bug fixes (Threat line widget "pet")

- Bug Fixes

- add icons for the "configure theme" functions
- making any changes in the interface panel will now apply the changes in real-time (no more 'apply' button)

- Removed and restructured some of the OnUpdate code (to prevent some nil errors)
- Added interface panel option for the cast watcher, directly in the /tidyplates panel  (so any theme can use it)
- Click on theme name in theme chooser window to bring up linked panel (supplied to, theme.InterfacePanel = panelframe)

r72-76: (38,606)
- Anchoring and event handling fixes
- The theme loader will now call 'theme.OnActivateTheme' (a theme function) when the active theme is changed.  it passes two value to the function: the active theme table, and the active theme name.
- The theme loader will call the theme.OnActivateTheme with nil values for ALL themes when a theme is changed.  See the Neon/Tank functions.lua for how and why it's supposed to be used.
- Numerous bug fixes
- The new casting system has been finished.  Neon/Tank will activate it automatically, but you can use '/run TidyPlates:StartSpellCastWatcher()' to enable it for any theme.

- Massive changes.  Your themes may not work...
- Removed Cvar for Bloattest
- Added external access for plates tables
- Changed MANY names for things.  See the TidyPlatesDefaults.lua file for the new format names.  To enable an element, use the .show tag under each element.  (No more options.showName = true, etc)
- Added "spelltext" which replaces one of the special text fields.
- removed specialtext fields.  replaced with "spelltext" and "customtext"
- Returned to Virtual Parenting (Tidy Plates Frames are NOT children of the base nameplate.  They are just anchored)
- Elite segments have been removed from the healthborder and threatborder.  Use multi-style if you want different textures
- Elite icon has been added to replace elite segments
- Skull icon texture can now be changed
- Cast bar will continue to display on previous target when you change targets (guesstimated)
- Cast bar will start on a target if you change TO that target, and they are casting a spell (guesstimated)
    - The cast bar may not register interupts fully.  But, it will let you know that the unit is casting.  Quit whining, you babies.
- Preliminary Spell Cast Monitor, in place.  Not yet activated.  You can find this code under the widget folder, in SpellCastMonitor.lua if you want to enable/play with it.  
    - At this stage of development, If you can't figure out how to enable it on your own, YOU SHOULDN'T.
- Changed the update functions a wee bit to try and reduce CPU load.  Some plates may not be updating correctly.  Complain wisely (ie. with specifics) and it shall be fixed.
- Added a selection box item to the visual elements.  find it under, theme.target

I added Grey back into the mix.  I guess most users didn't realize that you could just copy the TidyPlates_Grey folder from the older version, and keep using the new core.  I'm going to keep packing this into the download for a while longer.

This release is mainly a clean-up and optimize release.  It also sets the stage for some new features, which you'll start to see in 5.16.

- Commented-out "Other Tank" code in Neon; It needs more polish.  

- Mass Update queue will now kill the other mass update requests if a full update was scheduled
- Messed about with Neon/Tank, and added some new code to test, regarding aggro and friendly unit debuffs.

- lil' Core changes

- Numerous bug fixes (some of them pretty big)
- "Culling of Old Widget Code"
- Various optimizations
- Reordering of updates (Delegate functions will get updated on TidyPlates:Update() calls, regardless of the 'unit' table having changed)

- Lil' bug fixes

- Neon now keeps a "Known targetOf list" table, which delegate functions access to highlight non-tanked targets
- Added a simple Combat Log Analyzer to Debuff Widget (To report debuff cancelation back to ID'd units)
- Tank role recognition in Threat Line Widget
- Totem Icon Widget Included in WidgetLib.  Not yet in Neon.
- Changed internal cast bar code in prep for cast warning system (slated for 5.16).  oddities might occur.  I'll fix as discovered

- fixed nil values during set scale
- adjusted neon font to 'Qlassik', size, and position for better clarity
- added some comments to the default theme file
- threat line widget will not update on a unit until there is a threat table; meaning, if you're solo, you won't see anything.

- Commented-out improved cast bar code; Saved for another cycle
- removed unit.targetOf determination; too much cpu utilization
- some optimization of the OnUpdate function to improve fading performance
- Fixed color picker widget being placed under the interface options window
- theme.SetAlpha functions should just return a single value, for absolute alpha (0.0-1.0). additional returns are ignored
- The theme template table (the one with all the default values) has been changed to no longer look like the Grey theme. The Grey theme's media is now stored in its own folder. Choosing "None" as a theme option will show name-text, only.
- TP previously tried to associate arena, party, raid member guids to a nameplate (by name). This has been removed due to cpu considerations
- Changelog has been updated ;-)

- Still cranky
- fixed the Avoid overlap thingy
- added some update throttling for threat line widget
- commented out some friendly unit guid identification code

- I'm exhausted and sick and I don't want to even think about this stupid changelog thing and it's a miracle that I'm actually uploading this and I'm going to go to my freaking bed so I can be less cranky in the morning. I'm also hungry, dammit.

- Improved Fade
- Added a unit.targetOf variable, which the core will attempt to fill, depending on if there is a path to that unit (target, mousover, raid1target, party2target, etc.. doesn't fill from arena, yet)
- Added a .backdrop tag to the statusbars in the style table for themes; The image will appear behind the statusbar.


* Improved Tug-o'-Threat Widget
- Widget will try to acquire threat data from raid members

* Nameplates will now fade in when they appear

* Improved Cast Bar
- Will now try to estimate the cast of a
unit, without being targeted.

5.13.3 / r39:
* Alpha is now updated when health changes
* Threat widget will now properly update on current target when threat data changes

* Fixed Alpha == 0 update problems (Not updating name, health)
* Fixed Neon panel (Not holding values)


* Updates and fixes to Neon (including Unit Level)
* Inclusion of Graphite (just a peek at an upcoming theme)
* Layering adjustment
* Removal of some beta debug code

* New theme callback function: OnContextUpdate. Triggered when the GUID of a unit is updated.
* SetThreatColor will trigger for every unit, with no filtering, allowing the designer to use the
Threat Glow for other purposes (such as debuff tracking)
* Neon and Grey Panels are parented to their own category.
* Neon Panel has been updated
* New Neon features:
- Threat glow border
- Class Icon
- Debuff Widget Config

- Modified the theme table preprocessor to fill in values on the incoming theme table, rather than generating a totally segregated table.
- The style application function will now use that updated custom theme table
- Theme styles can be modified in real-time, and updated with TidyPlates:ForceUpdate()
- Theme reload will only be required when new styles are added, after the initial loading. (to multi-style themes)

- Added SetCastbarColor function

- Added SetThreatColor function


* Grey Theme: New Customization Tool
    1. Under the "TidyPlates_Grey" folder, you'll find another folder, "TidyPlates_GreyExtension"
    2. To use it, begin by moving that folder up to your Addons folder
    3. Open the file, "TidyPlates_GreyExtension\GreyExtension.lua"
    4. You can directly modify the default behavior and appearance
    5. This process can be duplicated for any theme, and will not get overwritten by an update
    Post a comment, or write me an email (binbwen@gmail.com) if you need some help with this
* A full status update will now be performed when the cast bar is shown, to prevent null values

/greydps and /greytank are the new shortcuts

* Added Debuff widgets to Grey/Tank
* Health text in Grey; "%x" will now read "x%"
* Added outline to text of Threat Line Widget (makes it easier to read in a cluttered battle)
*  also decreased the text size
* Threat Line Widget will look to see if the player is marked as a Main Tank in the Raid settings. If so, it will display the person who has pulled aggro (Target of). otherwise, it will assume dps mode and hide the tank name.
* Threat Line will color the Lost side green if it's being held by a tank

* Added a Statusbar wrapper, which fixes Lucky Charms, and enables vertical stat bars with masks
* Added basic Debuff icons
* Fixed Virtual Plates compatibility (Thanks Saiket!!)
* Fixed layering issues (Plates over map/combattext/etc)

Theme function Changes:
* theme.OnInitialize will get called every time a nameplate is shown.  Authors should check for
exsisting objects/widgets before creating new ones.
*theme.OnUpdate is called when the data on the plate is updated.  This does not need a existence
check since it's guaranteed to run after an OnInitialize.

++ "Avoid Overlap" (Alias) in panel
++ "Autoshow" Option in panel
++ Independent Frame
    * scale pass-through    (Not fully implemented; using Virtual Plates AND a theme which changes scale will show oddities)
    * force alpha override    (The developer can tell Tidy Plates to force the alpha - avoiding Blizzard's default alpha - by returning 'true' as a second value for the return)
        - ex. theme.SetAlpha = function(unit) return 1, true end  -- Will maintain the opacity at 100%, regardless of target status
++ Set Default CVars after VARIABLES_LOADED
++ Dual Spec Support (Changes theme based on spec)
    - Added a second dropdown menu in panel
++ Troubleshooting Panel
    - Vkey/Bindings
    - reset/reload
++ Widgets
    + created TidyPlatesWidgets. table
        + Threat Wheel
        + Class Icon Widget
        + Combo Point Widget
        + Threat Line
        + MT Logic Widget  
    + Syntax usage will follow
++ Scale pass-through    (Not Complete; Using Virtual Plates AND a theme which changes scale will show oddities)
++ Performance Enhancements
++ More Comments (woo?)
++ Code Re-organization
++ Widgets now use TidyPlatesWidgets:HideIn(), and a watcher frame to perform time checks; Faster than having
    each widget process for OnUpdate
++ Improvements to Panel Helpers
++     Unit Info table
    + .GUID (from mouseover or target)
++ Grey Theme
    ++ Critter/Neutral Filter checkbox
    ++ Panel redesign
    ++ Tank Mode; "Expands the size of runaway mobs"
    ++ DPS Mode; "Expands the size of aggro'd mobs"
    ++ Widgets
    ++ Each of my own themes should have their own config panel for role,
        allowing dual spec to work seamlessly..
        TidyPlatesThemes["Grey (DPS)"] = config
        TidyPlatesThemes["Grey (Tank)"] =  copytable(config)
++ Virtual Plates should now behave better
    * Scale-changing plates will still cause problemos, but now, ordinary plates will work just fine.
    * Returning NIL in your ScaleDelegate function (if  you've got multiple modes) will allow VirtualPlates passthrough.
++ Grey Tank/DPS panels and saved variables got some love; They work better
    + Delegate functions now use local variables for speed
+ Fixed Forceupdate    
+ Fixed some Grey variables
+ something else.. forgot what it was.  (Ok, I remembered;  I spelled "deficit" wrong.  I bought the wrong vowel!)
+ Fixed Health Text modes
* Grey Theme
    - Added Current Health + Percent
* Widgets
    - General Mouseover Widget
    - Combo Point Widget
* Still had trouble with nameplate alpha changes updating after the OnShow call.
    -- Solution: Indvidual Plate echo-update  
* Retracted "Raid-Tanked" Widget (for the time-being)
* Added an extended.widget table
    - Theme designers should put all their widget references in this table
* When nameplates are changed (manually or auto) by the Tidy Plates UI,
    the software will attempt to hide/clear any frames listed under the
    extended.widget table.

* Adjusted position of default theme data, to reduce targeting woes
* Added a cache reset to the Hide hook
* ForceUpdate now only operates on Shown plates
* CURSOR_UPDATE is now part of the default events
* Added alpha == 0 bypass
* Elite Borders now have a star on the artwork, making visual ID easier
* Simplified Scale and Alpha delegates of the default theme
* Critter Filter on default theme, now always on

* frame layering tweaks
* moved some skinning code around
* casting progress now forces single plate graphical updates (to eliminate casting icon oddities)
* painted my nails

* removed some old code related to the frame separation "feature" *shudder*
* frames faded too much (more than 50%); problem fixed
* level text will not show when skull icon is active
* TidyPlates:ForceUpdate() does not allow targetting a specific frame, anymore.  Use: TidyPlates:ForceUpdateFrame(frame), instead
* added .secureframe pointer to .extended, pointing to the base frame
* added .flags to name, level, specialText, and specialText2 - used for adding outlines to your text...  if you REALLY want them.  *shudder*

* Changed default fonts from Arial to Liberation (halves the file size, woo!)
* Undo the frame separation (Allows Virtual Plates to run)
* '.hitbox' has been added, as a style category.  This will alter the clickable region, out-of-combat
    - .hitbox.height  height of hitbox (default: 37)
    - .hitbox.width      width of hitbox (default: 149)
Tidy Plates 5.9 Release Notes
* Clean Up Files - Check!
* Rename of "Beta Grey" to "Standard Grey" - Check!
* re-added health bar color function

Beta 7.5
* Various tweaks to the update system
* unit info cache filters out non-changing events
* Testing of new theme, Neon, which has a new threat widget, and uses health bar color to ID aggro

Beta 7
* Added: unit.isTarget to Unit Information Table
* Each Tidy Plates extension has been changed to not be parented to the plate object.
    - Please watch for memory leaks
* Themes must now use the TOC tag, "## Dependencies: TidyPlates", to ensure proper operation
* typing '/tidyplates' or '/tidybeta' without parameters will list the command line options AND open the interface panel
* fixed a layering problem with casting bar
* added unit info cache, to determine if unit info has changed
* TidyPlates:ReloadTheme() will reload the current theme from the table source
* TidyPlates:ForceUpdate() and :ForceUpdate(plate) will force the update of the entire plate
    - Use this function when you absolutely must update every bit of graphic on the plate(s)
* TidyPlates:Update() refreshes the unit data on each plate, and checks for changes
    - Use this function for frugal CPU usage
* Threat widget will now color the unit's target name by class color

Beta 6
* Fixed some bugs with combo points; It's still needing work, though.
* Added reset commands:
    '/tidyplates reset' and ' /tidybeta reset' resets variables without messing with WTF folders
* Fixed position of Scale slider in the Beta Grey Interface Panel

Beta 5
* Added an 'Apply' button to BetaGrey theme
* Added slash commands for Beta grey '/tidybeta [tank, dps, pvp]
* Fixed some bugs
* Added a text box to the threat widget, showing who (if it's not you) has the highest threat

Beta 2
* Engine modifications (echo function)
    - Allows accurate update of current target/alpha
    - Reduces CPU consumption

Beta 1 (And Earlier - This list is a work-in-progress)
* New Functions/Methods:
    TidyPlates:ForceUpdate() - Forces the update of all nameplates
    TidyPlates:ForceUpdate(frame) - Forces the update of the specified nameplate
* Current Derived Unit Information Table (supplied to delegate functions):
    unit.threatSituation  "LOW", "MEDIUM", "HIGH"    
    unit.reaction          "FRIENDLY", "NEUTRAL", "HOSTILE"
    unit.type              "NPC", "PLAYER"
    unit.isBoss          true, if the skull icon is active (the creature is a boss/level ??)
    unit.isDangerous  Same as isBoss
    unit.isElite      true, if unit is elite (ie. elite symbol is shown)
    unit.isMarked      true, if the unit is marked with a raid icon
    unit.name            the unit's name
    unit.alpha          float, the alpha of the nameplate (ie. 1= target, 1< non-target)
    unit.level          integer, the unit's level
    unit.health          integer, the unit's health
    unit.isMouseover  true, if the highlight region is showing (ie. mouse is over the frame)
    unit.red unit.green unit.blue    0.0-1 Values, the raw color of the health bar
    unit.isCasting                      true, if cast bar is being shown
    _, unit.healthmax                    integer, the maximum health of the unit
    unit.class            "DEATHKNIGHT", "DRUID","HUNTER", etc..
    unit.isInCombat    true, if name text is red (ie. unit is in combat with you)
* Interface Options Panel
        - Theme Chooser
* New Delegate Functions: OnInitialize, OnUpdate
    - OnInitialize(plate)        This function is supplied a pointer to the Tidy Plates extension,
                                which can be directly edited. This function is called when the plate
                                extension is created.
    - OnUpdate(plate, unit)        This function is supplied a pointer to the Tidy Plates extension, and
                                the Unit Information Table.  This function is called when the plate is
                                updated (via event, or forced), after all other delegate functions have
                                been called

Known caveats

Greatest Risk: You may become totally dependent on nameplates.


Uploaded on
Jan 17, 2013
Game version
  • 5.1.0
430.7 KiB