promotional bannermobile promotional banner

Ka0s KickCD

Tracks interrupt + CC cooldowns on a movable icon grid

File Details

1.1.0-release

  • R
  • May 3, 2026
  • 4.66 MB
  • 43
  • 12.0.5+2
  • Retail

File Name

KickCD-1.1.0-release.zip

Supported Versions

  • 12.0.5
  • 12.0.1
  • 12.0.0

tag 23d1e42f7d2e3a06bb5abe2b2366ee4d3d2fecab 1.1.0-release
Author:    Tushar Saxena <tushar.saxena@gmail.com>
Date:    Sun May 3 23:01:03 2026 +0530

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

    Docs: standardize README version history with dates and concise notes

    Rebuild the Version History table around tagged x.y.z-release tags:
    add a Date column sourced from tag commit dates, collapse 1.0.0 into
    a feature-themed summary, and replace the bullet-list 1.1.0 entry with
    a single-paragraph summary of changes since 1.0.1.

commit b4ebfdc82f769ed37609c75086ed61a64a858df5
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 09:52:03 2026 +0000

    Release: bump version to 1.1.0

    Headlines since 1.0.1: vendored LSM dropdown widgets with previews and
    first-run defaults; KickCD_COMBAT_STATE bus message + PLAYER_REGEN_*
    consolidated in core/State.lua; UNIT_SPELLCAST_* filtered to target via
    private dispatch frames; OpenSettings combat-lockdown gate now applies
    to every entry point; settings panel breadcrumb separator switched to
    an inline atlas chevron; review M1–M5 cleanup, smoke-test suite, and
    doc drift fixes.

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

    Docs: sync slash-dispatch combat-lockdown gate location

    OpenSettings now hosts the combat check directly (not the /kcd config
    callback), prefers KickCD.State.inCombat over InCombatLockdown(), and
    clears the deferred-retry counter on a hit. Update the prose so the
    doc matches the post-791c349 implementation.

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

    Settings: replace pipe breadcrumb separator with atlas chevron

    The "Ka0s KickCD | <Page>" header used a literal pipe glyph, which
    looks harsh and depends on whatever font the FontString resolves to.
    Swap to an inline atlas (|A:common-icon-forwardarrow:16:16|a) so the
    separator is a real texture — font-agnostic, locale-safe, and a
    nicer visual breadcrumb cue.

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

    Settings: gate OpenSettings on combat lockdown at the function

    Move the InCombatLockdown check from the /kcd config callback into
    KickCD:OpenSettings so every entry point (slash, deferred retry, future
    callers) shares the gate. Prefer KickCD.State.inCombat (regen-event
    flag, leads InCombatLockdown by a frame) and fall back to
    InCombatLockdown() when State isn't loaded yet.

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

    Reviews: rename artifacts to ordered prefix; sync-docs drift fixes

    - Reviews: rename REVIEW_*.md → 0N_*.md under reviews/2026-05-02/
      (cross-links updated in 02/04/05).
    - Sync-docs (post-M3/M5): CLAUDE.md doc-index 4 → 5 messages;
      docs/data-flow.md mentions KickCD_COMBAT_STATE + GetModule fallback;
      docs/message-bus.md and docs/module-map.md route Castbar through
      KickCD:GetModule("IconGrid") and note the UNIT_SPELLCAST_* unit filter.

commit ba9677d89bb90413eb888c0e0c748486a91f6ee9
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 06:37:46 2026 +0000

    Review: add 2026-05-02 smoke-test checklist + final summary

commit 6e490d6ad9e98aa1dfc6a2870e4e54c6c73093a9
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 06:17:46 2026 +0000

    Review M5: clarify /kcd reset; route Castbar through GetModule(IconGrid)

commit 378cd401262ce5eeb045eff3b557082d0c42fa02
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 06:14:50 2026 +0000

    Review M4: filter UNIT_SPELLCAST_* to target via private dispatch frames

commit b6cf64305fe941c5a6dc2e5e121fa3b54c5a0104
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 05:25:51 2026 +0000

    Review M3: consolidate PLAYER_REGEN_* in State; add KickCD_COMBAT_STATE

commit 93528ab648392ee7def3e6d9472a4f3c06a3bc04
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 05:00:58 2026 +0000

    Review M2: drop version stamps, doc invariants/contracts, perf TODOs

commit a108787661e0edeb2b3f8336999837e10a62fd8c
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun May 3 04:46:48 2026 +0000

    Review M1: drop dead Settings exports/shims, _maxC; tidy locale keys

commit 3f783eef24772be1bbf96aac01859685cf9e1dc7
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 21:27:33 2026 +0000

    Review: add 2026-05-02 wow-addon review artifacts

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

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

    Util: drop dead RGB/Blend/Debounce exports; sync-docs drift fixes

    Dead exports
    - core/Util.lua loses RGB(r,g,b,a), Blend(a,b,t), and Debounce(ms,fn).
      None of the three had any in-tree callers; module-map.md flagged
      them as "available but uncalled" since commit 0d27d9f. Throttle is
      the only coalescer the addon actually uses (Spells editor commit +
      ColorPicker drag-to-commit), so the section header collapses from
      "Throttle / Debounce" to just "Throttle" and the comparative-
      rationale paragraph folds into Throttle's docstring. File-header
      bullet list updated to match.
    - docs/module-map.md: drop the parenthetical that introduced
      RGB / Blend / Debounce as available primitives, and the tree-
      diagram /Debounce slug.

    Sync-docs drift fixes
    - README.md "Critical settings" section: the trailing claim that
      "the same 4 values drive the per-icon glow trigger" was wrong.
      Glow-trigger values are { never, always, target_casting,
      target_casting_interruptible }; visibility values are { always,
      in_combat, target_casting, target_casting_interruptible }. Three
      overlap, the fourth differs (never vs in_combat). Reworded to
      spell that out.
    - docs/saved-variables.md: opening paragraph claimed Database:Init
      calls AceDB:New("KickCDDB", DEFAULTS) "with no third argument" -
      actual call passes \`true\` as the third argument, which is exactly
      why every character lands on the shared "Default" profile (the
      paragraph's own claim). Updated the call shape and dropped the
      brittle core/Database.lua:508-512 line cite.
    - docs/castbar.md: "Friendly-target override" paragraph referred to
      Compat.effectiveNotInterruptible as if it were on the public
      Compat.* surface; the function is \`local\` inside core/Compat.lua
      and consumers always go through Compat.GetCastingInfo /
      GetChannelInfo. Reworded to describe it as a Compat-internal
      helper.

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

    Docs: add comprehensive smoke-test suite + cross-link top-level docs

    There is no automated test harness, and the prior in-game spot-check
    list buried at the bottom of docs/testing.md covered only a handful of
    surfaces. docs/smoke-tests.md is now the canonical end-to-end suite —
    18 scenarios spanning cold install, /reload integrity, master enable,
    the four-mode visibility matrix, lock/drag, icon grid layout (anchor x
    grow x dimensions + truncation warning), cast bar (free / anchored /
    auto-size / orientation / per-state), cooldown + glow (interrupt fire,
    GCD-vs-real-CD curve, per-icon trigger), spec / talent / pet rebuilds,
    spell-list editor + slash parity, settings panel parity (valueGate +
    clamp + color + ColorPicker throttle), every reset path, profiles,
    combat gating, every /kcd debug subcommand, 12.0 secret-value safety,
    schema-validator boot output, and LSM dropdown rendering. Each
    scenario has setup / steps / pass criteria; closes with a "when to
    run which subset" guide for pre-commit, settings edits, spell-list
    edits, and pre-release.

    docs/testing.md keeps its slash + debug coverage matrices (the
    reference the smoke tests lean on) and now points at smoke-tests.md
    instead of duplicating the spot-check list.

    CLAUDE.md and ARCHITECTURE.md doc indexes gain a smoke-tests.md row
    alongside testing.md; the "No automated tests" line in CLAUDE.md
    points at both files. README.md gets a brief Testing section at the
    bottom (between Issues and Version History) pointing at the suite.

commit eaf30c2a1b771a84b0d43c07b169287b96eb2264
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 17:57:58 2026 +0000

    Vendor upstream LSM widgets; fix dropdown selection; first-run defaults

    LSM widget pack
    - Replace homegrown libs/AceGUI-3.0-SharedMediaWidgets/widget.lua with
      the canonical r65 multi-file lib (widget.xml + prototypes.lua +
      BorderWidget / FontWidget / StatusbarWidget / BackgroundWidget /
      SoundWidget). KickCD.toc loads widget.xml.
    - Add core/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 upstream's
      AGSMW:GetBaseFrameWithWindow), and re-anchor frame.label /
      frame.DLeft to the frame's left edge so the empty 42px slot
      collapses next to neighbouring sliders / checkboxes. Lives in
      addon code so future lib refreshes don't blow it away. Mirrors the
      pattern used by Ka0s Absorb Tracker.
    - settings/Panel.lua makeDropdown: explicitly call dd:SetValue(value)
      inside the OnValueChanged handler. Upstream LSM widgets fire the
      event from ContentOnClick WITHOUT first calling SetValue (they
      assume AceConfigDialog will re-render the panel after \`set\`); our
      canvas-layout panel doesn't re-render, so the LSM widget's display
      was staying stale even though Helpers.Set was writing the value
      through. Without this, every LSM dropdown click looked like a
      no-op. Idempotent for the standard AceGUI Dropdown path (which
      already SetValue'd before firing).

    First-run defaults
    - core/Database.lua: change AceDB:New("KickCDDB", DEFAULTS) to
      AceDB:New("KickCDDB", DEFAULTS, true). The omitted-third-arg form
      resolves to charKey (per AceDB-3.0.lua:279), which contradicted the
      docs and meant every fresh character landed on its own profile;
      passing \`true\` makes AceDB use the shared "Default" profile as
      initially advertised. Existing characters keep their selected
      profile.
    - core/Database.lua: anchors.icons / anchors.castbar default y
      changes from -180 / -260 to 200 (CENTER + 0, 200) so a new install
      lands above screen centre instead of below. Cast bar anchorMode
      default is PRIMARY so the cast bar follows the icon grid out of
      the box; the new FREE-mode default only kicks in once the user
      opts into it.
    - settings/Spells.lua: the Spells editor's class+spec selector now
      seeds to the player's current class+current active spec on every
      fresh open of the Settings UI (was: first spec alphabetically).
      Implementation uses a freshOpen flag re-armed in OnHide only when
      SettingsPanel:IsShown() is false, so tab-swaps inside an open
      Settings session preserve whatever spec the user picked from the
      dropdown.

    Doc sync
    - ARCHITECTURE.md, docs/module-map.md, docs/settings-panel.md note
      the vendored upstream lib + LSMPatch and the new closed-state
      preview behaviour (Statusbar / Font keep inline previews; Border
      is text-only).

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

    Settings: open parent page with tree expanded; drop LSM border swatch

    - /kcd config now lands on the Ka0s KickCD parent page (logo +
      slash-command list) instead of the General subcategory, and forces
      the subcategory tree open in the left nav so all five sibling tabs
      are visible. Implementation reaches into
      SettingsPanel:GetCategoryList():GetCategoryEntry(main):SetExpanded
      inside a pcall — Blizzard's CategoryList only auto-expands a
      parent's tree when one of its children is selected, never on
      parent self-select. Approach mirrors the working pattern from the
      Ka0s Absorb Tracker addon.
    - LSM30_Border closed-state and popup-item swatches are now hidden
      outright. The corner-tile preview read as a hollow box overlapping
      the dropdown label on ornate borders, and the live in-game border
      on the icons / cast bar is the real preview anyway. Statusbar and
      font swatches are untouched. SWATCH_W also dropped from 80 to 40
      so the remaining swatches free up label width and stop overflowing
      on narrow columns.
    - Doc paragraphs in midnight-quirks.md and slash-dispatch.md
      rewritten to match the new SetExpanded flow.

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

    Docs: list AceGUI-SharedMediaWidgets + flag uncalled Util helpers

    Sync drift surfaced by /wow-addon:sync-docs.

    - AceGUI-3.0-SharedMediaWidgets is loaded by KickCD.toc and powers
      the LSM30_* dropdowns in the Cast bar / Icons panels, but the
      External dependencies sections in ARCHITECTURE.md and
      docs/module-map.md omitted it.
    - core/Util.lua's RGB / Blend / Debounce helpers ship as primitives
      but currently have no in-tree callers; module-map.md was listing
      them alongside live helpers (Throttle, Unpack, DeepCopy, ...) as
      if they were active responsibilities. Reword to mark them as
      available-but-uncalled so the responsibility map matches reality.

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

    Settings: render logo + slash-command list on parent page

    Adds a static splash to the previously-empty Ka0s KickCD parent
    canvas: a 300x300 left-aligned logo, the addon's one-liner pulled
    from the same locale string used in the TOC, an AceGUI Heading
    separator titled "Slash Commands", and the slash-command list
    sourced from the new published KickCD.COMMANDS so /kcd help and
    this UI never drift. Page renders through ensureScroll so it
    inherits the always-visible vertical scrollbar used by every other
    tab.

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

    Docs: drop README Contributing section, fix AceDB-scope claim

    docs/saved-variables.md and docs/scope.md previously said the AceDB
    default scope was per-character (the "true" third arg to AceDB:New).
    That was wrong — Database:Init calls AceDB:New with no third argument,
    so every character starts on the shared "Default" profile, matching
    the README. Caught during /wow-addon:sync-docs audit.

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

commit 80a3f4bc180a99bc4e58c5ccca30bd9884015c8a
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 10:18:58 2026 +0000

    Docs: collapse CLAUDE_/ARCHITECTURE_ split, expand root index docs

    Adopt Ka0s Consumable Master's doc layout: substantive root CLAUDE.md
    and ARCHITECTURE.md that carry the hard rules / invariants directly,
    plus topic-based audience-neutral docs/ files (no CLAUDE_ / ARCHITECTURE_
    prefix). Merges 19 → 13 docs/ files: paired files covering the same
    topic (message-bus, settings-panel, conventions) become single canonical
    files; tiny stubs (frame-mixin, purpose, boot-sequence) fold into their
    natural homes (midnight-quirks, scope, module-map). Source-file comments
    updated to reference the new filenames; no code behavior touched.

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

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

    Workflow: clarify /wow-addon:commit counts as explicit commit ask

    * Added a sub-bullet under the no-auto-commit rule: a user-issued
      /wow-addon:commit invocation is itself an explicit ask to stage +
      commit; the skill's y/n/edit confirmation continues that
      authorization without an additional out-of-band "yes commit"
      instruction. The prior wording was absolute enough that I'd been
      blocking the skill's intended UX by demanding a separate
      confirmation even after y was accepted.
    * Carve-out is scoped to /wow-addon:commit only — every other
      wow-addon skill (diff / sync-docs / new-addon / version-bump)
      edits the working tree at most, never the index, so the
      no-auto-commit rule still applies inside them. The trigger that
      satisfies the rule is the user invoking the skill, not a skill
      being available.
    * Same carve-out mirrored into the auto-memory feedback file
      (~/.claude/.../memory/feedback_no_auto_commit.md, untracked, not
      in this commit) so the exception loads alongside the original rule
      for every session.

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

commit 96512ee9596032bdc79e2826da77b98471cbe52e
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 09:34:38 2026 +0000

    Docs: sync drift, restructure README to tables, retire legacy/

    Three docs-only threads in one commit:

    * Sync drift accumulated since the last sweep. visibility default
      literal "always" → "target_casting_interruptible" in
      ARCHITECTURE_SAVED_VARIABLES.md; ApplyConfig → Reskin / RenderCast
      split (CR-17) reflected in CLAUDE_CASTBAR.md and
      ARCHITECTURE_MESSAGE_CONTRACT.md; drag-stop → KickCD_CONFIG_CHANGED
      dispatch (CR-34) added to the bus contract sender list and
      ARCHITECTURE_DATA_FLOW.md (also rewrote the "user input flows
      through Helpers.Set" claim to call out drag as the exception);
      anchor-token migration to 13-point form in
      ARCHITECTURE_SAVED_VARIABLES.md and CLAUDE_ICON_GRID_LAYOUT.md
      (was "12 anchor points" / RIGHT_CENTER); Helpers.Throttle →
      Util.Throttle in ARCHITECTURE_MODULE_MAP.md; README cast-bar
      anchor defaults TOP_LEFT / BOTTOM_LEFT / Y = 1 (was
      TOP_MIDDLE / BOTTOM_MIDDLE / Y = 8); README grid-truncation
      warning correctly described as unconditional, not Debug-gated;
      README visibility-mode default callout flipped to the right row.

    * Restructure README for end-user readability. Slash commands,
      Settings panel, Visibility modes, FAQ, Troubleshooting, and
      Version History all converted from prose / bullet lists to tables.
      Pulled internal-mechanism jargon (curve evaluation, two-step
      alpha gate) out of the FAQ; details still live in
      CLAUDE_*.md / ARCHITECTURE_*.md. Added a Contributing section
      pointing at ARCHITECTURE.md and CLAUDE.md.

    * Retire docs/legacy/v1 (original design — TECHNICAL_DESIGN /
      EXECUTION_PLAN / REQUIREMENTS / RESEARCH / UAT) and docs/legacy/v2
      (PE review — PE_REVIEW / CHANGES_PE_REVIEW / EXECUTION_PLAN_PE_REVIEW);
      every change they describe has landed. Deleted
      docs/CLAUDE_DOCS_STALE.md (its sole purpose was to flag those trees
      as outdated) and the matching CLAUDE.md index entry.
      ARCHITECTURE.md no longer references legacy/v1/TECHNICAL_DESIGN.md.

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

commit b24007092cda99a2ab245d77d18f5b592fbb4677
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 07:39:09 2026 +0000

    Settings + README: breadcrumb sub-page headers, fix shields badge URL

    * settings/Panel.lua buildHeader — sub-page headers now render as
      "Ka0s KickCD  |  <Page>" (two spaces each side of the separator).
      Parent panel opts out via opts.isMain so it doesn't read
      "Ka0s KickCD  |  Ka0s KickCD". The Blizzard left-tree label
      (panel.name) stays unprefixed.
    * README.md — fix the WoW shields.io badge: replace %20 with _ in the
      badge URL so the rendered label doesn't display "%20" inline.

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

commit 53cddfd869ff1373fef2cc7c6e1ba33a9abb7f3b
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 07:25:43 2026 +0000

    Workflow + repo: forbid auto-stage in CLAUDE.md, add .gitattributes for CRLF

    * CLAUDE.md — extended the "Workflow rules" bullet from no-auto-commit/
      push to also forbid auto-stage (`git add` / `git stage`) and any
      index- or working-tree-mutating command (`git restore --staged`,
      `git checkout -- <file>`). Inspection should use read-only commands
      (`git status` / `git diff` / `git diff --stat`).
    * .gitattributes — `* text=auto eol=crlf` enforces the project's CRLF
      convention regardless of per-developer `core.autocrlf`. Auto-detected
      binaries (PNG / JPG in media/, etc.) are left alone.

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

commit 8194a7ee3d4c5f8766cf89912176ccc701da3805
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 07:12:31 2026 +0000

    Workflow + version sync: codify no-auto-commit / no-version-bump, stamp 1.0.1

    * CLAUDE.md — new "Workflow rules" section recording two standing
      rules: never auto-commit / auto-push, and never bump the version
      without explicit instruction.
    * core/KickCD.lua — sync KickCD.VERSION to "1.0.1" so the in-game
      stamp matches the TOC and README (already at 1.0.1).

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

commit 6b734021dfd4f362accc01eea5614f727411ca45
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 06:00:24 2026 +0000

    Settings: bundle LSM swatch widgets, gold-tint header divider, unify parent panel

    * libs/AceGUI-3.0-SharedMediaWidgets/widget.lua — vendored from
      AbsorbTracker; registers LSM30_Statusbar/Border/Font with inline
      preview swatches.
    * settings/Panel.lua makeDropdown — dispatches to the matching LSM30_*
      widget when a schema row carries lsm = "<media-type>". 7 rows tagged
      across icons + castbar.
    * settings/Panel.lua buildHeader — divider now SetVertexColor's to the
      title FontString's color so it tracks the GameFontNormalHuge gold.
    * settings/Panel.lua RegisterPanel — parent registers as canvas layout
      (built via Helpers.CreatePanel) so the addon's root page wears the
      same gold-title + gold-divider header as every subcategory.

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

commit c7aab1bbfa784efaa603971720004e327dcc0bc2
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat May 2 05:40:59 2026 +0000

    Icons: add LSM border-style dropdown and reflow Border group

    Reorder the Icons → Border rows so the panel renders [Show border] |
    [Border color] / [Border style] | [Border thickness], with the new
    borderTexture field plumbed through to a per-icon BackdropTemplate
    edgeFile (mirrors the castbar's LSM border surface).

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

commit 0c346e509dc9c2569dbbd1c08722485c9ee49295
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Fri May 1 21:21:33 2026 +0000

    Docs: sync slash dispatch and conventions to [KCD] prefix

    Document the cyan [KCD] chat prefix (added by Util.print), the /kickcd long-form alias, and the yellow/white color scheme used in help listings. Adds a CLAUDE_CONVENTIONS rule requiring chat output to flow through Util.print so the prefix stays single-source.

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

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

    Slash: unify [KCD] cyan prefix, color help listings

    Route every chat line through Util.print with a single cyan [KCD] prefix (strips redundant per-call-site KickCD prefixes that produced double banners). Color slash invocations yellow and descriptions white in /kcd, /kcd debug, and /kcd spells help listings. Schema errors now flow through Util.print so they share the prefix.

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

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

    Replace placeholder media with screenshots and logo, bump to 1.0.1

    Drop the placeholder icon.tga / statusbar-flat.tga / README.txt and ship
    real screenshot gallery, logo, and demo gif under media/screenshots/.
    README reformatted and updated for 1.0.1.

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