kyte-php v4.8.0
Change: drop JavaScript obfuscation columns (Phase 2 — schema; resolves KYTE-#191 Phase 2)
Phase 2 of the JS-obfuscation removal (KYTE-#191). Phase 1 (v4.7.0) stopped obfuscation behaviorally but deliberately left the obfuscated columns in place (inert) so an expand/contract rollout could prove stable before any schema change. This release contracts: it removes the now-dead columns and all remaining code that touched them.
-
Schema drop (9 tables, via
migrations/4.8.0_drop_obfuscation_columns.sql). Drops the inert obfuscated content columnsjavascript_obfuscated(KytePageData,KytePageVersionContent,KyteSectionTemplate),content_js_obfuscated(KyteScript,KyteScriptVersionContent), andkyte_connect_obfuscated(Application), plus the now-unused flagsobfuscate_js(KyteSectionTemplate,KyteScript,KytePage,KytePageVersion,KyteScriptVersion) andobfuscate_kyte_connect(Application). This reclaims the stored-duplicate storage bloat — every page/script/section had been storing a second bzcompressed copy of its JS that was never served. The migration does not pin anALGORITHM: modern engines (MySQL 8.0.29+, MariaDB 10.5+) perform theDROP COLUMNas an INSTANT, no-rebuild operation automatically, and older engines fall back to INPLACE/COPY automatically. (An explicitALGORITHM=INSTANTwould error on an engine that can't honor it rather than fall back, so it is intentionally omitted.) -
Model definitions removed. The five field identifiers are deleted from the
Mvc/Modeldefinitions (KytePageData,KytePageVersionContent,KyteSectionTemplate,KyteScript,KyteScriptVersionContent,KytePage,KytePageVersion,KyteScriptVersion,Application). -
bz storage handling removed. All
bzcompress/bzdecompressof the obfuscated fields is gone from the page/script/section/library/nav/sidenav/application controllers (compress-on-write, decompress-on-read, thestoreVersionContent/storeScriptVersionContentwrites, and thegetCurrentPageData/getCurrentScriptDatareads). ThesafeCompressCode/safeDecompressCodehelpers are retained —contentstill uses them. -
isset() guards relaxed. The content-save/publish/decompress guards (e.g.
KytePageControllerupdate +publishPage, and the footer/header decompress guards across the page/data/application/library/sidenav/navigation/script controllers) previously required the obfuscated field alongsidehtml/stylesheet/javascript/block_layout. Only the obfuscated element was removed from each guard; the guards still validate the real content fields.
ROLLOUT RULE (code-first / drop-last, expand-contract): deploy the v4.8.0 code to all instances before running migrations/4.8.0_drop_obfuscation_columns.sql. The v4.8.0 code no longer references the obfuscated columns, so dropping them is safe once it is live; running the migration against v4.7.0-or-earlier code would break content save/publish/decompress. Shipyard may keep sending empty obfuscated payload keys harmlessly — v4.8.0 ignores unknown fields.