lightweight tag 8c1b7f21216520b6af0ef176f56b2badbe2500d9 1.4.0-release
Author:	Tushar Saxena <tushar.saxena@gmail.com>
Date:	Mon Jul 20 13:13:45 2026 +0000

commit 8c1b7f21216520b6af0ef176f56b2badbe2500d9
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Mon Jul 20 13:13:45 2026 +0000

    chore: prep for 1.4.0 release
    
    Empty marker commit to prep the tree for the 1.4.0 release tag.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

commit 15a3cafe3f2fa6f36903b7f2df62e22aa03ed1d0
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Mon Jul 20 12:34:40 2026 +0000

    feat: add scrollbar + line counter to the debug console
    
    The debug console log was a wheel-only ScrollingMessageFrame with no way
    to see scroll position or how full the 500-line buffer was. Add a thin
    right-edge Slider synced both ways to the log's scroll offset (wheel moves
    the thumb, dragging scrolls), always shown but inert when the log fits,
    and a bottom status bar showing "N / 500 lines". Drive the log with the
    Lua mixin scroll API (GetMaxScrollRange/GetScrollOffset/SetScrollOffset),
    guarded against the nil C getters, and run the initial sync last in the
    window build so a frame-API error can't blank the header or drop
    ESC-to-close. Implements debug-logging-§11; adds smoke test T-29b.

commit 93f6a85ed84183b50b4887b696906db9093e7328
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Mon Jul 20 12:14:19 2026 +0000

    docs: expand README FAQ + Troubleshooting for the debug console
    
    Document the 1.4.0 debug console workflow that was only half-covered:
    new FAQ entries for the console (window vs. logging, Copy for bug
    reports), changing colors, and previewing edits; new Troubleshooting
    entries for an empty console and the Loot/Tradeskill cross-registered
    crafting strings. Clarify the /pc debug slash row to note on/off
    toggles logging, matching the in-game help.

commit 95bb313d54a29f83cebd55a754599d283c988212
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Mon Jul 20 11:14:51 2026 +0000

    docs: refresh README screenshots and add Test Mode + Settings shots
    
    Repoint the before/after images to the new ForgeCDN uploads and add
    Test Mode and Settings Panel screenshots. Replace the old two-file
    screenshot set (1/2) with a renumbered five-shot set (01-05).

commit 42088dc354671cdebdb5f22f99a4d475f72d403d
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun Jul 19 10:46:06 2026 +0000

    fix: create Settings panels anonymous to keep 10 frames off _G
    
    The modern Settings API registers panels by frame object and reads the
    display label from panel.name, so the global frame names (PrettyChatParentPanel
    + PrettyChatPanel_<category>) were never consumed. Drop the dead name argument
    and create the frames anonymous — removes 10 gratuitous _G entries (Ka0s §4.1).

commit cdcd9200777ffd242f70084085aa7aaa78414ea7
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun Jul 19 07:52:16 2026 +0000

    docs: add What's-new-in-1.4.0 section per Ka0s Standard documentation-§1
    
    Add a player-facing "What's new in 1.4.0" section above Screenshots and
    sync the top Version History row so the two agree (debug console, Defaults
    button fix, Reset enable-state fix, patch bump).

commit 1c0248a6ecc8b3719d6148dff4bc3f0b445eac62
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sat Jul 18 19:25:49 2026 +0000

    fix: close standards-audit MUST/SHOULD deviations
    
    Remediates the 2026-07-18 Ka0s Standard audit (bundle under docs/audits/2026-07-18/):
    - PC-30: pass ns to :NewAddon so addon object and namespace are one table; reclaim
      the cyan [PC] printer after AceConsole's :Print embed.
    - PC-34/35: add secret-safe ns.Util.SafeToString/IsConcatSafe and route ns.Print,
      ns.Debug and Test() through them (no direct DEFAULT_CHAT_FRAME writes).
    - PC-39/33: move AceDB profile defaults to defaults/Profile.lua; reorder the TOC so
      # Locales loads right after # Libraries (toc-file-§5).
    - PC-31/32/36: add the "Standards compliance (read first)" CLAUDE.md section and the
      conform-to-standard agent-context hard rule; README settings-panel Tab|Covers table.
    - PC-38: drop the em-dash from the /pc help header.
    
    Tests 37 -> 42 (new test_util suite + ns.Print reclaim and /pc test routing guards);
    docs/test-cases.md and README badge regenerated in lockstep. Docs synced to the new
    load order, defaults/Profile.lua, unified addon object, and Test() routing.
    
    Deferred as documented deviations (unchanged): PC-10 (X-Wago-ID), PC-25 (GlobalStrings root).
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01SvBnkocNzfg36uQCDqPxxw

commit 3f537dd927e58f4d89c7d72711bcec54c081d792
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Fri Jul 17 19:52:15 2026 +0000

    fix: wire the per-category Defaults button (was never receiving OnClick)
    
    createPanel stored the header button on panel.defaultsBtn but returned a
    context table without a defaultsBtn field, so the registration guard
    `if catCtx.defaultsBtn` was always nil and SetCallback("OnClick", ...) was
    never reached. The button rendered and showed its tooltip (attachTooltip
    runs inside buildHeader) but clicking it did nothing — no ResetCategory,
    no reset. Expose defaultsBtn on the returned context so the click wiring
    runs. Covered by smoke test T-26.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01SvBnkocNzfg36uQCDqPxxw

commit 39fad5b2053830a791f7deb59f78ae7a5c245176
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Fri Jul 17 19:32:57 2026 +0000

    change: make General Debug console checkbox toggle window visibility only
    
    Repoint the checkbox from the logging flag to the console window: checking
    it shows the window, unchecking hides it (mirroring bare /pc debug), and it
    never touches the debug on/off state. It reads a new ns.DebugLog:IsShown()
    seam, and the window's OnShow/OnHide fire NotifyPanelChange("General") so
    the box tracks visibility from any surface (the box, /pc debug, the close
    button, Esc). Logging on/off stays owned by the window header toggle and
    /pc debug on|off. Reverts the SetEnabled panel-notify from 9a6b6b1, now
    unrelated to this checkbox. Docs and smoke test T-29a updated to match.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01SvBnkocNzfg36uQCDqPxxw

commit 9a6b6b1576d655ac5390d0a1eb20fbf70e401066
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Fri Jul 17 19:19:55 2026 +0000

    feat: add session-only Debug console toggle to the General page
    
    Put a Debug console checkbox beside Enable on the General page so debug
    logging can be toggled from Settings, not just /pc debug. It drives the
    existing ns.DebugLog:SetEnabled seam (and opens the console on enable) and
    reflects the session-only ns.State.debug flag, so it resets on every
    reload per debug-logging-§5 — no new SavedVariable, no standards
    deviation. SetEnabled now fires NotifyPanelChange("General") so the box
    stays in sync when debug is toggled via slash or the console header.
    
    Docs synced (settings-panel control table, README General bullet,
    agent-context seam note) and smoke test T-29a added for the checkbox.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01SvBnkocNzfg36uQCDqPxxw

commit f5216bb304656775a02dd622d00f48c313ba15a7
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Fri Jul 17 19:08:35 2026 +0000

    docs: add reset-standardization (R) and media (M) smoke-test groups
    
    Add T-56–T-59 covering the four reset entry points sharing one semantic
    (per-string Reset now restores enable state too, not just format) and
    T-60–T-63 validating the 2026-07-17 media audit in-game (Blizzard-default
    fonts/textures/borders, with the debug-console mono font and logo as the
    sole intentional exceptions). Point T-25 at T-56 for reset-effect coverage
    and route both groups from the "When to run what" table.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01SvBnkocNzfg36uQCDqPxxw

commit 0822c1a9b735f39760a0083df6cbd3abc5c6e718
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Fri Jul 17 17:50:44 2026 +0000

    docs: reframe debug-console font as an accepted, deliberate deviation
    
    Sharpen the debug-logging-§2 bullet from a passive "SHOULD-deviation" into
    an explicitly accepted design choice, and fold in the 2026-07-17 media
    audit conclusion: the console is intentionally fixed-monospace and the
    addon ships no font/texture/border picker, so LSM has no consumer surface.
    Guards against a future agent "fixing" it by wiring LSM.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01SvBnkocNzfg36uQCDqPxxw

commit d00e31b677a09041cd9a0dc0181f8d41f8547c13
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Fri Jul 17 14:42:51 2026 +0000

    fix: make per-string Reset button restore enable state too
    
    The per-string Reset button only reverted the custom format, leaving a
    previously-disabled string disabled — a half-reset that contradicted its
    "Restore this string to its default" tooltip and the category/all resets.
    Add a PrettyChat:ResetString seam that clears both the custom format and
    the disabledStrings entry (mirroring ResetCategory/ResetAll), and point
    the button at it. Covered by a new test; test-cases inventory and README
    Tests badge bumped 36 -> 37.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01SvBnkocNzfg36uQCDqPxxw

commit 0c52a79985c9a434bdf02cc8b4582de0b4496f10
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 15 20:23:36 2026 +0000

    docs: correct smoke-tests intro to acknowledge headless harness
    
    The opening line claimed "There are no automated tests for PrettyChat",
    stale since the 36-case tests/ harness landed. Reframe it to point at
    tests/run.lua and scope this doc to the manual in-game layer stock Lua
    can't reach, matching testing.md.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01AgLEbGTDPw8TKWMb5KjMX9

commit 5a1217b319ef8b1c7f2c750e91b9ab36d178db12
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 15 14:20:59 2026 +0000

    docs: make README player-facing for Ka0s Standard v2.1.0
    
    Remove the contributor-facing Testing section (v2.1.0 keeps the README
    player-only); the verify-how-to moves to new docs/testing.md and
    ARCHITECTURE's stale "see README" link now points there. Rewrite prose
    in plain language, strip internal jargon, promote How-it-works to a
    top-level section, and trim Version History to user-visible changes.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01AgLEbGTDPw8TKWMb5KjMX9

commit c0f73caa60079a87aedc7acd615cef4149c1eeda
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 15 13:01:52 2026 +0000

    docs: remap stale standard section citations to filename-§N scheme
    
    The docs still cited the pre-v1.5.0 global "§N.M" numbering the standard
    retired for the per-file "filename-§N" scheme. Remap the live ones:
    - §2.1 (TOC Title/Author branding) -> toc-file-§1
    - §1.1 (generated-data / layout root exception) -> layout-§1
    - §15.3 (ARCHITECTURE.md section list) -> documentation-§3
    
    Touches CLAUDE.md, docs/agent-context.md, docs/file-index.md. The frozen
    audit bundle under docs/audits/2026-07-12/ keeps its original citations as
    historical record.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01AgLEbGTDPw8TKWMb5KjMX9

commit 9a292e0dad8b569029f9442c2edd93855c38a9b2
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 15 12:52:31 2026 +0000

    docs: de-tier repo docs for Ka0s Standard v2.0.0 (single modular layout)
    
    v2.0.0 removes the two-tier system: there is now one modular layout for
    every addon and `tiered-layout` is renamed `layout`. Scrub all live
    "Tier 1/Tier 2/tiered-layout" references so nothing here implies a tier
    system still exists:
    - CLAUDE.md: "Tier: Tier 2 (modular)…promotion" bullet -> "Layout: modular
      …the single Ka0s layout (layout-§1)"; drop the Tier-2 promotion note;
      "tiered-layout" exception -> "layout"; guardrail "off-tier" -> "loose at
      the repo root instead of under its core/settings/… folder".
    - ARCHITECTURE.md / agent-context.md: "Tier-2 modular layout" -> "Modular
      layout … the single Ka0s layout (layout-§1)".
    - file-index.md: "(Tier-2 modular)" -> "(modular)"; stub note drops "tier".
    - core/Namespace.lua: comment "(Tier-2)" removed.
    
    Structure already conforms (source under core/ defaults/ locales/ modules/
    settings/) so this is docs-only. Frozen audit bundle under
    docs/audits/2026-07-12/ left intact as historical record.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01AgLEbGTDPw8TKWMb5KjMX9

commit 91e55592a7f6d849e5478451782691fb351f0885
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 15 12:22:32 2026 +0000

    docs: align README badge row with Ka0s Standard v1.14.0 badge spec
    
    Rework the badge row to the v1.14.0 documentation-§1 order and templates:
    WoW (purple, Midnight_12.0.7 from TOC 120007), CurseForge version,
    License (orange), Ka0s Standard (yellow, linked), Tests (green,
    36/36_passing from docs/test-cases.md) — Tests moved to last, labels
    capitalised. Sync the in-prose Tests badge URL to match.
    
    Add a Hard rule to CLAUDE.md and docs/agent-context.md: the static
    [WoW] and [Tests] badges track their source of truth ([WoW] <-> TOC
    ## Interface:, [Tests] <-> the regenerated docs/test-cases.md total) and
    must move in the same change, since static badges go stale silently.
    
    Note: upstream WowAddonStandards is still v1.13.0; the v1.14.0 badge
    spec applied here needs pushing upstream for full compliance.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01AgLEbGTDPw8TKWMb5KjMX9

commit 048b4eafbdbb510c344a64b7570247207bc5f19a
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 15 11:49:49 2026 +0000

    docs: fix stale sub-page count, sync ARCHITECTURE testing section
    
    Drift fixes from a /wow-addon:sync-docs pass:
    - README Version History (1.3.0 row) said "nine Blizzard sub-pages (one
      per category) plus a General page" — the addon has eight categories, so
      nine sub-pages total including General. Correct it to "eight category
      sub-pages plus a General page."
    - ARCHITECTURE Testing section predated the testing-§5 work; note the
      test(name, fn) model, `lua tests/run.lua --list`, and the generated
      docs/test-cases.md inventory as the authoritative pass count.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01AgLEbGTDPw8TKWMb5KjMX9

commit ec56c00ae768461405a25752275fc2fc0ce664a6
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 15 10:00:31 2026 +0000

    docs: make inventory+badge sync a hard rule (testing-§5)
    
    Add the "keep docs/test-cases.md and the README tests badge in lockstep
    with the suite, in the same change" rule to the root CLAUDE.md
    guardrails and to docs/agent-context.md's Hard rules.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01AgLEbGTDPw8TKWMb5KjMX9

commit 053c2016f1a45f91a0c1ea4148148e54a9a62807
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 15 09:59:32 2026 +0000

    docs: point testing status at the generated inventory + add tests badge (testing-§5)
    
    Add a static `tests-36/36_passing` shields.io badge to the README badge
    row (after the CurseForge version badge, before license). Rework the
    README Testing section and agent-context Test gate to name
    docs/test-cases.md as the authoritative pass count, document the `--list`
    regen + CR-agnostic sync check, and state the keep-in-sync rule.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01AgLEbGTDPw8TKWMb5KjMX9

commit 5928cad5ac63327123869aa26287e668b77df2e0
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 15 09:57:55 2026 +0000

    docs: add generated test-case inventory (testing-§5)
    
    Generated by `lua tests/run.lua --list > docs/test-cases.md` — the
    authoritative pass count (36 cases across 6 suites). Do not hand-edit;
    regenerate whenever the suite changes. Stored CRLF like every other doc;
    verify sync with `diff --strip-trailing-cr <(lua tests/run.lua --list)
    docs/test-cases.md`.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01AgLEbGTDPw8TKWMb5KjMX9

commit 82d8b4328d7f7192cafa2f004f4af8f68967cfc8
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 15 09:51:57 2026 +0000

    tests: introduce test(name, fn) registration + runner --list mode (testing-§5)
    
    Refactor the headless runner and all six suites from flat inline
    assertions to named test(name, fn) cases, each stamped with the suite
    file it was declared in. A case passes when its body neither errors nor
    trips a failed assertion; the runner's pass count is now over cases (36)
    rather than individual assertions, and cases run in registration order so
    the suites' sequential state dependencies are preserved.
    
    Add a non-executing `--list` mode that prints the docs/test-cases.md
    inventory body (grouped `### <suite>.lua (N)` sections + a `## Totals`
    table) and exits without running anything. Default `lua tests/run.lua`
    output and non-zero-on-failure exit are unchanged in shape.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01AgLEbGTDPw8TKWMb5KjMX9

commit c6ff23b180701a43355c9a309f7867e467eb885c
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 15 09:10:46 2026 +0000

    Colour-code the debug ack and add an [Init] session summary (debug-logging-§5)
    
    Bring the DebugLog:SetEnabled seam up to Ka0s standard v1.12.0's two new
    §5 MUSTs, so the debug flag reads identically in chat and console and a
    pasted log is self-identifying:
    
    - The on/off chat ack now colour-codes the state word — ON green
      (40ff40), OFF red (ff4040) — through the shared [PC] printer. The
      title-bar Debug: ON/OFF toggle is aligned to the same hex (was a
      slightly different green/red), both from one shared constant pair.
    - On enable, immediately after the [Debug] logging enabled bracket, the
      seam emits one [Init] line via raw D:Add — "PrettyChat v<ver>, schema
      v<n>, profile '<key>'" (name/version from ns, schema/profile from
      AceDB, guarded so a not-ready db can't error).
    
    Both live only in SetEnabled, so the slash command and header toggle
    can't diverge. The values are plain (no combat-secret risk).
    
    Drop the OnEnable [Boot] line: v1.12.0 routes the §8 lifecycle boot
    summary through [Init]-on-enable precisely because the session-only flag
    is off at login, so a load-time summary never renders — the [Boot] line
    was exactly that dead code.
    
    Mock gains db:GetCurrentProfile so [Init] is testable; test_debuglog
    covers the coloured ack and the [Init]-after-bracket ordering. 77 tests
    pass, luacheck clean.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01AgLEbGTDPw8TKWMb5KjMX9

commit 84835e6f828e6982a5256c9ee5b2220e1f5ed9fb
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 15 07:46:39 2026 +0000

    Trace main functional flows in the debug console (debug-logging-§8/§9/§10)
    
    Give the debug console useful content, not just the enable/disable
    brackets. Cover the addon's flows as one gated summary line per event,
    in the standard <ts> | [tag] <msg> format:
    
    - [Boot]    OnEnable — schema version, globals captured, apply counts,
                panels registered (one lifecycle summary).
    - [Migrate] Database.RunMigrations — only when a step actually runs.
    - [Set]     Schema.Set — the single settings-change seam, <path> = <value>
                via the shared Schema.FormatValue (reads like /pc get).
    - [Reset]   ResetCategory/ResetAll — bulk mutation, with apply counts.
    - [Config]  OpenConfig — opened / refused (in combat) / blocked.
    
    Coalesce per §9: ApplyStrings now returns (applied, restored) and logs
    nothing itself, so callers fold the counts into their single line — this
    drops the old double-log (every change printed [Set] AND [Apply]). A
    settings change is now exactly one [Set] line; no reactor re-echo (§10).
    Nothing logs per string.
    
    Update test_debuglog (one [Set], no [Apply]; [Reset] carries counts) and
    sync the debug-producer notes in agent-context / override-pipeline /
    schema docs. 70 tests pass, luacheck clean.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01AgLEbGTDPw8TKWMb5KjMX9

commit 3b6de8b2eb55b3823c6b96068ad4543615f0c510
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Wed Jul 15 05:55:55 2026 +0000

    Promote to Tier 2; add on-screen debug console + slash-§5 output
    
    Restructure the 8 flat source files into a Tier-2 layout (core/,
    defaults/, locales/, modules/, settings/). PrettyChat.lua splits into
    core/PrettyChat (lifecycle), modules/Override (the override engine), and
    settings/Slash (the /pc dispatcher). Adding a debug-console file pushed
    the source count past the Tier-1 <=8-file ceiling, so tiered-layout-§1
    makes the promotion mandatory.
    
    Add core/DebugLog.lua — an on-screen debug console per the debug-logging
    standard (700x344 window, monospace ScrollingMessageFrame, Debug ON/OFF
    header toggle, Copy/Clear, Copy EditBox), replacing the old chat
    fallback. ns.Debug routes there; /pc debug toggles the window, on/off
    set session logging. Ships JetBrains Mono (OFL) under media/fonts/,
    applied via Const.FONT_MONO (no LibSharedMedia — documented deviation).
    
    Make /pc list/get/set follow the slash-commands-§5 colour scheme (green
    header, azure [category] groups, gold-key/white-value FormatKV) via a
    shared Schema.FormatValue; add the mandated /pc version verb. Instrument
    ApplyStrings ([Apply]) and Schema.Set ([Set]) as ns.Debug producers.
    
    Sync CLAUDE.md + docs/ to Tier-2 and correct the cross-registered-global
    determinism note (PC-16). Add test_debuglog + test_slash; 68 tests pass,
    luacheck clean.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01AgLEbGTDPw8TKWMb5KjMX9

commit 58d0623e78753ac1f75992d457a5ea2ba715eb02
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Mon Jul 13 05:56:58 2026 +0000

    Move audit/ and reviews/ under docs/
    
    Relocate the dated process bundles to docs/audits/ and docs/reviews/ to
    match the /wow-addon plugin's new output layout (future audits/reviews
    land there directly). Repoint every live reference: the CLAUDE.md
    standards link, the .luacheckrc excludes, the wow_mock.lua design-doc
    comment, and the agent-context lint note; drop the now-redundant
    audit/reviews entries from .pkgmeta (docs/ is already ignored); and fix
    the two relative links in 06_EXECUTION_OUTCOME.md that broke by moving a
    level deeper. Frozen historical prose inside the bundles is left as-is.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01SsSRE6bE5NxiE2wSTfz9A6

commit 256c2ead5287f42fbfd2a16dcb214d822da589d7
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Mon Jul 13 05:41:58 2026 +0000

    CLAUDE.md: require flagging any standards deviation
    
    Add a non-negotiable guardrail so future sessions actively check new
    work against the Ka0s WoW Addon Standard rather than only seeing the
    link: on any deviation, stop and let the user decide whether it is an
    accepted deviation (documented here) or a signal the standard itself
    should change. Also point the Standard note at the local audit bundle
    and the re-audit command.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01SsSRE6bE5NxiE2wSTfz9A6

commit 43eb378846d671262138d209b4a8519b85c2272b
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun Jul 12 21:17:47 2026 +0000

    Bump to 1.4.0 and document /pc debug
    
    Version bump for the standards-remediation release (new /pc debug
    command, Compat/Locale/Database modules, test harness, deterministic
    apply — no breaking changes). Also documents the /pc debug verb in the
    README slash table and docs/slash-commands.md, which the command's
    addition had left undocumented, and notes version metadata now reads
    through ns.Compat.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01SsSRE6bE5NxiE2wSTfz9A6

commit 8a6d38c68e6d63db26b1c3ff02ba48ff2c5788ed
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun Jul 12 21:10:43 2026 +0000

    Remediate 2026-07-12 standards audit (29 PC deviations)
    
    Bring the addon to the Ka0s WoW Addon Standard v1.0.0. All 29 audited
    deviations resolved (26 fixed, PC-25/PC-27 documented deliberate, PC-28
    skipped). Gate: lua tests/run.lua 44/0, luacheck . clean.
    
    - Tests: new headless harness (tests/) + .luacheckrc + .pkgmeta (PC-01/02/03).
    - Modules: Compat (ns.Compat), Locale (ns.L), Database (schemaVersion +
      RunMigrations), ns.Debug/ns.State + /pc debug (PC-04/05/06/07).
    - Namespace: PrettyChatDefaults->ns.Defaults, PrettyChatGlobalStrings->
      ns.GlobalStrings (chunks + splitter regenerated); deterministic
      ApplyStrings; load-time schema path validator (PC-14/15/16).
    - TOC/fs: canonical field order, OptionalDeps/X-Standard/X-Curse-ID,
      section comments; Libs->libs; media/logos/; AceConfig removed
      (PC-08..13, 24). Rainbow title/author kept as documented brand
      deviation; X-Wago-ID omitted pending a real id (PC-27/10).
    - Docs: CLAUDE.md stub + docs/agent-context.md; ARCHITECTURE.md ->
      docs/ (§15.3 sections); README Testing section + standard badge;
      topic-doc accuracy pass (PC-17..20, 25, 26). TODO.md -> issues #1/#2.
    - Panel: ns.PREFIX, BUTTON_PAIR_REL, justified 40/60 layout (PC-21/22/23).
    
    Outcome + smoke tests: audit/2026-07-12/06_EXECUTION_OUTCOME.md.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01SsSRE6bE5NxiE2wSTfz9A6

commit b662ac46d7a460e70d88ff7bc28ba755b19ac609
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun Jul 12 20:15:16 2026 +0000

    Add 2026-07-12 standards-audit bundle (standard v1.0.0)
    
    Read-only compliance audit against the Ka0s WoW Addon Standard v1.0.0.
    21 MUST + 8 SHOULD deviations catalogued with PC- stable IDs, file:line
    evidence, remediation design, and a sprint-ordered execution plan. No
    addon code changed.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01APfnbrW73tRkAxgfXnXXh4

commit 4d5a686f03e8932b4a0de64edb967f5f109a0a3d
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date:   Sun Jul 12 19:44:47 2026 +0000

    Bump Interface to 120007 and sync docs
    
    TOC ## Interface: 120000,120001,120005 → 120007 (Midnight 12.0.7).
    Update the WoW badge, ARCHITECTURE, and docs/file-index Interface
    references to match.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01APfnbrW73tRkAxgfXnXXh4

