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>

