promotional bannermobile promotional banner

Ka0s Loot History

Records every item you loot, attributes where it came from, and lets you browse and analyze your loot history — account-wide.
Back to Files

1.2.0-release

File nameLootHistory-1.2.0-release.zip
Uploaded
Jul 26, 2026
Downloads
36
Size
7.3 MB
Flavors
Retail
File ID
8512317
Type
R
Release
Supported game versions
  • 12.0.7

What's new

tag 653085627b45c7ed4a28f841f4ce1df8e91dc7f1 1.2.0-release
Author:    Tushar Saxena <tushar.saxena@gmail.com>
Date:    Sun Jul 26 15:53:11 2026 +0530

commit 10f3851725f5b38f562bab0611bf628a21d1f07e
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun Jul 26 10:22:47 2026 +0000

    feat(export): remove Export to AI, keep Export to CSV

    Retire the AI-report export: the prompt builder, the "how it works" help
    popup, the tools/build_report.py assembler, and the ai-export guideline/
    template docs are all gone. Export to CSV stays for both History rows and
    the Insights summary; the modal is now a Data Set dropdown plus a single
    full-width Export to CSV button.

    Docs synced across README, ARCHITECTURE, module-map, browser, smoke-tests,
    scope, conventions, testing and data-model. The 9 AICSV/AIPrompt test cases
    are dropped (308 -> 299); tests badge and test-cases.md regenerated.

    Bump 1.1.0 -> 1.2.0, releasing the currency capture + Insights overhaul that
    landed since the 1.1.0 tag alongside this removal.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_0159KYPYtzbbZGRoqDibne3e

commit 5d414abad2faa9a4e48dce425091cdd222e26013
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun Jul 26 06:37:09 2026 +0000

    docs: sync engineering docs with currency capture + schema v5

    The currency feature + AH-export realization drifted the engineering
    docs. Bring ARCHITECTURE, module-map, saved-variables, message-bus,
    slash-dispatch, browser, compat-layer, agent-context, conventions and
    CLAUDE into line with master:

    - schemaVersion 3 -> 5 (v3->v4 currency-quality, v4->v5 currency-bound
      backfills); record shape gains currencyID
    - currency capture: CHAT_MSG_CURRENCY handler, recordCurrency setting,
      SettingsChanged "currency" reason, currencyBlacklist carve-out +
      clear popup, six Compat currency shims
    - Insights LOOT/CURRENCY section split; Auction Price browser column
    - Export-to-AI documented as implemented (was "stub"/"placeholder")
    - agent-context: add AuctionPrice to module list; Standard v1.1 -> v2.0.0

    README left as-is (currency is unreleased; version unchanged).

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_0159KYPYtzbbZGRoqDibne3e

commit dacabe4325efdaa8bf1f8a2244c1c5c82879c229
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat Jul 25 21:25:25 2026 +0000

    feat(ai-export): AI report mirrors the Insights panel + currency

    Bring the exported HTML report in line with the reworked in-game Insights
    panel and the full currency feature:
    - add the five per-character × Character stacked companions and rework the
      Currency section (Collected, Type × Source stacked, Character × Type,
      Over Time); items-only loot charts so totals tally.
    - match the panel: Title-Case names, all charts half-width paired
      parent|companion, gold LOOT/CURRENCY dividers, tightened bar columns.
    - colours from the in-game palette (source/bind/type/currency), bar-
      coloured labels, and label-level tooltips on stacked bars.
    - enlarge the sample H with a representative 19-currency spread so every
      card renders, and ship two currency analysis cards + guideline rules so
      the AI writes currency insights at runtime.

    Template JS renders clean headless; assembler tests 48/48 (edits live in
    the head/tail the assembler inherits verbatim + the replaceable sample).

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_0159KYPYtzbbZGRoqDibne3e

commit d63972809a50b3d68c744b465c8117516858cebe
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat Jul 25 20:28:42 2026 +0000

    feat(ai-export): Insights CSV matches the dashboard exactly

    Drop the sections the panel no longer shows so the CSV/AI export mirrors
    the Insights view 1:1: By Keystone, Attribution Confidence, Currency by
    Source, the flat Currency by Character (superseded by Currency by
    Character x Type), and the currency Summary rows. Loot sections stay
    items-only. build_report.py only cross-checks Summary, so the report
    engine is unaffected (48 py tests green).

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_0159KYPYtzbbZGRoqDibne3e

commit 7b488aba6f62fad6afc486dda996f77e23d07ace
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat Jul 25 20:13:28 2026 +0000

    feat(insights): dashboard UX overhaul (companions, palette, legends)

    Insights analytics view reworked for clarity and consistency:
    - Per-character stacked companions under each categorical loot chart,
      ordered to match the parent's Y axis; item-type/currency/weekday bars
      now coloured from a shared inverse-VIBGYOR palette (rank-assigned so no
      two similar colours are adjacent); single-bar labels take their bar's
      colour; a colour legend sits under every categorical chart.
    - LOOT charts are items-only so per-character totals tally across charts
      (currency lives only in the CURRENCY section); Loot By Character is the
      first chart; Quality mix, keystone, confidence, and the currency
      summary line removed.
    - Titles are Title Case + renamed; bigger/thicker section dividers;
      consistent big KPI headline font with shrink-to-fit; smaller coin
      glyphs; truncation + cursor-anchored tooltips on labels and segments.
    - History window: "Vendor"/"AH" columns renamed to "Vendor Price"/
      "Auction Price" and widened; window min/default width follows.

    Tests 294->308 (new pure-helper + stats coverage); docs synced.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_0159KYPYtzbbZGRoqDibne3e

commit 81db0f61aa88f7a5237f90aaae830391cdd5eaad
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 11:46:29 2026 +0000

    test(ai-export): lock the currency epic+ exclusion (Epic-tier currency fixture)

    Change the currency row in the test from Rare (qualityRaw=3) to Epic
    (qualityRaw=4) so the fixture genuinely locks the cid guard on epic+
    calculation. With the guard: currency excluded, epic_plus=1. Without the
    guard: Epic-tier currency counted, epic_plus=2 (test fails).

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01FydbSbzTgTyab21FQoSBjA

commit ec67486e81badaa21069f410ac687d5c483293fb
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 11:37:44 2026 +0000

    docs(insights): document Loot/Currency sections + currency exports; sync tests badge

commit 018ebd60c5b9a4b2f5490bf24f0200297e6c020a
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 11:31:03 2026 +0000

    docs(ai-export): teach the guideline about currency rows + sections

commit 1ff3148f1d551cf7bd6e4a40074c5a51162c29d3
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 11:24:40 2026 +0000

    feat(ai-export): report engine renders currency (charts, table, KPIs guarded)

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01FydbSbzTgTyab21FQoSBjA

commit 0a1d105cee4b7a7e6f2edab98e0593ec3127bd5b
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 11:12:48 2026 +0000

    feat(ai-export): build_report.py parses currency rows, excludes from item checks

commit 53e7df89407c6bf0a5bce539ea9f8a42770f32d7
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 11:06:43 2026 +0000

    feat(export): AI history CSV now carries currency rows + currencyID

commit d2379af22fe01956cb21a62acfa349f9091f03a8
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 11:02:46 2026 +0000

    feat(export): Insights CSV — rename to Type x Source + add Currency by Source

commit 667c37f9a68eca4cee20bd41b4ac1b31d6566794
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 10:57:57 2026 +0000

    style(insights): more-distinct shared source palette; add REFUND/BONUS_ROLL

commit d61ce7696aa4b666f0cd6ccd3f7d50205ff82a1a
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 10:49:35 2026 +0000

    feat(insights): rename stacked currency chart to Type x Source + add legend

commit 47c0d96681e3f4189d6f8baf6e710ec4381905a7
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 10:45:18 2026 +0000

    feat(insights): Currency by Source chart (total qty per source)

commit 8d69c44ed83b9a291586f8759f87013562d05fcf
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 10:41:32 2026 +0000

    feat(insights): Currency Collected as a horizontal bar chart

commit 4117e914b4666656f775c02a064b26d2ab8a0c1f
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 10:36:44 2026 +0000

    feat(insights): LOOT/CURRENCY section dividers; move ranked lists into Loot

commit d35ba2958e4e53c8becbd381f43b50aff5388d22
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 10:31:56 2026 +0000

    feat(insights): add currencyBySource stat (source -> total qty)

commit 70b68a1258b4e9204340cfdb4b2086a6a8feacc4
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 10:23:39 2026 +0000

    docs(plan): Insights Loot/Currency sections + full currency export

    Phased implementation plan (12 tasks): in-game Analytics reorg + charts +
    palette + currencyBySource stat, Insights CSV, AI history CSV, then the AI
    report assets (build_report.py, template engine, guideline).

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01FydbSbzTgTyab21FQoSBjA

commit 1bdb985fb6d399966d8e1152a87658b5d9f5149b
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 10:13:52 2026 +0000

    docs(spec): Insights Loot/Currency sections + full currency export

    Design spec for reorganising the Insights tab into Loot/Currency sections,
    augmenting the currency charts (Currency Collected bar, Currency by Source,
    renamed Type x Source + legend, improved shared source palette), a new
    currencyBySource stat, and propagating currency through both exports —
    Insights CSV plus the full Export-to-AI report (closing TODO(currency-ai)).

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01FydbSbzTgTyab21FQoSBjA

commit 6e274de160bfe6e46a4747422d804fad24f47721
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 09:29:45 2026 +0000

    feat(currency): capture bound state for currency at loot + v4->v5 backfill

    Currency rows now carry a bound state so the History Bound column shows a
    glyph instead of blank: WARBAND for a Warband-transferable currency
    (C_CurrencyInfo.isAccountTransferable), else BOP. Captured at loot time via
    Compat.CurrencyBound; a new v4->v5 migration backfills bound on currency
    rows stored before this change (unresolved ids stay nil).

    Docs (data-model, smoke) corrected for the no-longer-blank Bound cell;
    tests 287->289, badge bumped, test-cases regenerated.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01FydbSbzTgTyab21FQoSBjA

commit 1d44adbe3dc1969dc61c3de852ed1a5f9ebf8958
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 22 09:16:26 2026 +0000

    feat(currency): capture currency-vendor refunds as source=Refund

    A refund of a currency-paid purchase returns the currency on
    CHAT_MSG_CURRENCY as a "You are refunded: [currency]xN" line, not on
    CHAT_MSG_LOOT as the original design assumed. ParseSelfCurrency now
    carries the LOOT_ITEM_REFUND patterns tagged REFUND, and OnChatMsgCurrency
    attributes them directly (CERTAIN, bypassing the stale VENDOR context) —
    producing a Type=Currency row with source=Refund.

    Docs (attribution, smoke row 11) corrected for the channel; tests 284->287,
    badge bumped. Item-returning refunds via CHAT_MSG_LOOT remain unconfirmed
    (issue #16).

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01FydbSbzTgTyab21FQoSBjA

commit 302211f93d36ea7a062cc9b1e487433809022dad
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 20:57:10 2026 +0000

    docs(currency): note the Quality filter includes currency, unlike Insights

    The Quality filter/group-by are data-driven and now include currency tiers, but
    the Insights "Quality distribution" stays item-only — correct the stale claim
    that they match.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_017472Lj1EXqYbBeXccwWPdp

commit f64957a591a1f0dbed92efa1d233b3cd1d3038b1
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 20:52:57 2026 +0000

    docs(currency): quality colour + tooltip + v3->v4 backfill; smoke + badge

commit 7eee5433be644b8365bcc6b8307d78ff2ce2e021
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 20:49:03 2026 +0000

    feat(currency): in-game currency tooltip on History row hover

commit bc39763430a88dfc44359514d0eabd58b4c5fcbc
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 20:47:50 2026 +0000

    style(settings): pair the two Data Collection dropdowns on top, checkboxes below

    Reorder the Data Collection schema rows so the panel pairs Minimum quality |
    Keep history for on the first line and Record currency | Exclude quest items on
    the second (row order drives the two-column layout).

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_017472Lj1EXqYbBeXccwWPdp

commit bd5ca7368d282cdfa638681054643c5909091204
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 20:44:32 2026 +0000

    feat(currency): store quality at capture + v3->v4 backfill migration

    Add Compat.CurrencyQuality, store quality on currency records at
    capture, and backfill quality onto existing currency rows via a new
    schemaVersion v3->v4 migration.

commit 096a695f4b81bd83b09df75d81fa601d024f85e3
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 20:41:38 2026 +0000

    docs(plan): numeric task headings for tooling

commit fadee65bfc70b1a9e0007522fb643330c723e58d
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 20:41:16 2026 +0000

    docs(plan): currency tooltip + quality-colour plan

    Store currency quality at capture + v3->v4 backfill migration; colour the name
    + fill the Quality column (render already keys on quality); in-game tooltip on hover.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_017472Lj1EXqYbBeXccwWPdp

commit 672e410503d70b2840e97dd6ce7839d155b56ff8
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 20:28:52 2026 +0000

    docs(currency): document currency blacklist + smoke + badge; fix reset popup text

commit 930320f0b92a56f3c5477436cd997054d6948741
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 20:24:00 2026 +0000

    feat(currency): blacklist-currency row action + Filters panel section

    Adds a "Blacklist currency" History row action (enabled only for
    currency rows), a third Filters panel section for the currency
    blacklist (mirroring the item blacklist/whitelist sections), and the
    KA0S_LOOTHISTORY_CLEAR_CURRENCY confirm popup in settings/Slash.lua.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_017472Lj1EXqYbBeXccwWPdp

commit 84574ef31ce8bbfc0c34be78d9e8a1c7b9f261e4
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 20:19:22 2026 +0000

    feat(currency): drop blacklisted currencies on capture

commit a95e0dd03eb42c0ad8841b784d1e595de7fb252f
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 20:16:27 2026 +0000

    feat(currency): currency-blacklist storage + Filters API

commit bc16a4e4863d05cd4dc2707f9587698b1fbb1128
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 20:14:18 2026 +0000

    docs(plan): currency-blacklist implementation plan

    Blacklist-only currency filtering (parity with items): separate currencyBlacklist
    carve-out, Collector gate, row right-click action + Filters panel section.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_017472Lj1EXqYbBeXccwWPdp

commit 437d317465d9a22c37d54f6913281d8f5fe75d23
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 19:52:11 2026 +0000

    fix(currency): export currencyID, keep AI item-only, hide empty currency headers

commit feb2658a5e3cebd4582b65347970d4b1f249ed89
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 19:38:32 2026 +0000

    docs(currency): scope reversal, capture docs, smoke tests, badge

commit 72dea79014750616c980a07cc539e4ec6d71705d
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 19:34:37 2026 +0000

    fix(currency): use friendly source label in Currency-by-Source CSV

    Currency by Source rows were labeling sources with raw keys (e.g. MPLUS)
    instead of friendly labels (e.g. Mythic+), inconsistent with the By Source
    section. Reuse the existing srcLabel() helper for both.

commit 048897cb58d8e550cc3c84a0a709e7355a60825d
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 19:32:16 2026 +0000

    feat(currency): CSV export (currencyID column + Insights sections)

commit c4c1f580e0112f0cc5ec29b4b6fa73fa75f0408d
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 19:27:59 2026 +0000

    feat(currency): null-safe quality cell for currency rows

commit 7dabc107f726833ad547744983619b7fc66a609b
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 19:24:23 2026 +0000

    feat(currency): Insights currency block (top/by-source/by-char/over-time)

commit 342d50dd48ac7f60871cc76de39557af1017b589
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 19:20:25 2026 +0000

    feat(currency): currency-aware Database:Stats aggregates

commit 52e408bdc8553d76dc5c6a1c437a6c3a9b9fb3f1
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 19:16:26 2026 +0000

    feat(currency): capture CHAT_MSG_CURRENCY into history

commit f0eb8b9b0383e474a55ae366df90a5f042691425
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 19:13:26 2026 +0000

    feat(currency): recordCurrency setting + Currency type constant

commit c6d8894b8e4c4a5a634ecc826ccab4852b86064e
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 19:09:56 2026 +0000

    feat(currency): Compat shims for currency link + category

commit cc38df8ce4dcf2c7fd16112367ce7e6774f8ddca
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 19:05:18 2026 +0000

    feat(currency): parse CHAT_MSG_CURRENCY self-lines

commit d82e38a6f2b915b450760305f6faff5c8e589c19
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 18:26:33 2026 +0000

    docs(plan): currency-capture implementation plan

    Nine TDD tasks: parser, Compat shims, setting, Collector capture, currency-
    aware Stats, Insights block, table null-safety, CSV export, docs/scope/badge.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_017472Lj1EXqYbBeXccwWPdp

commit a047ca871ef17dc4adbd504cd2631b77795aac17
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 18:11:06 2026 +0000

    docs(spec): promote per-currency-per-source drilldown into v1

    Replace the flat "currency by source" aggregate with a per-currency stacked
    bar (segmented by source, reusing the quality-mix stacked primitive) plus a
    currencySourceMatrix stat and a currency×source CSV detail section. Drops the
    drilldown from the deferred list.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_017472Lj1EXqYbBeXccwWPdp

commit 11cb6a1ca569152327d884b7080cbe9e1074806b
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 18:06:46 2026 +0000

    docs(spec): currency-capture design

    Approved design for capturing looted currency (not gold): Type=Currency +
    live category SubType + currencyID signal, master toggle, source-mute reuse,
    currency-aware Stats, an Insights currency block (top/by-source/by-character/
    over-time), History-table null-safety, and CSV export. Export-to-AI deferred.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_017472Lj1EXqYbBeXccwWPdp

commit cf91edcd10af5eedd5294b567a4b2baaf793f3bf
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 12:50:20 2026 +0000

    feat(attribution): wire CRAFT, ROLL and REFUND loot sources

    Attribute three previously-unwired sources from their CHAT_MSG_LOOT lines:
    CRAFT ("You create") and REFUND ("You are refunded") are self-identifying
    like BONUS_ROLL, attributed directly; ROLL is stamped from the "You won:"
    roll-win line so the follow-up receive line inherits it without double-
    counting. Adds the REFUND enum member and marks ROLL/CRAFT/REFUND
    implemented, so every source now appears in the per-source mute list.
    Docs synced across the source-list references.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_017472Lj1EXqYbBeXccwWPdp

commit ec011cac381679c1ae4eaf7940b7d6a2b98b11b3
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Tue Jul 21 11:53:32 2026 +0000

    feat(attribution): attribute bonus-roll loot to a new BONUS_ROLL source

    Bonus-roll loot lines (LOOT_ITEM_BONUS_ROLL_SELF[_MULTIPLE]) are self-
    identifying, so ParseSelfLoot carries an isBonus flag and the collector
    stamps BONUS_ROLL (CERTAIN) directly rather than consuming the peripheral
    context — which by the time the roll resolves is stale (past CONTEXT_TTL)
    or would mis-inherit the boss's still-fresh KILL stamp.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_017472Lj1EXqYbBeXccwWPdp

This mod has no additional files