nightly commit

This commit is contained in:
Torsten Brendgen
2026-04-25 22:49:22 +02:00
parent feaa62309c
commit cf78405148
10 changed files with 368 additions and 226 deletions

View File

@@ -5,7 +5,7 @@ if not HMGT then return end
local L = HMGT.L or LibStub("AceLocale-3.0"):GetLocale(ADDON_NAME)
HMGT.devToolsBuffer = HMGT.devToolsBuffer or {}
HMGT.devToolsBufferMax = HMGT.devToolsBufferMax or 300
HMGT.devToolsBufferMax = HMGT.devToolsBufferMax or 500
local DEVTOOLS_SCOPE_ALL = "ALL"
local DEVTOOLS_SCOPE_LABELS = {
@@ -20,7 +20,8 @@ local DEVTOOLS_SCOPE_LABELS = {
local DEVTOOLS_LEVELS = {
error = 1,
trace = 2,
info = 2,
verbose = 3,
}
local function TrimText(value)
@@ -76,8 +77,10 @@ function HMGT:GetDevToolsSettings()
profile.devTools = type(profile.devTools) == "table" and profile.devTools or {}
local settings = profile.devTools
settings.enabled = settings.enabled == true
if settings.level ~= "error" and settings.level ~= "trace" then
settings.level = "error"
if settings.level == "trace" then
settings.level = "verbose"
elseif settings.level ~= "error" and settings.level ~= "info" and settings.level ~= "verbose" then
settings.level = "info"
end
if type(settings.scope) ~= "string" or settings.scope == "" then
settings.scope = DEVTOOLS_SCOPE_ALL
@@ -94,24 +97,25 @@ function HMGT:IsDevToolsEnabled()
end
function HMGT:GetDevToolsLevelOptions()
return {
error = L["OPT_DEVTOOLS_LEVEL_ERROR"] or "Errors",
trace = L["OPT_DEVTOOLS_LEVEL_TRACE"] or "Trace",
}
return self:GetDebugLevelOptions()
end
function HMGT:GetConfiguredDevToolsLevel()
return self:GetDevToolsSettings().level or "error"
return self:GetConfiguredDebugLevel()
end
function HMGT:ShouldIncludeDevToolsLevel(level)
local configured = self:GetConfiguredDevToolsLevel()
return (DEVTOOLS_LEVELS[tostring(level or "error")] or DEVTOOLS_LEVELS.error)
<= (DEVTOOLS_LEVELS[configured] or DEVTOOLS_LEVELS.error)
local normalizedLevel = tostring(level or "info")
if normalizedLevel == "trace" then
normalizedLevel = "verbose"
end
return (DEVTOOLS_LEVELS[normalizedLevel] or DEVTOOLS_LEVELS.info)
<= (DEVTOOLS_LEVELS[configured] or DEVTOOLS_LEVELS.info)
end
function HMGT:GetDevToolsScopeOptions()
local values = {
local values = self:GetDebugScopeOptions() or {
[DEVTOOLS_SCOPE_ALL] = L["OPT_DEVTOOLS_SCOPE_ALL"] or "All scopes",
}
for scope, label in pairs(DEVTOOLS_SCOPE_LABELS) do
@@ -128,8 +132,11 @@ end
function HMGT:FormatDevToolsEntry(entry)
local stamp = tostring(entry and entry.stamp or date("%H:%M:%S"))
local level = string.upper(tostring(entry and entry.level or "error"))
local level = string.upper(tostring(entry and entry.level or "info"))
local scope = tostring(entry and entry.scope or "System")
if entry and entry.kind == "debug" then
return string.format("%s [%s][%s] %s", stamp, level, scope, tostring(entry.message or ""))
end
local eventName = tostring(entry and entry.event or "")
local payload = TrimText(entry and entry.payload or "")
if payload ~= "" then
@@ -164,8 +171,10 @@ function HMGT:RecordDevEvent(level, scope, eventName, payload)
end
local normalizedLevel = tostring(level or "error")
if normalizedLevel ~= "error" and normalizedLevel ~= "trace" then
normalizedLevel = "trace"
if normalizedLevel == "trace" then
normalizedLevel = "verbose"
elseif normalizedLevel ~= "error" and normalizedLevel ~= "info" and normalizedLevel ~= "verbose" then
normalizedLevel = "verbose"
end
if not self:ShouldIncludeDevToolsLevel(normalizedLevel) then
return
@@ -182,6 +191,7 @@ function HMGT:RecordDevEvent(level, scope, eventName, payload)
scope = normalizedScope,
event = TrimText(eventName or "event"),
payload = EncodePayloadValue(payload, 0),
kind = "event",
}
table.insert(self.devToolsBuffer, entry)
@@ -194,6 +204,40 @@ function HMGT:RecordDevEvent(level, scope, eventName, payload)
end
end
function HMGT:RecordDebugEntry(level, scope, message)
if not self:IsDevToolsEnabled() then
return
end
local normalizedLevel = tostring(level or "info")
if normalizedLevel == "trace" then
normalizedLevel = "verbose"
elseif normalizedLevel ~= "error" and normalizedLevel ~= "info" and normalizedLevel ~= "verbose" then
normalizedLevel = "info"
end
local normalizedScope = TrimText(scope or "General")
if normalizedScope == "" then
normalizedScope = "General"
end
self.devToolsBuffer = self.devToolsBuffer or {}
self.devToolsBuffer[#self.devToolsBuffer + 1] = {
stamp = date("%H:%M:%S"),
level = normalizedLevel,
scope = normalizedScope,
message = TrimText(message or ""),
kind = "debug",
}
while #self.devToolsBuffer > (tonumber(self.devToolsBufferMax) or 500) do
table.remove(self.devToolsBuffer, 1)
end
if self.devToolsWindow and self.devToolsWindow:IsShown() and self.RefreshDevToolsWindow then
self:RefreshDevToolsWindow()
end
end
function HMGT:DevError(scope, eventName, payload)
self:RecordDevEvent("error", scope, eventName, payload)
end

View File

@@ -7,7 +7,7 @@ local AceGUI = LibStub("AceGUI-3.0", true)
if not AceGUI then return end
local function GetOrderedLevels()
return { "error", "trace" }
return { "error", "info", "verbose" }
end
local function GetOrderedScopes()
@@ -78,8 +78,8 @@ function HMGT:EnsureDevToolsWindow()
local settings = self:GetDevToolsSettings()
local window = self:CreateAceWindow("devTools", {
title = L["DEVTOOLS_WINDOW_TITLE"] or "HMGT Developer Tools",
statusText = L["DEVTOOLS_WINDOW_HINT"] or "Structured developer events for the current session",
title = L["DEVTOOLS_WINDOW_TITLE"] or "HMGT Debug Console",
statusText = L["DEVTOOLS_WINDOW_HINT"] or "Debug and developer events for the current session",
statusTable = settings.window,
width = settings.window.width or 920,
height = settings.window.height or 420,
@@ -93,7 +93,7 @@ function HMGT:EnsureDevToolsWindow()
local content = window:GetContent()
local clearButton = AceGUI:Create("Button")
clearButton:SetText(L["OPT_DEVTOOLS_CLEAR"] or "Clear developer log")
clearButton:SetText(L["OPT_DEVTOOLS_CLEAR"] or L["OPT_DEBUG_CLEAR"] or "Clear log")
clearButton:SetWidth(140)
clearButton:SetCallback("OnClick", function()
HMGT:ClearDevToolsLog()
@@ -176,11 +176,11 @@ function HMGT:RefreshDevToolsWindow()
end
local levelOptions = self:GetDevToolsLevelOptions()
SetFilterButtonText(window.levelFilter, L["OPT_DEVTOOLS_LEVEL"] or "Capture level", levelOptions[self:GetConfiguredDevToolsLevel()])
SetFilterButtonText(window.levelFilter, L["OPT_DEBUG_LEVEL"] or L["OPT_DEVTOOLS_LEVEL"] or "Level", levelOptions[self:GetConfiguredDevToolsLevel()])
local scopeValues = self:GetDevToolsScopeOptions()
local currentScope = self:GetDevToolsSettings().scope or "ALL"
SetFilterButtonText(window.scopeFilter, L["OPT_DEVTOOLS_SCOPE"] or "Scope", scopeValues[currentScope] or currentScope)
SetFilterButtonText(window.scopeFilter, L["OPT_DEBUG_SCOPE"] or L["OPT_DEVTOOLS_SCOPE"] or "Module", scopeValues[currentScope] or currentScope)
local text = table.concat(self:GetFilteredDevToolsLines(), "\n")
window.logWidget:SetText(text)