Ka0s Pretty Chat

Prettier chat messages

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>