promotional bannermobile promotional banner

Ka0s Consumable Master

Auto-managed account-wide consumable macros.

File Details

1.4.0-release

  • R
  • May 3, 2026
  • 2.21 MB
  • 29
  • 12.0.5+2
  • Retail

File Name

ConsumableMaster-1.4.0-release.zip

Supported Versions

  • 12.0.5
  • 12.0.1
  • 12.0.0

tag 24e4bb73ab4fc10a958bd4e8b9b1a58c6a67af1b 1.4.0-release
Author:    Tushar Saxena <tushar.saxena@gmail.com>
Date:    Sun May 3 23:00:56 2026 +0530

commit 4a13162a94f96a1c3b18dd46649eb130a818d7ce
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 17:30:04 2026 +0000

    Standardize Version History table with dated, single-line entries

    Replace the mixed-format Changes column with a uniform Date + Highlights
    layout sourced from the x.y.z-release tags, and condense each release's
    notes to a single concise line summarizing the commits in that window.

commit 3780b6ec71503412a89c22cba40a52984c0e462a
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 09:51:58 2026 +0000

    Ship v1.4.0 — Settings rework, /cm CLI, and review hardening

    Bumps Version in TOC, KCM.VERSION in Core.lua, and adds a 1.4.0
    row to the README Version History. Highlights since 1.3.0: master
    enable toggle, schema-driven /cm list/get/set CLI, KickCD-style
    Settings canvas with About landing page and breadcrumb chevron,
    viewed-spec auto-tracking, panel-refresh while disabled, OnShow
    combat guard, and the principal-engineer review execution batch.

commit fe2e358646ff0b242e7710d88d32bb11faba7d18
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 09:45:18 2026 +0000

    Document panel OnShow combat guard alongside O.Open guard

    The combat-protection paragraph in midnight-quirks previously only
    covered O.Open / Settings.OpenToCategory. The OnShow guard added
    in settings/Panel.lua now also catches direct ESC > AddOns sidebar
    clicks that bypass O.Open — note both entry points so the guard
    isn't accidentally removed as a duplicate.

commit bbf1ed4420c9a9974c3b61c4001c4ab9ffd57f27
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 09:38:50 2026 +0000

    Render breadcrumb separator as inline atlas chevron

    Replaces the ASCII pipe with |A:common-icon-forwardarrow:16:16|a
    so the in-page header reads "Ka0s Consumable Master  ›  <Page>"
    using a real atlas texture instead of a font glyph. Atlas escapes
    render the same regardless of FontString font / locale fallback.
    Parent (About) panel still skips the prefix via opts.isMain, and
    the Blizzard left-tree label is untouched so subpages indent
    cleanly under the parent.

commit af3cba0fb27c3a76b3c37d8e219979b5713cfa11
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 09:27:08 2026 +0000

    Tighten settings row layout and block panel open in combat

    Settings rows now use distinct item-name widths per layout
    (0.76 single, 0.72 composite) so the trailing icon clusters in
    both the per-category and AIO views end at roughly the same x —
    the right-edge gap is now consistent. CHECK_W shrinks 90 → 78 so
    the AIO "Enabled" label sits flush against the up arrow without
    truncating.

    Adds an InCombatLockdown guard to every KCM settings panel's
    OnShow: if combat is active, the Blizzard SettingsPanel is closed
    immediately and a chat notice prints. Closes the gap left by
    O.Open's guard, which the ESC > AddOns sidebar bypasses.

commit 205b36ab79697920ddbecc68d00a9a3ab033cf06
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 09:10:10 2026 +0000

    Widen category row name area and AIO Enabled label

    Bumps ITEM_ROW_RW 0.62 → 0.72 so the per-item button cluster
    (info / up / down / remove) sits further right with usable space
    on the left for longer item names. Bumps CHECK_W 60 → 90 so the
    AIO sub-cat "Enabled" checkbox label renders in full instead of
    truncating to "Enabl…".

commit efe840ddf57b3715bae4c76cbf608ea1753a5998
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 07:11:12 2026 +0000

    Sync docs after review execution and renumber review artifacts

    - docs/{module-map,file-index,pipeline,debug,smoke-tests}.md updated
      to match the post-review code state: panel registration runs from
      the bootstrap (not OnInitialize); Pipeline.Recompute only gates the
      macro write loop on master enable; TooltipCache no longer exposes
      IsPending/PendingIDs/Stats; Debug.Toggle uses `nextValue` not `next`.

    - reviews/2026-05-02/REVIEW_*.md renamed to NN_*.md so the artifacts
      read in order: 01_FINDINGS, 02_PROPOSED_CHANGES, 03_SMOKE_TESTS,
      04_EXECUTION_PLAN, 05_FINAL_SUMMARY. Cross-references updated.
      Adds the post-implementation 03_SMOKE_TESTS.md and 05_FINAL_SUMMARY.md.

commit fef0acd3e007c5ce29a76a5b18cbd84cdcdffa72
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 05:01:34 2026 +0000

    Refresh panel while addon off; auto-track viewed spec; dedupe stats

    Apply M3.T3.2, M4, M5, and M6 (excluding deferred T6.4/T6.5) from the
    2026-05-02 review:

    - Pipeline.Recompute now gates only the macro write loop on master enable;
      the panel refresh fires unconditionally so opening the panel while the
      addon is off still hydrates [Loading] rows from item-info events.
    - Stat Priority page auto-tracks the player's current spec on respec when
      no manual pin is set. Picking a non-current spec from the dropdown
      pins it; picking the current spec re-arms auto-tracking.
    - Panel registration now runs solely from the PLAYER_LOGIN / ADDON_LOADED
      bootstrap; the OnInitialize call was load-order-fragile.
    - Secondary-stat compaction (panel writes + /cm stat secondary) drops
      empties and duplicates while preserving first-seen order, so a duplicate
      pick can no longer double-weight the same stat in Ranker.Score.
    - Ranker.BuildContext memoizes bestImmediateAmount on the per-pass score
      cache so per-row Explain calls don't redo the walk during panel renders.
    - formatNumber walks the integer once forward instead of reverse+gsub+
      reverse.
    - Drop misleading specLabelCache invalidation on dropdown change.
    - Strengthen the comment on KCM.ResetAllToDefaults explaining why the
      immediate Recompute is safe (taint firewall + MacroManager combat queue).

    Sync docs/module-map.md.

commit c38f452f229a901d84e82de061af040da46ead0c
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 04:47:00 2026 +0000

    Surface cleanup, CLI clarity, and Helpers.Set simplification

    Apply M1, M2, and M3.T3.1 from the 2026-05-02 review:

    - Drop dead exports: BS.GetAllItemIDs, M.HasPending/PendingCount/IsAdopted,
      TC.IsPending/PendingIDs/Stats, Helpers.SchemaForPanel/MakeCheckbox.
    - Drop dead KCM._inCombat state + OnRegenDisabled handler — InCombatLockdown
      is the canonical combat gate.
    - Skip composite categories in Classifier.MatchAny (no matchers).
    - Derive KCMItemRow.applyLabelWidth offsets from named constants.
    - Rename Debug.Toggle's `local next` to `nextValue` (no global shadow).
    - /cm priority reset confirmation now says discovered items are preserved.
    - /cm resync and /cm rewritemacros combat warning clarifies that picks are
      computed now and macro writes apply when combat ends.
    - /cm set now reports failure when SetAndRefresh returns false instead of
      printing success-shaped feedback.
    - Helpers.Set is now (path, value); FireConfigChanged stub deleted (the
      documented single-write convention isn't held by bucket-shaped writes
      and there are no subscribers; simpler today, identical future cost).

    Sync docs/ accordingly.

commit 577fd0f261a3e8a5f5495bb8eeb7d8d0c431c171
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 21:26:45 2026 +0000

    Add 2026-05-02 principal-engineer review artifacts

    Findings, proposed changes, and a 6-milestone execution plan from the
    wow-addon:review pass. 0 critical / 1 high / 13 medium / 9 low; the
    high is /cm set's misleading "succeeded" feedback when SetAndRefresh
    rejects the write.

commit a9db280e0cf354712612c9ab2a7630f092a672f4
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 18:43:16 2026 +0000

    Sync docs after master enable + General layout changes

    Six docs reflect commit 0252d18 (master enable toggle, paired
    [Enable]|[Debug] in a "General" section, Reset folded into Maintenance):

      * README.md — Settings panel "General" entry split into General /
        Maintenance subsections; Enable described as the master toggle.
      * docs/data-model.md — `enabled` field added to the AceDB profile
        tree.
      * docs/debug.md — "today only general.debug is wired in" replaced
        with both rows (`enabled` + `debug`); the schema-row example's
        `group` corrected from "Diagnostics" to "General".
      * docs/file-index.md — settings/General.lua row description
        rewritten for the new two-section layout.
      * docs/module-map.md — settings/ tree comment fixed (was three
        sections, now two).
      * docs/pipeline.md — Recompute pseudocode shows the master-enable
        early-return as the first step.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

commit 09b8fcbd93c953c065ffeb04c456c2a6e84b6b59
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 18:09:24 2026 +0000

    Add comprehensive smoke-test playbook in docs/smoke-tests.md

    New canonical doc with three layers: a 4-step Quick smoke for
    post-change validation, a 12-section Full suite that walks every
    user-visible surface (cold boot, auto-discovery, single + composite
    macro writes, spec changes, combat deferral, every Settings panel
    page, every slash CLI verb, master-enable round-trip, edge cases),
    and a targeted-by-change-area lookup table mapping "I changed X" to
    the sections that exercise it.

    CLAUDE.md, ARCHITECTURE.md, and README.md gain pointers; the older
    4-step recipes that lived in docs/common-tasks.md ("Verify a behavior
    change in-game") and docs/debug.md ("Smoke test recipe") collapse to
    one-paragraph pointers so smoke-tests.md is the single source of
    truth. defaults/README.md's step 7 renames "Smoke-test in game" to
    "Verify in game" and adds a pointer for full coverage so the term
    "smoke test" is reserved for the playbook.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

commit 0252d187ab3512e3e1a011574becaa5814fa1abd
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 16:20:02 2026 +0000

    Add master enable toggle and rework General page layout

    New `enabled` schema row defaults to true; Pipeline.Recompute
    early-returns when off so every recompute path (events, /cm resync,
    /cm rewritemacros) becomes a no-op and macros keep their last-written
    body. The toggle's onChange kicks RequestRecompute on the off→on
    transition so macros refresh against current bag/spec state without
    waiting for the next event.

    General page restructured into two sections instead of three:
      * General      — paired [Enable] | [Debug] checkboxes
      * Maintenance  — Force resync | Force rewrite (paired), then
                       Reset all priorities full-width on a second row
    The standalone "Reset" section is gone.

    /cm config (and KCM.Options.Open) now lands on the parent About splash
    instead of General, with sub-pages forced expanded in the AddOns
    sidebar so every panel is one click away. Expansion reaches
    SettingsPanel:GetCategoryList():GetCategoryEntry(category):SetExpanded(true)
    — pcall-guarded private API matching the working pattern in
    Ka0s Absorb Tracker. Open paths now also short-circuit during combat
    with a chat notice rather than failing silently against the protected
    Settings UI.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

commit e5f1eaa3838c5bfb6a38b7d3b7f9fcf2e2adf53c
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 15:26:29 2026 +0000

    Sync docs after Settings migration and prune dead exports

    Sweep stale references from every doc that mentioned the now-deleted
    Options.lua / KCMHeading.lua / AceConfigDialog `dialogControl` pattern.
    ARCHITECTURE.md, README.md, and seven topic chunks under docs/ now
    describe the actual settings/Panel.lua + per-tab module layout. The
    widget custom-stub comments in KCMItemRow / KCMScoreButton /
    KCMMacroDragIcon get the same retroactive cleanup — the defensive
    behaviour is preserved, but the historical attribution is now generic
    ("any AceGUI consumer") instead of naming a library that isn't called
    anymore.

    Three exports were surfaced as zero-caller dead code during the sync
    and are now deleted: KCM.Selector.Unblock, KCM.Selector.ClearPins, and
    KCM.Settings.Helpers.RestoreDefaults. AddItem still implicitly unblocks
    (the only path back from blocked), which is now documented explicitly
    in module-map.md so a future reader doesn't reintroduce a separate
    Unblock verb.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

commit f844f78aa192e3aeb308e874a4a03f0d0f3600c3
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 15:07:26 2026 +0000

    Migrate Settings UI to KickCD-style canvas framework

    Replace the AceConfigDialog renderer with a hand-built AceGUI canvas
    framework modelled on KickCD's settings/Panel.lua. Every page now shares
    one header (GameFontNormalHuge title with breadcrumb prefix plus an
    Options_HorizontalDivider atlas), one always-visible scrollbar gutter,
    and a consistent section-heading + paired-row rhythm.

    User-visible changes:
    - General page split into Diagnostics / Maintenance / Reset sections
      with paired Force resync | Force rewrite buttons.
    - Stat Priority laid out two-column: Primary alone, Secondary 1|2 and
      3|4 paired.
    - Per-category panels keep Add-by-ID at top and an inline Reset at the
      bottom (StaticPopup-confirmed).
    - Composite (HP_AIO/MP_AIO) panels follow the same shape with separate
      In Combat / Out of Combat sub-cat lists.

    Public API (KCM.Options.{Register,Refresh,RequestRefresh,Open} and
    KCM.Settings.{Helpers,Schema}) is preserved through a shim in
    settings/Panel.lua, so Core / Debug / SlashCommands / Pipeline keep
    working unchanged.

    Options.lua and KCMHeading.lua are deleted; the latter's role is now
    filled by AceGUI's stock Heading widget styled with GameFontNormalLarge
    inside Helpers.Section.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

commit c6c0fe9dc66ed4e4c5c742f0d8dc351d491f4d6a
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 14:05:24 2026 +0000

    Add About landing page to top-level Settings panel

    Replace the empty vertical-layout parent category with a canvas-layout
    About page (logo + TOC tagline + slash command list) so clicking the
    addon name in Settings -> AddOns shows branded content instead of an
    empty shell. Sub-pages (General, Stat Priority, per-category) keep
    their existing canvas-subcategory registration. /cm config still lands
    on General.

    Layout uses a UIPanelScrollFrameTemplate with a 300x300 fixed logo, two
    horizontal separators, and a recomputed content height so the built-in
    scrollbar engages on overflow.

commit b8cdd6345a83faf407a82330cae57c912978e47c
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 10:40:33 2026 +0000

    Fix doc API drift and remove README Contributing section

commit cccb043a875c809afcedbbb0162565c74473ad29
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 09:41:17 2026 +0000

    Carve out /wow-addon:commit exception to auto-commit rule

commit 54d437689ab4123534b3a54ba04ed36890fe55d7
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 09:32:51 2026 +0000

    Consolidate docs into lean indexes and on-demand topic chunks

commit f1e25868f668cffb79d5715cdcef0d0c9be2165d
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 07:38:59 2026 +0000

    Tighten WoW version badge URL

    Swaps the %20 space-encoding for an underscore in the shields.io badge —
    shorter URL, identical render.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

commit bdadec3ce0a3d21e50c29e8aed97e5a78e66fc87
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 07:23:52 2026 +0000

    Enforce CRLF line endings via .gitattributes

    Adds `.gitattributes` with `* text=auto eol=crlf` so every working tree —
    on any OS, with any `core.autocrlf` setting — checks out text files as
    CRLF. Files are normalized to LF in the repo so diffs/blame stay clean.
    Binary file extensions (images, archives, fonts) are explicitly opted
    out of any line-ending munging.

    LICENSE was previously stored as CRLF in the index; the renormalize pass
    folds it into the new canonical-LF policy.

    CLAUDE.md picks up the augmented response-style rule: no auto-staging
    either, not just no auto-commit/push. Index mutations now require
    explicit user instruction.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

commit 65658f5dca8eb460a45f638be780ceff1bc659e1
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 07:12:27 2026 +0000

    Add KickCD-style schema layer and list/get/set slash UX

    Introduces KCM.Settings.Helpers + KCM.Settings.Schema in Options.lua so
    genuinely-scalar settings can be declared as one row that drives both the
    panel widget and the CLI. Today only general.debug fits; the scaffolding
    exists so future scalars get /cm get/set/list for free.

    SlashCommands.lua restructures around an ordered COMMANDS table (KickCD
    pattern — help generated from the table). Adds three CLI namespaces for
    the list-shaped state that doesn't fit a flat scalar schema:
      /cm priority <cat> list|add|remove|up|down|reset
      /cm stat list|primary|secondary|reset [<specKey>]
      /cm aio <key> list|toggle|up|down|reset
    Every CLI mutation calls afterMutation so the panel and slash paths share
    one Pipeline.RequestRecompute → Options.Refresh chain.

    Debug.Toggle now routes through Helpers.SetAndRefresh so the panel
    checkbox, /cm debug, and /cm set debug all share one write+notify+refresh
    path. CLAUDE.md picks up the schema-driven slash UX section, the new
    verb namespaces, and two response-style rules: never auto-commit and
    never bump the version without explicit instruction.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

commit fdad3f001901e3c5e7d3d952b48729e9e293b3d4
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 05:32:02 2026 +0000

    Split Options panel into Blizzard sub-categories

    Replaces the single AceConfigDialog tabbed canvas with a vertical-layout
    parent and one canvas sub-page per top-level group (General, Stat
    Priority, then each Categories.LIST entry), so each page owns the full
    canvas width instead of sharing 25% with an internal tree control.
    /cm config opens straight to General. The redundant in-page KCMTitle
    banner is dropped — each sub-page already gets a BlizOptionsGroup label
    restyled to 24pt gold — and the now-unused KCMTitle widget is removed.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

commit 5e8efd56065e45fa2b6ceee97d97ca51ba16d44f
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Fri May 1 21:21:30 2026 +0000

    Refresh top-level docs for /cm and cyan [CM] chat prefix

    Updates README, CLAUDE.md, and ARCHITECTURE.md to reflect the latest
    slash UX: /cm short form with /consumablemaster alias, plus the cyan
    [CM] chat tag now prepended to every line the addon emits. CLAUDE.md
    and ARCHITECTURE.md also document the say() helper convention so future
    sessions don't reintroduce raw print() calls. README's screenshot CDN
    URLs (which contain the literal string "kcm-") are preserved as-is.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

commit 11de4cbf4521e62a4ffc0a02196e5b043fac21b7
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Fri May 1 21:11:39 2026 +0000

    Rebrand slash UX to /cm with cyan [CM] chat prefix

    Short form is now /cm (from /kcm) with /consumablemaster as a long-form
    alias. Every chat path the addon emits — slash output, Options panel
    notices, MacroManager warnings, and the empty-state /run print bodies
    embedded in the macros themselves — now wears a cyan [CM] tag.
    SlashCommands.lua routes all prints through a single say() helper so the
    prefix is unconditional, and the /cm help output is colorized (yellow
    commands, white explanations) for readability.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

commit cbaa252e83449c5835a782b8695055aae0cb0d43
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Fri May 1 20:42:31 2026 +0000

    Prefix settings-panel title with "Ka0s"

    The Blizzard ESC → Options → AddOns entry was previously shortened to
    "Consumable Master". Mirroring the TOC Title and chat-output identity
    keeps the addon name consistent everywhere it's user-visible.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

commit a9f4a0c1d6729ed13793f40315d803c0bfd92326
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Fri May 1 20:26:32 2026 +0000

    Add LICENSE, vendor screenshots, polish README and TOC metadata

    Adds an MIT LICENSE file, vendors the README screenshots under media/
    so the repo renders without the ForgeCDN dependency, refreshes the
    README (badges, formatting), and rounds out the .toc with
    DefaultState / Category-enUS / X-License headers for addon-manager
    discovery.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>