File Details
1.3.0-release
- R
- May 3, 2026
- 1.89 MB
- 68
- 12.0.5+2
- Retail
File Name
PrettyChat-1.3.0-release.zip
Supported Versions
- 12.0.5
- 12.0.1
- 12.0.0
tag 38df802ec77386700eab414c24e32904cbce47e1 1.3.0-release
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 23:01:11 2026 +0530
commit c1b19212873ab9f0c2ad32e691584604b28019ff
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 17:30:11 2026 +0000
README: standardize Version History from git release tags
Rewrite each release's entry against the actual commits between its
x.y.z-release tag and the previous one, add the missing 0.0.3 row,
and switch the table to a uniform Version | Date | Highlights shape.
commit 9b026eaa726cb0101aa9d0f7bfa45e85bf3f5c7c
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 09:52:25 2026 +0000
Bump to 1.3.0
User-visible changes since 1.2.0: filter subcommands for /pc test
(all, category <name>, formatstring <NAME>) and /pc list (category,
formatstring); /pc test output redesigned as a per-category
Original-vs-Formatted diff with the [PC] prefix on every line;
sub-page header breadcrumb separator switched from a pipe glyph to
an inline atlas chevron (font-agnostic, locale-safe); combat-lockdown
guard hardened to live inside OpenConfig itself so any caller is
gated; settings panel rebuilt on the modern canvas-layout framework
with per-string row restyle, /pc config auto-expand, and a logo +
slash-commands landing page; review-driven internal cleanup (single
write path tightened around Schema.Set, dead exports removed,
smoke-test suite added).
commit 81ea93141124fdab90c43dd492111a33487cc1a0
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 09:45:24 2026 +0000
Sync docs to atlas-chevron breadcrumb and OpenConfig combat guard
settings-panel.md breadcrumb example now shows the chevron form with
the inline-atlas escape and a fallback-atlas note. smoke-tests.md
T-22 rewritten to test the chevron texture (with an atlas-retired
failure mode), and T-37 extended to exercise the programmatic
OpenConfig path now that the combat guard lives inside the function.
commit 8f80d9b5b9c22ffd519ae76a2dc051549cea0184
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 09:38:44 2026 +0000
Settings: replace pipe breadcrumb separator with atlas chevron
The "Ka0s Pretty Chat | <Page>" sub-page header used a literal pipe
glyph, which depends on whatever font the FontString resolves to and
reads harshly. 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 clearer visual breadcrumb cue. The parent page (opts.isMain)
still renders the unprefixed title, and the Blizzard left-tree label
(panel.name) is unchanged so sub-pages indent cleanly under the parent.
commit 88e15111aefee0c43f309adae8bdfc00fdcbfe19
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 09:27:24 2026 +0000
Move combat lockdown guard into OpenConfig itself
Any caller of PrettyChat:OpenConfig — slash dispatcher, another addon,
a /run script, future internal code paths — is now gated identically.
Previously only the /pc config slash body checked InCombatLockdown,
so a programmatic OpenConfig() call during combat would taint the
Settings panel for the rest of the session. Message also enriched to
explain why ("Blizzard's category-switch is protected") and recoloured
grey to match OpenConfig's other failure-mode notices.
commit f200220e91bb17d481970d0b36febc4f22c136a1
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 09:10:37 2026 +0000
Filter /pc test and /pc list by category or format string
Power-user surface for working on a single category or format string
without scrolling 81 sample blocks. /pc test now accepts `all`
(no-op alias), `category <name>` (case-insensitive + prefix match),
and `formatstring <NAME>` (uppercased, validated against
PrettyChatDefaults; cross-registered globals print under each
category). /pc list gains two reserved sub-keywords: `category`
prints sorted category names, `formatstring` prints every
Category.GLOBALNAME pair sorted by category then by name. The
parent settings page reads ns.COMMANDS directly, so the new
subcommand syntax surfaces there alongside /pc help with no
Config.lua change.
Docs synced: README, CLAUDE, ARCHITECTURE, scope, slash-commands,
settings-panel, module-map, smoke-tests (new T-31a, T-52a;
T-52 expectation fixed for the per-category prefixed output).
commit 5c6c1cd95a002256947dfa3d38e5da64f2737d35
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 08:10:22 2026 +0000
Restructure /pc test output as per-category Original vs Formatted diff
Test() now groups by category (gold "Category:" header) and prints
each string as a Name / Original / Formatted block with green labels,
so users can compare their override against Blizzard's snapshot side
by side. Every line carries the [PC] prefix so the report stays
distinguishable from real chat interleaved with it.
Also fix a regression: cmd/note color helpers were declared below
Test() and resolved to globals (nil), erroring as soon as the Test
button or /pc test ran.
commit b9f898f30bc3c6fed5ea7180bac93e6cb9e2f678
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 07:11:52 2026 +0000
Reorganize 2026-05-02 review folder + sync addon docs
Review folder:
- Renumbered the review artifacts to a 0N_TOPIC.md convention so the
workflow order (findings → proposed changes → smoke tests →
execution plan → final summary) is obvious from the directory listing.
- Added 03_SMOKE_TESTS.md — milestone-scoped checklist for verifying
commit 8326ad3 (M0–M8) in-game, with new probes for positional %n$
args, prefix-match in ResolveCategory, cross-registered tooltip,
lean SavedVariables shape.
- Added 05_FINAL_SUMMARY.md — closure document with per-milestone
change inventory, 18 resolved findings, deferred no-op (F-030),
and the outstanding follow-ups.
- Cross-references inside 02 and 04 updated to the new filenames.
Doc sync (leftover drift from the M2/M4 refactors):
- ARCHITECTURE.md, docs/file-index.md, docs/module-map.md,
docs/override-pipeline.md: replace stale "row set() runs
ApplyStrings/NotifyPanelChange" / "Config.lua overrides
Schema.NotifyPanelChange" phrasing with the post-refactor reality
(Schema.Set owns the side effects; Config.lua registers refreshers
via Schema.RegisterRefresher).
- CLAUDE.md + docs/module-map.md: add ns.Config.RegisterPanels to the
namespace-publishing tables — M3 added the export but no doc had
caught up yet.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 8326ad3579435a8b301b0fa6d4214c6e48eec7e0
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sun May 3 04:47:43 2026 +0000
Apply 2026-05-02 review milestones M0–M8
Implements reviews/2026-05-02/REVIEW_EXECUTION_PLAN.md:
- Centralize chat colors in ns.Const.Color; PrettyChat.lua + Config.lua
reference one source instead of duplicating |c…|r escapes.
- Schema.lua owns NotifyPanelChange dispatch via Schema.refreshers +
RegisterRefresher; drops the dead AceConfigRegistry path. Config.lua
registers refreshers on first OnShow instead of replacing the function.
- Panel registration moved from a PLAYER_LOGIN bootstrap frame into
PrettyChat:OnEnable via ns.Config.RegisterPanels.
- Row set closures are pure DB writes; Schema.Set owns ApplyStrings +
NotifyPanelChange so a future batch-write applies once per batch.
- Drop AceConfig-3.0 from PrettyChat.toc — no live consumer remains.
- buildSampleArgs honors positional %n\$type for non-enUS locales; Test
routes through ns.RenderSample and emits a grey line per broken row.
- Drop \`enabled = true\` from defaults.profile; document the nil → true
read-helper contract in docs/schema.md.
- Per-string Enable tooltip notes "Shared with <other category>" for
LOOT_ITEM_CREATED_SELF[_MULTIPLE].
- Misc: GlobalStrings TOC Interface synced; formatValue uses %q;
OpenConfig surfaces Settings.OpenToCategory failure + one-time
expand-failure notice; Schema.ResolveCategory does unambiguous prefix
match; AceGUI scrollbar internals listed in patch header.
- Docs synced (CLAUDE, ARCHITECTURE, README, docs/*) to the new state.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit b559cd013f35dfd665099286c426fb6f4bf5290c
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 21:27:29 2026 +0000
Add 2026-05-02 review artifacts
Findings, proposed changes, and execution plan from /wow-addon:review.
0 critical, 3 high, 9 medium, 17 low. Top items: dead
Schema.NotifyPanelChange body (F-001), duplicate PLAYER_LOGIN
bootstrap in Config.lua (F-002), and buildSampleArgs missing
positional %n$s/%n$d support (F-003).
commit b5f3fa8144eadea4437802c71d893e36d9c9711f
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 18:43:50 2026 +0000
Drop dead exports (AllRows, GlobalStringSearch, subFrames)
Three exports identified by the last sync had zero callers in the
addon's own .lua files:
- Schema.AllRows() -- only touched as a presence-check sentinel
in schemaReady(); never actually called. Switched the sentinel
to ns.Schema.RowsByCategory (a function with real callers, so it
can't drift dead) and removed the AllRows definition.
- ns.GlobalStringSearch (entire GlobalStringSearch.lua) -- the
search API has been kept "for future debug tooling" since 1.0,
but no slash command or panel widget uses it. Config.lua reads
PrettyChatGlobalStrings directly. File deleted; removed from
PrettyChat.toc. The GlobalStrings/ data chunks and the
LoadOnDemand sub-addon TOC stay in place -- only the wrapper
module goes.
- PrettyChat.subFrames -- a per-category dict populated by
Config.lua but never read. Dropped (the subcategory return
value from Settings.RegisterCanvasLayoutSubcategory is now
discarded).
Docs synced across CLAUDE.md, ARCHITECTURE.md, and docs/ to
reflect the trimmed surface. The "## The search API" section in
docs/global-strings.md is gone; the dual-load story note is
updated to describe the LoD path as dormant rather than guarded
by a live EnsureLoaded caller.
Public surface of ns is now: Print, Schema, Const, RenderSample,
COMMANDS. Schema's public functions are now all called at runtime.
commit 13324246bf55d0b4ec8a4224a6beaf0517651f75
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 18:09:49 2026 +0000
Add smoke-test suite in docs/smoke-tests.md
New docs/smoke-tests.md ships a comprehensive manual in-game test
suite: a 4-step quick recipe for routine work plus a full suite of
~30 tests across six groups -- Boot/load (B), Override pipeline (O),
Settings panel (S), Slash command surface (L), Cross-surface sync
(X), and Persistence + edge cases (P). Each test has an ID, a Why
line stating the invariant it guards, and Setup/Steps/Expected
sections. A "When to run what" matrix maps code-touch sites to the
test groups that exercise them.
The previous 4-step recipe in common-tasks.md "Verify a behavior
change in-game" is replaced by a one-line link to the new doc; the
section heading is preserved so the existing CLAUDE.md anchor isn't
orphaned.
Cross-refs added: CLAUDE.md hard-rules paragraph + doc index;
ARCHITECTURE.md doc index; README.md "Issues and feature requests";
docs/file-index.md "Top-level docs"; docs/global-strings.md
post-patch regen procedure (run the full suite after a re-split,
since a client patch can shift behavior beyond just the key list).
commit 823a9a2c72ffc7cb8b24d1a1dfbca4cc8fed35f1
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 16:20:14 2026 +0000
Restyle per-string row, auto-expand /pc config left tree
Per-string block: rewritten to a Heading widget + 40/60 two-column
grid. Left column carries Enable / GLOBALNAME caption / Reset; right
column carries labeled disabled-Original / editable-New / disabled-
Preview EditBoxes. The Preview uses InputBoxTemplate so its
FontString renders WoW color escapes natively, preserving format-
string formatting. Reset is now always visible (clicking when value
already equals the default is a harmless no-op via the schema's
auto-clear).
/pc config expansion: PrettyChat:OpenConfig now calls a local
expandMainCategory helper that walks SettingsPanel:GetCategoryList()
:GetCategoryEntry(cat):SetExpanded(true) inside a pcall, mirroring
the pattern from AbsorbTracker. The user lands on the parent landing
page with every per-category sub-page already unfolded in the left
rail. Replaces a speculative dual-method attempt that silently
no-op'd because list:SetCategoryExpanded isn't a real method on
SettingsCategoryListMixin.
commit f4575f252206d849673ede30aec3bc2425fcf075
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 15:26:45 2026 +0000
Sync docs to current settings panel state
Catch up README, ARCHITECTURE.md, and docs/ to the post-rebuild
panel: parent page is now a read-only landing (logo + tagline +
slash list, not just a description); per-string rows have a
sample line that appears only when the value differs from the
default plus a per-string Reset button; per-category Defaults
moved to the page header without a popup confirm; only the
global Reset all to defaults keeps the StaticPopup.
Also corrects a handful of pre-existing stale claims: Loot
string count (18 -> 19), the buildCategoryBody rename,
ns.RenderSample export in file-index, and a Schema.AllRows
note that the function is defined but currently uncalled.
commit cd62241a94add332e933e1c873c11c107027f36e
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 15:07:23 2026 +0000
Rebuild settings panel on canvas-layout framework
Move from AceConfigDialog:AddToBlizOptions to
Settings.RegisterCanvasLayoutCategory + AceGUI body. Each page
gets a unified GameFontNormalHuge header with atlas divider and
an optional Defaults button, an always-visible scrollbar gutter,
and a deferred-on-show body render.
Per-string row redesigned: Enable + label, GLOBALNAME caption,
50/50 Original/New EditBoxes, rendered-sample row with a
per-string Reset button shown only when value differs from
default. Sample uses ns.RenderSample, shared with /pc test.
Per-category Defaults moved to the page header (no popup
confirm); StaticPopup confirm kept only for the global Reset
all to defaults on General. Schema.NotifyPanelChange rebound
to a refresher dispatch so /pc set / category toggles / resets
re-sync visible widgets; "General" cascades to every sub-page.
New Constants.lua holds panel layout values; docs synced
across CLAUDE.md, ARCHITECTURE.md, and docs/.
commit c0df552eeb9459b31625343c0554623f9cc5e268
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 14:05:32 2026 +0000
Rebuild parent settings page as logo+commands landing
Replaces the generic description on the top-level Pretty Chat settings
page with TOC title, the v2 logo, the TOC Notes one-liner, and a slash
command listing sourced from ns.COMMANDS so the panel and /pc help can
never drift. PrettyChat.lua publishes ns.COMMANDS for Config.lua to
consume.
Logo is left-aligned by sizing the description widget wider than the
image+200 px threshold AceGUI uses to decide between image-on-top
(centered) and image-on-the-left layouts.
commit 619245c39493947cd906e565dbf3547e5fa26d65
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 10:41:05 2026 +0000
Drop README Contributing section, note shared-globals quirk
The Contributing section in README.md was a thin pointer to
ARCHITECTURE.md; removed per user request. ARCHITECTURE.md is still
linked from the Notes section, which is the natural contributor
entry point.
Restored the LOOT_ITEM_CREATED_SELF / _MULTIPLE dual-registration
quirk under docs/override-pipeline.md. Was documented in pre-slim
CLAUDE.md and got dropped during the doc reorg — both
Loot.LOOT_ITEM_CREATED_SELF.format and Tradeskill's row write to
the same _G[NAME], so pairs() iteration order decides which color
wins. Worth surfacing for future contributors.
commit 8fa6a93543dfcb4ed46b660d68402512efe073ff
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 10:31:15 2026 +0000
Split CLAUDE.md and ARCHITECTURE.md into docs/ chunks
Mirrors ConsumableMaster's doc structure: top-level CLAUDE.md and
ARCHITECTURE.md become short orientation files with a doc-index
table; topic detail moves into nine chunks under docs/ (scope,
file-index, module-map, override-pipeline, schema, settings-panel,
slash-commands, global-strings, common-tasks). Eliminates the
duplication between CLAUDE.md and ARCHITECTURE.md and gives each
topic a single home.
commit e2c19b2d22c28962a7b6ebcfaf46c92961c5b652
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 09:41:29 2026 +0000
Allow /wow-addon:commit as explicit commit instruction
Workflow rule defaulted to "deny without explicit ask" and didn't
recognize the /wow-addon:commit skill's confirmation gate as the
ask, blocking legitimate commits. Carve a narrow exception for
that one skill (and any future similarly-named explicit-commit
skills); plain-language ask still required everywhere else.
commit af61086543dae5c91296521547a114607d088ecc
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 09:34:58 2026 +0000
Sync docs to current state, add ARCHITECTURE.md
- README restructured to KickCD layout; FAQ, Troubleshooting,
and Version History converted to tables; "Critical settings"
collapsed into short "Notes" bullets that link to ARCHITECTURE.
- New ARCHITECTURE.md as the contributor-facing reference;
README "Notes" and "Contributing" both point to it.
- Drift fixes across CLAUDE.md and README.md: Money count 7->8,
Misc 3->2, /pc config combat-refusal documented, /pc test
wording corrected, schema auto-clear-on-default behavior noted.
- GlobalStrings/README.md and CLAUDE.md acknowledge the
dual-load reality (chunks loaded eagerly by main TOC; the LoD
sub-addon TOC is redundant in practice).
commit cadcf3b3cf3efeb6ac9d76088afbc3c26a1b1342
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 07:39:08 2026 +0000
Replace %20 with underscore in WoW badge URL
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit d784c4347b65a9cce401ce963ea16ad6367124e9
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 07:25:52 2026 +0000
Add .gitattributes (CRLF on disk), normalize repo to LF
- New .gitattributes uses `text=auto eol=crlf` to enforce CRLF in
the working tree on every checkout, regardless of contributor
core.autocrlf / core.eol. Binary image extensions explicitly
marked so auto-detection can't munge them.
- Renormalize sweep: vendored Ace3 libs and a few other files were
previously stored as CRLF in the repo blobs. Re-stage them so the
blobs are LF (git's `text` normalization), aligning with the new
attributes. Pure line-ending change — `git diff --ignore-cr-at-eol`
shows zero content drift.
- CLAUDE.md Workflow rule augmented: don't auto-stage either, not
just don't auto-commit. The user controls `git add` and
`git commit` separately.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit e8eb8caef4772c44e987ced4393e22801f419ab5
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 07:12:41 2026 +0000
Add General sub-page with master toggle, Test button, /pc test
- New General sub-page hosts addon-wide controls: Enable PrettyChat
master toggle (General.enabled schema row), Test button, and
Reset All to Defaults (moved from the parent page).
- ApplyStrings restores every Blizzard original when the master
toggle is off, regardless of per-category state. ResetCategory
special-cases "General" to clear db.profile.enabled. ResetAll
also clears the master flag.
- PrettyChat:Test() / `/pc test` synthesizes one sample chat line
per format string by parsing each %[flags][width][.precision]type
conversion and substituting typed placeholders (Sample / 42 / 1.5);
preview ignores enable toggles so it works even when disabled.
- /pc list now dumps every row grouped by category (KickCD-style),
with /pc list <Category> still available as a filter.
- CLAUDE.md gains a Workflow section: no auto-commit, no version
bumps without explicit instruction. Version pinned at 1.2.0;
README changelog consolidated into the 1.2.0 entry.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit bbba3c3eeb52f0057c032beec51ac695b6128f3f
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 06:14:24 2026 +0000
Add schema-driven slash commands (KickCD parity), bump 1.4.0
New Schema.lua builds a flat row list from PrettyChatDefaults at load
time and exposes Get/Set/FindByPath/RowsByCategory/NotifyPanelChange.
Three row kinds — <Cat>.enabled, <Cat>.<NAME>.enabled, <Cat>.<NAME>
.format — give every panel toggle and edit box a dot-path address.
PrettyChat.lua's slash handler is replaced with KickCD's ordered
COMMANDS table pattern: /pc list|get|set|reset|resetall, plus
help/config. Config.lua's widget get/set callbacks now delegate to
ns.Schema, so panel and slash share a single write path; reset paths
fire NotifyPanelChange so an open AceConfig panel re-syncs.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 308fd0583833276235634d296fb488b911c01537
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat May 2 05:32:09 2026 +0000
Restructure settings panel into Blizzard sub-pages, bump 1.3.0
Each category (Loot, Currency, Money, ...) is now its own AceConfig
options table added to the Blizzard panel as a child of "Ka0s Pretty
Chat" via AddToBlizOptions(appName, name, parent), so they appear as
sibling rows in the addon list instead of tabs in the right pane —
giving each category the full pane width. Reflow the per-string layout
to put Original and New format strings side-by-side at relative 0.5
widths for direct comparison (12 elements per set, down from 13).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 872e6b0e243d7cd5dcec6799ed918200d49a079e
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri May 1 21:21:35 2026 +0000
Refresh CLAUDE.md and README for slash dispatcher and [PC] prefix
Document the /pc help / /pc config split, the shared ns.Print helper
that prepends a cyan [PC] prefix, and the yellow-command/white-note
convention used in the help output. Bump version and interface
version in CLAUDE.md to match the TOC.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 6ee7fe5013a967649544654ce3f759a1ed7d581f
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri May 1 21:11:34 2026 +0000
Add /pc help dispatcher and shared [PC] chat prefix
/pc now shows help by default, /pc config opens the settings panel,
and all addon chat output flows through a shared ns.Print helper that
prepends a cyan [PC] prefix. Help text color-codes commands in yellow
and explanations in white.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit fc336bf4c61626fe81fb672a2bca1d7e5a79e4bc
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri May 1 20:42:40 2026 +0000
Display "Ka0s Pretty Chat" in settings panel
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
commit 340de36de7b6765bd7c330ce05644dca85f86100
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri May 1 20:27:26 2026 +0000
Bump to 1.2.0, add MIT LICENSE, refresh README
- PrettyChat.toc: version 1.2.0, add DefaultState, Category-enUS, X-License
- README.md: new heading, badges, updated logo, version history reformatted
- Add LICENSE (MIT) and media/ screenshots
- Normalize line endings to CRLF across all tracked files
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>