Skip to content

Address PR #313 review (TIGER-232..236): restore TigerCombo + harden pathbox/discovery - #314

Merged
WebTigers merged 2 commits into
mainfrom
fix/pr313-review
Sep 26, 2026
Merged

WebTigers merged 2 commits into
mainfrom
fix/pr313-review

Conversation

@WebTigers

Copy link
Copy Markdown
Owner

Remediates Astra's (Codex) static review of #313. Five P2 findings, all fixed.

Ticket Finding Fix
TIGER-233 #313 overwrote the shared tiger.combobox.js (TigerCombo, the closed-<select> enhancer the admin layout loads globally), reverting the timezone fields to native selects Restored TigerCombo verbatim; moved the new remote control to its own asset tiger.pathbox.js (TigerPathbox). Closed-set fields keep filter-as-you-type; CMS keeps pick-or-type
TIGER-232 free text committed only on a delayed blur → clicking Save fast saved the old value pathbox exposes flush() / TigerPathbox.flushAll(); cms.settings.js flushes synchronously before FormData. home_page errors now decorate the visible input
TIGER-234 every response rendered unconditionally + reopened the panel per-request generation stamp + open-intent guard — a superseded or post-dismissal response is dropped
TIGER-235 Cms_Service_Paths built a Zend_Db_Select and loaded full page rows per keystroke new Tiger_Model_Page::publishedSummaries($q,$limit) (small cols, published gate, search+cap in the model); service calls it. Theme homes first so the cap can't crowd them; one memoised Tiger_Theme::inventory() replaces per-call re-globbing
TIGER-236 theme discovery scanned 2 of the 4 Bootstrap::_initTheme locations inventory() scans all four, same precedence (app over core), keyed by manifest key

Verified on dev

  • TigerCombo restored (asset serves the <select> enhancer); tiger.pathbox.js serves the new control.
  • Tiger_Theme::inventory() resolves every installed theme; dirForKey/assetBaseForKey intact.
  • publishedSummaries runs clean (small columns, no body load).

Tests

HomePageSelectorTest unchanged (service contract stable). New PageTest coverage for publishedSummaries: published-only + scheduled gate + soft-delete exclusion + small columns; query filter + limit.

Closes TIGER-232, TIGER-233, TIGER-234, TIGER-235, TIGER-236.

🤖 Generated with Claude Code

https://claude.ai/code/session_01ASauLLscjqdsNqBNsx2Typ

WebTigers and others added 2 commits September 26, 2026 10:33
…he pathbox + discovery

Astra (Codex) static review of PR #313. Five P2 findings, all remediated.

TIGER-233 (regression I introduced): PR #313 overwrote the shared tiger.combobox.js (TigerCombo — the
closed <select> enhancer the admin layout loads globally for the timezone fields on profile + access),
reverting them to plain native selects. Restored TigerCombo verbatim; moved the new remote "pick or type"
control to its own asset tiger.pathbox.js (TigerPathbox / data-tg-pathbox). Closed-set fields keep their
filter-as-you-type; the CMS home field keeps pick-or-type.

TIGER-232: the pathbox committed free text only in a delayed blur, so clicking Save fast captured the old
value. It now exposes el._tgPathbox.flush() + TigerPathbox.flushAll(scope); cms.settings.js calls flushAll
synchronously before building FormData. home_page validation errors now decorate the VISIBLE search input,
not the hidden backing field.

TIGER-234: every fetch response rendered unconditionally and reopened the panel. Added a per-request
generation stamp + open-intent guard: a superseded or post-dismissal/post-selection response is dropped
(can't overwrite newer results or reopen a closed control).

TIGER-235: Cms_Service_Paths built a Zend_Db_Select and fetched full published-page rows (bodies + meta)
per keystroke, then filtered/capped after — against the "query building belongs in a model" rule. Added
Tiger_Model_Page::publishedSummaries($q, $limit) (small columns, published+scheduled gate, search + cap in
the model); the service calls it, no query builder. Theme HOMES are now emitted for ALL themes before any
advanced sub-pages so the per-group cap can't crowd a later theme's home out. One memoised
Tiger_Theme::inventory() replaces re-globbing/re-reading manifests per dirForKey/pagesForKey call.

TIGER-236: theme discovery (dirForKey et al.) scanned only 2 of the 4 locations Bootstrap::_initTheme
resolves from, so a theme in app/themes/<name> or core/modules/theme-<name> was activatable but invisible
to the selector and unresolvable by @theme:<key>. inventory() now scans all four in the SAME precedence
(app over core), keyed by manifest key.

Tests: HomePageSelectorTest unchanged (service contract stable); new PageTest coverage for
publishedSummaries (published-only + small columns; query filter + limit).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ASauLLscjqdsNqBNsx2Typ
@WebTigers
WebTigers merged commit 944217d into main Sep 26, 2026
14 checks passed
@WebTigers
WebTigers deleted the fix/pr313-review branch September 26, 2026 14:50
@WebTigers WebTigers mentioned this pull request Sep 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant