Skip to content

Releases: Noobygames/wow-statistics

v2.8.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 21:25
3d7cb6f

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

Choose a tag to compare

@github-actions github-actions released this 02 Oct 12:48
fa1f425

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

Choose a tag to compare

@github-actions github-actions released this 02 Oct 10:46

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

Choose a tag to compare

@github-actions github-actions released this 02 Oct 10:16
b4a7096

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

Choose a tag to compare

@github-actions github-actions released this 02 Oct 10:08

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

Choose a tag to compare

@github-actions github-actions released this 02 Oct 08:10

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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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)
  • 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
  • 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
  • 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

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 18:57
395aed5

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
  • 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

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 18:03
a1697b4

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
  • 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
  • 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
  • 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
  • Initial commit