1.0.0-release
What's new
commit f6b52cde5f6795423a0f4ed2b2f27e34cf3bdd4e
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 20:01:51 2026 +0530
Release v1.0.0
The first release. Gate green on run 20261010-195814: lint 0/0, tests 414/1/415, perf 6
scenarios, complexity max CCN 14 with 0 warnings and blindFiles 0. The README's Version
History starts at 1.0.0; the 0.1.0 development row is gone.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit cd648c86406ccf1df0d62114df31e3226acd6dde
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 19:54:53 2026 +0530
Shorten the README's Usage section and sync the docs
Usage drops from eight paragraphs to four: opening the panel, filtering and
Apply, the search-box copy, and settings and extras. The Screenshots section
links the three CurseForge images, with EllesmereUI spelled right.
smoke-tests.md checks the Smart checkbox's new spacing in APPLY-15 and SKIN-2.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 55ab13d90fae31a5f41c197080e43e5be341099d
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 19:43:11 2026 +0530
Add three panel screenshots, kept out of the package
media/screenshots/ holds the project-page images. .pkgmeta ignores the folder,
as AuraMaster's does: WoW cannot load PNG, so shipping them only adds weight.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit d79de71e601880bf143c5681856826ff92a3a24f
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 19:36:29 2026 +0530
Space the Smart checkbox like the other rows and move it right
The Smart label sat 2px inside its box's frame, so its box-to-text gap was far
tighter than every other row's. It now starts LABEL_X - CHECK_SIZE past the box's
right edge, as the rows' labels do, and the EllesmereUI skin moves it right by
the 8px the box shrinks, so the gap stays equal under both skins.
The level box to the Smart box is now a 60px visible gap (SMART_GAP 56 plus the
~4px both skins draw the box inside its frame), up from 20, at the owner's request.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit a4dbc6224a69d1b09f8d528a5bb9126823e60e2e
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 15:16:09 2026 +0530
Link the PGF EllesmereUI skin from the README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 2d49c293421c76dae00b24528d4f981d6d7b8d31
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 15:15:04 2026 +0530
Record the CurseForge project id 1736636
The TOC carries ## X-Curse-Project-ID, and the README badge row gains
the live CurseForge version badge in its second slot.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 7a1c56fbf6b928774abd0594e0bde6857a89e76b
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 15:04:04 2026 +0530
Humanize the README's Usage and Credits prose
Split the long key-level paragraph so the options read one at a time,
break the filters-toggle sentence at its colon, and drop "served as".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 4400b45a5c3d505df795e7b357e342069c84d0ee
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 15:03:12 2026 +0530
Bring the README in line with the collection's README pattern
Wrap prose at 100 columns, use the collection's table separators and
Issues wording, split the 0.1.0 highlights one per feature, note that
/pgfe on its own opens the settings, and credit the debug console's
JetBrains Mono font and Open Iconic buttons the way AuraMaster does.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 7a50b879779ecb034496a84686cfe68af2a0bfa9
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 14:57:58 2026 +0530
Sync docs with the code after the audit-review fixes
README: General -> Filters paths, the minimized-dialog hide, the exact
unsupported-version text, and Troubleshooting rows for the minimized,
filters-off and 2000-character refusals. DEPENDENCIES: drop luac, bash 4+,
build-essential for luacheck, git's extra uses, packaging via .pkgmeta.
ARCHITECTURE, module-map, common-tasks, data-flow, debug, profiles,
performance, smoke-tests and automated-tests/README brought in line with
the current modules, tabs, hooks and perf scenarios.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit c82e51c87e53c78b0c7bfd804893d3f2fa881971
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 13:09:33 2026 +0530
Re-record the automated-test run at the merge candidate
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit c82e51c87e53c78b0c7bfd804893d3f2fa881971
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 13:09:33 2026 +0530
Re-record the automated-test run at the merge candidate
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 33c358ffa9e06caf8b05a454dc517fc3cb530988
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 13:06:44 2026 +0530
Pin the TGA recipe to a top-left origin; tick M2 and M3 in the ledger
The DEPENDENCIES render lines now pass orientation=1, so re-running them
reproduces the committed TGAs byte for byte.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 431a604e3a0d8c46aed7002d0d9de85a27a9fa06
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 12:28:30 2026 +0530
Record the post-fix automated-test run and point CLAUDE.md at the 2026-10-10 bundles
Full four-suite run through the vendored runner at ee090c7 (non-release, no label): green, lint
0/0 over 60 files, 414 passed / 1 skipped / 415 total, perf pass on the 6 tests/perf.lua scenarios,
complexity sighted (blindFiles 0, max CCN 14, 0 warnings). tests/test_panel.lua is the one file in
the 1000-1500 band; its Disposition is "on notice" with the split areas named. No production file
is in the band (modules/Panel.lua is 915 lines).
CLAUDE.md now names the 2026-10-10 audit, the review bundle and its consolidated findings, the
upstream issues (LibKa0s#46, #47; WowAddonStandards#8, #9, #10), the local re-vendor tracker #25
and the new bundle. Ticks ledger row 16 (C-13).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit ee090c7b84c30fb4b9544660c9bb6bfa2fd99252
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 12:22:45 2026 +0530
Add a JPEG copy of the logo source and keep it out of the package
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit de31af5a1b118b7fa4f26ee4c21321463557dea7
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 12:22:11 2026 +0530
Fix the line cites and register text drifted by the header split
The modules/Panel.lua and settings/Panel.lua header comments each gained
a line in 9797a62, so the FEATURE_EVENTS cites in docs/performance.md move
to 886-888 and 889 and the test_disabled red-under cite moves to the
Lifecycle:Set line at 64. The performance-§12 register row drops the
doubled backticks around its sweep sha to match spec section 5 word for
word, and the Taint Notes sentence names onFacade's OnLooksChanged
registration instead of saying it only keeps the facade.
Refs #5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 84c8a43434b05ca0de83b19ba6d2b3c1a7f40068
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 12:17:19 2026 +0530
List Python 3 for the realm-map tool in DEPENDENCIES
C-24. DEPENDENCIES.md's release group becomes "Release / assets /
maintenance" with two entries: Pillow for the logo renders, and python3
(stdlib only: re, string, sys) for tools/realm_map_diff.py, with its
install and verify lines; the entry count is dropped. The lizard row
and the version note carry the source-shape rule (function-literal
tables stay named locals). docs/realm-map-maintenance.md's "How to run
it" says it needs Python 3. Ticks Task 15 in the plan ledger.
Refs #16
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 07e2a2a991e1d38b49670fe8550154c8eb7fd1c3
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 12:16:22 2026 +0530
Amend spec 6.3 to the shipped Any semantics
C-38. The M+ v0.1 spec's Regions clause now says what ships: Any (none
selected, or every one of the portal's regions selected) adds no clause
and prints no warning. A test_filters case drives both portals from the
live NS.Regions.KEYS and proves a full selection yields no region
clause (red with the IsAny full-selection branch dropped from
regionClause). Inventory and badge regenerated (414).
Refs #8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 43a3f3f35989cf011629f1d57a9f722f7bf08469
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 12:16:07 2026 +0530
Regenerate the logo TGAs from the new Ka0s-style PNG
The owner replaced premadegroupsfilterextension.logo.png. The 128 icon
TGA and the 512 landing TGA are re-rendered from it (LANCZOS, RGBA,
uncompressed, top-left origin). Refs #15
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 94c7b7483866076b4d584bcec0ae262823d24fc5
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 12:15:09 2026 +0530
Point register Why cells at resolvable sources; note the RegisterSkin survivor
C-39. The EllesmereUIDB row's Why cites owner decision 1 in the eui-skin
plan (ratified at its step 6a); the PGF-dependency row's Why cites the
M+ v0.1 spec §1 item 5 and §2. Both sources re-read: they still say what
the rows claim.
C-37. Taint Notes says the EllesmereUI.RegisterSkin callback cannot be
unregistered, survives a stand-down and gates itself, and the stand-up
retries (upstream WowAddonStandards #10).
Also: EllesmereUI seams now says OnLooksChanged is the one optional
facade member (REQUIRED in modules/EUISkin.lua omits it), and the
factory opts lists (tests/run.lua, ARCHITECTURE Contracts) name the
afterFile hook.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 9797a62e86a4eb86d0c900bc516073b810496db6
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 12:14:25 2026 +0530
Ratify the per-character state, direct-call, attached-panel and no-combat-path deviations
C-17, C-18, C-26, C-34, C-09. Appends the four spec section 5 rows to
docs/ARCHITECTURE.md -> Documented deviations (architecture-§5,
architecture-§4, the attached-panel row, and performance-§12 citing the
sweep at 2c86d49). Settings Schema drops the char.filters and
panelCollapsed bullets for a pointer to the §5 row; Message Bus names
the threshold, the three reaction sites and the pinned order. The two
Panel header comments point at the register, docs/schema.md marks the
outside-the-seam writers, and a parity case guards the rows and the §5
writer list. Drops the unread C_Timer read-global and refreshes the
sweep's line cites. Ticks M1 (pushed at 24d7f05) in the plan ledger.
The runner reads the §12 row: with tests/perf.lua moved aside the perf
suite skips with the ratified-exemption note.
Refs #10 #18 #5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 24d7f0579a4b05410f01c91d57a44cc81dcfbfc6
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 12:08:34 2026 +0530
Record the #4-#19 re-severity in the plan ledger
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 4ad5e7110a6f3caf5456143ce6f042d5aa31d027
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 12:08:29 2026 +0530
Split three functions this run pushed past CCN 15
OnEnable's [Init] install line, the TOC annotation walk and the locale
literal scan each get a helper; behavior is unchanged. lizard max CCN 14.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit e2f1b60b6b640cd42c01ea97d1c45322e66d4bc5
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 12:06:49 2026 +0530
Tick wave 4 (Task 14) in the plan ledger
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit ad0aeb4b458397961567e4eda304999458a435e0
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 12:03:14 2026 +0530
Rewrite test_disabled to the slash-commands-§7 ten steps
C-08 / PGE-05 / F-008. The suite is now built only from T.enableAddon() and the kit
recorders (__registrations, __timers(), __shownFrames, __svWrites, __printed, __fire,
__fireUnconditional); the probe row and every NS.FEATURE_EVENTS / NS.STAND_* injection are
gone. Step 1 pins the eight event names; steps 2-5 disable through /pgfe disable and the
write seam; step 6 drives every feature handler, the env, dialog and both RegionTags hooks,
the panel widgets, the EllesmereUI RegisterSkin callback and a skin SetChecked hook while
stood down; step 7 walks every NS.COMMANDS verb plus bare, debug diagnostics and the
unregistered perf; step 8 the launcher clicks and menu; step 9 the rebuild from current
state; step 10 both latch orders with the library's perf hold as a test-only second holder.
The C-16 cases and the stored-disabled case are kept.
Red-proved: each red-under mutation applied and reverted (the NS.StandDown UnregisterEvent
loop at core/PGFE.lua:120, the stand-down checks in EnvInject.Apply, RegionTags active()
and EUISkin blocked(), the enabled row's Lifecycle Set path at settings/Panel.lua:63, and
LauncherSetup:55), and each turned its case red.
docs/testing.md describes the suite; inventory and badge regenerated (405 -> 412).
Refs #4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit bcb176805f214d071f84e1173f5831b0e455faa3
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:55:44 2026 +0530
Make the launcher's Enabled entry describe the stored setting
C-16 / PGE-11 / F-015. With the perf wiring removed (D1 = performance-§12) the latch and the stored
setting no longer disagree in production; this conforms the tooltip to launcher-§1's same-accessor
rule. PGE-12 is no longer reachable in production, and the library's DisabledLine is kept.
Two cases in tests/test_disabled.lua: another hold stands the addon down and the Enabled line
still says Yes; after /pgfe disable it says No. Inventory and badge regenerated (403 -> 405).
Refs #14
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 3db9af8c5002636bed83304ad501beedb113da90
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:51:43 2026 +0530
Tick wave 4 (Task 13) in the plan ledger
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 1d06f554d5cc5396bccbd27b944a7f050fcdcca2
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:47:48 2026 +0530
Write debug lines for Apply, Clear, panel visibility, presets, spec and enable
The feature flows wrote nothing to the debug console, so a refused
Apply or a panel that would not show left no trail (C-19 / review
PGE-04). Now:
- Apply and Clear route every return through done(), one
"refused: KEY" or "ok: KEY" line each (MSG_NO_PGF names the missing
seam), plus a "wrote" line after Commit and a "search" line before
the click. OnFiltersToggled writes one line.
- Panel.UpdateVisibility writes shown/hidden on a change only; the
stand-down hide re-arms the key through NS.DebugLog.DebugForget.
- Presets.Save/Load/Delete log saved/loaded/deleted, an absent delete
and the badName/missing refusals.
- EnvInject.RefreshPlayer logs the spec keywords on a change.
- PGFE:OnEnable writes one [Init] seams-and-hooks line through
DebugAtEnable, before the latch.
EnvInject.Apply and the row painters stay silent. docs/debug.md gains
the tag vocabulary.
Refs #11
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 6c24b35ee5385d982f1ca7a93b96883a4efcfefa
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:43:17 2026 +0530
Say nothing about a range when key targeting is off
With key targeting off no dungeon range is targeted, yet the Apply
message still named one and Apply.LastRange still held it. LastRange is
now nil after a targeting-off Apply, and MSG_APPLIED_NO_TARGETING
carries no range (C-28 / review F-009).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 9fd3be854f6d63c0753998c9ad0cc127c8feb176
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:41:14 2026 +0530
Tick wave 3 in the plan ledger
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 9113702df3266cf4870836484d61fe336be1ced2
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:36:29 2026 +0530
Route player-facing strings through NS.L
C-25 / PGE-16 / F-010. Every player-facing literal becomes a whole-sentence
%s key in locales/enUS.lua, with values equal to the old literals: the
settings/Slash.lua stub and host lines (unknown command, help header,
settings unavailable, bare reset usage, console not ready, CLI_MISSING), the
General page's name and Defaults tooltip, the DebugLog stub (missing line,
on/off acknowledgement, console checkbox label), the LIBKA0S_MISSING cause
clause and its "..., so X is unavailable." family (Core, DebugLog, Launcher,
Options, Slash). DISABLED_LINE_FORMAT, brand names, /pgfe verb tokens (as %s
arguments) and color escapes (inside the values) stay as they were;
settings/Schema.lua's schema-error lines are developer diagnostics and stay
literal, noted in a comment.
tests/loader.lua gains an optional opts.afterFile(path, NS) hook. Two
sentinel-locale cases in tests/test_slash.lua wipe NS.L in place after
locales/enUS.lua and require every line they drive to end in the sentinel,
with LibKa0s absent and present.
Refs #17
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 9c399be70cf7c7f67185bb27b460cb570a775893
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:32:43 2026 +0530
Report seams, hook installs and filter options in diagnostics
Review C-10 / F-013. The dependencies section now prints the PGF seams
Bridge.Check reads (ok and the first missing one) and which hooks went
in (env, dialog, and the two RegionTags row painters), read from the
install stores. A new filters section prints the character's filter
options: sorted scalars, and each set as its sorted keys, empty reading
Any. Registration labels the list "feature events (declared)" and adds
whether they are registered right now (false while stood down).
New suite tests/test_diagnostics.lua (six cases, red-first), registered
in tests/run.lua; docs/debug.md sections table updated; inventory and
badge regenerated. docs/ARCHITECTURE.md names only the verb, so no edit.
Refs #7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit d48d45e0c92cb8e5b51d8833606168097fcc3b80
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:30:27 2026 +0530
Define the 12 locale keys the skin status and settings tab use
C-11 / F-006. The six PGF_TEXT keys (core/EUIBridge.lua) and the six
settings/Panel.lua keys (the link label, CONDITION_TIPS and STATE_TIP) were
rendered only through the __index fallback; they are now defined byte for
byte. The dead "Install and enable Premade Groups Filter - EllesmereUI Skin"
key, read by nothing, is deleted (localization-§3).
A static two-way key-parity case in tests/test_surface_parity.lua guards it,
with the MSG_*, REGION_TIP_* and PLAYSTYLE_* computed-key families exempt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 9989fa3c26f0fb5734586b7e668bbd91aecdf478
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:26:51 2026 +0530
Tick wave 2b in the plan ledger
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 2c86d49e9bafa48baeb603b331b347a28bcdcf61
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:22:55 2026 +0530
Commit the combat-path sweep and ship the offline perf scenarios
C-09. The whole-repo sweep performance-§12 criterion (a) requires, in
docs/performance.md, and tests/perf.lua's six offline scenarios. Refs #5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 9c52320e75a61f68288076972f6114c03b2e2608
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:15:33 2026 +0530
Take the performance-§12 exemption: remove the unused perf wiring
C-09 / PGE-09. The owner chose the performance-§12 no-combat-path
exemption over buckets at checkpoint D1 on 2026-10-10.
libs/LibKa0s/ stays vendored whole, Perf.lua included; perf stays a
reserved, unregistered verb. The register row lands in Task 15. Refs #5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 2d6a5b0976c7c520b39528c88ab05f0453c2eec9
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:10:54 2026 +0530
Tick wave 2 in the plan ledger
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 2be37badb6e0dc54416b333932e4b133fc742191
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:02:36 2026 +0530
Hide the panel's tooltip on stand-down; record the dialog hook; read map keywords through the bridge
C-29 (Panel half): the tooltip handlers gate on the stand-down, so OnLeave
could not hide a tooltip the panel showed. The STAND_DOWN row now hides
GameTooltip when its owner is the panel or a frame inside it (an owner
walk with a self-parent guard); a tooltip owned elsewhere is left alone.
C-10 (Panel store): Panel.dialogHooked keeps Bridge.HookDialog's answer.
C-04 (Season half): shortName reads NS.Bridge.MapKeywords, so no module
outside the bridge names PremadeGroupsFilter; .luacheckrc drops Season
from the PGF-reader comment and a surface-parity case guards it.
The mock's GameTooltip records its owner (SetOwner/GetOwner, Hide clears
it, GetParent answers nil).
Refs #7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 620a29769507da69121a0a373cf42f300faff551
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:01:05 2026 +0530
Render the landing logo at 512 and pin the logo assets
C-23 / PGE-13. The landing-page TGA is re-rendered from the 512x512 PNG
at 512x512 (Pillow, LANCZOS, uncompressed 32-bit), up from 256.
DEPENDENCIES.md carries the 512 recipe line and the `file` check. Three
setup cases pin the assets: the TOC IconTexture is the launcher icon and
the folder-named 128 TGA, both TGA headers read type 2 / 32 bpp at 128
and 512, and no pgfe.logo file remains.
Refs #15
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 623f4e8e6ca3053ced73cffc33c3f64be1ed2f4b
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 11:00:27 2026 +0530
Request season data once per episode and on the affix event
C-06 / F-002, C-07. The season-data request moves out of the panel's
readout into Season.GetDungeons, behind Season.RequestOnce. It goes out
once per episode, re-armed by Season.ResetRequest on PLAYER_ENTERING_WORLD
and on the full -> empty rollover of the map table (reset and send in the
same call; a second empty read neither resets nor sends), so an
off-season client no longer loops request -> MAPS_UPDATE -> request.
Apply and Smart now ask too, with no panel. MYTHIC_PLUS_CURRENT_AFFIX_UPDATE
joins the season-data events.
The mock counts RequestMapInfo calls (mapInfoRequests) and never fires
the reply. Docs: the AFFIX event row and a Known Limitations entry in
ARCHITECTURE, data-flow's request paragraph, smoke APPLY-25.
Refs #6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit f91a10435cb55ef11a2a6d7f7c7ce81726004c65
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:59:42 2026 +0530
Rename the logo files after the addon folder
C-23 / PGE-13. A pure rename: media/logos/pgfe.logo.{128.tga,tga,png}
become premadegroupsfilterextension.logo.{128.tga,tga,png}, and the
TOC IconTexture, the launcher icon, the landing logo path, the setup
test and the DEPENDENCIES recipe follow. No pixel changes here.
Refs #15
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 444f7599acec0cc9984fc43866dcea0c89de7a18
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:59:06 2026 +0530
Drop the unused AceTimer-3.0 mixin and library
C-35 / PGE-20. Removes a whole vendored folder; no vendored file is
edited. Nothing in the addon schedules or cancels a timer, so the
NewAddon mixin string loses "AceTimer-3.0", the TOC loses its library
line, and libs/AceTimer-3.0/ goes. A harness case pins both halves: the
mixin is absent and the raw TOC names no AceTimer line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit caac51f48acaaef1fed02baf3e6c7ce254db5f17
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:58:16 2026 +0530
Annotate every TOC line with what it needs at load
C-21 / PGE-06/07/08/28. Every addon file's TOC line now carries a
LOAD-BEARING, Conventional or LAST annotation: the modules lose the
blanket heading in favor of per-line notes (EnvInject, Panel and EUISkin
are load-bearing), settings\Panel.lua and settings\Slash.lua say what
they capture at file scope, the core\PGFE.lua note names its real
NS.addon consumers, and the Schema note names the three NS.SchemaRuntime
readers. docs/module-map.md and the ARCHITECTURE Module Map summary
follow; a harness case pins the annotation on every addon line.
Refs #12
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 34db25615d1015e9c2794405f73855880b5f0a19
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:57:31 2026 +0530
Test what Reset all settings reaches
C-22 / PGE-10. New suite tests/test_reset.lua, registered in tests/run.lua
after test_euisettings, pins five reset facts (options-ui-§12, launcher-§3):
only the active profile resets, the debug console is swept off, the minimap
button stays hidden through Reset all settings and through the General page's
Defaults, and a reset while disabled comes back enabled with the disabled hold
released.
red-proved 5/5: each case's named mutation was applied locally, the case
failed, and the mutation was reverted. Case 3 was also checked layer by layer:
dropping resetExempt alone or narrowing VetoedFromResetAll alone keeps it
green; both together turn it red.
Inventory regenerated; tests badge 352 -> 357.
Refs #13
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit de06ea0002cabad3a4f32824ee7948bcafe7cfc7
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:53:57 2026 +0530
Tick Task 6 in the plan ledger with the filed issues
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit b1bca0e279f9f20e3318b223640fa82fea4a1a8c
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:52:31 2026 +0530
Tick wave 1 in the plan ledger
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit fd738975016f98a199ec449758a00f47d3d270ee
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:43:44 2026 +0530
Keep the env-hook-not-installed debug line from raising at load
Check() returns only `true` when every seam is truthy, but InstallEnvHook also refuses a
PutPremadeRegionInfo that is not a function. The debug line then called tostring() with no
argument and raised at file load. Name that case instead, and pin it with a test.
Refs #7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 09423d6591513aa0780f7ecc970a2d677601f5e1
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:39:53 2026 +0530
Probe leader names before matching; make the minimized-commit test assert what it keeps
Regions.GetRegion now refuses a leader name that is not concat-safe
(NS.IsConcatSafe, looked up at call time) before :match, after the
portal check so unsupported portals skip the pcall. A protected name
leaves env.region nil and every region key false. The minimized-commit
bridge test is renamed and now asserts the written dungeon row and
expression survive while Init/Trigger are skipped (red under: drop the
activePanel check in Bridge.Commit, proven locally). ARCHITECTURE Taint
Notes records the probe; inventory and badge regenerated.
C-32, C-31.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 367253888db4bf1f81d5f3d51ff1037a081442f3
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:39:00 2026 +0530
Route PGF constants through the bridge and check the seams they need
modules/EnvInject.lua read PremadeGroupsFilter.Debug.C.SPECIALIZATIONS
directly. The bridge now owns it (Bridge.Specializations, PGF 7.6.2
Modules/Specializations.lua:25) and Bridge.MapKeywords (unchecked;
Modules/ActivityKeywords.lua:59) for the Season task to adopt.
Bridge.Check() gains C.SPECIALIZATIONS and the structural seams
Dialog.panels, DungeonPanel.Dungeons and
DungeonPanel.Advanced.Expression.EditBox (ten checked seams).
EnvInject stores the env hook's install result for Diagnostics and logs
the missing seam when it is not installed. The .luacheckrc comment now
names the readers of each kind of global. ARCHITECTURE PGF seams
updated; inventory and badge regenerated.
C-04 (bridge half), C-10 (SEAMS + env store). Refs #7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 195bc63d317eff5a11ea356a9ed5afba64415554
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:38:04 2026 +0530
Move filtersActive and showRegionTags to a General Filters tab
C-15 / PGE-23. Master controls now holds only its mandated rows
(options-ui-§15): enabled, state.debugConsole, global.minimap.shown and
the reset pair. The two filter switches leave MasterControls' extra and
become FILTER_ROWS, their own group (L["Filters"]) added after the
Master controls rows and before the EllesmereUI skin row, so the General
page reads Master controls | Filters | EllesmereUI skin. The
filtersActive onChange moves with its row; the options-ui-§16 citation
goes. Paths unchanged, no migration and no SCHEMA_VERSION bump.
Tests: the tab-order case expects the three tabs; a new setup case pins
Master controls to the canonical rows and both switches to the Filters
group on the General page. Docs (settings-panel, schema, ARCHITECTURE
Settings Schema, smoke-tests PANEL-2 and APPLY-21) and the Profile,
Schema and Panel header comments follow.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 40237bac099d13557f4a9a24f61a20b806f5c971
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:37:16 2026 +0530
Log skin skips through DebugChanged; reset glyph hover on stand-down; skip relayout before paint
C-20: the file-local lastSkip memo is gone. A skip goes through
NS.DebugChanged("euiskin.skip", ...), so the console's Clear and turning
logging on re-arm it, and a skip seen while logging was off is written
once logging turns on.
C-29 (EUISkin half): a STAND_DOWN row puts both min/max glyphs back to
GLYPH_ALPHA, since their gated OnLeave hooks cannot while stood down.
The OnEnter/OnLeave gates stay.
C-30: OnEUISkinScale returns before any paint (smoke test only; a red
test is not possible, the guarded loop is empty).
Four new cases; inventory and badge regenerated (331).
Refs #11
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 9c96895050ad133025668eeb8a8c30b38158124d
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:35:13 2026 +0530
Check the EllesmereUI facade before painting and fail closed
C-05 (2026-10-10 audit+review). blocked() now refuses a facade missing
any primitive or getter the paint calls (REQUIRED), so a changed
EllesmereUI API leaves the panel stock instead of raising half-way. The
paint is pcall'd: a primitive that raises logs "paint failed", latches
paintFailed (no retry, which would skin the same widgets twice), and
OnSwitch(false) offers the reload that drops the partial paint.
The EllesmereUI fake gains spec.omit and spec.raise. Two new cases;
inventory and badge regenerated (327).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit ec843292f27c4aa52887bb6de78d4a3081f475d0
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:35:12 2026 +0530
Hook the PGF-skin link box once per pooled frame and clear it on release
C-01 / PGE-27. AceGUI pools the EditBox's inner frame and HookScript
cannot be undone, so every render stacked another OnEditFocusGained hook
on the same frame, and a released box's hook kept selecting text in
whatever widget got the frame next. The frame is now hooked once
(__pgfeLinkHook) and selects only while the link box owns it
(__pgfeLinkActive); the box's OnRelease clears the flag and forgets
Settings.PGFSkinLinkBox.
Three cases in tests/test_euisettings.lua hand every EditBox one shared
stub frame (the kit's fake has no inner editbox) and pin focus-selects,
release-clears and no-stacking.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit c768fd0bb009978b606ed66f93cc074312d8f3fe
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:34:32 2026 +0530
Refuse a wrapped block with no close pair; keep blank edge lines on Strip
C-03 / F-003, C-33. Refs #9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 10350bc92913e7eb3fd52d394982136445177a82
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:34:06 2026 +0530
Hoist RegionTags' painter table so lizard can measure the tree
C-02 / PGE-24 / F-001; records installed painters for diagnostics (C-10). Refs #7
The painter table moves out of the for-in header into PAINTER_HOOKS, which
lizard 1.24 can parse; the complexity suite now passes with no blind files
(max CCN 14). RegionTags.hooked records each painter actually hooked, and a
new case pins that a painter the client lacks is skipped while the other
still installs and tags.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit ddf11ca5fbd187829cb5d8574c5ede2ab4f64833
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 10:30:36 2026 +0530
Add the 2026-10-10 audit+review fix spec, plan and consolidated findings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 0dabcde405c81b764cafea57a822100281ba4cac
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 09:15:27 2026 +0530
Add the 2026-10-10 standards audit and review bundles
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit c3169c0d39683ccbc12928b45b2731218f9d12c2
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 02:37:34 2026 +0530
Say the copy box is empty while key targeting is off
docs/data-flow.md still said the Copy into search box field always shows
the level box's N-N; since 603a254 it is empty (and dimmed) while
"Untimed dungeons at key level" is off.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit c3169c0d39683ccbc12928b45b2731218f9d12c2
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 02:37:34 2026 +0530
Say the copy box is empty while key targeting is off
docs/data-flow.md still said the Copy into search box field always shows
the level box's N-N; since 603a254 it is empty (and dimmed) while
"Untimed dungeons at key level" is off.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 603a2545fbc54846516eaafef876435bbf5b2396
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 02:19:28 2026 +0530
Empty the copy box while key targeting is off
Owner request: with "Untimed dungeons at key level" unticked there is
no key level to search for, so the dimmed Copy into search box field is
now empty; ticking it brings the range back.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 5629527a20a9b416307715c01a2bad9bd1dec89e
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 01:21:48 2026 +0530
Let a click on the header strip fold and unfold the panel
Owner request: the title band now does what the collapse / expand arrow
does. A click area spans the band from the left edge to just short of
the arrow (which keeps its own click); nothing happens while stood down.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 5629527a20a9b416307715c01a2bad9bd1dec89e
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 01:21:48 2026 +0530
Let a click on the header strip fold and unfold the panel
Owner request: the title band now does what the collapse / expand arrow
does. A click area spans the band from the left edge to just short of
the arrow (which keeps its own click); nothing happens while stood down.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit a063025cb28b2c6281bf43621b1333b5b0b656a8
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Sat Oct 10 01:17:21 2026 +0530
Polish the panel: drop the leader score, full title, flush skin
Owner requests:
- Remove the Min leader M+ score row, its filter clause, validation,
defaults and strings: Premade Groups Filter's own M+ Rating row covers
the leader's rating. A stale stored value is ignored. The panel is one
row shorter.
- Title the panel "Ka0s Premade Groups Filter Extension".
- Sit the EllesmereUI shell flush under PGF's dialog, as the metal look
already is (SHELL_GAP 0).
- Pull the dungeon readout 6 units closer under the key-level row.
- Center the range in the Copy into search box field.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit aeb0f75eeaabd065d08cb6a6a950cea50c54f001
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 21:22:03 2026 +0530
Draw the landing logo at the library's 300x300 default
options-ui-§5 sets the landing logo at 300x300 (a MUST from standard
v2.78.0); the 256 override is dropped so BuildLandingPage's default
applies, and the test pins that no logoSize is passed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit aeb0f75eeaabd065d08cb6a6a950cea50c54f001
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 21:22:03 2026 +0530
Draw the landing logo at the library's 300x300 default
options-ui-§5 sets the landing logo at 300x300 (a MUST from standard
v2.78.0); the 256 override is dropped so BuildLandingPage's default
applies, and the test pins that no logoSize is passed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit fb3869898ea79569abb59bd69441132f2684af77
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 21:08:33 2026 +0530
Stop Apply taking keyboard focus into the copy box
Owner request: focusing the Copy into search box field after a
successful Apply held the keyboard (movement, chat) until the player
clicked away. Apply now leaves focus alone; clicking the field still
selects the range, and Enter there still jumps to the search box.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit aeb0f75eeaabd065d08cb6a6a950cea50c54f001
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 21:22:03 2026 +0530
Draw the landing logo at the library's 300x300 default
options-ui-§5 sets the landing logo at 300x300 (a MUST from standard
v2.78.0); the 256 override is dropped so BuildLandingPage's default
applies, and the test pins that no logoSize is passed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 46f05d934482bb961925c9a826248396321b8866
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 21:16:56 2026 +0530
Draw the settings landing page through the library's builder
The private landing body drew the logo as a texture straight on a
pooled AceGUI SimpleGroup frame and never removed it. After a re-render
the frame came back as another SimpleGroup (the spacer under the Slash
Commands heading) still carrying the logo, so the page showed it twice.
LibKa0s-Options' BuildLandingPage owns the clear and hides the logo on
release; BuildMainContent now hands it the logo, notes and command rows.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit f9f87e6b50579eb1d195bb913d87e3c6121b886f
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 21:14:16 2026 +0530
Narrow the gap under PGF's dialog by 1px in both looks
Owner request: the metal panel is raised 3 instead of 2 into the
dialog's bottom edge, and the EllesmereUI shell sits 1 below the
dialog instead of 2.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit d0837852531889d322f8eb23d71fefaf191f3511
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 21:14:16 2026 +0530
Lay out the EllesmereUI skin tab: switch first, tooltips, aligned state
Owner requests: the switch moves to the top with a gap below it; every
condition line and the state line explain what / why / how on hover
(InteractiveLabels, so AceGUI clears the callbacks on release); an 8px
gap above the state line, which (like a failing condition's hint) starts
in an empty icon slot the size of the status marks so its text lines up.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit fb3869898ea79569abb59bd69441132f2684af77
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 21:08:33 2026 +0530
Stop Apply taking keyboard focus into the copy box
Owner request: focusing the Copy into search box field after a
successful Apply held the keyboard (movement, chat) until the player
clicked away. Apply now leaves focus alone; clicking the field still
selects the range, and Enter there still jumps to the search box.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 22f37a8fd13a69c5a67bc7627b0795615652e429
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 21:04:54 2026 +0530
Ratify reading EllesmereUI's skin switches as a deviation
Owner decision: the optional skin's gate reads EllesmereUIDB's
third-party switches read-only from core/EUIBridge.lua. Recorded in
docs/ARCHITECTURE.md -> Documented deviations (library-stack-§6,
anti-patterns #29) with its re-check trigger. Plan: rows 6a and M2.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit b79b16ac08c8a102523efd4e676f4a0f22bf7627
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 20:57:51 2026 +0530
Say why PGF's EllesmereUI skin is missing, and link to it
Owner request: the PGF skin's status line now tells not installed,
installed but disabled, and turned off in EllesmereUI apart
(EUIBridge.PGFSkinState). When it is not installed, the skin tab adds a
read-only box holding its CurseForge link to copy.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 962eb1c1892813568758baa934b1e42037a881e5
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 20:54:34 2026 +0530
Fix the EllesmereUI skin review findings
- Master switch: any truthy thirdPartySkinsOff reads as off, exactly as
the dispatcher's MasterOn does.
- Profile switch/copy/reset routes through EUISkin.OnSwitch after the
enabled latch re-read: off after a paint asks for a reload, and a
disabled incoming profile is never painted.
- Stand-up replays the theme repaint and pixel relayout an existing
paint missed while stood down.
- Tests: live looks recolor, scale relayout, stand-up catch-up, both
profile-switch cases, truthy master value (318/318).
- README Version History mentions the skin; plan ledger row 6 ticked,
row 6a tracks the pending owner decision on library-stack-§6.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 051607434d761d55844c8ba077d32d3a1e1f423f
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 20:47:42 2026 +0530
Tick plan milestone M1 (gate green, branch pushed)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit d5b15ef0ee1cbeeadf5eb3d12556cf09f6d40683
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 20:47:26 2026 +0530
Document the EllesmereUI skin
ARCHITECTURE: overview, mock contract, module map, the euiSkin row,
the two scale events, taint notes, a new EllesmereUI seams section
(with the pending library-stack-6 standards note on reading
EllesmereUIDB) and known limitations. Module map, schema, settings
panel tree, debug sections, scope, DEPENDENCIES (optional EllesmereUI
trio), README usage paragraph, and smoke tests SKIN-1..9.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 7d2e0c194fe211f04e0d438227730839ddcb29e0
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 20:45:23 2026 +0530
Add the EllesmereUI skin tab to the General page
The euiSkin switch is a schema row in its own group, drawn as a second
General tab after Master controls: a status line per gate condition
(with what to do when it fails), a line saying what the skin is doing,
then the switch. The switch is disabled while any condition fails and
its tooltip says why; /pgfe set euiSkin true is refused with the same
reason, off is always accepted and a bulk reset never refused. A page
re-show re-reads the lines, and a panel show paints when a condition
was turned on in EllesmereUI's options. The degraded Options stub
gains TextRow.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 614bf03f9abd6d2a7ff3a63eb668c14317b6c6e6
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 20:40:53 2026 +0530
Paint the attached panel in the EllesmereUI theme
modules/EUISkin.lua registers with EllesmereUI at file load
(presence-guarded, ## OptionalDeps: EllesmereUI) and keeps the facade
S, so the lazily built panel is painted the moment every gate
condition, our euiSkin switch (default on) and the stand-up all hold:
from the callback, Panel.Create, the switch, a profile switch or the
stand-up. Shell and header (25px collapsed bar, metal copies at alpha
0, 2px gap below PGF's dialog), 24px checkboxes with PGF skin's accent
ring, number boxes, dropdowns, buttons, min/max minus/plus and fonts,
after PremadeGroupsFilter_EllesmereUI. Switching off after a paint
asks for a reload. Hooks return while stood down. Diagnostics report
the gate and the skin.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit fa6e46628cadc4fd75abd329269835423a490a52
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 20:34:25 2026 +0530
Add the EllesmereUI bridge: the skin's four-condition gate
core/EUIBridge.lua is the only file that reads EllesmereUI state, at
call time and nil-guarded: EllesmereUI with RegisterSkin and its window
skin child loaded, the master third-party switch, our own Third-Party
Addons entry, and PGF's own EllesmereUI skin (loaded, entry on). Each
condition carries a label and a hint for the settings page. Headless
cases against an opt-in EllesmereUI fake in tests/wow_mock.lua.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit 0b864694f0cebcf816b3255b5983f7d61eec7e03
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 20:17:57 2026 +0530
Plan the EllesmereUI skin for the attached panel
Owner decisions: gate on EllesmereUI (with its skin child), its master
third-party switch and our own entry, and PGF's own EllesmereUI skin;
a profile switch that can never force the skin on. Resumable ledger.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit e6615db9d2f40afa32e8efda08806261b61424d5
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 20:13:59 2026 +0530
Rework the panel and replace PremadeRegions' region tags
Owner feedback rounds on the attached panel, in-game:
- Filters: playstyle and composition multi-selects (Any entry; all
ticked reads as Any for regions/playstyles, not for composition),
min leader M+ score, Smart key level (lowest best timed + 1), and
server regions with none selected passing every region.
- Toggle PGF Extension Filters: a filtersActive profile setting (panel
first row and a Master controls extra row) that removes or rewrites
the managed block; Apply refuses and pgfe_on is false while it is off.
- Layout: one 26px row pitch, header-only collapse built from clipped
border copies, swapped min/max art, centered title, 2px gap under
PGF's dialog drawn above its border, wider dropdowns and buttons,
tooltips on every option, copy box dimmed without key targeting,
Apply -> Ctrl+C -> Enter -> Ctrl+V keyboard chain.
- Region tags: modules/RegionTags.lua tags each Group Finder listing and
applicant with the leader's colored server region (showRegionTags
setting), so PremadeRegions is no longer needed; it steps aside while
PremadeRegions is loaded.
- Defaults match the owner's reference screenshot.
Docs synced (schema, data flow, scope, smoke tests, test cases).
Gate: 264 passed, 1 skipped; luacheck 0/0. Not yet verified in-game.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit e6615db9d2f40afa32e8efda08806261b61424d5
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 20:13:59 2026 +0530
Rework the panel and replace PremadeRegions' region tags
Owner feedback rounds on the attached panel, in-game:
- Filters: playstyle and composition multi-selects (Any entry; all
ticked reads as Any for regions/playstyles, not for composition),
min leader M+ score, Smart key level (lowest best timed + 1), and
server regions with none selected passing every region.
- Toggle PGF Extension Filters: a filtersActive profile setting (panel
first row and a Master controls extra row) that removes or rewrites
the managed block; Apply refuses and pgfe_on is false while it is off.
- Layout: one 26px row pitch, header-only collapse built from clipped
border copies, swapped min/max art, centered title, 2px gap under
PGF's dialog drawn above its border, wider dropdowns and buttons,
tooltips on every option, copy box dimmed without key targeting,
Apply -> Ctrl+C -> Enter -> Ctrl+V keyboard chain.
- Region tags: modules/RegionTags.lua tags each Group Finder listing and
applicant with the leader's colored server region (showRegionTags
setting), so PremadeRegions is no longer needed; it steps aside while
PremadeRegions is loaded.
- Defaults match the owner's reference screenshot.
Docs synced (schema, data flow, scope, smoke tests, test cases).
Gate: 264 passed, 1 skipped; luacheck 0/0. Not yet verified in-game.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UewSqREheLNYgdRt4JXiSd
commit b598f100222e4d582278a4b5d65251c990ecc6f0
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 09:11:08 2026 +0530
Tick plan milestone M2 (PR #20 open, awaiting go-ahead)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit 424caaf43c031307d3e3cf5fd4eb4518658f36eb
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 09:10:29 2026 +0530
Tick plan ledger row 11
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit cc3f5d9b6a0939248bf36ccc51747cb0ef13173d
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 09:10:15 2026 +0530
Record the 2026-10-09 review and standards-audit bundles
Whole-branch review (F-001..F-011) and Ka0s standard v2.77.0 audit
(PGE-01..22). Critical/high and the cheap medium/low findings are fixed
in the preceding commits; the rest are filed as issues #4-#19. CLAUDE.md
now points at the audit snapshot.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit 0a383b8f69cbc0582f4fe288e3c8019a53ababc4
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 09:07:31 2026 +0530
Return at once from the dialog hook while stood down
The HookDialog callback still ran UpdateVisibility (which only hid the
panel) while stood down; the Global Constraint says every hook body
returns at once.
Spec-adversary #8.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit 6bdec82ba1ca449e26accc9f404ed1f2d31c63aa
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 09:06:20 2026 +0530
Refresh the attached panel on a profile switch
panelCollapsed lives in the profile, but the profile callbacks did not
refresh the attached panel, so its layout stayed stale until the dialog
reopened.
Review F-010.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit 6dafd21a241e2d4ef62218a8b485eea9f2767c67
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 09:05:44 2026 +0530
Return no region for a non-string leader name
The env hook runs inside PGF's per-result loop; Regions.GetRegion assumed
leaderName was a string. A type check now returns nil instead of raising.
Review F-011.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit 82bf49316a74e75d10ab9ed8ed86ba6e39ba6b63
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 09:04:27 2026 +0530
Report the rows Apply ticked; keep the range field on the level
Apply's message counted the computed targets, not the PGF rows actually
ticked, and said "0 dungeon(s) targeted" with key targeting off (now
MSG_APPLIED_NO_TARGETING). After the first Apply the range field stuck to
the applied range instead of following the level box.
Review F-008, F-009; spec-adversary #6.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit d1e8c373297f0f4ca8caf0dc787e5871297aba63
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 09:03:14 2026 +0530
Load presets over the current filter defaults
Presets.Load replaced the live filter table wholesale, so a preset saved
before a filter key existed would drop that key (and the panel would error
on a missing `regions`). It now lays the preset over a copy of
CHAR_DEFAULTS.filters, keeping the same live table.
Review F-007.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit d54dd0f68e4d7e37ab8e4dc439193019ff632288
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 09:02:13 2026 +0530
Commit the panel's number boxes only on Enter or focus loss
The level and age boxes saved on every keystroke: typing `45` stored `4`,
then rejected `45` while the box still showed it. They now commit the whole
value on Enter or focus loss, put the stored value back when the entry is
rejected, and revert on Escape.
Review F-003.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit 5c7dce46f6d9cec05d7bc8e11444ba57f2e2f4f3
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 09:00:11 2026 +0530
Refuse Apply/Clear and hide the panel while PGF is minimized
Minimized, PGF filters with its mini panel, so Apply wrote the dungeon
state, searched and printed "Applied" with none of the options in effect.
Bridge.IsDungeonPanelActive() now gates Apply/Clear (MSG_MINIMIZED) and
the attached panel's visibility, as Review Focus 3 and spec §5 require.
Review F-004; spec-adversary #1, #2.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit e835996affce6ab11f9d2fabd5f6c9ac37ddc116
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 08:58:22 2026 +0530
Read the player's spec through NS.Compat
EnvInject called the deprecated GetSpecialization/GetSpecializationInfo
globals directly, bypassing core/Compat.lua; on a client without them the
same-spec and same-class-role filters would pass every group. The reader
now goes through NS.Compat (C_SpecializationInfo first), and the globals
are gone from .luacheckrc's read_globals so a direct call fails lint.
Review F-002; audit PGE-01.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit d91a6c7ad60d757bafcc14d585daa3363b11ad1e
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 08:57:41 2026 +0530
Make the managed block neutral when the env hook does not run
The block lives in PGF's state and outlives this addon's runtime. After an
Apply, a stand-down (or an AddOns-list disable, or an uninstall) left
pgfe_samespec/pgfe_sameclassrole unset, so `nil == 0` hid every dungeon
listing with no way to Clear from inside the addon. The hook now sets
env.pgfe_on and Merge writes `( not pgfe_on or ( clauses ) )`.
Review F-001; spec-adversary #3.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit 58156ca3edffd4395c510cd70ca32565033f8d6a
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 08:30:22 2026 +0530
Record the 0.1.0 automated-test bundle; tick plan ledger row 9
Release run 20261009-082905 on 2c78ddb: lint 0/0, 186/1/187, complexity
max CCN 13 with no warnings, perf skipped (no tests/perf.lua). The
runner's verdict is green, but the tag's release gate stays open until
the env-hook perf scenarios exist; ANALYSIS.md records that action.
CLAUDE.md points at the newest record.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit 2c78ddbb26f83fdc02b8719bd93372223e7eb8dc
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 08:29:01 2026 +0530
Write docs and smoke tests for 0.1.0
Bring the doc set up to the built addon: ARCHITECTURE gains the PGF
seams table (PGF 7.6.2 file:line cites), the injected variables, the
expression block format, an event table and the slash table; the
module map, data flow, schema, settings, performance and common-task
docs drop their "stub until Task N" notes. Smoke tests grow to
APPLY-1..14 with the owner's N=14 reference case. README badge moves to
186/186, gains Screenshots and troubleshooting rows. test-cases.md
regenerated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit 04da8263a28b7604bf4d763e65cf6c7f64ee805a
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 08:22:59 2026 +0530
Tick plan ledger row 8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit 9fea77475bf17e57942fc0fa122a710d473f08d8
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 08:22:52 2026 +0530
Add the attached filter panel
modules/Panel.lua builds PremadeGroupsFilterExtensionPanel under PGF's
dialog in PGF's own look (PortraitFrameTemplateMinimizable, the
no-portrait minimizable border, FULLSCREEN strata, 23px checkbox rows):
key targeting with level box and best-timed readout, region chips per
portal, composition, experienced-leader and max-age options, presets
(dropdown, Save, Save as, Delete), Apply/Clear and the copyable N-N
range field. Shown only while the dialog is on the Dungeons category
and the addon is up; collapse state lives in profile.panelCollapsed.
tests/wow_mock.lua decorates frames built under PGF's dialog with
anchors, text, checked state and the min/max callbacks so the panel's
read-backs can fail.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit 63fbeb51dbaba1d43a83dd112e5b6223805e14b8
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 08:15:24 2026 +0530
Tick plan milestone M1 (pushed)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit d821fcde05d301e025c1619e768f72f0e6d30976
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 08:15:11 2026 +0530
Tick plan ledger row 7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit ec88a1d110cf20ede561ef75fbae569976d5cff8
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 08:15:10 2026 +0530
Add Apply/Clear orchestration and /pgfe apply|clear
NS.Apply.Run refuses before writing anything on combat, a missing PGF
seam, a non-dungeon (or minimized-elsewhere) category, invalid options,
loading season data, nothing untimed, or a damaged/too-long expression;
otherwise ticks the untimed dungeons, merges the managed expression
block, commits to PGF and searches when asked. Clear strips the block.
/pgfe apply searches (typed command = hardware event); /pgfe clear.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
commit f82fcf694b64472b810605fdcd0154621028feba
Author: Tushar Saxena <tushar.saxena@gmail.com>
Date: Fri Oct 9 08:12:11 2026 +0530
Tick plan ledger row 6
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SUL3MfVudba8eYtSoqFCjV
This mod has no additional files

