Ka0s Absorb Tracker

Display your total absorb shield value in a clean, customizable bar interface.

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>