Get an Epic Experience with Premium

Titan Panel [DualSpec]

Chat & Communication Login to Add Favorites
  • World of Warcraft
  • 1,621 Monthly Downloads
  • Supports: 6.1.0
  • 646,656 Total Downloads
  • Updated 02/24/2015
  • Created 04/29/2009
  • 901 Favorites
  • Project Site
  • Comments
  • Release Type: Release
  • License: GNU General Public License version 2 (GPLv2)
  • Newest File: 4.1

About Titan Panel [DualSpec]

All your important information at a glance

A simple Titan addon for dual specs that displays your current spec on the Titan Panel button and allows you to easily switch specs with a simple left-click.
It also provides advanced functionality and display options for those who want to customize what is shown.

This allows you to see exactly what you want with a quick glance. For example, you can quickly check if your in the correct gear or have the right talents selected for the boss you are on. It also allows you to make sure you will get the right loot to drop. Why waste time having to right click your portrait just to verify you have the correct Loot Specialization chosen.

Optional features include:

  • Assigning Equipment Manager sets to each spec for auto equipping.
  • Display of custom spec names.
  • Display of spec icon.
  • Display of your currently equipped Equipment Manager set.
  • Display of your selected Loot Specialization.
  • Customized display of any Talent Points you are specced into. (ex. Balance (Feline Swiftness,Typhoon,Nature's Vigil))

You can also set key-bindings for the 4 actions below:

  • Left-Click will switch your spec and, if assigned, the gear for that spec.
  • Shift + Left-Click will switch only your spec.
  • Alt + Left-Click will switch between the two gear sets that you have assigned to your specs, otherwise between all gear sets.
  • Ctrl + Left-Click will rotate through Loot Specializations.

If you're able to help with translations, please check out the project's localization page:

Early-release and alpha versions are always available from the project's file page:


Q: Does DualSpec have any dependencies, other than TitanPanel itself?


Q: How do I report a bug or request a feature?

Please use the ticketing system provided by Curse. This is greatly preferable to posting comments as it allows me to properly track them. While I love to receive comments, bug reports and feature requests will almost certainly require a ticket anyhow.

Q: Is there anything I can do to help?

  1. First (and the easiest) give this addon a good rating and add it to your favourites ;)
  2. Tell your friends about it.
  3. Translations.
  4. Testing and suggestions for new features, etc.
  • Updated to 6.1
  • Updated to WoD 6.0.3
  • Faster Loot Spec switching
  • Fixed Titan Panel's right-side plugin toggle.
  • Added option to show/hide helm based on spec. Configure it by using keybinding. It will restore your setting automatically next time.
  • Updated to 5.4.2
  • Fixed the reset of display options after logging into a character who hasn't bought Dual Spec.
  • Fixed Loot Spec from incorrectly displaying "Default" after login/reloads.
  • Updated to 5.4
  • New Loot Specialization display (Thanks Verdachtrocket)
  • New ctrl click and keybinding for rotating through loot specialization.
  • Added chat output when selecting Current Specialization for loot.
  • Fix for global variable's: Ticket 14 (Thanks webigel)
  • Fixed 3.0a problem where it wouldn't rotate through all loot spec's available
  • Fixed spacing issues of titan bar display
  • Updated Localizations with Google Translate
v3.0 alpha
  • Updated to 5.4
  • New Loot Specialization display (Thanks Verdachtrocket)
  • New ctrl click and keybinding for rotating through loot specialization.
  • Fix for global variable's: Ticket 14 (Thanks webigel)
  • Updated to 5.3
  • Updated to 5.2
  • New Talent Build display with options customized per spec and character (thanks to Aghull).
  • New Blizzard localization used for most of the addon. Updated all other localization's with Google translate.
  • Added ability to display only a number to distinguish your current spec.
  • Added ability to rename both specs at once.
  • Added a reset confirmation popup.
  • Fixed Tooltip, Equipment and Renaming options to hide/show depending on number of spec's learned.
  • Fixed many minor bugs (most associated with not having learned both specializations).
v2.2.0 alpha
  • Switched out 1/3 of the text to Blizzard global strings for hopefully better localization
  • Added Aghull's Talent Patch to be able to display talent build information
  • Many more changes to post when finalized.
  • Updated to 5.1.0
  • Changed name to "DualSpec" independent on localization.
  • Updated German localization
  • Button text should update correctly.
  • Made gear automatically switch when changing specs (even when not using addon).
  • Fixed gear sets to update after having any deleted and to not show if none are available.
  • Minor updates throughout addon
  • Fixed Blizzard's Glyph UI Taint
  • Complete rework of code
  • Added key-bindings that function the same as left-click commands
  • Modified menu options and layout
  • Added spec and gear icons
  • Real-time updating of all gear set changes, including those from outside addon
  • Alt Click now rotates through all gear sets available if none are assigned
  • Added ability to display addon on the ride side of Titan Panel.
  • Fixed toggle options to update correctly
  • Updated to 5.0.4
  • Added ability to assign gear sets for both specs at once.
  • Modifier's Changed: Left-Click for switching spec and gear, Shift Click for only spec, Alt Click for only gear
  • Added a message filter to stop the spam when swapping specs.
  • Added SavedVariablesPerCharacter to store custom names and gear sets per character.
  • Updated localizations, including some Google-translations for updating the "hint"
  • Added a menu item to allow for equipping a gear set (nod to Kanegasi)
  • Changed the order so gear is switch /after/ spec
  • Fresh exports of localizations
  • New exports of traditional and simplified Chinese (thanks to Arkyang)
v1.7.1.1 v1.7.1
  • Improved the interface for gear-set selecting
  • Removed some debugging output
  • Initial work on allowing a gear set to be assigned to a spec; ie, it will be automatically equipped when you change specs if you shift-left-click
  • Fix for Ticket 7 (Thanks to SkywardSky for the hint!!)
  • Disabled debugging output
  • Re-enabled renaming of spec
  • New exports of localizations
  • Updated to use the new API function
  • Temporarily disabled renaming
  • Updated to 40000
  • Removed filtering code
  • Updated to 30300
  • Add a potential (though untested) fix for the conflict with some chat addons; ie, Ticket 3
  • Updated to 3.2.0
  • Added French translation (thanks to polluxtroy3578)
  • Added partial latin american spanish translation (thanks to chupes)
  • Added Russian translation (thanks to Пичинег @ EU-Термоштепсель)
  • Updated German translation
  • Fixed issue w/low-level characters where trees weren't being properly identified
  • Updated German translation
  • Rewrote to trigger off of events instead of polling so this should be more efficient
  • Changed name to DualSpec from Talents
  • Added tooltip hint
  • Fixed issue w/low-level characters
v1.0 v0.5
  • Added ability to rename specs
  • Added some cosmetic button options
  • Started to populate the tooltip, though there's more to come
  • Partial German translation (thanks again to Gomntep)


First Previous Page 7 of 9 Next Last
  • #34
    That's a good idea. I had thought of doing that but abandoned it. Let me revisit it again. Maybe even something as simple as equipping a gear set with the same name as the name you've chosen for the talent group might work. Anyhow, I'll think about it. Thanks!!
  • #31
    I like this addon, but it still blocks system messages (GM announcements, /rolls, world messages, logon/logoff alerts, etc.) so it continues to be a hindrance. I love the idea of a one-click option to swap specs, but until this one is fixed, this will not be the solution.
  • #32
    It doesn't do any of those things. What you are seeing is likely a conflict with chat addons like prat and chatter, which have been reported in the past. I have never seen that myself or heard of it from people that aren't using chat addons. Can you confirm that you are not using prat, chatter, or similar?
  • #30
    I've been out of action for a couple weeks due to RL matters. Sorry to everyone that my intended updates to this addon have consequently been delayed. Just so you know, I do plan on fixing it up in the next week and hope to get a beta or release out on the weekend. Thanks to everyone for their support and comments and I will get back on track over the next week. FYI, I do intend at some point soon to look into the interaction issue with Prat and Chatter.
  • #35
    Oh I love this addon. After 3.2 i disabled it sadly and just yesterday i enabled it on my leveling dk and to my joy i see it working again. So all excited i go on my main and try enable it and wow spazzes out with errors. lol Both my dk and my main use prat. So as confused as i am TRY it anyway if you use prat see if it works.. if it does it's well worth it!

    Been with WoW for some years now...

  • #28
    So, 3.2 seems to have brought with it some issues. Unfortunately, my computer died just prior to that so I haven't done any proper updates to this addon. I am planning to this weekend and hopefully I will be able to resolve so of the conflicts people are seeing with various chat addons.
  • #23
    Since the newest titan panel was uploaded ( I have the dual spec plug in enabled, it stops all sytem messages (such as guild log ins/off) and runs an lua error in the chat program (Prat 3.0 for mine, but on the Titan wow page they commented on the default chat as well)
  • #29
    I am having the same problem. I can't see my /roll or others /roll. Also Friend/Guildies log on/off. I narrowed it down to this addon so here is the error I'm getting.

    Date: 2009-08-21 13:12:53
    ID: 1
    Error occured in: Global
    Count: 1
    Message: ..\AddOns\Prat-3.0\services\chatsections.lua line 514:
    bad argument #1 to 'match' (string expected, got table)
    [C]: ?
    [C]: match()
    Prat-3.0\services\chatsections.lua:514: SplitChatMessage()
    (tail call): ?
    Swatter, v3.1.14 ()
    ACP, v3.2.0.20
    AtlasLoot, vv5.07.05
    AtlasLootFu, vv5.07.05
    Auctionator, v2.3.7
    BloodyRare, v1.4
    BonusScanner, v5.2
    BrokerBonusScanner, v1.2
    BuyEmAll, v
    Cartographer, v2.0
    CartographerBattlegrounds, v2.0
    CartographerCoordinates, v2.0
    CartographerFoglight, v2.0
    CartographerGroupColors, v2.0
    CartographerGuildPositions, v2.0
    CartographerInstanceLoot, v2.0
    CartographerInstanceMaps, v2.0
    CartographerInstanceNotes, v2.0
    CartographerLookNFeel, v2.0
    CartographerNotes, v2.0
    CartographerPOI, v2.0
    CartographerQuestInfo, v
    CartographerWaypoints, v2.0
    CartographerZoneInfo, v2.0
    Chinchilla, vv2.0.8
    Cooldowns, v
    CurseProfiler, v
    DBMCore, v
    DiedemusPack1, v1.2
    Dominos, v1.10.5
    DominosCast, v
    DominosRoll, v
    DominosXP, v
    DoomCooldownPulse, v
    DsgraphicsForzadesignSunnart, v2.611
    ForteCasting, v
    ForteCooldown, v
    ForteCore, vv1.16
    FortePriest, v
    ForteTalent, v
    ForteTimer, v
    ForteVehicle, v
    Grid, v1.30200.2009081101
    GridStatusRaidDebuff, vv3.01
    GridStatusRDBC, v1.0
    GridStatusRDWotLK, v1.0
    GupPet, v1.194
    GupPetCollectMe, v
    HealBot, v3.2.0.3
    MikScrollingBattleText, v5.4.64
    MinimapButtonFrame, v3.0.7
    MinimapButtonFrameSkinPack, v3.0
    Omen, v3.0.8
    Outfitter, v4.7.4
    Prat30, v3.2.4
    Prat30HighCPUUsageModules, v
    Prat30Libraries, v
    PreformAVEnabler, v2.41
    PyriteStacks, v1.0.2
    Quartz, v1.0
    QuartzBuff, v1.0
    QuartzFlight, v1.0
    QuartzFocus, v1.0
    QuartzGCD, v1.0
    QuartzInterrupt, v1.0
    QuartzLatency, v1.0
    QuartzMirror, v1.0
    QuartzPet, v1.0
    QuartzPlayer, v1.0
    QuartzRange, v1.0
    QuartzTarget, v1.0
    QuartzTimer, v1.0
    QuartzTradeskill, v1.0
    RatingBuster, v
    Recount, v
    RecountGuessedAbsorbs, v
    SellJunk, v2.4.3
    ShadowGreenLight, v
    SharedMedia, v3.0
    SlideBar, v3.1.14 ()
    SmartRes, v6.03
    SPPP, v1.0
    SunnArt, v3.11
    SunnArtPack6, v1.3
    SunnArtPack7, v1.3
    SunnArtPack9, v1.3
    SurgeOfLight, v1.2
    TBag, v
    TipTac, v09.08.14
    TipTacItemRef, v09.08.13
    TipTacTalents, v09.08.13
    Titan, v4.2.9.30200 - Revision 309
    TitanRepair, v4.2.9.30200
    TitanSpec, v1.4.5.30200
    TitanVolume, v4.2.9.30200
    TitanXP, v4.2.9.30200
    WIM, v3.1.2
    WoWTexasHoldem, vv3.1
    XLoot, v0.9
    XPerl, v3.0.5f
    XPerlArcaneBar, v
    XPerlPlayer, v
    XPerlPlayerBuffs, v
    XPerlPlayerPet, v
    XPerlRaidAdmin, v
    XPerlRaidFrames, v
    XPerlRaidHelper, v
    XPerlRaidMonitor, v
    XPerlTarget, v
    XPerlTargetTarget, v
    BlizRuntimeLib_enUS v3.2.0.30200

  • #24
    I don't run any chat programs like Prat and I haven't noticed any issues. Perhaps this is similar to what JLBurnett04 reported below, though. All I can suggest is to disable the spam filtering as this may be the issue. Do you still have this problem if Prat is disabled? If so, I'll try to look into it. Otherwise, maybe it is a problem with Prat? Regardless, please open a ticket:
  • #25
    Oh and two more things: if you can copy the lua error into the bug report that would be helpful, especially since I can't reproduce the problem; and, the only thing that changed between 1.1.4 and 1.1.5 is the interface version so any problems caused by this addon will have existed prior to 1.1.5.
  • #26
    So, here's what I think is happening. This addon has a feature which will suppress the spell learned spam that you get when you switch specs. It does this by applying a filter to the chat stream. If the pattern matches then the filter is applied and nil is returned. I am guessing that Prat is taking that chat stream and shoving it into a function without checking that it is non-nil and this is causing Prat to barf. Remember, this is just supposition.

    A potential workaround that you can try is the following. Open the TitanSpec.lua file and go the very end of it. You'll find a function that looks like the following:


    function TitanSpec_spamFilter(self, event, ...)
    local msg = arg1;
    if ( ( strfind(msg, SPELL_LEARNED_PATTERN) or strfind(msg, ABILITY_LEARNED_PATTERN)
    or strfind(msg, SPELL_UNLEARNED_PATTERN) )
    and TitanGetVar(TITAN_SPEC_ID, "HideSpam") ) then
    return true;
    return false, args;


    Change the line that says 'return true' to 'return true, ""':


    function TitanSpec_spamFilter(self, event, ...)
    local msg = arg1;
    if ( ( strfind(msg, SPELL_LEARNED_PATTERN) or strfind(msg, ABILITY_LEARNED_PATTERN)
    or strfind(msg, SPELL_UNLEARNED_PATTERN) )
    and TitanGetVar(TITAN_SPEC_ID, "HideSpam") ) then
    return true, "";
    return false, args;


    Now, I'm not at a computer that has WoW installed so I can't test this. It might fail. Even if it doesn't, it might not work and I wouldn't know because I can't reproduce your problem. But, I think that's what the issue is. Again, please open a ticket if you have further issues.
  • #27
    Error: Original call failed after running hooks for: ChatFrame_OnEvent
    Interface\AddOns\Prat-3.0\services\chatsections.lua:514: bad argument #1 to 'match' (string expected, got table)
    Call Chain:
    Interface\AddOns\Stubby\Stubby.lua:381: in function
    (tail call): ?
    [string "*:OnEvent"]:1: in function

    is the error i get at first. If i then disable stubby (from auctioneer) I get

    Message: Interface\AddOns\Prat-3.0\services\chatsections.lua:514: bad argument #1 to 'match' (string expected, got table)
    Time: 08/09/09 03:59:16
    Count: 2
    Stack: [string "Interface\FrameXML\BasicControls.xml:
    [C]: ?
    [C]: in function `match'
    Interface\AddOns\Prat-3.0\services\chatsections.lua:514: in function `SplitChatMessage'
    Interface\AddOns\Prat-3.0\addon\addon.lua:521: in function
    (tail call): ?
    Interface\FrameXML\ChatFrame.lua:2288: in function `ChatFrame_OnEvent'
    [string "*:OnEvent"]:1: in function

    Locals: (*temporary) = {
    67618 = {
    66869 = {
    Icehowl = {
    66331 = {
    67654 = {
    Jormungar Behemoth = {
    67477 = {
    66683 = {
    66689 = {
    Gormok the Impaler = {
    (*temporary) = "%[(.-)%](.+)"
    (*temporary) = "string expected, got table"

    If i disable both of them, I get

    Message: Interface\FrameXML\ChatFrame.lua:2492: bad argument #1 to 'strlen' (string expected, got nil)
    Time: 08/09/09 04:01:06
    Count: 4
    Stack: [string "Interface\FrameXML\BasicControls.xml:
    [C]: ?
    [C]: in function `strlen'
    Interface\FrameXML\ChatFrame.lua:2492: in function
    (tail call): ?
    (tail call): ?
    (tail call): ?
    (tail call): ?
    Interface\FrameXML\ChatFrame.lua:2288: in function `ChatFrame_OnEvent'
    [string "*:OnEvent"]:1: in function

    Locals: (*temporary) = nil
    (*temporary) = "string expected, got nil"

    However, all by itself I'm not getting an issue. So it's definetely a conflict with another add on. I'll play around more and just add the other ones, one by one and see if there is a specific culprit.
  • #16
    Hello! This addon seemed great for the few min i had it but it unfortunately conflicts with my most favorite addon, Tell Track, so i had to disable it. I was really wanting to use this so I was hoping there was some way that this addon and Tell Track could play nicely together. I can provide you with the error message if needed but it only lists an issue with Tell Track (which worked fine before I installed this addon and after I removed it). Thank you!
  • #17
    Please open a ticket and I'll see what I can figure out.
  • #18
    I just looked at your TT post. I believe the problem is in TT -- though it is obviously an interaction problem -- because of:

    Message: ..\AddOns\TellTrack\TellTrack.lua line 902:
    bad argument #1 to 'strlower' (string expected, got nil)

    Without looking at the TT source code I don't know that I can glean much more. I'll try to do that at some point though. It would be good to know if it is on my side of the fence or theirs...

    JL, I just had a thought: maybe it has to do with the spell learned filtering. Can you try disabling it and let me know if that changes anything?
  • To post a comment, please login or register a new account.
Login to Curse

Don't have an account? Create One.

Get an epic experience with Curse Premium
  • Faster addon downloads
  • Premium-Only Beta Giveaways
  • Ad-Free Curse experience
  • Premium Curse Client
  • and many More Features
  • Learn More »

Darkest Dungeon Wiki Editing Contest