tag:github.com,2008:https://github.com/textpattern/textpattern/releasesRelease notes from textpattern2026-02-14T16:59:41Ztag:github.com,2008:Repository/158617/4.9.12026-02-14T20:10:51Zv4.9.1<ul>
<li>Maintenance release with security enhancements, general improvements and bug fixes.</li>
<li>Security: Resolved access control regression with articles. Many thanks to Federico Frascino.</li>
<li>Security: Resolved admin-side XSS vulnerability. Many thanks to Jan Jeffrie Galvez Salloman, aka '0xj4n'.</li>
<li>Changed: (Article)Image tags only output dimensions on demand.</li>
<li>Changed: <code><txp:article_image></code> skips empty images/thumbnails.</li>
<li>Changed: Valueless width/height/crop behaviour in (Article)Image tags.</li>
<li>Changed: Thumb path now permits virtual/multiple host setups.</li>
<li>Changed: Use publisher email and fallback if no/invalid sender is supplied (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jools-r/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jools-r">@jools-r</a> ).</li>
<li>Fixed: Fatal error with <code>UNIXTIME()</code> changes in MariaDB 11.8+.</li>
<li>Fixed: Dynamic thumbnail MIME detection (thanks, rezozero/ambroisemaupate).</li>
<li>Fixed: PHP 5.6 support (thanks, pinalgirkar).</li>
<li>Fixed: Show template content even if theme is deleted (thanks, Mark Goodwin).</li>
<li>Fixed: Correct admin theme file scaffold for dynamic thumbnails.</li>
<li>Fixed: Reintroduce 'No' indicator if thumbnail is missing in Images list panel (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rwetzlmayr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rwetzlmayr">@rwetzlmayr</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/phiw13/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/phiw13">@phiw13</a>).</li>
<li>Fixed: Duplicate action only available for existing content.</li>
<li>Fixed: Assets created with no timestamp use time of creation, not Unix epoch.</li>
<li>Fixed: Internal errors with password reset email sending on PHP 8.5.</li>
<li>Added: (Article)Image thumbnails can output any supported format.</li>
<li>Vendors: jQuery UI 1.14.2.</li>
</ul>Bloketag:github.com,2008:Repository/158617/4.9.02025-12-21T17:40:18Zv4.9.0<ul>
<li>Feature release with support for PHP 8.5, MySQL 8.4, new functionality, security enhancements, improvements, and bug fixes.</li>
<li>Changed: Minimum system requirements increased to PHP 5.6 (PHP 8.2+ recommended, preferably with ongoing vendor support).</li>
<li>Changed: Minimum system requirements increased to MySQL 5.5 (MySQL 8.0+ recommended, preferably with ongoing vendor support).</li>
<li>Fixed: Remove 'br' tags from article image markup where >1 image is supplied (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jools-r/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jools-r">@jools-r</a>).</li>
<li>Fixed: Pre+post textfilter callbacks were switched.</li>
<li>Fixed: Plugins import Textpack strings correctly.</li>
<li>Fixed: Prefs (multi-)select options.</li>
<li>Fixed: Improved support for images with EXIF orientation metadata (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jools-r/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jools-r">@jools-r</a>).</li>
<li>Fixed: Avoid directory traversal when uploading plugins (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BG1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BG1">@BG1</a>).</li>
<li>Fixed: Compiled plugins upload on PHP 5.6.</li>
<li>Fixed: Windows-generated .zip plugins installable on UNIX/Linux.</li>
<li>Fixed: Restored empty 'height' and 'width' attributes behaviour of <code><txp:image /></code>.</li>
<li>Fixed: Self-closing tag output for html5 doctype to silence validator (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jools-r/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jools-r">@jools-r</a>).</li>
<li>Fixed: Ignore search in individual article mode.</li>
<li>Fixed: Take RFC 2616 mail headers setting into account for separator.</li>
<li>Fixed: Sandboxed article/body/excerpt preview (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/grozdniyandy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/grozdniyandy">@grozdniyandy</a>).</li>
<li>Added: Support for PHP 8.2, PHP 8.3.1+, PHP 8.4, and PHP 8.5.</li>
<li>Added: Full article previews directly from the Write panel.</li>
<li>Added: Filter articles by image.</li>
<li>Added: Admin Theme prefs.</li>
<li>Added: Automatic, dynamic thumbnail generation (tags and back-end).</li>
<li>Added: SVG image support (thanks, osadl and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jools-r/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jools-r">@jools-r</a>).</li>
<li>Added: Activity indicator for extended duration file/image upload processes.</li>
<li>Added: Multi-edit for changing author language.</li>
<li>Added: In-use asset counters to the Users panel.</li>
<li>Added: Reload language packs from disk.</li>
<li>Added: Shift+Space shortcut for 'Tab' indent in textareas.</li>
<li>Added: Input length tooltip when appropriate.</li>
<li>Added: PHPMailer for third-party SMTP delivery. See Admin>Preferences>Mail.</li>
<li>Added: <code><txp:date /></code> tag.</li>
<li>Added: <code><txp:if_article_status /></code> tag.</li>
<li>Added: <code><txp:if_items_count /></code> tag.</li>
<li>Added: Global 'variable' attribute.</li>
<li>Added: Global 'offset' attribute can be set by URL parameters.</li>
<li>Added: 'parent' attribute to <code><txp:category /></code>.</li>
<li>Added: 'inline' value to 'format' attribute of <code><txp:css /></code> (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jools-r/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jools-r">@jools-r</a>).</li>
<li>Added: 'alias' attribute to <code><txp:evaluate /></code>.</li>
<li>Added: Ability to serve files via 'type' attribute to <code><txp:file_download /></code>.</li>
<li>Added: 'exclude' attribute to <code><txp:file_download_list /></code> and <code><txp:linklist /></code>.</li>
<li>Added: Site production status values to 'process' attribute of <code><txp:hide /></code>.</li>
<li>Added: 'level' attribute to <code><txp:if_category /></code>.</li>
<li>Added: 'match', 'separator' attribute capability to <code><txp:if_yield /></code>.</li>
<li>Added: 'exclude', 'month' and 'time' attributes to <code><txp:images /></code>.</li>
<li>Added: 'lang' attribute to <code><txp:page_url /></code>.</li>
<li>Added: 'target' attribute to <code><txp:popup /></code>.</li>
<li>Added: 'filter' attribute to <code><txp:section_list /></code> and <code><txp:if_section /></code>.</li>
<li>Added: Plugins can be uploaded from a URL by dragging to upload textarea.</li>
<li>Added: Plugin compilation directly from the Plugins panel.</li>
<li>Added: Plugin export to .zip.</li>
<li>Added: Compiled plugins can be uploaded via Browse... feature.</li>
<li>Added: Compatible plugin upgrades directly from the Plugins panel.</li>
<li>Added: Create and install new plugins directly from the Plugins panel.</li>
<li>Added: Plugin multi-edit option: revert to last installed code content.</li>
<li>Added: All plugin metadata exposed in the Plugin Edit panel.</li>
<li>Added: Latest text translations. Thank you to all our translators.</li>
<li>Added: Punjabi, Slovenian and Urdu (Pakistani dialect) language support.</li>
<li>Added: Trailing slash URL preference.</li>
<li>Added: File download header preference.</li>
<li>Added: Option to define a Content Security Policy header for the Textpattern admin-side via <code>config.php</code>.</li>
<li>Added: Support for aggregate window functions in compatible MySQL versions.</li>
<li>Added: metaWeblog.newMediaObject for image upload over the MovableType API (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Melonking906/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Melonking906">@Melonking906</a>).</li>
<li>Changed: Pending articles may be displayed on the site.</li>
<li>Changed: Theme page maximum size increased from 64KB to 16MB.</li>
<li>Changed: Allow content dates prior to 01-01-1970, and beyond 03:14:07 UTC on 19 Jan 2038. Refer to Epochalypse/Year 2038 problem for info. Adjustments for non-Gregorian (AD) dates are performed.</li>
<li>Changed: Display/edit 'modified' date on Files panel.</li>
<li>Changed: Refactored article Save panel (thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jools-r/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jools-r">@jools-r</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/phiw13/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/phiw13">@phiw13</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cara-tm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cara-tm">@cara-tm</a>).</li>
<li>Changed: File Edit panel has the ability to rename and delete files, and change the download counter value (thanks, adi).</li>
<li>Changed: Image Edit panel has the ability to delete images.</li>
<li>Changed: Image Edit panel includes published date/time, which can be altered.</li>
<li>Changed: Pre-flight check visibility toggle.</li>
<li>Changed: In-use languages can not be deleted.</li>
<li>Changed: Deprecate <code><txp:search_result_count /></code>. Use `<txp:items_count /> instead.</li>
<li>Changed: Section-aware default search.</li>
<li>Changed: Image tags can take HTML attributes.</li>
<li>Changed: Enhancements to 'br' tag HTML5 compliance (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jools-r/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jools-r">@jools-r</a>).</li>
<li>Changed: Enhancements to SVG handling relating to non-px dimensions (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jools-r/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jools-r">@jools-r</a>).</li>
<li>Changed: Enhancements to 'extension' and 'size' attributes of <code><txp:images /></code>.</li>
<li>Changed: Enhancements to RPC functionality (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Melonking906/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Melonking906">@Melonking906</a>).</li>
<li>Changed: Admin-theme checksums computed independently. Unused admin themes can be deleted and will no longer trigger Diagnostics alert.</li>
<li>Changed: Multi-site scaffold optimisations.</li>
<li>Changed: Wildcards in file/image/link category queries.</li>
<li>Changed: <code><txp:header /></code> tag requires 'form' privilege.</li>
<li>Changed: Articles may use external URLs directly.</li>
<li>Changed: Some language keys renamed to avoid invalid name clashes.</li>
<li>Changed: Do not generate empty syndication feeds for feedless sections.</li>
<li>Changed: Removed 'noopener' from target="_blank" links (now default behaviour in all supported browsers) (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/phiw13/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/phiw13">@phiw13</a>).</li>
<li>Changed: Removed 'aria-label' attributes where 'title' already exists.</li>
<li>Changed: Checksums use Tiger-192,3 instead of MD5. Fewer potential clashes.</li>
<li>Changed: Allow PHP scripting options off by default, and Diagnostics warning.</li>
<li>Changed: Plugins of all types trigger verify step (with improved security).</li>
<li>Changed: Extend character set that can be used in tag/attribute names.</li>
<li>Changed: Less collision-prone custom fields name processing.</li>
<li>Changed: Category & section description field sizes increased to 1023 characters.</li>
<li>Changed: Introduce primary keys for all database tables, replacing some old indexes.</li>
<li>Developer: Permitted concurrent logins. See Advanced Prefs.</li>
<li>Developer: Removed duplicate pluggable_ui callback for article_ui›categories (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jools-r/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jools-r">@jools-r</a>).</li>
<li>Developer: Added pophelp support in plugin 'lang' directory.</li>
<li>Developer: Articles (list) panel callbacks:<br>
articles>fields and articles>from to manipulate the query<br>
articles>controls to affect the button area<br>
articles_ui>list.row (pluggable_ui) for adding table data<br>
articles>steps for plugins to register custom panel-level functionality.</li>
<li>Developer: Add pre+post article_submit callbacks on article post/save.</li>
<li>Developer: Add getAtts($tag) method for fetching tag attributes.</li>
<li>Developer: Reintroduce extend_col_1 markup area on Write panel.</li>
<li>Developer: Add lifecycle>loaded callback for plugins run from cache.</li>
<li>Developer: Introduce UI class library for building interface components.</li>
<li>Developer: Tag registration is now mandatory.</li>
<li>Developer: Some of the lesser-used tags are loaded on demand from their class<br>
to save memory. Plugins must call them via processTags() function.</li>
<li>Developer: Add safe_exists() function to database layer.</li>
<li>Developer: Move $thisversion and $txp_is_dev to constants.php.</li>
<li>Developer: 'Visitor logs' panel is now bound to the new 'lore' event name<br>
(was: 'log') to prevent conflicts with privacy filters.</li>
<li>Developer: File upload callbacks (file_uploaded and files_uploaded pre+post).</li>
<li>Developer: Activation emails can be skipped via hidden notify="skip" field.</li>
<li>Developer: Can add &checksums=1 on Diagnostics panel URL to verify checksums.</li>
<li>Vendors: Textile 4.1.4. (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gocom/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gocom">@gocom</a>).</li>
<li>Vendors: DOMPurify 3.3.1.</li>
<li>Vendors: jQuery 3.7.1.</li>
<li>Vendors: jQuery UI 1.14.1.</li>
<li>Vendors: PHPMailer 6.12.0.</li>
<li>Vendors: PrismJS 1.30.0.</li>
<li>Vendors: UglifyJS 3.19.3.</li>
</ul>petecoopertag:github.com,2008:Repository/158617/4.9.0-beta.22025-03-14T11:40:28Zv4.9.0-beta.2<ul>
<li>Added: Full article previews directly from the Write panel.</li>
<li>Added: Site status values to 'process' attribute of <code><txp:hide /></code>.</li>
<li>Added: 'inline' value to 'format' attribute of <code><txp:css /></code> (thanks, jools-r).</li>
<li>Added: 'target' attribute to <code><txp:popup /></code>.</li>
<li>Added: 'match', 'separator' attribute capability to <code><txp:if_yield /></code>.</li>
<li>Added: Ability to serve files via 'type' attribute to <code><txp:file_download /></code>.</li>
<li>Added: Plugin compilation directly from the Plugins panel.</li>
<li>Changed: Refactored article Save panel (thanks jools-r, phiw13, and cara-tm).</li>
<li>Changed: Wildcards in file/image/link category queries.</li>
<li>Changed: Enhancements to RPC functionality (thanks, Melonking906).</li>
<li>Changed: Multi-site scaffold optimisations.</li>
<li>Changed: Pre-flight check visibility toggle.</li>
<li>Changed: Articles may use external URLs directly.</li>
<li>Changed: A few language keys renamed to avoid invalid name clashes.</li>
<li>Developer: Add pre+post article_submit callbacks on article post/save.</li>
<li>Developer: Add getAtts($tag) method for fetching tag attributes.</li>
<li>Developer: Reintroduce extend_col_1 markup area on Write panel.</li>
<li>Developer: Add lifecycle>loaded callback for plugins run from cache.</li>
<li>Fixed: Pre+post textfilter callbacks were switched.</li>
<li>Fixed: Plugins import Textpack strings properly.</li>
<li>Fixed: Prefs (multi-)select options (UI Library).</li>
<li>Vendors: DOMPurify 3.2.4.</li>
<li>Vendors: jQuery UI 1.14.1.</li>
<li>Vendors: PHPMailer 6.9.3.</li>
<li>Vendors: PrismJS 1.30.0.</li>
<li>Vendors: Textile 4.1.2. (thanks, gocom).</li>
<li>Vendors: UglifyJS 3.19.3.</li>
</ul>Bloketag:github.com,2008:Repository/158617/4.9.0-beta.1a2024-08-13T06:04:23Zv4.9.0-beta.1<p>First beta release of Textpattern 4.9.0 (beta.1)</p>
<ul>
<li>Feature release with support for PHP 8.4.0+, new functionality, security enhancements, general improvements and bug fixes.</li>
<li>Changed: Minimum system requirements increased to PHP 5.6 (PHP 8.2+ recommended).</li>
<li>Changed: Minimum system requirements increased to MySQL 5.5 (MySQL 8.0+ recommended).</li>
<li>Changed: Removed 'noopener' from target="_blank" links (now default behaviour in all supported browsers) (thanks, phiw13).</li>
<li>Changed: Removed 'aria-label' attributes where 'title' already exists.</li>
<li>Changed: Deprecate <code><txp:search_result_count /></code>. Use <code><txp:items_count /></code> instead.</li>
<li>Fixed: Improved support for images with EXIF orientation metadata (thanks, jools-r).</li>
<li>Fixed: Avoid directory traversal when uploading plugins (thanks, bg1).</li>
<li>Fixed: Compiled plugins upload on PHP 5.</li>
<li>Fixed: Windows-generated zip plugins installable on Linux.</li>
<li>Fixed: Restored empty 'height' and 'width' attributes behaviour of <code><txp:image /></code>.</li>
<li>Fixed: Self-closing tag output for html5 doctype to silence validator (thanks, jools-r).</li>
<li>Fixed: Ignore search in individual article mode.</li>
<li>Fixed: Take rfc2616 mail headers setting into account for separator.</li>
<li>Fixed: Sandboxed article/body/excerpt preview (thanks, grozdniyandy).</li>
<li>Added: Support for PHP 8.2, PHP 8.3.1+ and PHP 8.4.0+.</li>
<li>Added: SVG image support (thanks, osadl and jools-r).</li>
<li>Added: Option to define a Content Security Policy header for the Textpattern admin-side via config.php.</li>
<li>Added: PHPMailer for third-party SMTP delivery. See Admin>Preferences>Mail.</li>
<li>Added: Multi-edit for changing author language.</li>
<li>Added: Plugins can be uploaded from a URL by dragging to upload textarea.</li>
<li>Added: Compiled plugins can be uploaded via Browse... feature.</li>
<li>Added: Compatible plugin upgrades directly from the Plugins panel.</li>
<li>Added: Create and install new plugins directly from the Plugins panel.</li>
<li>Added: Plugin multi-edit option: revert to last installed code content.</li>
<li>Added: All plugin metadata exposed in the Plugin Edit panel.</li>
<li>Added: Plugin (zip-only) export feature.</li>
<li>Added: Support for aggregate window functions in compatible MySQL versions.</li>
<li>Added: Trailing slash URL preference.</li>
<li>Added: File download header preference.</li>
<li>Added: In-use asset counters to the Users panel.</li>
<li>Added: 'filter' attribute to <code><txp:section_list /></code> and <code><txp:if_section /></code>.</li>
<li>Added: 'level' attribute to <code><txp:if_category /></code>.</li>
<li>Added: Activity indicator for long upload processes.</li>
<li>Added: metaWeblog.newMediaObject for image upload over the MovableType API (thanks, Melonking906).</li>
<li>Added: Global 'offset' can be set by URL parameters.</li>
<li>Added: 'lang' attribute to <code><txp:page_url /></code>.</li>
<li>Added: <code><txp:if_items_count /></code> tag.</li>
<li>Added: Reload language packs from disk.</li>
<li>Added: Shift+Space shortcut for 'Tab' indent in textareas.</li>
<li>Added: Input length tooltip when appropriate.</li>
<li>Added: <code><txp:date /></code> tag.</li>
<li>Added: Global 'variable' attribute.</li>
<li>Added: 'alias' attribute to <code><txp:evaluate /></code>.</li>
<li>Added: 'parent' attribute to <code><txp:category /></code>.</li>
<li>Changed: Plugins of all types trigger verify step (with improved security).</li>
<li>Changed: File Edit panel has the ability to rename and delete files, and change the download counter value (thanks, adi).</li>
<li>Changed: Image Edit panel has the ability to delete images.</li>
<li>Changed: In-use languages can not be deleted.</li>
<li>Changed: Image tags can take HTML attributes.</li>
<li>Changed: Less collision-prone custom fields name processing.</li>
<li>Changed: Do not generate empty syndication feeds for feedless sections.</li>
<li>Changed: Allow PHP scripting options off by default, and Diagnostics warning.</li>
<li>Changed: Introduce primary keys for all database tables, replacing some old indexes.</li>
<li>Changed: Category & section description field sizes increased to 1023.</li>
<li>Changed: <code><txp:header /></code> tag requires 'form' privilege.</li>
<li>Changed: Section-aware default search.</li>
<li>Changed: Extend character set that can be used in tag/attribute names.</li>
<li>Developer: Introduce UI class library for building interface components.</li>
<li>Developer: Tag registration is now mandatory.</li>
<li>Developer: Some of the lesser-used tags are loaded on demand from their class to save memory. Plugins must call them via processTags() function.</li>
<li>Developer: Add safe_exists() function to database layer.</li>
<li>Developer: Move $thisversion and $txp_is_dev to constants.php.</li>
<li>Developer: 'Visitor logs' panel is now bound to the new 'lore' event name (was: 'log') to prevent conflicts with privacy filters.</li>
<li>Developer: File upload callbacks (file_uploaded and files_uploaded pre+post).</li>
<li>Developer: Activation emails can be skipped via hidden notify="skip" field.</li>
<li>Vendors: DOMPurify 3.0.6.</li>
<li>Vendors: jQuery 3.7.1.</li>
<li>Vendors: jQuery UI 1.13.3.</li>
<li>Vendors: PHPMailer 6.9.1.</li>
<li>Vendors: PrismJS 1.29.0.</li>
<li>Vendors: Textile 4.1.1. (thanks, gocom).</li>
<li>Vendors: UglifyJS 3.19.0.</li>
</ul>petecoopertag:github.com,2008:Repository/158617/4.9.0-beta.12024-08-12T22:10:32Z4.9.0-beta.1<p>Merge branch 'release-4.9.0-beta.1' into main</p>Bloketag:github.com,2008:Repository/158617/4.9.0-beta2024-08-12T12:05:37ZMerge branch 'release-4.9.0-beta'<h1>Conflicts:</h1>
<h1>HISTORY.txt</h1>
<h1>INSTALL.txt</h1>
<h1>README.txt</h1>
<h1>UPGRADE.txt</h1>
<h1>package.json</h1>
<h1>textpattern/checksums.txt</h1>
<h1>textpattern/index.php</h1>
<h1>textpattern/textpattern.js</h1>
<h1>textpattern/vendors/Textpattern/DB/Data/core.prefs</h1>petecoopertag:github.com,2008:Repository/158617/4.8.82022-01-24T13:42:02Zv4.8.8<ul>
<li>Maintenance release with support for PHP 8.1, security enhancements, general improvements and bug fixes.</li>
<li>Security: Fix reported cross-site scripting issue relating to article preview CSRF token (many thanks, Paul Ritchie at Pentest Limited).</li>
<li>Fixed: More robust numeric searches.</li>
<li>Fixed: Improved query efficiency of category operations.</li>
<li>Fixed: Required parameters after optional in tag builder (thanks, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/phiw13/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/phiw13">@phiw13</a>).</li>
<li>Fixed: Admin-side pagination when sorting by non-unique values.</li>
<li>Added: PHP 8.1 support.</li>
<li>Added: Natural search mode.</li>
<li>Added: Random form selection.</li>
<li>Added: Support for AVIF image format, on PHP 8.1 or higher.</li>
<li>Added: Global <code>limit</code>, <code>offset</code> and <code>sort</code> attributes.</li>
<li>Added: <code>url_title</code> attribute to <code><txp:article[_custom] /></code>.</li>
<li>Added: <code>range</code> attribute to <code><txp:article_image /></code>.</li>
<li>Added: <code>date</code> and <code>time</code> attributes to <code><txp:if_expired /></code>.</li>
<li>Added: <code>calendar</code> attribute to <code><txp:posted /></code> and similar tags.</li>
<li>Added: Substring extraction via <code>escape</code> attribute.</li>
<li>Added: <code><txp:items_count /></code> tag.</li>
<li>Added: Expanded conditional <code>match</code> attribute with comparison operators.</li>
<li>Added: <code>UTC</code> is now a permitted time zone.</li>
<li>Added: Custom date formats.</li>
<li>Changed: <code><txp:category_list /></code> with <code>children</code> >1 attribute behaviour.</li>
<li>Changed: Global <code>escape</code> attribute operates at the items level in lists.</li>
<li>Changed: Multi-site plugins directory defaults to <code>site/admin/plugins</code>.</li>
<li>Accessibility: Additional <code>aria-label</code> attributes for some internal links.</li>
<li>Internal: Removed <code>FOUND_ROWS()</code> which is deprecated in MySQL 8.0.17.</li>
<li>Internal: Prefer <code>is_readable()</code> and <code>is_file()</code> to <code>file_exists()</code>.</li>
<li>Developer: Added plugin lifecycle events <code>upgraded</code> and <code>downgraded</code>.</li>
<li>Developer: Export new article IDs on duplicate.</li>
<li>PrismJS 1.26.0.</li>
</ul>petecoopertag:github.com,2008:Repository/158617/4.8.8-beta.12022-01-01T14:05:56Zv4.8.8-beta.1<p>First beta release of Textpattern 4.8.8 (aka <code>Textpattern 4.8.8-beta.1</code>).</p>
<ul>
<li>Maintenance release with support for PHP 8.1, security enhancements, general<br>
improvements and bug fixes.</li>
<li>Security: to be advised (many thanks, Paul Ritchie at Pentest Limited).</li>
<li>Fixed: More robust numeric searches.</li>
<li>Fixed: Improved query efficiency of category operations.</li>
<li>Fixed: Required parameters after optional in tag builder (thanks, phiw13).</li>
<li>Fixed: Admin-side pagination when sorting by non-unique values.</li>
<li>Added: Natural search mode.</li>
<li>Added: Random form selection.</li>
<li>Added: Support for AVIF image format, on PHP 8.1 or higher.</li>
<li>Added: Global <code>limit</code>, <code>offset</code> and <code>sort</code> attributes.</li>
<li>Added: <code>url_title</code> attribute to <code><txp:article[_custom] /></code>.</li>
<li>Added: <code>range</code> attribute to <code><txp:article_image /></code>.</li>
<li>Added: <code>date</code> and <code>time</code> attributes to <code><txp:if_expired /></code>.</li>
<li>Added: <code>calendar</code> attribute to <code><txp:posted /></code> and similar tags.</li>
<li>Added: Substring extraction via <code>escape</code> attribute.</li>
<li>Added: <code><txp:items_count /></code> tag.</li>
<li>Added: Expanded conditional 'match' attribute with comparison operators.</li>
<li>Added: <code>UTC</code> is now a permitted time zone.</li>
<li>Added: Custom date formats.</li>
<li>Changed: <code><txp:category_list /></code> with <code>children</code> >1 attribute behaviour.</li>
<li>Changed: Global <code>escape</code> attribute operates at the items level in lists.</li>
<li>Accessibility: Additional <code>aria-label</code> attributes for some internal links.</li>
<li>Internal: Removed <code>FOUND_ROWS()</code> which is deprecated in MySQL 8.0.17.</li>
<li>Internal: Prefer <code>is_readable()</code> and <code>is_file()</code> to <code>file_exists()</code>.</li>
<li>Developer: Added plugin lifecycle events <code>upgraded</code> and <code>downgraded</code>.</li>
<li>Developer: Export new article IDs on duplicate.</li>
<li>PrismJS 1.24.1.</li>
</ul>
<p>Final cut of Textpattern 4.8.8 expected 2022 Q1.</p>petecoopertag:github.com,2008:Repository/158617/4.8.72021-06-01T15:01:47Zv4.8.7<p>High priority maintenance release to address functionality and setup issues discovered after 4.8.6 release.</p>
<ul>
<li>Fixed: Users panel throws error due to missing DB prefix (thanks, prbt2016).</li>
<li>Removed: Database user <code>GRANT</code> check during initial setup, which broke some installations.</li>
<li>Changed: Context check priority in tags.</li>
</ul>petecoopertag:github.com,2008:Repository/158617/4.8.62021-05-30T15:45:11Zv4.8.6<p>DO NOT USE IN PRODUCTION - issues discovered after release, use 4.8.7 instead.</p>
<p>Textpattern CMS maintenance release including improvements for PHP 8.0, bug fixes and minor tweaks.</p>
<h2>Headlines</h2>
<ul>
<li>Fixed regression in override form usage in lists (thanks, Christian Rapp).</li>
<li>Fixed undefined $article warning when accessing non-existent articles.</li>
<li>Fixed error with <txp:output_form /> tag on empty forms (thanks, Adi).</li>
<li>Fixed low-privilege users can save immediately after duplicating articles.</li>
<li>Latest text translations. Thank you to all our translators.</li>
<li>Option to create database during setup.</li>
<li>Permission (grants) verification during setup.</li>
</ul>
<h2>Tag modifications</h2>
<ul>
<li>Articles can be filtered by keywords more easily.</li>
<li>Added: <code>id</code> attribute to <code><txp:if_different /></code> tag.</li>
<li>Added: <code>db</code> option to the global <code>escape</code> attribute.</li>
<li><code><txp:variable trim></code> trims its own output (thanks, cara-tm).</li>
<li><code><txp:link_to_next/prev></code> can return URL or container.</li>
<li><code><txp:page_url></code> and <code><txp:if_request></code> tags are more flexible.</li>
<li>Boost power of txp:article(_custom) grouping by date.</li>
<li>Deprecate <code><txp:search_result_date /></code>. Use <code><txp:posted /></code> instead.</li>
<li>Remove deprecated break attribute from search_result_excerpt tag.</li>
</ul>
<h2>Back-end tweaks</h2>
<ul>
<li>'Assign sections' from Themes panel only selects its own sections.</li>
<li>No Edit options in Write panel without appropriate privileges.</li>
<li>No disabled update buttons on Languages panel (thanks, phiw13).</li>
<li>Search improved when handling numbers. Comparators can also be used for numeric searches.</li>
</ul>
<h2>Developer goodies</h2>
<ul>
<li>Permit <code>step=false</code> to hook into explicit empty step callbacks and <code>step=null</code> to indicate 'any step'.</li>
<li>Permit <code>$pre</code> to be any text. Opens up arbitrary callback grouping.</li>
<li>New <code>articles>multi_edit.$method</code> callback on Articles list panel.</li>
<li>User panel callbacks:<br>
<code>user>fields</code> and <code>user>from</code> to manipulate the query<br>
<code>user>controls</code> to affect the button area<br>
<code>user_ui>list.row</code> (pluggable_ui) for adding table data<br>
<code>user>steps</code> for plugins to register custom panel-level functionality</li>
<li>Diagnostics panel callbacks <code>diag>steps</code> and <code>diag_ui>level</code> for custom plugin steps and functionality.</li>
</ul>Bloke