From 437b1b84e06eefe46dbaa0489dd69d103f1f0785 Mon Sep 17 00:00:00 2001 From: "Beau Beauchamp, WebTigers" Date: Sat, 24 Oct 2026 19:13:27 -0400 Subject: [PATCH] =?UTF-8?q?release:=20tiger-core=201.43.0=20=E2=80=94=20vi?= =?UTF-8?q?ews=20own=20markup=20(TIGER-384)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every view's JS/CSS moves into a registered asset: 52 views, ~5,400 lines of inline JavaScript. Behaviour is unchanged on every screen — same markup, same /api calls, same strings — but the rule is now enforced by CI rather than written in a docblock. Two real bugs came out of the work. A pageScript() registration made from inside partial() was silently discarded (profile.sms.js had never loaded, so the Phone & SMS card on /profile had no behavior at all), and Tiger_Uuid::timeOf() returned an int on a whole second, breaking its own @return float about one call in a thousand. Thirteen bundled modules gain an assets/ directory for the first time, so they need their public/_modules/ link — publishAllAssets() already runs from tiger migrate, Tiger_Update_Core and link:assets, so a normal update covers it. --- CHANGELOG.md | 53 +++++++++++++++++++++++++++++++++++++++ library/Tiger/Version.php | 2 +- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b368efb..3d314ba1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,59 @@ All notable changes to **Tiger Core** (`webtigers/tiger-core`). Format follows ## [Unreleased] +## [1.43.0] — 2026-10-24 + +### Fixed +- **A page asset registered from inside a partial was silently discarded** (found while doing TIGER-384). + `Zend_View_Helper_Partial` renders against a `clone` of the view, and ZF1 binds a helper to a view only + the first time *that* view instantiates it — so a `$this->pageScript()` whose first call happened inside + a partial wrote the layout slot on a throwaway clone, and the tag never reached the page. The JS simply + never loaded, behind a 200. **`profile.sms.js` had been registered that way since it shipped**, so the + Phone & SMS card on `/profile` had no behavior at all. The slot is now written on every distinct view in + play (the bound one and the MVC view the layout renders against), with per-request static dedupe so the + pair cannot double-emit — new `Tiger_View_Helper_PageAsset_Abstract` carries the shared mechanics. The + channel is still the `pageScripts` / `pageHead` view var, deliberately: every theme layout already + echoing those — including themes shipped outside this repo — keeps working with no change. +- **`Tiger_Uuid::timeOf()` returned an int on a whole second.** PHP's `/` yields an int when it divides + exactly, so a v7 timestamp with no millisecond remainder broke the declared `@return float` about one + call in a thousand. It failed a CI leg once and passed on the retry, which is the worst kind of coverage; + pinned with a deterministic test alongside the probabilistic one. + +### Changed +- **Every view's JavaScript and CSS now lives in a registered asset file** (TIGER-384). A `.phtml` owns + markup; behavior is a JS asset and styling is the skin's job. The `pageScript()`/`pageStyle()` seam for + that already existed and was unit-tested — and the tree still carried ~5,400 lines of inline JavaScript + across 47 views, because nothing failed when someone typed `