File Details
1.8.0-release
- R
- May 3, 2026
- 1.32 MB
- 162
- 12.0.5+2
- Retail
File Name
AbsorbTracker-1.8.0-release.zip
Supported Versions
- 12.0.5
- 12.0.1
- 12.0.0
tag 986b6e19443eec03e6f68731eeb74ee0f4dfe9a2 1.8.0-release
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 23:00:47 2026 +0530
commit 107e4a496d7e990d8d8cc420334b45da694b70f5
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 17:29:59 2026 +0000
README: rewrite Version History with dates and accurate per-release notes
commit 2bcb907c5205ade457914147ed4813cac7f31853
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 09:51:54 2026 +0000
Bump version to 1.8.0
Reflects the panel reshape (Bar/Border layout fixes, atlas-chevron
breadcrumb), the schema group-stable sort, the Panel/ toolkit split,
and the /at test [hold-secs] argument — none of which the 1.7.0 entry
covered. README Version History gets a new row for 1.8.0; existing
rows untouched.
commit ac9418b8680b4bc8463c57ebb79ac4518d0a0c4b
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 09:45:18 2026 +0000
Sync docs to atlas-chevron breadcrumb and group-stable schema sort
Settings-panel and ARCHITECTURE breadcrumb description now references
the inline-atlas |A:common-icon-forwardarrow:16:16|a separator rather
than the old ASCII pipe. Schema, file-index, and module-map updated
for the new SchemaForPage sort key (group-first-seen, then row.order),
along with the reshaped Bar/Border layouts: Bar Fill renamed to Bar
with barTexture/bgTexture solo above their color/class-color pairs,
Border row order swapped to borderColor / useClassColorBorder.
commit 4d90201821234b3781ec1bb8de42903352c4e976
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 09:38:46 2026 +0000
Settings: replace pipe breadcrumb separator with atlas chevron
The in-page sub-page header rendered "Ka0s Absorb Tracker | <Page>"
using an ASCII pipe — a font glyph subject to font / locale fallback.
Swap to the inline-atlas escape |A:common-icon-forwardarrow:16:16|a so
the separator renders as a real texture, font-agnostic and locale-safe.
Parent/main page (opts.isMain) and the Blizzard left-tree label are
unchanged.
commit 401eba2834e100cf05a406e1a6fb3d65b04718b5
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 09:24:39 2026 +0000
Fix multi-group panel layout; reshuffle Bar and Border rows
SchemaForPage now sorts by group-first-seen-index then row.order, so
groups stay contiguous instead of interleaving (every group's order=10
row clustering ahead of order=20). Without this, Section headers
rendered back-to-back at the top of the Bar page and widgets fell into
a single column.
Bar page: rename "Bar Fill" group to "Bar"; barTexture and bgTexture
become solo so the texture dropdown sits on its own row above the
color/class-color pair.
Border page: swap borderColor and useClassColorBorder so the row reads
[Border Color] | [Use Class Color], matching Bar/Background.
commit e4a20f27981689750c2ee36254b3d7aaf6d1e8db
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 07:11:50 2026 +0000
Sync docs; rename review artifacts to 0N_ prefix; drop three dead exports
Three logical units bundled into one commit:
- Review-doc rename. reviews/2026-05-02/REVIEW_*.md → 0N_*.md so the
numeric prefix encodes workflow order: 01_FINDINGS, 02_PROPOSED_CHANGES,
03_SMOKE_TESTS, 04_EXECUTION_PLAN, 05_FINAL_SUMMARY. Titles and
cross-references updated to the new filenames.
- Doc sync. ARCHITECTURE.md / docs/data-flow.md / docs/file-index.md /
docs/midnight-quirks.md / docs/module-map.md / docs/schema.md now match
the post-M1/M2/M3 code state: data-flow.md's Settings-write-path diagram
shows panel widget callbacks calling SetByPath via Panel/Widgets.lua's
local set() (no AceConfigDialog in that path); midnight-quirks.md's
combat-lockdown example matches the actual chat string; schema.md's
"What's not schema-driven" section describes Helpers.InlineButtonPair +
RenderSchema afterGroup instead of the obsolete "AceConfig args" wording;
ARCHITECTURE.md's subsystem table and load-order block list the four
Panel/*.lua slices.
- Dead-export removal. AddonTable.FireSchemaOnChange (zero callers
post-M1.3 — SetByPath/ApplyDefault use the file-local fireOnChange
directly), Helpers.PADDING_X, and Helpers.HEADER_HEIGHT (exposed
cross-slice in M2.1 but no Panel/* or Options/* file ever read them)
are gone. docs/module-map.md's Helpers cross-slice constants block
trimmed to the two actually-read entries (ROW_VSPACER,
SECTION_HEADING_H).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 61f05ad9be788e8411b27c7f7534b8b00f8c4564
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 06:38:05 2026 +0000
Capture 2026-05-02 review smoke-test recipe and final summary
Round out the review/2026-05-02/ artifact set with the two missing
documents: REVIEW_SMOKE_TESTS.md (the finding-by-finding manual QA
recipe with C-A / C-B / C-C checkpoints and a symptom-to-commit
triage matrix) and REVIEW_FINAL_SUMMARY.md (outcome status across
all 17 findings, per-milestone change summary, file-level changes,
deferred items with reasoning, and the next-steps punch list).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit dabad810247d7352e12de9eabd04a4193d8a8878
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 06:22:31 2026 +0000
README: document /at test [hold-secs] argument
M1.4 added a hold-secs argument to /at test (F-004) and the proposal
flagged the README's command table as docs-debt. Update the row so the
user-facing reference matches the in-game /at help description string
and the smoke-test recipe.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit c145ccd2db9bb69043eef4108f4d04219e95468d
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 06:15:39 2026 +0000
Smoke-test recipe: cover /at test [hold-secs] and hidden-bar warning
M1.4 added a [hold-secs] argument and a hidden-bar warning to /at test
(F-004 + F-013); update the bar-paint smoke-test section so manual QA
exercises both: a /at test 50000 that now persists ~5 s instead of one
ticker tick, an explicit /at test 999999 2 to demonstrate the override,
and the /at toggle → /at test path that prints the hidden warning.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit db43379a72c5fcb415f9d94590dda6f33a645a46
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 05:34:08 2026 +0000
M3 review polish sweep: dead code, hot-path guards, throttle, chat punctuation
- F-007 Display.lua: gate the per-tick UpdateAbsorbBar DebugPrint behind
AddonTable.DEBUG so AbbreviateNumbers + format don't allocate every
ticker tick when debug is off.
- F-008 Timer.lua: drop the unused `local UpdateAbsorbBar = ...` capture
(the call site already references AddonTable.UpdateAbsorbBar directly,
so the file-local was a misleading reader cue).
- F-009 Core.lua: drop `AddonTable.min = math.min` — nothing reads it.
- F-010 Display.lua: drop the redundant intra-function `local GetSetting
/ local DebugPrint` re-declarations in UpdateAbsorbBar; the file-scope
locals already cover them.
- F-011 + F-012 Panel/Widgets.lua: replace the ad-hoc closure-allocating
ColorPicker throttle (lastCommit + per-event C_Timer.After + fresh
pendingArgs table per fire) with a single re-armed C_Timer.NewTimer
and a reused pendingArgs table. A sustained drag at 60 Hz now produces
O(1) garbage instead of ~60 closures + ~60 tables/sec. Drops the
`GetTime() and GetTime() or 0` double-call along the way.
- F-016 SlashCommands.lua: chat-output punctuation pass — uniform
no-terminal-period rule across every print() site so the inconsistency
("Cannot delete the current profile." vs "Deleted profile 'X'") is
resolved.
- F-017 SlashCommands.lua runProfile: drop the undocumented `set` /
`create` / `remove` aliases; neither README nor /at help advertised
them.
- Docs: file-index.md (Core / Display / Timer / Panel/Widgets line counts
and Display's hot-path note + Widgets throttle note) and module-map.md
(Core's cached-globals block) refreshed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 91db4044eb51a85c15368fd1bfafad48bc399e06
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 05:26:24 2026 +0000
M2 review refactor: split OptionsPanel.lua into Panel/ toolkit slices
- F-005: Extract Panel/Helpers.lua (CreatePanel / Section /
InlineButtonPair / EnsureScroll / AttachTooltip / AddSpacer /
RestoreDefaults / RestoreAllDefaults / RefreshAllPanels + layout
constants + panel registry), Panel/ScrollPatch.lua
(PatchAlwaysShowScrollbar), Panel/Widgets.lua (RenderField /
RenderSchema + the four widget makers), Panel/About.lua
(BuildMainContent). OptionsPanel.lua shrinks 954 → 167 lines and is
now just the registration shell that publishes empty
AddonTable.Helpers + AddonTable.PARENT_TITLE for the slices to
decorate.
- F-006: Dedupe the lsmValues factory into Helpers.LSMValues;
Options/{Bar,Border,Font}.lua call AddonTable.Helpers.LSMValues(
mediaType) at file-load instead of carrying their own copy.
- Docs: file-index.md, module-map.md, settings-panel.md, schema.md,
ARCHITECTURE.md, and CLAUDE.md refreshed for the Panel/ split.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit a0a0a3448fd8805d33fba6ecd15b10bf93344287
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 04:47:01 2026 +0000
M1 review fixes: API order, fallback deep-copy, SetByPath seam, /at test hold
- F-001 SlashCommands.lua: getVersion prefers C_AddOns.GetAddOnMetadata
before the bare global, matching OptionsPanel's getMetadata.
- F-002 Events.lua: AceDB-missing seed loop deep-copies table defaults so
an in-place mutation of a saved variable can't reach back and corrupt
flatDefaults.
- F-003 OptionsPanel.lua: panel set() and color-picker commit() route
through AddonTable.SetByPath so the documented single write seam
actually receives every panel write.
- F-004 + F-013 Display.lua + SlashCommands.lua: /at test holds the fake
value through the ticker for [hold-secs] (default 5) via testHoldUntil;
/at test while the bar is hidden prints a warning instead of silently
no-oping.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 3415c29f03dd5936e029d746df671539667805b6
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 21:28:24 2026 +0000
Capture 2026-05-02 wow-addon:review findings, proposals, execution plan
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 97cc777ccd0e4556dfc201e03e35571224ccf514
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 18:43:25 2026 +0000
Sync docs to vendored LSM lib + parent-opening config; drop dead exports
- Update CLAUDE.md, ARCHITECTURE.md, README.md, and docs/{file-index,
module-map,settings-panel,midnight-quirks,common-tasks}.md to match
the vendored canonical AceGUI-3.0-SharedMediaWidgets r65 (no longer
"in-tree minimal") plus LSMPatch.lua's PLAYER_LOGIN displayButton
suppressor; add LSMPatch to the file index, module map, load order,
and subsystem table.
- Reflect the removed isDefault mechanism: /at config now opens the
parent (about page) and expands the sub-page tree, regardless of
page registration. RegisterOptionsPage is back to a 3-arg signature.
- Fix three small factual flips: solo example in schema.md (the toggle
is solo, not the texture), /at profile new in profiles.md actually
switches profiles, and the bar is unlocked by default per scope.md.
- Remove dead exports surfaced by the sync: AddonTable.lastAbsorb (5
writes across Display.lua / Events.lua / SlashCommands.lua /
Options/General.lua, never read since the dedupe pattern was removed)
and AddonTable.eventFrame (Events.lua export with no in-tree caller).
Pure deletion, no behavior change.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 7b1277ac0d37ebf66d49bde2546834595aa7a4e5
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 18:09:37 2026 +0000
Promote smoke-test recipe to docs/smoke-tests.md; expand and cross-link
- Lift the smoke-test recipe out of docs/common-tasks.md and expand
into a comprehensive 11-section release checklist: boot, bar paint,
bar interaction, slash CLI, settings panel (including the combat-
lockdown gate and a regression check for LSMPatch.lua's displayButton
suppression), profiles, class-color resolution, LSM dropdowns,
backdrop refresh, multi-patch compatibility, plus a symptom-to-
subsystem failure-mode reference table.
- Cross-link the new doc from CLAUDE.md (validation note + doc index),
ARCHITECTURE.md (subsystems table), and README.md (Issues section
pointer for regression filers).
- docs/common-tasks.md "Bump the Interface line" step 3 now points at
the new doc instead of an in-page anchor.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 5336301efdfa7e4c39b2200847e18648dacfc0eb
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 17:26:17 2026 +0000
Vendor upstream AceGUI-3.0-SharedMediaWidgets; suppress border displayButton
- Replace in-tree libs/Ace3/AceGUI-3.0-SharedMediaWidgets/widget.lua
with the canonical r65 multi-file lib (widgetVersion 13, DataVersion
9004) so the addon ships zero custom libraries. Update the TOC to
load widget.xml.
- Options/Border.lua opts in via dialogControl = "LSM30_Border" so the
border picker uses upstream's widget for visual consistency with the
other AceGUI dropdowns in the settings panel.
- Add LSMPatch.lua: at PLAYER_LOGIN, wrap the registered LSM30_Border
constructor at currentVer + 1, hide the 42x42 displayButton border-
preview tile (pinned to TOPLEFT by AGSMW.GetBaseFrameWithWindow), and
re-anchor frame.label / frame.DLeft to the frame's left edge so the
empty 42px slot collapses and the closed dropdown aligns with
neighbouring sliders/checkboxes. Hover preview on the popup edgeFile
is untouched. Lives in addon code (not the lib) so future lib refreshes
do not blow it away.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit bb86f948f75c2f7c0b1f9e00def214ca91dd942c
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 16:20:00 2026 +0000
Polish settings layout; /at config opens parent unfolded
- Pair Bar Fill and Background texture+color into 2-column rows; Use
Class Color toggles go solo on their own row
- Drop the LSM border-style preview swatch (plain Dropdown — the style
name in the dropdown text already serves as the preview)
- /at config lands on the top-level Settings page with every sub-page
expanded in the left tree; drop the dead isDefault plumbing
- Defensive per-mediatype swatch sizing and SetClipsChildren in the
LSM widget so future media previews can't bleed past the dropdown
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit f32fa6f5d0ef4416ca845921f6b016964853a825
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 15:26:20 2026 +0000
Sync docs to overhauled settings panel; drop dead AddonTable exports
Reflect the canvas + AceGUI stack everywhere docs touched the old
AceConfigDialog rendering: docs/settings-panel.md is largely rewritten
to describe the unified header / Helpers toolkit / two-column
RenderSchema / always-visible scrollbar / about page; module-map.md
and file-index.md catch up to the new public API surface (Helpers
table, ValidateSchema, FireSchemaOnChange) and drop the removed
BuildPageOptions; schema.md adds the `solo` flag and updates the
disabledIf / refresh wiring description; data-flow.md and profiles.md
note that RefreshOptionsPanel now routes through Helpers.RefreshAllPanels;
midnight-quirks.md replaces the AceConfigDialog:AddToBlizOptions
gotcha with the canvas-layout numeric-ID one. CLAUDE.md, ARCHITECTURE.md,
README.md, scope.md updated accordingly. Common-tasks "add a sub-page"
recipe rewritten for the new builder shape.
Drop three dead exports surfaced by the API parity audit:
- AddonTable.GetByPath (Schema.lua) — wrapper over GetSetting, no
callers.
- AddonTable.GetPlayerClassColor / AddonTable.GetBgClassColor
(Settings.lua) — only used as local upvalues by the in-file color
getters; never called via the AddonTable bus. The local functions
stay; only the bus exposure goes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 1ce53ac894bcc33d2a32a6f83335caab0d4def0f
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 15:06:56 2026 +0000
Overhaul settings panel: canvas + AceGUI stack with breadcrumb headers
Migrate from AceConfigDialog rendering to canvas-layout subcategories +
AceGUI widgets, modeled after Ka0s KickCD. Every page now shares one
header: GameFontNormalHuge title in breadcrumb form (Ka0s Absorb
Tracker | <Page>) + Options_HorizontalDivider atlas + per-page Defaults
button (where applicable). Schema rows render in a two-column 50/50
flow with full-width Heading section breaks; the always-visible
scrollbar gives every page a symmetric right-edge gutter.
About page: logo + TOC Notes + per-line slash command list, replacing
the single-blob description. Bar / Border / Font pages get tooltips
and unit suffixes ("(in px)", "(in sec)") on every row. General page
gains a Reset Position + Reset All Settings inline button pair (the
latter behind a confirm popup) plus a per-page Defaults button.
Profiles page wraps AceDBOptions in the same breadcrumb header for
visual consistency.
Behavior: color picker now live-previews on drag (50ms throttled) and
restores immediately on cancel; paired toggle + color picker controls
re-sync instantly via RefreshAllPanels after every widget write;
schema rows are validated at PLAYER_LOGIN with chat-printed errors on
malformed entries.
Drops dead AceConfig builder (BuildPageOptions / buildEntry / per-type
helpers) from Schema.lua.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 8a44f37946682f318bf446524342858c32285068
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 14:05:33 2026 +0000
Add about page to top-level Settings (logo, TOC notes, slash commands)
The "Ka0s Absorb Tracker" parent category was previously an empty
title-only page. It now shows a 300x300 logo (TGA, native size), the
TOC Notes blurb, and the full slash-command list — all left-aligned.
The slash-command list reads from AddonTable.SlashCommands (renamed
from the file-local COMMANDS table) so the help text and the panel
stay in sync.
The logo bypasses AceGUI Label's centered-image branch via a small
custom widget (AbsorbTrackerLeftImage) registered at PLAYER_LOGIN
that anchors the texture to TOPLEFT.
commit aa3328ec80ddd30ea4fae786f42cd326fa9448a3
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 10:40:36 2026 +0000
Sync docs to actual code; drop Contributing section from README
Two threads of cleanup. (1) The doc-chunk rewrite from 97c281b carried
forward two stale claims that don't match the current code:
- lastAbsorb is described as a short-circuit cache, but
UpdateAbsorbBar (Display.lua) doesn't actually consult it. The
field is only ever written, never read.
- GetByPath is listed as a public read API, but it has zero callers
and is just a thin wrapper around GetSetting. /at get and the
panel widgets read via GetSetting directly.
Removed both claims from ARCHITECTURE.md and the affected docs/
chunks (data-flow, midnight-quirks, module-map, schema, profiles,
settings-panel, file-index).
(2) Removed the Contributing section from README.md - the link to
ARCHITECTURE.md does not add user-facing value at the top level.
No code changes. Dead-export cleanup (lastAbsorb / GetByPath /
eventFrame) is left for a separate pass.
commit 97c281b34a5c238179bde9400df1830e6f10edd1
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 10:31:00 2026 +0000
Split CLAUDE.md / ARCHITECTURE.md into chunked docs/
Mirror ConsumableMaster's doc layout: keep CLAUDE.md and ARCHITECTURE.md
slim and index-shaped, move topic detail into docs/*.md so each chunk
can be read on demand. CLAUDE.md (64 lines, was 202) is now hard rules
+ AddonTable bus + working environment + response style + doc index;
ARCHITECTURE.md (85 lines, was 459) is what-it-does + subsystems +
invariants + load order + doc index.
docs/ chunks:
- scope.md in/out, resolved decisions
- file-index.md per-file responsibility map
- module-map.md AddonTable bus + public APIs + load order
- schema.md schema registry + row knobs + slash mapping +
full settings reference table
- settings-panel.md multi-page Blizzard Settings registration shell
+ LSM swatch widgets + combat-lockdown gate
- data-flow.md bootstrap, absorb update, settings write,
profile-change refresh
- profiles.md AceDB integration + /at profile + fallback shim
- midnight-quirks.md secret values, backdrop refresh, combat lockdown,
AddToBlizOptions return contract, Interface bumps
- common-tasks.md recipes (add a setting, add a sub-page, smoke
test, troubleshoot LSM, bump Interface)
Pure doc reshuffle - no code touched. Git Workflow + version-bump rules
preserved verbatim in CLAUDE.md. CRLF on disk.
commit 677ed08264e19aacdc9f4b64267ec44954a8d6c9
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 09:41:16 2026 +0000
Allow /wow-addon:commit as explicit commit instruction
The Git Workflow rule's "no auto-commit" guard was generic enough that a
hook reading it blocked /wow-addon:commit even after the skill's own y
confirmation. Add a "What counts as explicit instruction" sub-list naming
/wow-addon:commit (and any future user-invoked commit slash command) as a
valid trigger. Pull "Never auto-push" into its own bullet so the policies
can't conflate; pushing is still gated separately.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 75617307ff82cbfc2ef2187168df2396eee0843c
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 09:33:58 2026 +0000
Sync docs to current code; drop dead Utils exports
- Rewrite README around KickCD reference: tables for slash commands,
FAQ, troubleshooting, and version history; add Critical settings and
Contributing sections; switch to live CurseForge version badge.
- Re-sync CLAUDE.md and ARCHITECTURE.md to actual code: exact line
counts, add lifecycle exports (RestoreBarPosition, OnProfileChanged,
ResetTickerInterval, lastAbsorb), rewrite class-color note around
the schema's disabledIf knob, document TOC's three Interface
versions and the in-combat OpenOptionsPanel guard.
- Delete unused Utils.PrintLSMList and Utils.ParseColor. Both became
dead code in 1978aaf when /at set <color-path> moved to Schema.lua's
parser; zero callers remain across the repo.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 469ffd1a0187a7ac6b62638211c50d130e529e06
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 07:39:10 2026 +0000
Tidy README: badge URL space encoding + trailing newline
Replace the `%20`-encoded space in the WoW badge URL with `_` (shields.io
treats both as a space, but underscore reads cleaner in source) and add
the missing trailing newline at end of file.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 06a65ee046a675e05376136c1ac6cbe915f5e88a
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 07:25:20 2026 +0000
Normalize line endings to CRLF on disk via .gitattributes
Add a .gitattributes that pins every text file in the working tree to
CRLF regardless of contributor `core.autocrlf` / `core.eol` settings,
and explicitly marks images / fonts / sounds as binary so they're never
line-ending-massaged or text-diffed. WoW expects CRLF in addon source
files and contributors on Linux/macOS would otherwise check out LF.
Renormalize all already-tracked files in one pass (`git add
--renormalize .`) so the index stores canonical LF and the working tree
renders CRLF, ending the historical mix of CRLF-in-index and
LF-in-index files.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 1978aaf373b83b16e058166c3e97699b904afc28
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 07:12:26 2026 +0000
Make settings schema-driven; rewrite slash dispatcher around it
Single flat array AddonTable.Schema is now the source of truth for every
user-facing setting. Each Options/<page>.lua declares its rows via
RegisterSchemaRows; build() returns BuildPageOptions(pageKey) which
assembles an AceConfig options table from the schema (groups by
row.group, sorts by row.order). The same schema feeds /at list,
/at get <path>, /at set <path> <value>, /at reset <page>, /at resetall.
SlashCommands.lua adopts the Ka0s KickCD COMMANDS-table pattern: name +
description + handler tuples iterated for help and looked up for
dispatch. Per-setting subcommands like /at width and /at color are
removed in favor of /at set <path>; /at list makes the new paths
discoverable. Help, profile management and dev/diagnostic commands
(debug, update, test) are kept.
Schema row knobs: inverse=true flips a bool's UI sign (hidden -> Show
Bar); disabledIf="<sibling>" greys out a color picker when the named
toggle is on; onChange defaults to UpdateBarAppearance with explicit
overrides for updateInterval (RestartUpdateTicker) and hidden
(refresh + lastAbsorb reset).
Adding a new option is now a single schema row in some
Options/<page>.lua — both the panel widget and the /at <path> surface
are wired automatically.
Also: docs (CLAUDE.md, ARCHITECTURE.md, README.md) updated for the new
pattern; CLAUDE.md gains a Git Workflow section codifying the no
auto-commit / no auto-bump rules.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 73e266f122f0c1ccdfddf4c682430b5a5880c8cd
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 05:32:03 2026 +0000
Split settings into multi-page Blizzard subcategories
Replace the ~950-line single-pane OptionsPanel with a thin registration
shell and five declarative AceConfig sub-pages (General, Bar, Border,
Font, Profiles). Pages are registered via AceConfigDialog:AddToBlizOptions
under an empty top-level "Ka0s Absorb Tracker" category; /at config
opens the General sub-page.
Bundle AceConfig-3.0, AceGUI-3.0 and AceDBOptions-3.0 (for the standard
profile-management UI). Add a minimal in-tree AceGUI-3.0-Shared
MediaWidgets so LSM dropdowns get inline preview swatches; widget type
names match upstream so the real lib can replace it cleanly later.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 4bee307adad03112430bb8c54c96f2b0e09a5fae
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri May 1 21:22:43 2026 +0000
Document slash-command and chat-output changes; add ARCHITECTURE.md
- New ARCHITECTURE.md covers module load order, AddonTable bus,
per-module responsibilities, data/settings flow, and conventions.
- README updates the Opening Settings and Slash Commands sections
for /at config (open panel) vs /at (help), and notes the cyan [AT]
prefix and yellow/white help coloring.
- CLAUDE.md picks up new line counts, adds Print/OpenOptionsPanel to
the exports list, and gains Key Pattern entries for the chat-output
pipeline and the slash dispatcher.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 3052f64b602133d6e22c049550d5425d771b4eed
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri May 1 21:11:30 2026 +0000
Centralize chat output through a cyan [AT] prefix helper
- Add AddonTable.Print in Utils.lua and shadow print() in each module
so every chat line is prefixed with cyan |cFF00FFFF[AT]|r
- Switch /at (no args) to print help; add /at config to open the panel
- Color-code help rows: yellow command, white explanation via PrintCmd
commit a63920fb0e3350511525b89a8fdfa2facff4c183
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri May 1 20:42:28 2026 +0000
Prefix settings panel name and heading with "Ka0s"
Aligns the in-game settings category and panel title with the addon's
"Ka0s Absorb Tracker" branding already used in the addon selector.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit d358d56813bedade97d69650c48efabe27e9744b
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri May 1 20:27:47 2026 +0000
Bump to v1.7.0 with new branding, LICENSE, and media assets
- TOC: bump to 1.7.0, add DefaultState/Category/X-License metadata, refine Notes
- README: add shields/badges, swap to v2 logo, reformat bullets and slash command tables
- Add MIT LICENSE file
- Add media/ with logo and screenshots
- Normalize line endings across remaining Lua/MD files
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>