Releases: Noobygames/wow-statistics
Releases · Noobygames/wow-statistics
Release list
v2.8.0
Level Time
v2.8.0 (2026-10-02)
Full Changelog Previous Releases
- Merge pull request #13 from Noobygames/feature/v2.8-dungeons
v2.8: dungeon runs, instance limit, XP-based forecast (+ v2.7 cleanup) - Note roadmap items released in v2.8.0
- Document in-game checks in ManualToCheck.md
Lists what the WoW stub cannot cover for roadmap 90-94: XP table values
per client, instance copy and reset detection, the instance limit and
the new rows and options. Excluded from the release package. - Forecast remaining levels from the real XP per level (roadmap 94)
The max level and goal forecasts now divide the XP the remaining levels
actually need by the XP/h of the last five levels plus the current one.
XP per level comes from warcraft.wiki.gg: 1.12 values for Classic Era,
Anniversary and WoW Forever, post-2.3 values for Burning Crusade. The
table is only used when it matches UnitXPMax; Retail and clients with
other values keep the average level time. - Detect instance copies from enemy GUIDs (roadmap 93)
A new InstanceCopy module guesses on entering whether it is a new copy
and confirms it from the zoneUID in the GUIDs of two enemies (target,
mouseover, nameplates), like Nova Instance Tracker. Resets come from
INSTANCE_RESET_SUCCESS and INSTANCE_RESET_FAILED.
A run is now one instance copy: leaving pauses it, re-entering the same
copy continues it, a reset or another copy ends it. Wrong guesses are
split or merged back, in the runs and in the instance limit. A server
rejection for too many instances shows the addon's count. - Merge branch 'refactor/v2.7-cleanup' into feature/v2.8-dungeons
- Isolate errors of repeating tasks in ns.Every
Each task now runs through xpcall with the client's error handler, so an
error in one module's check no longer stops every task registered after
it, as the separate OnUpdate frames did before the shared ticker. - Track the hourly instance limit across characters (roadmap 92)
Classic Era, Anniversary and WoW Forever allow 5 new instances per hour
for all characters of a realm (Retail 10). New window rows show the
count with the time until the next slot frees up and the instances
entered today; an optional warning fires when entering the second to
last and last allowed instance. New instances are estimated because
5-man dungeons have no instance ID in the API. - Keep dungeon runs going until the player leaves alive (roadmap 91)
A ghost run to the graveyard outside no longer ends the instance run;
it ends when the player is alive outside. The history gets an XP/h
column for runs and the window an optional Instance row with time and
XP of the running run. - Rate XP/h the same way everywhere (roadmap 90)
Character comparison, XP/h charts and the level-up summary now drop AFK
time like the window and the history tables when xpRateWithoutAfk is on,
via the shared Experience.RecordRate. - Show the addon as Level Time to players, keep LevelTimer as technical name
- Split the settings framework out of Options into Lib/OptionsBuilder (roadmap 83)
- Split the generic table out of HistoryTables into Lib/TableView (roadmap 82)
- Move addon files into folders by domain (roadmap 84)
- Share chat line plus alert in Alerts.Notify (roadmap 81)
- Share item quality and sell price lookups in Items.lua (roadmap 80)
- Share bag iteration and free slots in Bags.lua (roadmap 79)
- Share one repeating-task frame via ns.Every (roadmap 78)
- Add v2.7 cleanup roadmap from the architecture review
v2.6.0
LevelTimer
v2.6.0 (2026-10-02)
Full Changelog Previous Releases
- Merge pull request #12 from Noobygames/feature/v2.6-leveling
v2.6: comfort features, time breakdown, warnings, declines - Note roadmap items released in v2.6.0
- Respect the shared-quest switch and skip gray quests in the quest window
- Let a repair without a charge expire instead of tagging later spending
- Keep the recent XP/h correct after starting a new session
- Remove the /say level-up announcement and turn old /say settings off
- Document declines and instance-aware alerts
- Decline duel requests automatically (roadmap 76)
- Decline guild invites automatically (roadmap 75)
- Decline group invites automatically (roadmap 74)
- Decline trade requests automatically (roadmap 73)
- Mention instance exceptions in the alert tooltips
- No epic loot alerts in raids (roadmap 72)
- No elite kill alerts in dungeons and raids (roadmap 71)
- Stream mode no longer changes window size or transparency (roadmap 70)
- Post the level-up announcement to /say directly and drop the click button
- Document v2.6 comfort features, warnings and new statistics
- Warn hunters about low ammo outside Retail (roadmap 69)
- Remind to visit the class trainer on even levels outside Retail (roadmap 68)
- Warn about low durability (roadmap 67)
- Warn when bags are almost full (roadmap 66)
- Track spending by kind and junk income (roadmap 65)
- Show rested XP left (roadmap 64)
- Estimate kills and quests left to level (roadmap 63)
- Show XP/h over the last 15 minutes (roadmap 62)
- Optionally leave AFK time out of XP/h and forecasts (roadmap 61)
- Break play time down into combat, flight, AFK and the rest (roadmap 60)
- Skip gossip with a single option (roadmap 59)
- Turn in finished quests automatically, optionally picking the most valuable reward (roadmap 58)
- Accept quests automatically, optionally shared quests too (roadmap 57)
- Sell gray items at merchants automatically (roadmap 56)
- Repair automatically at merchants, optionally from the guild bank (roadmap 55)
- Roadmap: trainer and ammo warnings also for WoW Forever
- Add v2.6 roadmap: comfort features, time breakdown, warnings
v2.5.2
LevelTimer
v2.5.2 (2026-10-02)
Full Changelog Previous Releases
- Note roadmap items released in v2.5.2
- Merge pull request #11 from Noobygames/feature/speedrun-tab
Speedrun tab, tooltips, reminder interval, /played label fix - Explain every setting with a mouse-over tooltip (roadmap 54)
Toggles, sliders, choosers and buttons in the settings show a tooltip
with the setting's name and an explanation from L[_TIP] in all
four languages. Clicking a toggle's label now also toggles it. - Add a Speedrun settings tab (roadmap 53)
Speedrun options move to their own tab: split list (total and /played
rows, own size, number of levels, comparison) and speedrun records (on
or off, per bracket, records date with age in days, class or overall).
The split list footer is built in SplitList.BuildFooterLines. - Fix /played label in the split list
The label was written through Git Bash, which turned the argument
"/played" into "C:/Program Files/Git/played". The locale test now
rejects values that start with a drive path. - Make the buff reminder interval configurable (roadmap 52)
Food and camp reminders repeat while the buff is missing; the interval
is a new slider on the Notifications tab (1-30 minutes, default 5). - ayo
v2.5.1
LevelTimer
v2.5.1 (2026-10-02)
Full Changelog Previous Releases
- Merge pull request #10 from Noobygames/fix/curseforge-file-label
Name CurseForge uploads LevelTimer-vX.Y.Z.zip - Name CurseForge uploads LevelTimer-vX.Y.Z.zip
Without -n the BigWigs packager labels the CurseForge file with the bare
version ("v2.5.0"). Set file name and label explicitly so new uploads
match the earlier ones (LevelTimer-v2.0.0.zip).
v2.5.0
LevelTimer
v2.5.0 (2026-10-02)
Full Changelog Previous Releases
- Note roadmap items released in v2.5.0
- Merge pull request #9 from Noobygames/feature/roadmap-v2.5
Roadmap v2.5: streaming, speedrun, profiles, reminders - Enable CurseForge upload (project 1721235)
Releases tagged v* now also upload to CurseForge through the BigWigs
packager; the CF_API_KEY secret is already set. - Compare against speedrun.com leveling records (roadmap 51)
tools/records (make records) fetches the fastest SSF softcore runs of
WoW Classic: Leveling from the speedrun.com API for 1-10, 1-20 and
1-60, overall and per class, and writes SpeedrunRecords.lua. The addon
compares your /played time when reaching the bracket level (or the
running /played before that) with the record of your class or overall,
in the split list and in a new History > Speedrun > Speedrun records
view. - Add settings profiles (roadmap 50)
Settings can be saved as named profiles; each character remembers its
profile and loads it at login. Switching or logging out writes the
active settings back into the active profile. Profiles can be exported
and imported as text to carry them to other clients or accounts. New
Profiles tab in the settings and /lt profile [name | save | delete |
export | import]. - Share and back up runs as text (roadmap 49)
Shift-click a run to get it as text, "Back up all" exports every run,
"Import" (or /lt runs import) pastes runs from other players or other
clients. Imported runs appear in the runs view and can be chosen as
comparison. Serializer.lua encodes tables as plain text without pipes
or line breaks and parses them without loadstring; imports are checked
before anything is stored. - Add personal records view (roadmap 48)
The Speedrun group gets a records table: fastest time per level over
all own characters, who holds it, your own time on that level and the
difference, colored like the splits. - Add runs view for speedrun comparisons (roadmap 47)
New history group "Speedrun" with a runs table: every own character
(and later imported runs) with class, reached level, recorded levels
and time up to the current level. Click chooses the run as fixed split
comparison, right click marks it as favorite (favorites on top); the
filter box finds runs by name or class. Table views support row clicks
and a toolbar hint. - Freeze the chosen comparison run (roadmap 46)
Choosing a run copies its level times into db.splitReference, so the
comparison stays fixed even if that character keeps leveling. Runs.lua
collects runs (own characters, later imported ones) for the speedrun
features; the comparison mode is now called "run". - Show total /played in the split list (roadmap 45)
- Plan speedrun parity and settings profiles (roadmap 45-50)
- Extend debug mode with logging and test commands (roadmap 44)
/lt debug now logs decisions across the addon (counters, journal,
session start/resume/archive, /played, death cause source, level ups,
announcements, reminders, split references, alerts) via ns.Debug.
/lt debug state | levelup | alert | remind | death | splits
trigger features by hand or print internal state without touching saved
statistics. Alerts are now described in Alerts.KINDS so samples and
real alerts share one definition. - Announce level ups in /say with a click (roadmap 43)
New announcement choice "Say (click)". SAY needs a hardware event in
the open world, so a level up shows a button for 60 seconds and the
click sends the summary. Nothing is sent during chat lockdown. - Split settings into tabs and hide Forever-only options (roadmap 41, 42)
The settings window now has tabs: General (window, compact and
horizontal layout, language, minimap), Statistics, Notifications (level
up chat and announcement, buff reminders) and Stream (stream mode,
background, hidden names, red deaths, alerts, splits). New session,
summary and history stay at the bottom of every tab.
Client.lua detects WoW Forever by its interface version (16xxx). The
camp buff reminder and its toggle only exist there; toggles can declare
available() to be skipped on other clients. - Remind about missing camp benefits (roadmap 40)
Optional reminder when the WoW Forever camp buff (spell 1229741, found
in game) is missing while leveling. BuffReminder now handles a list of
reminders, each with its own setting and pause; due reminders share one
alert. Clients that do not know the camp spell get no reminder. - Remind about a missing food buff (roadmap 39)
Optional reminder (alert plus chat line, at most every 5 minutes) when
"Well Fed" is missing while leveling outside combat and rest areas; in
WoW Forever it gives 5% more kill XP. The buff is matched by the
localized name of spell 19705 via C_Spell.GetSpellName and
C_UnitAuras.GetAuraDataByIndex, both listed for all clients. - Plan food and camp buff reminders (roadmap 39, 40)
- Add split list panel (roadmap 36)
A separate movable panel lists the running level and the last finished
levels with their time and split delta, plus the total, like LiveSplit.
Toggle with /lt splits or the settings, 3-15 levels. It follows the main
window's scale, background and lock; colored deltas and the window
background are now shared helpers (Format.SplitDelta,
TimerWindow.ApplyBackground). - Choose the split comparison run (roadmap 35)
Setting splitComparison selects what the splits compare against: the
best time per level, the personal best (fastest other run up to the
current level, fixed within a level) or a chosen character set with
/lt compare Name. Splits also expose the delta of a finished level. - Add one-command stream mode (roadmap 37)
/lt stream and a settings toggle switch on a stream preset (transparent
window at 150 %, alerts, hidden names) and keep the previous values in
db.streamBackup, so switching off restores them, also after /reload. - Make red death highlight optional (roadmap 38)
Setting highlightDeaths (on by default) controls the red death count,
so every stream-oriented display option can be switched off. - Plan streamer parity items 35-38
- Announce level ups to party or guild (roadmap 34)
Setting levelUpAnnounce (off, party, guild) posts the level summary as
plain text to the guild, the party or the instance chat. Uses
C_ChatInfo.SendChatMessage with the old global as fallback and sends
nothing while Retail's chat messaging lockdown is active, so no blocked
action is triggered. The own chat line stays a separate setting. - Compare level times against best splits (roadmap 26)
New rows "Level split" and "Total split" compare the running level
time with the fastest time any other character needed for that level,
and sum the differences over all levels with a best time, green when
ahead and red when behind, like LiveSplit's sum of best. - Add session summary card (roadmap 30)
/lt recap and a settings button open a small window with the running
session's play time, levels, XP and XP/h, kills, deaths, near deaths,
quests, income, best loot and the most dangerous enemy, ready for a
stream outro or a screenshot. Respects the streamer privacy setting. - Add big on-screen alerts for stream moments (roadmap 29)
Optional alerts for level up, rare and elite kills, epic loot and near
deaths, shown large at the top of the screen and faded out. They come
from ns.OnLevelStarted and the new Journal.OnAdd listener, so no event
is parsed twice. All alert types are off by default. - Add session goal level with progress and forecast (roadmap 28)
/lt goal 30 stores a target level per character; the new row "Goal"
shows progress in percent and the forecast time to reach it, and a chat
message announces when it is reached. Slash commands now receive the
rest of the input as argument; Forecast.SecondsToLevel serves any level. - Hide realm and other characters for streamers (roadmap 33)
Setting streamerPrivacy shows only the logged-in character's name and
lists other characters as "Character N" in the history header, the
compare table, its CSV export and the delete dialog. All names now go
through History.DisplayName. - Add chroma key background for streams (roadmap 27)
Setting windowBackground (default, green, magenta) gives the timer
window a solid background without border, so OBS can key it out.
Options gain a generic addChooser, now also used by the language row. - Show time without death and highlight deaths (roadmap 31)
New stat row "No death for" shows the played time since the last death
across levels and sessions (stored as /played total at death). Death
counts turn red once there is one, so they stand out on stream. - Start a new session on demand (roadmap 32)
/lt newsession and a settings button archive the running session right
away and start a new one, e.g. at the start of a stream, instead of
waiting for the next real login. - Plan roadmap v2.5 with streaming features
- Add vscode launch config
v2.0.0
LevelTimer
v2.0.0 (2026-10-02)
Full Changelog Previous Releases
- Note roadmap items released in v2.0.0
- Merge pull request #8 from Noobygames/feature/roadmap-next
Roadmap: charts, journals, death recap, info bar and more - Fit settings and history layout to localized text
Settings size their toggle columns and width from the label widths, so
long French/Spanish labels and the language row no longer overlap or
overflow. History sub-tabs wrap into extra rows and push the content
down. Column charts cap the column width, so a single value no longer
fills the whole chart. - Add horizontal bar layout for the timer window (roadmap 25)
Setting horizontalLayout (/lt bar) chains tabs, play time and stat rows
on one line with the XP bar below, like an info bar. Works together with
compact mode and all existing window settings. Also ticks off roadmap 21
and 24. - Read death cause from the death recap (roadmap 24)
Retail-API clients (Retail, WoW Forever) hide the combat log from addons.
When the combat log gives no cause, take the killing blow (first event)
from C_DeathRecap.GetRecapEvents(), retrying once if the recap is not
ready yet. The test stub queues C_Timer.After callbacks for wow.runTimers(). - Upload releases to Wago and WoWInterface (roadmap 21)
The packager uploads to each platform once its .toc ID (X-Wago-ID,
X-WoWI-ID) and its secret (WAGO_API_TOKEN, WOWI_API_TOKEN) exist;
without them the upload is skipped. - Add French and Spanish (roadmap 23)
- frFR and esES translations; esMX uses Spanish; default language
follows the client - Language chooser offers all four languages; .toc notes translated
- locales_test checks that every language has every key with the same
%s/%d placeholders as English
- frFR and esES translations; esMX uses Spanish; default language
- Add LibDataBroker data text (roadmap 19)
- Data object for Titan Panel, ElvUI, Bazooka and similar displays:
play time and XP/h, tooltip with all enabled values, same clicks
as the minimap button - Uses LibDataBroker only when another addon provides it; no bundled
libraries
- Data object for Titan Panel, ElvUI, Bazooka and similar displays:
- Add compact window mode (roadmap 18)
- Compact mode shows only play time, XP bar and XP/h, without tabs
- Toggle in the window settings or with /lt compact
- Export history tables as CSV (roadmap 16)
- "Export" button on every table opens a window with the visible rows
(filter and sort applied) as CSV, selected for Ctrl+C - Separator per language (; for German, , for English), fields quoted
when needed, color codes and link markup removed - Tests find table views via a shared stub helper
- "Export" button on every table opens a window with the visible rows
- Sort and filter history tables (roadmap 15)
- Click a column header to sort, again to reverse; formatted columns
(durations, gold, dates) sort by their raw value - Filter box above every table searches all columns, case-insensitive,
ignoring color codes and link markup - Total row covers the filtered rows only
- Click a column header to sort, again to reverse; formatted columns
- Add XP bar with rested bonus to the window (roadmap 14)
- Bar under the play time: progress in the level, rested bonus as a
lighter segment; hidden at max level - Toggle "XP bar" in the window settings
- Bar under the play time: progress in the level, rested bonus as a
- Track near deaths (roadmap 12)
- NearDeath.lua: health below 10 % that recovers above 30 % without
dying counts as a near death (hysteresis avoids double counting) - Journal entry with lowest health, cause (last hit), level and zone
- Optional "Near deaths" row and journal sub-tab
- NearDeath.lua: health below 10 % that recovers above 30 % without
- Count elite and rare kills (roadmap 11)
- Classification.lua remembers enemy classification by name from
target, mouseover and nameplates; works without the combat log - New counters and optional rows "Kills (elite)" / "Kills (rare)"
- Kill journal stores the classification; the type column shows
elite, rare, rare elite or boss
- Classification.lua remembers enemy classification by name from
- Add loot journal (roadmap 10)
- Loot.lua logs rare and better items with time, quantity and a likely
source (last quest within 5 s or last kill within 60 s) - Quality from item info, falling back to the link color (old and new
link formats) - Chat format parsing moved to ChatPatterns.lua, shared with kills
- "Loot" sub-tab in the journal
- Loot.lua logs rare and better items with time, quantity and a likely
- Track dungeon, raid and scenario runs (roadmap 9)
- Instances.lua records each run with duration, XP, kills and deaths;
/reload inside continues the run, a long break closes it - "Instances" sub-tab in the journal with the running run on top and
a total row over all runs
- Instances.lua records each run with duration, XP, kills and deaths;
- Add quest journal (roadmap 7)
- Every quest turned in is logged with time, name, XP, gold, level
and zone (newest 2000) - Name from C_QuestLog where available, otherwise the title of the
open turn-in dialog - "Quests" sub-tab in the journal
- Every quest turned in is logged with time, name, XP, gold, level
- Keep daily totals for long-term charts (roadmap 6)
- Daily values also count kills, deaths and XP, so charts survive
the journal limit - Character schema 5 seeds daily kills and deaths from the journal
- "Kills/day" reads daily totals and covers 30 days; daily series
share one helper
- Daily values also count kills, deaths and XP, so charts survive
- Chart the XP timeline of the session (roadmap 5)
- Session tallies gained XP in 5-minute steps (xpTimeline, not kept
for archived sessions) - "XP timeline" chart shows the last 3 hours; breaks appear as gaps
- Death causes sub-tab shortened to "Causes" so all charts fit
- Session tallies gained XP in 5-minute steps (xpTimeline, not kept
- Chart play time per day and week (roadmap 4)
- Daily.lua keeps per-day values; play time is split at midnight
- Character schema 4 seeds past sessions into their start day
- Charts "Time/day" (14 days) and "Time/week" (8 weeks, from Monday)
- Shorter chart sub-tab labels so all charts fit one row
- Schema version is public so the migration test follows bumps
- Track statistics per zone (roadmap 3)
- Zones.lua: play time, XP, kills and deaths per zone, time booked on
zone change and logout - Stats.OnIncrement lets modules tally counters elsewhere
- "Zones" tab sorted by XP/h with a total row, plus an
"XP/h per zone" chart (stays under 5 minutes are skipped)
- Zones.lua: play time, XP, kills and deaths per zone, time booked on
- Compare all characters side by side (roadmap 2)
- New "Compare" tab: one row per character in class color with
level, levels gained, average time per level, XP/h, kills, deaths
and gold; fastest leveler first, characters without data last - Table views accept an optional rowColor
- New "Compare" tab: one row per character in class color with
- Group history views into tabs with sub-tabs
- Views sharing a group get one tab and appear as sub-tabs:
Levels (overview, timeline), Journal (kills, deaths), Charts - Each chart is its own view; history window is wider for the
upcoming views
- Views sharing a group get one tab and appear as sub-tabs:
- Add roadmap, level-up summary, forecast, timeline, data deletion and PR tests
- ROADMAP.md with planned features; done: 1, 8, 13, 17, 22
- Chat summary on level-up (toggle in settings)
- "Max level in" row: rest of current level plus average of recent levels
- Timeline tab: level reached, date, total /played and level duration
- Delete a character's statistics from the history window; the
logged-in character restarts tracking immediately - test.yml runs vet and tests on every PR and push to main;
workflows on checkout@v7 / setup-go@v7 with go.sum cache path
- Add history charts and lazy-loaded journal tables
- Charts tab: time and XP/h per level, kills per day, top enemies
and death causes (Analysis.lua data, Charts.lua texture charts) - Rank charts use the available height, show rank, share and a
background track; tooltips show truncated names in full - Tables render only visible rows and refill on scroll, so the
journal keeps 5000 kills and 1000 deaths - Own slim scrollbar and smaller close button; text columns left
aligned; journal times with seconds - HistoryWindow split into frame, table views and chart view
- Charts tab: time and XP/h per level, kills per day, top enemies
v1.1.0
LevelTimer
v1.1.0 (2026-10-01)
Full Changelog Previous Releases
- Merge pull request #7 from Noobygames/feature/options-resize
Custom icon, resizable window, table layout and kill/death journal - Resizable window, table layout and kill/death journal
Window and settings- Drag the bottom right corner (or use the size slider) to scale the
whole window; top-left corner stays fixed; right-click opens settings - Settings grouped into Window, Statistics and General, built from
declarative helpers; language as tabs; reset button and /lt reset - Settings get a schema version; fontSize migrates to scale
Table layout - Stats render as label/value rows; one value per row, each with its
own toggle (PvE and PvP kills, XP/h and time to level, kills/death) - Old toggles migrate to the split ones; grip only shows on hover
- /lt debug prints every XP message and how it was classified
Journal - Kills with time, name, PvE/PvP, level and zone (newest 300)
- Deaths with time, cause (last hit from the combat log: enemy and
spell or environment), level and zone (newest 100) - History window gets Kills and Deaths tabs, driven by a VIEWS list
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
- Drag the bottom right corner (or use the size slider) to scale the
- Use own icon for minimap button and addon list
- Media/Icon.tga (64x64, transparent) replaces the Blizzard pocket
watch icon on the minimap button and as ## IconTexture - tools/artwork renders logo and icon from one drawing (make artwork)
- Installer and make package include Media/ without a .toc entry
- Tests for asset install, icon path and TGA output
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
- Media/Icon.tga (64x64, transparent) replaces the Blizzard pocket
v1.0.0
LevelTimer
v1.0.0 (2026-10-01)
Full Changelog Previous Releases
- Merge pull request #5 from Noobygames/feature/release-packaging
Feature/release packaging - Add make package and automated releases
- Installer tool gets a -package mode; make package writes
dist/LevelTimer-.zip (toc files plus LICENSE) - .toc carries ## Version: @Project-Version@, replaced on install,
package and by the CurseForge packager (Addon.ReadFile) - GitHub Action on v* tags: run all tests, then BigWigs packager
builds the zip, creates a GitHub release and uploads to CurseForge
once X-Curse-Project-ID and CF_API_KEY are set - .pkgmeta excludes tests, tools and listing assets from the package
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
- Installer tool gets a -package mode; make package writes
- Add CurseForge listing assets
- Own logo artwork (stopwatch with rising bars, addon colors)
- English description and the values for the project form
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
- Merge pull request #4 from Noobygames/feature/sessions-characters
Feature/sessions characters - Merge pull request #3 from Noobygames/feature/xp-history-stats
Feature/xp history stats - Track stats per level and per session for every character
- Account-wide LevelTimerStatsDB with one entry per character
(Name-Realm); legacy per-character data migrates on login (schema 3) - Every counter runs in two scopes: current level and current session;
sessions resume after /reload or short breaks and are archived on the
next real login - Timer window tabs switch between level and session
- History window: character selector, Levels/Sessions tabs and a
total row for evaluation - Stats.lua (was LevelStats.lua), History.lua (was LevelHistory.lua),
new Session.lua and OnLogout hook in the core - New scenarios for characters and sessions; test-addon runs with
-count=1 so Lua changes are never hidden by the Go test cache
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
- Account-wide LevelTimerStatsDB with one entry per character
- Merge pull request #2 from Noobygames/feature/pvp-kills-deaths
Split kills into PvE/PvP and add death counter - Add Lua scenario tests against a faked WoW API
- tests/wow_stub.lua fakes frames, events and the unit/XP/money API,
loads the addon in .toc order and provides test helpers - Scenarios for migration, kills, deaths, experience, quests/money,
level history and UI/commands, each in a fresh Lua 5.1 state - tools/addontest runs them via go test (gopher-lua);
make test now runs addon and installer tests
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
- tests/wow_stub.lua fakes frames, events and the unit/XP/money API,
- Add XP rate, level history and more per-level stats
- XP per hour with estimated time to level up
- Level history: snapshot of each finished level, shown in a table
(Shift-click minimap button, settings button or /lt history) - XP sources (kills/quests/other), rested XP, quests, income,
time spent dead and kills per death - Two-phase level-up hooks (OnLevelCompleted/OnLevelStarted) so
snapshot and reset don't depend on load order - RegisterEvent tolerates events unknown to a client
- StatLines.lua as single list driving window lines and toggles;
Format.lua for shared formatting
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
- Split kills into PvE/PvP and add death counter
- LevelStats module owns per-level counters and their reset on level-up
- PvP kills from honorable kill session delta, deaths from PLAYER_DEAD
- Database module with defaults and versioned character migrations
(old kills value migrates to pveKills) - Timer window renders stat lines from a list; new toggles for deaths
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
- Merge pull request #1 from Noobygames/feature/leveltimer
Add LevelTimer addon with kill counter, settings and installer - Add LevelTimer addon with kill counter, settings and installer
- LevelTimer: play time and XP-granting kills on the current level,
split into small modules (core, widgets, data, UI, commands) - Minimap button, addon compartment entry and settings panel
(language deDE/enUS, font size, opacity, toggles) - Go install wizard (make install/update/dry-run): copies files listed
in the .toc, tracks them in a manifest, migrates legacy installs and
never touches WTF/SavedVariables
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
- LevelTimer: play time and XP-granting kills on the current level,
- Initial commit