diff --git a/.pkgmeta b/.pkgmeta
index b5d2e8cff7..12fcc069d1 100644
--- a/.pkgmeta
+++ b/.pkgmeta
@@ -50,7 +50,6 @@ plain-copy:
- ElvUI_Libraries/Core/LibAnim
- ElvUI_Libraries/Core/LibDeflate
- ElvUI_Libraries/Core/LibElvUIPlugin-1.0
- - ElvUI_Libraries/Core/LibRangeCheck-3.0
- ElvUI_Libraries/Core/LibSimpleSticky
- ElvUI_Libraries/Core/oUF
- ElvUI_Libraries/Core/oUF_Plugins
diff --git a/ElvUI/Cata/Modules/Skins/Gossip.lua b/ElvUI/Cata/Modules/Skins/Gossip.lua
index 3e6f1d6437..e236f9a1aa 100644
--- a/ElvUI/Cata/Modules/Skins/Gossip.lua
+++ b/ElvUI/Cata/Modules/Skins/Gossip.lua
@@ -120,6 +120,11 @@ function S:GossipFrame()
_G.QuestFont:SetTextColor(1, 1, 1)
_G.ItemTextPageText:SetTextColor('P', 1, 1, 1)
+ _G.ItemTextMaterialBotLeft:SetAlpha(0)
+ _G.ItemTextMaterialBotRight:SetAlpha(0)
+ _G.ItemTextMaterialTopLeft:SetAlpha(0)
+ _G.ItemTextMaterialTopRight:SetAlpha(0)
+
hooksecurefunc(_G.ItemTextPageText, 'SetTextColor', ItemTextPage_SetTextColor)
hooksecurefunc(GreetingPanel.ScrollBox, 'Update', GreetingPanel_Update)
@@ -127,6 +132,11 @@ function S:GossipFrame()
GossipFrame.Background:Hide()
end
else
+ _G.ItemTextMaterialBotLeft:SetDrawLayer('ARTWORK', 1)
+ _G.ItemTextMaterialBotRight:SetDrawLayer('ARTWORK', 1)
+ _G.ItemTextMaterialTopLeft:SetDrawLayer('ARTWORK', 1)
+ _G.ItemTextMaterialTopRight:SetDrawLayer('ARTWORK', 1)
+
local spellTex = createParchment(GreetingPanel)
spellTex:SetInside(GreetingPanel.backdrop)
GreetingPanel.spellTex = spellTex
diff --git a/ElvUI/Classic/Modules/Skins/Gossip.lua b/ElvUI/Classic/Modules/Skins/Gossip.lua
index 0f0257a52a..87fb64b72f 100644
--- a/ElvUI/Classic/Modules/Skins/Gossip.lua
+++ b/ElvUI/Classic/Modules/Skins/Gossip.lua
@@ -120,6 +120,11 @@ function S:GossipFrame()
_G.QuestFont:SetTextColor(1, 1, 1)
_G.ItemTextPageText:SetTextColor('P', 1, 1, 1)
+ _G.ItemTextMaterialBotLeft:SetAlpha(0)
+ _G.ItemTextMaterialBotRight:SetAlpha(0)
+ _G.ItemTextMaterialTopLeft:SetAlpha(0)
+ _G.ItemTextMaterialTopRight:SetAlpha(0)
+
hooksecurefunc(_G.ItemTextPageText, 'SetTextColor', ItemTextPage_SetTextColor)
hooksecurefunc(GreetingPanel.ScrollBox, 'Update', GreetingPanel_Update)
@@ -127,6 +132,11 @@ function S:GossipFrame()
GossipFrame.Background:Hide()
end
else
+ _G.ItemTextMaterialBotLeft:SetDrawLayer('ARTWORK', 1)
+ _G.ItemTextMaterialBotRight:SetDrawLayer('ARTWORK', 1)
+ _G.ItemTextMaterialTopLeft:SetDrawLayer('ARTWORK', 1)
+ _G.ItemTextMaterialTopRight:SetDrawLayer('ARTWORK', 1)
+
local spellTex = createParchment(GreetingPanel)
spellTex:SetInside(GreetingPanel.backdrop)
GreetingPanel.spellTex = spellTex
diff --git a/ElvUI/Core/Defaults/Global.lua b/ElvUI/Core/Defaults/Global.lua
index 674d244b71..bf9a15ae4f 100644
--- a/ElvUI/Core/Defaults/Global.lua
+++ b/ElvUI/Core/Defaults/Global.lua
@@ -195,6 +195,7 @@ G.unitframe = {
HUNTER = {
['19503'] = not E.Retail and 'Scatter Shot' or nil,
['2974'] = not E.Retail and 'Wing Clip' or nil,
+ ['2973'] = E.Cata and 'Raptor Strike' or nil,
['75'] = 'Auto Shot'
},
MAGE = {
diff --git a/ElvUI/Core/General/API.lua b/ElvUI/Core/General/API.lua
index 195da743d8..c015a11f5a 100644
--- a/ElvUI/Core/General/API.lua
+++ b/ElvUI/Core/General/API.lua
@@ -409,7 +409,7 @@ function E:GetThreatStatusColor(status, nothreat)
end
function E:GetPlayerRole()
- local role = (E.Retail or E.Cata) and UnitGroupRolesAssigned('player') or 'NONE'
+ local role = E.allowRoles and UnitGroupRolesAssigned('player') or 'NONE'
return (role ~= 'NONE' and role) or E.myspecRole or 'NONE'
end
diff --git a/ElvUI/Core/General/Core.lua b/ElvUI/Core/General/Core.lua
index 08694a6f41..bf83c56d01 100644
--- a/ElvUI/Core/General/Core.lua
+++ b/ElvUI/Core/General/Core.lua
@@ -71,6 +71,7 @@ E.physicalWidth, E.physicalHeight = GetPhysicalScreenSize()
E.screenWidth, E.screenHeight = GetScreenWidth(), GetScreenHeight()
E.resolution = format('%dx%d', E.physicalWidth, E.physicalHeight)
E.perfect = 768 / E.physicalHeight
+E.allowRoles = E.Retail or E.Cata or E.ClassicAnniv or E.ClassicAnnivHC
E.NewSign = [[|TInterface\OptionsFrame\UI-OptionsFrame-NewFeatureIcon:14:14|t]]
E.NewSignNoWhatsNew = [[|TInterface\OptionsFrame\UI-OptionsFrame-NewFeatureIcon:14:14:0:0|t]]
E.TexturePath = [[Interface\AddOns\ElvUI\Media\Textures\]] -- for plugins?
diff --git a/ElvUI/Core/Modules/Chat/Chat.lua b/ElvUI/Core/Modules/Chat/Chat.lua
index 2b1086fd1b..bba8a98a5a 100644
--- a/ElvUI/Core/Modules/Chat/Chat.lua
+++ b/ElvUI/Core/Modules/Chat/Chat.lua
@@ -2801,7 +2801,7 @@ function CH:FCF_SetWindowAlpha(frame, alpha)
end
function CH:CheckLFGRoles()
- if not E.Retail or not CH.db.lfgIcons or not IsInGroup() then return end
+ if not E.allowRoles or not CH.db.lfgIcons or not IsInGroup() then return end
wipe(lfgRoles)
diff --git a/ElvUI/Core/Modules/Misc/RaidUtility.lua b/ElvUI/Core/Modules/Misc/RaidUtility.lua
index 4dc80e184a..22fdca02dd 100644
--- a/ElvUI/Core/Modules/Misc/RaidUtility.lua
+++ b/ElvUI/Core/Modules/Misc/RaidUtility.lua
@@ -809,21 +809,21 @@ function RU:Initialize()
close:SetPoint('TOPRIGHT', utility, 'BOTTOMRIGHT', -x, -y)
end
end
- ]=], E.Classic and 0 or E:Scale(1), E:Scale(30), E.Classic and 1 or 0))
+ ]=], E.allowRoles and E:Scale(1) or 0, E:Scale(30), E.allowRoles and 0 or 1))
ShowButton:SetScript('OnDragStart', RU.DragStart_ShowButton)
ShowButton:SetScript('OnDragStop', RU.DragStop_ShowButton)
E.FrameLocks.RaidUtility_ShowButton = true
RU:CreateTargetIcons()
- local CloseButton = RU:CreateUtilButton('RaidUtility_CloseButton', RaidUtilityPanel, 'SecureHandlerClickTemplate', PANEL_WIDTH * 0.6, BUTTON_HEIGHT + (E.Classic and 0 or 8), 'TOP', RaidUtilityPanel, 'BOTTOM', 0, 0, _G.CLOSE, nil, nil, nil, RU.OnClick_CloseButton)
+ local CloseButton = RU:CreateUtilButton('RaidUtility_CloseButton', RaidUtilityPanel, 'SecureHandlerClickTemplate', PANEL_WIDTH * 0.6, BUTTON_HEIGHT + (E.allowRoles and 8 or 0), 'TOP', RaidUtilityPanel, 'BOTTOM', 0, 0, _G.CLOSE, nil, nil, nil, RU.OnClick_CloseButton)
SecureHandlerSetFrameRef(CloseButton, 'RaidUtility_ShowButton', ShowButton)
CloseButton:SetAttribute('_onclick', [=[self:GetParent():Hide(); self:GetFrameRef('RaidUtility_ShowButton'):Show()]=])
SecureHandlerSetFrameRef(RaidUtilityPanel, 'RaidUtility_CloseButton', CloseButton)
local BUTTON_WIDTH = PANEL_WIDTH - 20
local RaidControlButton = RU:CreateUtilButton('RaidUtility_RaidControlButton', RaidUtilityPanel, nil, BUTTON_WIDTH * 0.5, BUTTON_HEIGHT, 'TOPLEFT', RaidUtilityPanel, 'TOPLEFT', 5, -4, L["Raid Menu"], nil, nil, nil, RU.OnClick_RaidControlButton)
- local ReadyCheckButton = RU:CreateUtilButton('RaidUtility_ReadyCheckButton', RaidUtilityPanel, nil, BUTTON_WIDTH * (E.Classic and 1 or 0.5), BUTTON_HEIGHT, 'TOPLEFT', RaidControlButton, 'BOTTOMLEFT', 0, -5, _G.READY_CHECK, nil, buttonEvents, RU.OnEvent_ReadyCheckButton, RU.OnClick_ReadyCheckButton)
+ local ReadyCheckButton = RU:CreateUtilButton('RaidUtility_ReadyCheckButton', RaidUtilityPanel, nil, (BUTTON_WIDTH * (E.allowRoles and 0.5 or 1)) + (E.allowRoles and 0 or 5), BUTTON_HEIGHT, 'TOPLEFT', RaidControlButton, 'BOTTOMLEFT', 0, -5, _G.READY_CHECK, nil, buttonEvents, RU.OnEvent_ReadyCheckButton, RU.OnClick_ReadyCheckButton)
RU:CreateUtilButton('RaidUtility_DisbandRaidButton', RaidUtilityPanel, nil, BUTTON_WIDTH * 0.5, BUTTON_HEIGHT, 'TOPLEFT', RaidControlButton, 'TOPRIGHT', 5, 0, L["Disband Group"], nil, nil, nil, RU.OnClick_DisbandRaidButton)
local MainTankButton = RU:CreateUtilButton('RaidUtility_MainTankButton', RaidUtilityPanel, 'SecureActionButtonTemplate', BUTTON_WIDTH * 0.5, BUTTON_HEIGHT, 'TOPLEFT', ReadyCheckButton, 'BOTTOMLEFT', 0, -5, _G.MAINTANK, nil, buttonEvents, RU.OnEvent_MainTankButton)
@@ -840,13 +840,15 @@ function RU:Initialize()
local RaidCountdownButton
if hasCountdown then
- RaidCountdownButton = RU:CreateUtilButton('RaidUtility_RaidCountdownButton', RaidUtilityPanel, nil, BUTTON_WIDTH * (E.Retail and 0.5 or 0.8), BUTTON_HEIGHT, 'TOPLEFT', MainTankButton, 'BOTTOMLEFT', 0, -5, L["Countdown"], nil, nil, nil, RU.OnClick_RaidCountdownButton)
+ RaidCountdownButton = RU:CreateUtilButton('RaidUtility_RaidCountdownButton', RaidUtilityPanel, nil, (BUTTON_WIDTH * ((E.Retail or E.Cata) and 0.8 or 1)) + ((E.Retail or E.Cata) and 0 or 5), BUTTON_HEIGHT, 'TOPLEFT', MainTankButton, 'BOTTOMLEFT', 0, -5, L["Countdown"], nil, nil, nil, RU.OnClick_RaidCountdownButton)
end
- if not E.Classic then
+ if E.allowRoles then
RU:CreateUtilButton('RaidUtility_RoleCheckButton', RaidUtilityPanel, nil, BUTTON_WIDTH * 0.5, BUTTON_HEIGHT, 'TOPLEFT', ReadyCheckButton, 'TOPRIGHT', 5, 0, _G.ROLE_POLL, nil, buttonEvents, RU.OnEvent_RoleCheckButton, RU.OnClick_RoleCheckButton)
RU:CreateRoleIcons()
+ end
+ if not E.Classic then
if _G.CompactRaidFrameManager then
-- Reposition/Resize and Reuse the World Marker Button
local marker = _G.CompactRaidFrameManagerDisplayFrameLeaderOptionsRaidWorldMarkerButton
diff --git a/ElvUI/Core/Modules/Nameplates/Nameplates.lua b/ElvUI/Core/Modules/Nameplates/Nameplates.lua
index 242d5aa616..e30b0094a9 100644
--- a/ElvUI/Core/Modules/Nameplates/Nameplates.lua
+++ b/ElvUI/Core/Modules/Nameplates/Nameplates.lua
@@ -560,7 +560,7 @@ function NP:GROUP_ROSTER_UPDATE()
for i = 1, (isInRaid and GetNumGroupMembers()) or GetNumSubgroupMembers() do
local unit = group..i
if UnitExists(unit) then
- NP.GroupRoles[UnitName(unit)] = not E.Retail and (GetPartyAssignment('MAINTANK', unit) and 'TANK' or 'NONE') or UnitGroupRolesAssigned(unit)
+ NP.GroupRoles[UnitName(unit)] = not E.allowRoles and (GetPartyAssignment('MAINTANK', unit) and 'TANK' or 'NONE') or UnitGroupRolesAssigned(unit)
end
end
end
diff --git a/ElvUI/Core/Modules/Nameplates/StyleFilter.lua b/ElvUI/Core/Modules/Nameplates/StyleFilter.lua
index 08d7a116ac..2ebbfe4348 100644
--- a/ElvUI/Core/Modules/Nameplates/StyleFilter.lua
+++ b/ElvUI/Core/Modules/Nameplates/StyleFilter.lua
@@ -965,7 +965,7 @@ function NP:StyleFilterConditionCheck(frame, filter, trigger)
end
-- Unit Role
- if E.Retail and trigger.unitRole and (trigger.unitRole.tank or trigger.unitRole.healer or trigger.unitRole.damager) then
+ if E.allowRoles and trigger.unitRole and (trigger.unitRole.tank or trigger.unitRole.healer or trigger.unitRole.damager) then
local role = UnitGroupRolesAssigned(frame.unit)
if trigger.unitRole[NP.TriggerConditions.roles[role]] then passed = true else return end
end
diff --git a/ElvUI/Core/Modules/Tooltip/Tooltip.lua b/ElvUI/Core/Modules/Tooltip/Tooltip.lua
index 6468b6f9cd..4a90c75f1e 100644
--- a/ElvUI/Core/Modules/Tooltip/Tooltip.lua
+++ b/ElvUI/Core/Modules/Tooltip/Tooltip.lua
@@ -571,11 +571,11 @@ function TT:GameTooltip_OnTooltipSetUnit(data)
TT:AddTargetInfo(self, unit)
end
- if E.Retail then
- if TT.db.role then
- TT:AddRoleInfo(self, unit)
- end
+ if TT.db.role and E.allowRoles then
+ TT:AddRoleInfo(self, unit)
+ end
+ if E.Retail then
if not InCombatLockdown() then
if not isShiftKeyDown and (isPlayerUnit and unit ~= 'player') and TT.db.showMount and E.Retail then
TT:AddMountInfo(self, unit)
diff --git a/ElvUI/Core/Modules/UnitFrames/Elements/RoleIcons.lua b/ElvUI/Core/Modules/UnitFrames/Elements/RoleIcons.lua
index a4c5daa8a2..1a3e16d616 100644
--- a/ElvUI/Core/Modules/UnitFrames/Elements/RoleIcons.lua
+++ b/ElvUI/Core/Modules/UnitFrames/Elements/RoleIcons.lua
@@ -27,7 +27,7 @@ function UF:GetRoleIcon(frame)
local rnd = random(1, 3)
return (rnd == 1 and 'TANK') or (rnd == 2 and 'HEALER') or 'DAMAGER'
else
- return (E.Retail or E.Cata) and UnitGroupRolesAssigned(frame.unit)
+ return E.allowRoles and UnitGroupRolesAssigned(frame.unit)
end
end
diff --git a/ElvUI/ElvUI_Mainline.toc b/ElvUI/ElvUI_Mainline.toc
index 61b44ca06a..fd850f83df 100644
--- a/ElvUI/ElvUI_Mainline.toc
+++ b/ElvUI/ElvUI_Mainline.toc
@@ -6,7 +6,7 @@
## SavedVariablesPerCharacter: ElvCharacterDB
## OptionalDeps: SharedMedia, Tukui, Masque
## RequiredDeps: ElvUI_Libraries
-## Interface: 110005
+## Interface: 110007
## X-Tukui-ProjectID: -2
## X-Tukui-ProjectFolders: ElvUI, ElvUI_Libraries, ElvUI_Options
## AddonCompartmentFunc: ElvUI_AddonCompartmentFunc
diff --git a/ElvUI/LICENSE.txt b/ElvUI/LICENSE.txt
index 56c6153c31..93e22c55f5 100644
--- a/ElvUI/LICENSE.txt
+++ b/ElvUI/LICENSE.txt
@@ -1,5 +1,5 @@
Custom License for: ElvUI
- Copyright ©2009-2024 The contents of this addon, excluding third-party resources, are
+ Copyright ©2009-2025 The contents of this addon, excluding third-party resources, are
copyrighted to their authors with all rights reserved.
This addon is free to use and the authors hereby grant you the following rights:
diff --git a/ElvUI/Mainline/Modules/DataTexts/DungeonScore.lua b/ElvUI/Mainline/Modules/DataTexts/DungeonScore.lua
new file mode 100644
index 0000000000..277ea3c49c
--- /dev/null
+++ b/ElvUI/Mainline/Modules/DataTexts/DungeonScore.lua
@@ -0,0 +1,51 @@
+local E, L, V, P, G = unpack(ElvUI)
+local DT = E:GetModule('DataTexts')
+
+local ipairs = ipairs
+local format = format
+
+local UNKNOWN = UNKNOWN
+local HIGHLIGHT_FONT_COLOR = HIGHLIGHT_FONT_COLOR
+local DUNGEON_SCORE_LINK_RATING = DUNGEON_SCORE_LINK_RATING:gsub('%%s', '')
+
+local GetMapUIInfo = C_ChallengeMode.GetMapUIInfo
+local GetOverallDungeonScore = C_ChallengeMode.GetOverallDungeonScore
+local GetDungeonScoreRarityColor = C_ChallengeMode.GetDungeonScoreRarityColor
+local GetSpecificDungeonOverallScoreRarityColor = C_ChallengeMode.GetSpecificDungeonOverallScoreRarityColor
+local GetPlayerMythicPlusRatingSummary = C_PlayerInfo.GetPlayerMythicPlusRatingSummary
+
+local function OnEnter()
+ DT.tooltip:ClearLines()
+
+ local score = GetOverallDungeonScore()
+ local color = GetDungeonScoreRarityColor(score) or HIGHLIGHT_FONT_COLOR
+
+ local classColor = E:ClassColor(E.myclass)
+ DT.tooltip:AddLine(format('|c%s%s|r', classColor.colorStr, E.myname), 1, 1, 1, true)
+ DT.tooltip:AddLine(E.myLocalizedClass, 1, 1, 1, true)
+ DT.tooltip:AddLine(format('%s|c%s%s|r', DUNGEON_SCORE_LINK_RATING, E:RGBToHex(color.r, color.g, color.b, 'ff'), score), nil, nil, nil, true)
+
+ local summary = GetPlayerMythicPlusRatingSummary('player')
+ if summary and summary.runs then
+ for i, v in ipairs(summary.runs) do
+ if i == 1 then
+ DT.tooltip:AddLine(' ')
+ end
+
+ local mapName = GetMapUIInfo(v.challengeModeID) or UNKNOWN
+ local scoreColor = GetSpecificDungeonOverallScoreRarityColor(v.mapScore) or HIGHLIGHT_FONT_COLOR
+ DT.tooltip:AddDoubleLine(mapName, format('%d (%s%d)', v.mapScore, v.finishedSuccess and '+' or '-', v.bestRunLevel), 1, 1, 1, scoreColor.r, scoreColor.g, scoreColor.b)
+ end
+ end
+
+ DT.tooltip:Show()
+end
+
+local function OnEvent(self)
+ local score = GetOverallDungeonScore()
+ local color = GetDungeonScoreRarityColor(score) or HIGHLIGHT_FONT_COLOR
+
+ self.text:SetFormattedText('|c%s%s|r', E:RGBToHex(color.r, color.g, color.b, 'ff'), score)
+end
+
+DT:RegisterDatatext('DungeonScore', nil, {'CHALLENGE_MODE_COMPLETED'}, OnEvent, nil, nil, OnEnter, nil, _G.DUNGEON_SCORE)
diff --git a/ElvUI/Mainline/Modules/DataTexts/Load_DataTexts.xml b/ElvUI/Mainline/Modules/DataTexts/Load_DataTexts.xml
index ce41e0184e..076f73b330 100644
--- a/ElvUI/Mainline/Modules/DataTexts/Load_DataTexts.xml
+++ b/ElvUI/Mainline/Modules/DataTexts/Load_DataTexts.xml
@@ -7,6 +7,7 @@
+
diff --git a/ElvUI/Mainline/Modules/Skins/Gossip.lua b/ElvUI/Mainline/Modules/Skins/Gossip.lua
index d9fbce1031..2c41dd2705 100644
--- a/ElvUI/Mainline/Modules/Skins/Gossip.lua
+++ b/ElvUI/Mainline/Modules/Skins/Gossip.lua
@@ -115,7 +115,6 @@ function S:GossipFrame()
if GossipFrame.Background then
GossipFrame.Background:Hide()
end
-
else
local pageBG = _G.ItemTextFramePageBg:GetTexture()
_G.ItemTextFrame:StripTextures()
diff --git a/ElvUI_Libraries/ElvUI_Libraries_Mainline.toc b/ElvUI_Libraries/ElvUI_Libraries_Mainline.toc
index 86d34047f7..3113fdf1be 100644
--- a/ElvUI_Libraries/ElvUI_Libraries_Mainline.toc
+++ b/ElvUI_Libraries/ElvUI_Libraries_Mainline.toc
@@ -2,7 +2,7 @@
## Notes: Libraries that power ElvUI
## Author: Elv, Simpy
## Version: @project-version@
-## Interface: 110005
+## Interface: 110007
## X-oUF: ElvUF
## IconTexture: Interface\AddOns\ElvUI\Core\Media\Textures\LogoAddon
diff --git a/ElvUI_Options/Core/Chat.lua b/ElvUI_Options/Core/Chat.lua
index 2992011101..edc47e9c74 100644
--- a/ElvUI_Options/Core/Chat.lua
+++ b/ElvUI_Options/Core/Chat.lua
@@ -28,7 +28,7 @@ General.args.hideChannels = ACH:Toggle(L["Hide Channels"], L["Hide the channel n
General.args.hyperlinkHover = ACH:Toggle(L["Hyperlink Hover"], L["Display the hyperlink tooltip while hovering over a hyperlink."], 4, nil, nil, nil, nil, function(info, value) E.db.chat[info[#info]] = value CH:ToggleHyperlink(value) end)
General.args.sticky = ACH:Toggle(L["Sticky Chat"], L["When opening the Chat Editbox to type a message having this option set means it will retain the last channel you spoke in. If this option is turned off opening the Chat Editbox should always default to the SAY channel."], 5)
General.args.emotionIcons = ACH:Toggle(L["Emotion Icons"], L["Display emotion icons in chat."], 6)
-General.args.lfgIcons = ACH:Toggle(L["Role Icon"], L["Display LFG Icons in group chat."], 7, nil, nil, nil, nil, function(_, value) E.db.chat.lfgIcons = value CH:CheckLFGRoles() end, nil, not E.Retail)
+General.args.lfgIcons = ACH:Toggle(L["Role Icon"], L["Display LFG Icons in group chat."], 7, nil, nil, nil, nil, function(_, value) E.db.chat.lfgIcons = value CH:CheckLFGRoles() end, nil, not E.allowRoles)
General.args.useAltKey = ACH:Toggle(L["Use Alt Key"], L["Require holding the Alt key down to move cursor or cycle through messages in the editbox."], 8, nil, nil, nil, nil, function(_, value) E.db.chat.useAltKey = value CH:UpdateSettings() end)
General.args.autoClosePetBattleLog = ACH:Toggle(L["Auto-Close Pet Battle Log"], nil, 9, nil, nil, nil, nil, nil, nil, not E.Retail)
General.args.useBTagName = ACH:Toggle(L["Use Real ID BattleTag"], L["Use BattleTag instead of Real ID names in chat. Chat History will always use BattleTag."], 10)
diff --git a/ElvUI_Options/ElvUI_Options_Mainline.toc b/ElvUI_Options/ElvUI_Options_Mainline.toc
index 5f91f27189..d7fe47445e 100644
--- a/ElvUI_Options/ElvUI_Options_Mainline.toc
+++ b/ElvUI_Options/ElvUI_Options_Mainline.toc
@@ -2,7 +2,7 @@
## Notes: Powers the configuration window.|n|cffff3333Does not store any profile data.|r
## Author: Elv, Simpy
## Version: @project-version@
-## Interface: 110005
+## Interface: 110007
## RequiredDeps: ElvUI
## LoadOnDemand: 1
## IconTexture: Interface\AddOns\ElvUI\Core\Media\Textures\LogoAddon
diff --git a/LICENSE.md b/LICENSE.md
index e7b49b16ba..be6a1a2273 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -3,7 +3,7 @@
**Source**: [https://github.com/tukui-org/ElvUI/tree/main/ElvUI](https://github.com/tukui-org/ElvUI/tree/main/ElvUI)
```
-Copyright © 2009-2024 The contents of this addon, excluding third-party resources, are
+Copyright © 2009-2025 The contents of this addon, excluding third-party resources, are
copyrighted to their authors with all rights reserved.
Reference: github.com/tukui-org/ElvUI/blob/main/ElvUI/LICENSE.txt
```
@@ -13,7 +13,7 @@ Reference: github.com/tukui-org/ElvUI/blob/main/ElvUI/LICENSE.txt
**Source**: [https://github.com/tukui-org/ElvUI/tree/main/ElvUI_Options](https://github.com/tukui-org/ElvUI/tree/main/ElvUI_Options)
```
-Copyright © 2009-2024 The contents of this addon, excluding third-party resources, are
+Copyright © 2009-2025 The contents of this addon, excluding third-party resources, are
copyrighted to their authors with all rights reserved.
Reference: github.com/tukui-org/ElvUI/blob/main/ElvUI_Options/LICENSE.txt
```
diff --git a/ThirdPartyNotices.md b/ThirdPartyNotices.md
index 5440993d50..fc67a1ca7c 100644
--- a/ThirdPartyNotices.md
+++ b/ThirdPartyNotices.md
@@ -254,7 +254,7 @@ freely, subject to the following restrictions:
```
MIT License
-Copyright (c) 2024 Tukui.org
+Copyright (c) 2025 Tukui.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal