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>

