Textpattern PHP Cross Reference Content Management Systems

Source: /HISTORY.txt - 1315 lines - 68867 bytes - Text - Print

   1  Changes in 4.8.4 (29 Nov 2020)
   2  
   3  * Maintenance release including support for PHP 8.0 and bug fixes.
   4  * Fixed: Write panel JS error when override forms were switched off
   5    (thanks, GugUser).
   6  * Fixed: Default publishing section is not updated on section delete/rename.
   7  * Added: 'fields' attribute to <txp:article />.
   8  * Added: Tags syntax extension to allow for custom processing order.
   9  * Added: Additional public-side language strings, primarily for themes.
  10  * Added: Latest translations. Thank you to all translators for your hard work.
  11  * Changed: Override forms can be of any type, not just article. See prefs.
  12  * Changed: Admin-side theme name references are appended with the theme version
  13    number.
  14  * Changed: Improved keyboard focus within responsive tables (to allow scrolling
  15    via arrow keys).
  16  * PrismJS 1.22.0.
  17  
  18  Changes in 4.8.3 (13 Sep 2020)
  19  
  20  * Fixed: A bug in 4.8.2 that can break some legacy plugins (thanks, Yiannis).
  21  * Fixed: Correctly label 'Allow commenter images in comments' pref.
  22  * Fixed: Reload private prefs on preferences save (thanks, phiw13).
  23  * Fixed: More notifications on list panels if there were no assets recorded.
  24  * Fixed: Improved upgrade path for Textpattern prior to version 4.5.0.
  25  * Added: 'loading' attribute for <txp:article_image />, <txp:image /> and
  26    <txp:thumbnail /> tags.
  27  * Added: Instantly refresh admin theme on change.
  28  * Added: Latest translations. Thank you to all translators for your hard work.
  29  * Changed: Theme styles are now optional.
  30  * PrismJS 1.21.0.
  31  
  32  Changes in 4.8.2 (29 Jul 2020)
  33  
  34  * Fixed: <txp:if_yield> 'else' container returning 1 instead of contents
  35    (thanks, Vienuolis).
  36  * Fixed: Sanitize custom field labels on Write panel (thanks, luuthehienhbit).
  37  * Fixed: Date tags return -1 in some server setups (thanks, the blue dragon).
  38  * Fixed: Notification on list panels if there were no assets recorded.
  39  * Fixed: Incorrect search label for 'name' on Links panel.
  40  * Fixed: Override forms on Write panel stay in step with live Theme/Section
  41    (thanks, cara-tm).
  42  * Fixed: Plugins loaded from cache show correct Textpack menu labels instead
  43    of untranslated strings.
  44  * Added: 'size' attribute to <txp:images> tag to filter by aspect ratio.
  45  * Added: valueless 'replace' attribute filters out duplicates.
  46  * Added: Language selector on login and User Edit panels (if >1 installed).
  47  * Added: Support for table_collation variable in config.php to affect
  48    safe_create() calls, when used in tandem with dbcharset.
  49  * Changed: Matching categories in <txp:article_custom> now performs AND. Use
  50    match="Category" for previous OR behaviour.
  51  * Changed: Category links in breadcrumb permlink mode.
  52  * Changed: 'searchall="0"' attribute filters by section.
  53  * Changed: When logging in, chosen login language is used as admin language.
  54  * Changed: Password reset/welcome/activation and comment notification emails
  55    sent in author language.
  56  * Changed: Multi-edit only active when checkboxes are selected.
  57  * Changed: Comments made by logged-in authors don't go through moderation.
  58  * Fixed: Multi-edit rearmed correctly after async saves on Forms panel.
  59  * Fixed: Update language list when deleting/switching to prevent stale entries.
  60  * Fixed: Language errors when using article preview (thanks, Destry and jakob).
  61  * Fixed: Date/time format when switching front-end language.
  62  * Fixed: Removed TRADITIONAL sql_mode for a smoother upgrade (thanks, Adi).
  63  * Fixed: Plugin panel uses the tempdir pref correctly.
  64  * Fixed: Image/thumb uploaders default to image types (thanks, Adi).
  65  * Fixed: Plugin auto-TOC strips out heading markup (thanks, Adi).
  66  * Developer: New 'pre' pretext callback.
  67  * Developer: Plugins can alter $pretext.
  68  * Developer: getIfElse() function returns 'else' part of <txp:if_yield else />,
  69    and may be used as an EvalElse() replacement.
  70  * Developer: Add ability to filter strings in Lang->getPack() and extract().
  71  
  72  Changes in 4.8.1 (31 May 2020)
  73  
  74  * Changed: Improved pophelp for update check status on Diagnostics panel.
  75  * Changed: Tag builder includes new 4.8.x attributes where possible.
  76  * Changed: Lazy load images within Images list on supported browsers.
  77  * Changed: Support <txp:else /> in shortcodes.
  78  * Changed: Improved handling of yyyy/mm/dd article permlinks. Single-digit
  79    months and days permitted, and /section/yyyy/mm/dd will limit articles to the
  80    given section.
  81  * Changed: Multi-assign pageless (live) sections.
  82  * Changed: Dedicated '*' option when altering theme/page/style to leave assets
  83    as they are.
  84  * Changed: Use noopener on target="_blank" links.
  85  * Changed: Optimised language loading.
  86  * Added: Latest translations. Thank you to all translators for your hard work.
  87  * Added: 'showalways' attribute for <txp:pages /> tag.
  88  * Added: Support for InnoDB database engine.
  89  * Fixed: Development and live assets are kept in sync when renamed.
  90  * Fixed: When setting development assets/themes, link to both live and dev
  91    assets even if they share a name.
  92  * Fixed: Default value of permlink_format on new installs. Thanks, cara-tm.
  93  * Fixed: Multi-site index.php correctly included in multi-site css.php.
  94  * Fixed: JavaScript console warning on Hive theme login screens. Thanks,
  95    cara-tm.
  96  * Fixed: Optional parameters come first in function definitions.
  97  * Fixed: Fall back on partial language identifier if code is not found.
  98  * Fixed: Strings loaded from plugin cache no longer break those already loaded.
  99    Thanks, David.
 100  * Fixed: RPC errors when altering content from remote editors.
 101  * jQuery 3.5.1.
 102  * PrismJS 1.20.0.
 103  * jQuery File Upload 10.29.0.
 104  
 105  Changes in 4.8.0 (25 Feb 2020)
 106  
 107  * Changed: Minimum system requirements increased to PHP 5.5.
 108  * Changed: <txp:newer /> and <txp:older /> tags support pagination ranges.
 109  * Changed: Author's real name is available in <txp:page_url>.
 110  * Changed: Refined scope of root .htaccess, and restricted directory listing
 111    in /files/ and /textpattern/ with their respective .htaccess.
 112  * Changed: Non-searchable sections can be omitted from <txp:section_list>
 113    output with valueless 'exclude' attribute.
 114  * Changed: Consistent Edit step search behaviour on Plugins and Links panels.
 115  * Changed: Text/HTML tabs now in popup dialog, with optional live preview.
 116  * Changed: Tag parser tweaks for secondpass handler.
 117  * Changed: Plugins cached and loaded from disk to avoid eval().
 118  * Changed: Custom fields support from/to filtering.
 119  * Changed: <txp:evaluate /> removes empty items from lists.
 120  * Changed: Scroll to top on list panels during navigation.
 121  * Changed: Random generator supports random_bytes and doesn't throw errors.
 122  * Changed: Improved performance of syndication feed handling for sections.
 123  * Changed: Check for updates throttle reduced to 1hr from 24hrs.
 124  * Added: Global public theme switcher.
 125  * Added: Dedicated live/dev theme switching.
 126  * Added: Support for PHP 7.4.
 127  * Added: <txp:if_request /> tag for checking server, URL, POST and cookie
 128    variables.
 129  * Added: <txp:pages /> tag for enhanced pagination schemes.
 130  * Added: 'item' attribute to <txp:yield /> tag.
 131  * Added: 'title' attribute to image tags.
 132  * Added: 'class' attribute to comment form tags.
 133  * Added: 'match' and 'separator' attributes to <txp:if_variable /> tag.
 134  * Added: 'month' and 'time' attributes to <txp:file_download_list /> and
 135    <txp:linklist> tags.
 136  * Added: 'pg', 'total' and 'limit' attributes to <txp:newer /> and
 137    <txp:older /> tags.
 138  * Added: Support for id ranges in some tags and admin fields.
 139  * Added: Support for HTTP status 451 (Unavailable For Legal Reasons).
 140  * Added: Support for native PHP password hashing.
 141  * Added: Dark Mode support in Hive admin theme.
 142  * Added: Pageless sections for content snippets and creative article flows.
 143  * Added: Per-section article link format override.
 144  * Added: 'breadcrumb/title' article link format.
 145  * Added: 'section/category/title' article link format.
 146  * Added: Links have an editable publish time and date.
 147  * Added: Category searching to a specified depth.
 148  * Added: Custom field aliases and URL filters via valueless attributes.
 149  * Added: Global 'evaluate', 'replace' and 'yield' attributes. Evaluate can
 150    execute contained content in arbitrary order.
 151  * Added: Ability to trim lists when using valueless 'trim' attribute.
 152  * Added: Link to phpinfo() in Diagnostics panel.
 153  * Added: Configuration file generated during setup can be downloaded.
 154  * Added: Support for Bengali language translation.
 155  * Added: Support for Khmer language translation.
 156  * Added: Support for Norwegian Nynorsk language translation.
 157  * Added: Support for Welsh language translation.
 158  * Added: Latest translations. Thanks to all Crowdin translators for their work.
 159  * Added: Hive and Classic admin themes now support 3 column layouts.
 160  * Added: Option to disable auto-expanding text areas in Hive admin themes via
 161    config.php file. See Hive theme's README.txt file for instructions.
 162  * Added: Warning to admin panels if JavaScript is unavailable.
 163  * Added: Support for SSL MySQL connections in config.php.
 164  * Removed: Obsolete 'No widowed words' preference setting. If this feature is
 165    needed it can be implemented directly with <txp:title /> tag.
 166  * Removed: Some deprecated functions from long ago.
 167  * Fixed: index.php correctly included in css.php.
 168  * Fixed: 3 undefined routing-related indexes.
 169  * Fixed: Article preview (txpreview) is not cached.
 170  * Fixed: <txp:category_list> 'sort' attribute respects 'categories'
 171    attribute instead of requiring sort="" override.
 172  * Fixed: <txp:recent_articles> only uses default link without form/container.
 173  * Fixed: Use locale on admin side.
 174  * Fixed: Localization of pre-flight diagnostic upgrade messages.
 175  * Fixed: Undefined variable warnings thrown via compact().
 176  * Fixed: Password handling when using MySQL 8+.
 177  * Fixed: nbsp on French opening quote broke Textile in some cases.
 178  * Fixed: Incorrect acronym tag in welcome article.
 179  * Accessibility: Improved indication of required form fields.
 180  * Accessibility: Honour 'prefers-reduced-motion' in official themes.
 181  * Accessibility: Target WCAG 2.0 AAA contrast levels in official themes.
 182  * Accessibility: Improved ARIA experience.
 183  * Accessibility: Improved keyboard-only access experience.
 184  * Developer: Plugins can be uploaded with .php and .zip extensions.
 185  * Developer: Upload order and file totals sent when batch uploading files.
 186  * Developer: Some txplib_misc.php functions moved to txplib_admin.php.
 187  * Developer: PHP magic_quotes_gpc, magic_quotes_runtime, safe_mode and
 188    register_globals support removed.
 189  * Developer: Title accessible to plugins in Atom/RSS.
 190  * Developer: Merge headers on demand.
 191  * Developer: Tags can be registered with custom attributes/parameters.
 192  * Developer: Multiple forms can be fetched at once.
 193  * Developer: txp.article > neighbour.criteria callback on Write panel.
 194  * Developer: Please register plugin tags or they will not work in future.
 195  * Performance optimizations via cacheing and preloading frequent content.
 196  * Textile 3.7.6. See https://github.com/textile/php-textile/releases/tag/v3.7.6
 197    for full list of changes in this release (thanks, gocom).
 198  * jQuery 3.4.1.
 199  * PrismJS 1.19.0.
 200  * jQuery File Upload 10.8.0.
 201  
 202  Changes in 4.7.3 (25 Feb 2019)
 203  
 204  * Maintenance release with enhancements and bug fixes.
 205  * Fixed: 'Export to disk' checkbox state inconsistencies for new assets.
 206  * Fixed: Logout issue in Classic admin theme.
 207  * Fixed: A bug when PHP 'mbstring' extension is disabled.
 208  * Fixed: Prevent Alt+S from triggering save (thanks, o10154016).
 209  * Fixed: Language .ini files trump old .txt files.
 210  * Changed: Permit falling back on pophelp in 'lang' database table.
 211  * Changed: 'Show password' on Users panel displays both passwords.
 212  * Added: <txp:yield /> values are available in external forms too.
 213  * Added: Indicator for GD Graphics Library WebP support in Diagnostics panel.
 214  * Added: Latest translations.
 215  * Added: Complete Italian inline help translation. Many thanks to Giampiero
 216    Mellea for all their work.
 217  * Developer: Introduce L10n/Lang->languageList() to get language tuples.
 218  * Textile 3.7.1. See https://github.com/textile/php-textile/releases/tag/v3.7.1
 219    for full list of changes in this release (thanks, gocom).
 220  
 221  Changes in 4.7.2 (20 Dec 2018)
 222  
 223  * Maintenance release with enhancements and bug fixes.
 224  * Fixed: A bug with <txp:link_to_[next|prev] /> tags in 'month' URL mode.
 225  * Fixed: A bug with <txp:related_articles /> tag.
 226  * Fixed: <txp:search_input /> will always respect its 'form' attribute setting,
 227    if set.
 228  * Fixed: A bug with the global 'not' attribute.
 229  * Fixed: Multibyte characters are correctly obfuscated by <txp:email />.
 230  * Fixed: Salutation text within emails not displaying correctly.
 231  * Fixed: 'problem_connecting_update_server' language string grouping corrected.
 232  * Fixed: Unparsed 'must_reassign_assets' and 'cannot_assign_assets_to_deletee'
 233    strings.
 234  * Changed: <txp:search_input /> can be used as a container tag, and also accepts
 235    'aria_label' and 'placeholder' attributes.
 236  * Changed: More robust search routes within default public-side theme.
 237  * Changed: Improved upgrade route where MySQL NO_ZERO_DATE is set.
 238  * Changed: Enhanced password manager compatibility on login and user details
 239    pages.
 240  * Changed: Extended fallback to 'C' locale in some situations.
 241  * Changed: Partially translated inline help files use fallback language (by
 242    default: English) where localized help items are not present.
 243  * Changed: Hive admin theme login panel now displays link to public site.
 244  * Changed: Simplified Classic admin theme login panel layout.
 245  * Changed: Fine-grained development theme preview.
 246  * Changed: More customizable Atom/RSS feeds via 'atom_head', 'rss_head' and
 247    'feed_filter' callbacks.
 248  * Changed: Deleting an article deletes any associated comments.
 249  * Changed: Forms, Pages and Styles accept pre-4.7 names for editing, but
 250    must be sanitized prior to saving.
 251  * Changed: Some emoji are preserved in automatically-generated article URL
 252    titles.
 253  * Changed: Article text blocks starting with a Textpattern tag are not
 254    Textile'd.
 255  * Changed: File data is available on 'file_download' callback.
 256  * Changed: Article lists can be split by 'breakby' form value.
 257  * Changed: Expanded Schema.org media items within default public-side theme.
 258  * Added: Latest translations.
 259  * Added: Czech inline help translation. Many thanks to Miloš Berka for all
 260    their work.
 261  * Added: French inline help translation. Many thanks to Lowel for all their
 262    work.
 263  * Added: Partial Italian inline help translation. Thanks Giampiero Mellea.
 264  * Added: Global 'trim' and 'default' attributes.
 265  * Added: Global 'wrapform' attribute.
 266  * Added: Global 'escape="ordinal|spell|url"' attribute values.
 267  * Added: 'aria_label' and 'placeholder' attributes on comment input fields.
 268  * Added: 'breakform' attribute to <txp:article(_custom) /> tag.
 269  * Added: 'test' attribute to <txp:if_different /> tag.
 270  * Added: 'context' attribute to <txp:link_to_next />, <txp:link_to_prev />,
 271    <txp:page_url /> and <txp:permlink /> tags.
 272  * Added: 'context' and 'format' attributes to <txp:output_form /> tag.
 273  * Added: 'add', 'reset', 'separator' and 'output' attributes to <txp:variable />
 274    tag.
 275  * Added: Custom form media (MIME) types, served as 'flat' files if needed.
 276  * Added: Option to export form/page/style to disk on save.
 277  * Added: Custom functions can be registered for use in <txp:evaluate /> tag.
 278  * Textile 3.7. See https://github.com/textile/php-textile/releases/tag/v3.7.0
 279    for full list of changes in this release (thanks, gocom).
 280  * jQuery File Upload 9.28.0.
 281  
 282  Changes in 4.7.1 (26 Jun 2018)
 283  
 284  * Maintenance release with bug fixes.
 285  * Fixed: <txp:article /> and <txp:article_custom /> correctly parse their
 286    content.
 287  * Fixed: <txp:article /> with 'listform' attribute returns correct value.
 288  * Fixed: Textpack correctly updates timestamp where web server and database
 289    server reside in different timezones.
 290  * Fixed: Fallback to 'C' locale in some situations.
 291  * Fixed: Section page/style selectors are correctly populated.
 292  * Fixed: Articles without a URL-only title have a valid permlink across all
 293    link formats.
 294  * Changed: Additional code optimization for PHP 5.4 and later.
 295  * Changed: Improved language string coverage in setup process.
 296  * Changed: Extended use of Textpattern 4.7.*-native tags in Four Point Seven
 297    theme.
 298  * Changed: Additional database-related information included in Diagnostics.
 299  * Added: Latest translations.
 300  * PrismJS 1.15.0.
 301  * jQuery File Upload 9.22.0.
 302  
 303  Changes in 4.7.0 (15 May 2018)
 304  
 305  * In memory of Dean Cameron Allen, creator of Textpattern CMS.
 306  * Changed: Minimum system requirements increased to PHP 5.4.0.
 307  * Textpattern instances older than version 4.2.0 (released 17 Sep 2009) should
 308    upgrade to version 4.2.0 before upgrading to version 4.7.0.
 309  * Added: Support for website themes, markup stored within the database (accessed
 310    via the Themes panel) and available as flat file templates for easier version
 311    control, portability and installation (many many thanks, NicolasGraph).
 312  * Added: Support for installation on Nginx web servers (thanks, makss).
 313  * Added: Support for automated installation from CLI (thanks, makss).
 314  * Added: Filipino language translation (thanks, Joseph Buarao).
 315  * Added: Tagalog language translation (thanks, Kurt Lem Zamora).
 316  * Added: User-selectable column list options in tables replaces 'Show more
 317    detail' checkboxes. Settings remembered per device.
 318  * Added: Valueless attributes.
 319  * Added: Optional short-tags.
 320  * Added: Ability to use Forms as tags via <txp:output_form /> or
 321    <txp::shortcode /> tags.
 322  * Added: Tag global attributes: 'breakby', 'breakclass', 'class', 'escape',
 323    'html_id', 'not' and 'wraptag'.
 324  * Added: <txp:article_custom /> tag can count pages.
 325  * Added: <txp:evaluate /> tag.
 326  * Added: <txp:header /> tag allows optional setting of HTML headers on page
 327    output.
 328  * Added: <txp:if_logged_in /> tag.
 329  * Added: XML and JSON file support. Completely overhauled setup procedure to
 330    centralize and verify/delete preferences on upgrade. Table structure and
 331    preferences defined in files for easier maintenance (thanks, makss).
 332  * Added: Per-user admin panel language preference (decoupled from site language
 333    preference).
 334  * Added: All users can administer their own key biographical info.
 335  * Added: Ability to copy an article without enforced save.
 336  * Added: Button to swap width and height values on image edit thumbnail
 337    generator.
 338  * Added: Ctrl+S/Cmd+S keyboard shortcuts for Submit, Publish and Save buttons
 339    on any admin panel.
 340  * Added: Multiple Files and Images upload with progress meter.
 341  * Added: Section searches by description.
 342  * Added: Visual indicator that a subset of search fields are in use.
 343  * Added: One-pass comment searches by parent article (thanks, makss).
 344  * Added: Diagnostics can optionally suppress sensitive path data.
 345  * Added: 'Expire now' checkbox on Write panel.
 346  * Added: Automatic table of contents generation for well-structured plugin help
 347    text.
 348  * Added: JSON-LD and Open Graph metadata scaffold included with default theme.
 349  * Removed: Involuntary Personally Identifiable Information within comments (IP
 350    address) and logs (IP address/host) no longer collected - for GDPR compliance.
 351  * Removed: Any pre-existing IP addresses stored in comments database table are
 352    deleted upon upgrade to 4.7.0 (and not stored in future) - for GDPR
 353    compliance.
 354  * Changed: Comments 'Remember me?' option is now an opt-in instead of opt-out,
 355    setting stored in localStorage instead of as a cookie - for GDPR compliance.
 356  * Changed: Revised multi-site installation routine and symbolic linking (thanks,
 357    jools-r).
 358  * Changed: Most panels perform saves/searches/pagination without page
 359    refreshes (Ajax).
 360  * Changed: Last used Page/Form/Stylesheet remembered.
 361  * Changed: Forms can recursively (up to 15 levels deep) call themselves.
 362  * Changed: <txp:breadcrumb /> can be used as a container tag, and accepts 'type'
 363    attribute.
 364  * Changed: Enhanced <txp:article /> sort and status handling.
 365  * Changed: Enhanced <txp:article_custom /> 'exclude', 'expired', 'month' and
 366    'time' attributes.
 367  * Changed: <txp:category_list /> can output nested lists.
 368  * Changed: <txp:if_category /> accepts 'parent' attribute.
 369  * Changed: <txp:image_author /> tag accepts 'id' and 'name' attributes.
 370  * Changed: <txp:link_to_next/> and <txp:link_to_prev /> are more consistent.
 371  * Changed: Reinstate <txp:keywords> tag and add 'break', 'class' and 'wraptag'
 372    attributes.
 373  * Changed: Deprecated <txp:image_display /> and <txp:image_index /> tags, use
 374    <txp:image /> and <txp:images />, respectively, instead.
 375  * Changed: <txp:newer /> and <txp:older /> tags accept 'rel' attribute.
 376  * Changed: <txp:output_form /> tag supports user-defined attributes,
 377    coupled with <txp:yield>.
 378  * Changed: <txp:page_title /> tag SEO - site name renders after page name,
 379    default separator changed from ': ' to ' | ', page numbers added.
 380  * Changed: <txp:page_url /> tag can return more URL paths via 'type' attribute.
 381  * Changed: <txp:site_url /> tag accepts 'type' attribute to return admin-side
 382    URL.
 383  * Changed: Deprecated the 'poplink' attribute on <txp:thumbnail /> tag.
 384  * Changed: <txp:yield> tag accepts 'name' and 'default' attributes.
 385  * Changed: Pagination tags (like <txp:newer /> and <txp:older />) can be placed
 386    before <txp:article /> tag.
 387  * Changed: Image Edit panel available to all users - read-only to some (thanks,
 388    phiw13).
 389  * Changed: Textfilter options and help topics moved inline with their textareas.
 390    Write panel 'sidehelp' twisty and article>sidehelp callback removed.
 391  * Changed: Categories moved from Sort & Display subpanel to their own twisty.
 392    Override Form (if used) moved to 'Sort and display' subpanel. 'Advanced'
 393    twisty and its callback removed.
 394  * Changed: Languages are updated automatically on upgrade.
 395  * Changed: Further improvements to RTL language support.
 396  * Changed: Language translations included in core instead of legacy RPC server.
 397  * Changed: Diagnostics and tag trace reports always rendered in English (for
 398    easier international support enquiries). Text strings moved to 'mode.ini'.
 399  * Changed: Use local inline help files instead of legacy RPC server. Help topics
 400    rendered in dialogs instead of new window (thanks, makss).
 401  * Changed: Use JSON file to check for new releases/pre-releases instead of
 402    legacy RPC server (thanks, makss).
 403  * Changed: Cleanup of panels/UI elements shown based on specific user roles.
 404  * Changed: Plugin Textpacks stored in database and installed on demand.
 405  * Changed: Plugins have persistent data column available for custom storage.
 406  * Changed: Clearer plugin list on Diagnostics panel.
 407  * Changed: Article posted/modified info and ID moved below Title field.
 408  * Changed: Enable HTTP 226 responses (thanks, da2x).
 409  * Changed: Make Preferences panel and subpanels fully printable (thanks,
 410    phiw13).
 411  * Changed: Panel states stored only client-side (localStorage).
 412  * Changed: pluggable_ui() behaves more intelligently when chaining.
 413  * Changed: Pagination steps are more grid friendly: 12/24/48/96 items.
 414  * Changed: More locale-aware date handling in safe_strftime().
 415  * Changed: Deprecated support for uploading .swf files via Images panel (support
 416    will be removed entirely in a future version).
 417  * Changed: Extensive admin theme image optimizations.
 418  * Changed: Admin theme accessibility improvements.
 419  * Changed: Admin theme layout improvements on small devices.
 420  * Changed: Pagination and search added to Plugins panel.
 421  * Changed: Plugin preview page syntax highlighting and layout improvements.
 422    Also show Textpack string additions preview (if applicable).
 423  * Changed: Removed 'Create ...' links from Pages/Forms/Styles panels when
 424    viewing a new, unsaved Page/Form/Style (thanks, adi).
 425  * Changed: Categories can no longer reassign the parent of a child element to
 426    its children. Avoids infinite tree loops.
 427  * Changed: Article preview includes debug info.
 428  * Changed: 'wraptag' attribute can prepend/append content using special '<+>'
 429    syntax.
 430  * Developer: 'ahu' constant as multi-site-compatible URL to admin side. Plugin
 431    authors please use ahu in place of hu.'textpattern'.
 432  * Fixed: Multi-site setup overhauled: Correct setup and install messages,
 433    diagnostics information, login URL in user-invite email, login cookie
 434    accessible to public and admin URLs (thanks, jools-r).
 435  * Fixed: SQL injection in 'qty' attribute (thanks Manuel Garcia Cárdenas).
 436  * Fixed: Keyboard navigation on select list popups.
 437  * Fixed: Only update database version string if using release version.
 438  * Fixed: Support for other MySQL client versions (thanks, CeBe).
 439  * Fixed: URL handling for /title and /year/month/day/title (thanks, planeth44).
 440  * Fixed: Panel layout improvements across all privilege levels.
 441  * Fixed: Per-user preferences exposed to all users (thanks, gaekwad).
 442  * Removed: zxcvbn password strength meter.
 443  * Textile 3.6.
 444  * jQuery 3.3.1.
 445  * PrismJS 1.14.0.
 446  * PHPass 0.5.
 447  * jQuery File Upload 9.21.0.
 448  
 449  Changes in 4.6.2 (21 Oct 2016)
 450  
 451  * Maintenance release with bug fixes.
 452  * Fixed: More complete SQL trace on non-row-based queries.
 453  * Fixed: Update process for filesystem-only releases.
 454  * Fixed: Normalize link text in some tag builder tags (thanks, makss).
 455  * Fixed: Incorrect focus ring styling.
 456  * Fixed: Define Trace in RPC (thanks, Retrax/makss).
 457  * Added: Better cross-browser support for input type=color
 458    (thanks, NicolasGraph).
 459  * Added: Support for printing of admin panels.
 460  * Added: Additional Latvian setup translations.
 461  
 462  Changes in 4.6.1 (05 Oct 2016)
 463  
 464  * Maintenance release with bug fixes.
 465  * Added: A modern interpretation of the 'Classic' admin theme.
 466  * Added: More complete SQL trace (thanks, makss).
 467  * Fixed: New articles only marked modified after modification (thanks, gaekwad).
 468  * Fixed: Silently fail if old files cannot be deleted.
 469  * Fixed: Conditional tags now trigger correctly (thanks, craigerskine).
 470  * Fixed: Missing sql_now_* preferences (thanks, makss).
 471  * Fixed: Save preference pane states on keyboard focus too (thanks, phiw13).
 472  * Fixed: Avoid setLocale errors if locale unavailable in lang tag attributes
 473    (thanks, brachycera).
 474  * Fixed: 'Change author' multi-edit only available to users with sufficient
 475    rights (thanks, makss).
 476  * Fixed: Relative URLs in feeds (thanks, hidalgo).
 477  * Changed: Made better use of available screen estate for presentation panel
 478    code textareas (thanks, phiw13).
 479  * Changed: Tightened up vertical layout on Forms panel.
 480  * Changed: Put an upper limit on preference group widths for better readability
 481    (thanks, phiw13).
 482  * Changed: CONTRIBUTING.textile info has been consolidated into main
 483    README.txt file.
 484  * jQuery UI 1.12.1.
 485  * zxcvbn 4.4.0.
 486  
 487  Changes in 4.6.0 (10 Sep 2016)
 488  
 489  * Textile v3.5.
 490  * Improved RTL language support.
 491  * Improved admin side UI.
 492  * Requires PHP 5.3.3 or newer. Compatible with PHP 7.0 and MySQL 5.7
 493    (thanks Ruud van Melick).
 494  * New tags: <txp:authors />, <txp:meta_description />, <txp:if_description> and
 495    <txp:if_yield>.
 496  * No more plaintext passwords sent: password reset requests are handled directly
 497    on the server.
 498  * One-week validity for new account activation requests by default. Configurable
 499    in config.php (see ACTIVATION_EXPIRY_HOURS).
 500  * Ninety-minute validity for password reset requests by default. Configurable in
 501    config.php (see RESET_EXPIRY_MINUTES).
 502  * Stronger password hashes and strength meter implemented (zxcvbn).
 503  * Performance increases due to cache-friendly public side database queries,
 504    parser improvements and reduction of admin-side queries
 505    (thanks Ruud van Melick and etc).
 506  * Added: Support for adding other markup languages (for example, Markdown)
 507    via plugins.
 508  * Added: Default article publishing status preference.
 509  * Added: Support for custom CSS and JavaScript files in admin themes, for
 510    advanced users.
 511  * Removed: Import panel - the blog import options were obsolete
 512    (thanks Ruud van Melick).
 513  * Removed: Commenter IP ban feature - this method of banning is unreliable and
 514    becoming obsolete (thanks Ruud van Melick).
 515  * Removed: Modernizr - unnecessary due to Internet Explorer 11 being the minimum
 516    Internet Explorer browser requirement.
 517  * Changed: The /textpattern/theme/ directory has been renamed to
 518    /textpattern/admin-themes/ for stronger differentiation between this and the
 519    public-side /themes/ directory planned for Textpattern 4.7. Additionally
 520    prevents breakage of preferences panel caused by old, incompatible themes
 521    residing in the previously titled admin theme directory during upgrade.
 522  * Changed: <txp:article_custom /> accepts 'exclude' attribute to exclude
 523    articles by a comma-separated id list.
 524  * Changed: <txp:author /> accepts 'escape' and 'format' attributes.
 525  * Changed: <txp:category_list /> accepts 'html_id', 'limit' and 'offset'
 526    attributes.
 527  * Changed: <txp:comments_form/>: Deprecated 'isize', 'msgcols', 'msgrows',
 528    'msgstyle', 'previewlabel', 'submitlabel', 'rememberlabel', and 'forgetlabel'
 529    attributes .
 530  * Changed: <txp:comments/>, <txp:comments_form/>, <txp:comments_preview/> and
 531    <txp:popup_comments/> can be used as container tags.
 532  * Changed: <txp:comment_email_input /> accepts 'size' attribute.
 533  * Changed: <txp:comment_message_input /> accepts 'cols' and 'rows' attributes.
 534    Removed capability to apply an immediate style to the element.
 535  * Changed: <txp:comment_name_input /> accepts 'size' attribute.
 536  * Changed: <txp:comment_preview /> accepts 'label' attribute.
 537  * Changed: <txp:comment_remember /> accepts 'rememberlabel' and 'forgetlabel'
 538    attributes.
 539  * Changed: <txp:comment_submit /> accepts 'label' attribute.
 540  * Changed: <txp:comment_web_input /> accepts 'size' attribute.
 541  * Changed: <txp:link /> accepts 'id' and 'name' attributes.
 542  * Changed: <txp:meta_author /> accepts 'escape' and 'format' attributes.
 543  * Changed: <txp:meta_keywords /> accepts 'escape', 'format' and 'separator'
 544    attributes.
 545  * Changed: <txp:password_protect /> can be used as a container tag.
 546  * Changed: <txp:recent_articles /> accepts 'offset' attribute.
 547  * Changed: <txp:section_list /> accepts 'html_id', 'limit' and 'offset'
 548    attributes.
 549  * Changed: Deprecated <txp:keywords /> tag. Use <txp:meta_keywords format="" />
 550    instead.
 551  * Changed: Deprecated <txp:rsd /> tag.
 552  * Changed: Deprecated 'breakclass' attribute for <txp:comments /> and
 553    <txp:image_info />.
 554  * Changed: Removed Form (article) Preview facility.
 555  * Changed: Removed empty 'About' section from new installs.
 556  * Changed: Tag builder has been reworked as a dialog window.
 557  * Changed: Increased 'page' and 'css' sizes in txp_section table.
 558  * Changed: 'Prevent widowed words in article titles' preference defaults to 'No'
 559    in new installs.
 560  * Changed: 'Include email in Atom feeds' preference defaults to 'No' in new
 561    installs.
 562  * Changed: Detailed debug trace log.
 563  * Changed: Default charset is now utf8mb4: supports a wider range of characters,
 564    including emoji.
 565  * Changed: Removed built-in Gzip compression of RSS feed and Atom feed.
 566  * Developer: getNextPref() now returns array members 'next' and 'prev' with
 567    article data, no longer returns array members 'next_id', 'next_title',
 568    'next_utitle', 'next_posted', 'prev_id', 'prev_title', 'prev_utitle',
 569    'prev_posted'
 570  * Developer: getNeighbour() returns 'false' if no matching neighbour article
 571    exists.
 572  * Developer: Uses 'mysqli' extension for database access, lose dependency on
 573    'mysql' extension.
 574  * Developer: Uses the TXP 'now()' function instead of the SQL 'NOW()' function
 575    to create cache-friendly, faster SELECT queries.
 576  * Developer: Added jQuery UI library to admin side.
 577  * Developer: Added Prism code highlighting for <code> and <pre><code> to admin
 578    side. The following languages are supported (when specified via classnames on
 579    the <code> tag, i.e. using 'class="language-xxx"): 'language-markup',
 580    'language-css', 'language-clike', 'language-javascript', 'language-json',
 581    'language-php', 'language-markdown', 'language-textile'. Optional line numbers
 582    are also supported when code highlighting, by adding an additional classname
 583    of 'line-numbers' to the parent <pre> tag.
 584  * Developer: Added DocBlock documentation comments throughout the source code.
 585  * Developer: Adherence to PSR coding standards where possible.
 586  * Developer: Function signature for wrapRegion() changed: 7th parameter 'ARIA
 587    role' dropped, as it shouldn't be stated for semantic tags such as 'section'.
 588  * Developer: Refactored 'Validator', 'Constraint', and 'theme' classes into the
 589    'Textpattern' namespace; deprecated their 'txplib_validator' and
 590    'txplib_theme' implementations.
 591  * Developer: Changed name of pref 'permalink_title_format' to 'permlink_format'.
 592  * jQuery 1.12.4.
 593  * jQuery UI 1.12.0.
 594  
 595  Changes in 4.5.7 (20 Sep 2014)
 596  
 597  * Maintenance release with bug fixes.
 598  * Textile v2.4.3 resolves PHP 5.5 compatibility issues.
 599  * Updated default site theme and libraries.
 600  * Setup now remembers settings. No more 'form resubmission' browser warnings
 601    when going back through the wizard.
 602  * Allow pre_publish_script in multi-site installations.
 603  * Email address validation uses PHP's filter_var(), which permits addresses such
 604    as @[127.0.0.1].
 605  * Fixed: <txp:link_to_prev>, <txp:link_to_next>, <txp:prev_title>, and
 606    <txp:next_title> tags for certain combinations with <txp:article_custom>.
 607  * Fixed: SQL statement escaping in set_pref().
 608  * Fixed: Situations where set_pref() could corrupt the preference table if the
 609    string name contained '%' or '_' characters.
 610  * Fixed: Save comment emails of any valid length properly.
 611  * Fixed: Visitor logs support IPv6.
 612  * Fixed: Articles can be assigned to sections with names longer than 64
 613    characters.
 614  * Fixed: Setup script more robust, and compatible with MySQL 5.6.
 615  * Fixed: Warnings when writing image thumbnails.
 616  * Fixed: Files no longer trash author names, and empty files can no longer be
 617    created.
 618  * Fixed: Percent encoding of spaces in site URL.
 619  * Security: IXR fixes to prevent XML quadratic blowup attack.
 620  * Security: Prevent variable injection during setup and plugin preview step.
 621  
 622  Changes in 4.5.6
 623  
 624  * Skipped due to broken update path for SVN users.
 625  
 626  Changes in 4.5.5 (04 Oct 2013)
 627  
 628  * Maintenance release with bug fixes, no security implications.
 629  * Fixed: Compatibility issues with PHP 5.5 in <txp:yield> and setup routines.
 630  * Fixed: Category table's parent-child associations break and the table malforms
 631    on name updates, if two different category types share same category name.
 632  * Fixed: Image caption isn't escaped.
 633  * Fixed: Admin-side JavaScript dies on Safari 5 (or any browser that doesn't
 634    allow re-defining keywords or constructs as variables).
 635  * jQuery 1.8.3.
 636  
 637  Changes in 4.5.4 (05 Dec 2012)
 638  
 639  * Corrects a packaging error in the 4.5.3 archives.
 640  
 641  Changes in 4.5.3 (04 Dec 2012)
 642  
 643  * Maintenance release with bug fixes, no security implications.
 644  * Fix <txp:link_to_prev>, <txp:link_to_next>, <txp:prev_title>, and
 645    <txp:next_title> tags for certain combinations with <txp:article_custom>.
 646  * Escape new page name in the 'Pages' panel.
 647  * Developer: Render valid HTML in fInput() for input types 'file' and 'image'.
 648  * Developer: In http_accept_format(), discard MIME formats with a quality factor
 649    below 0.1.
 650  
 651  Changes in 4.5.2 (10 Oct 2012)
 652  
 653  * Maintenance release with bug fixes, no security implications.
 654  * Fix <txp:link_to_prev>, <txp:link_to_next>, <txp:prev_title>, and
 655    <txp:next_title> tags for setups with web server and database server in
 656    different time zones.
 657  * Avoid "undefined variable" error while bulk-editing form types.
 658  * Developer: Use actual callback instead of hard-coded function to render
 659    'View' link. Pass reference to partials meta data into partial callbacks as
 660    $rs['partials_meta'].
 661  * Developer: Escape '<script>' tags in script_js(). Use jQuery in dom_attach().
 662  
 663  Changes in 4.5.1 (12 Sep 2012)
 664  
 665  * Maintenance release with bug fixes, no security implications.
 666  * Default front-side template: Remove duplicate search input field.
 667  * Textile: Use 'named groups' syntax '?P<group>' for b/c with older PCRE library
 668    versions.
 669  * Hive admin-side theme: Modernizr v2.6.2.
 670  * Prevent fatal aborts from error-handling during version upgrades.
 671  * Unregister all globals in multi-site setups.
 672  * Prevent deletion of used stylesheets from UI.
 673  * Offer all supported units in the tag builder for <txp:file_download_size />.
 674  * Developer: New events 'authors_deleted', 'categories_deleted', 'css_deleted',
 675    'discuss_deleted', 'file_deleted', 'forms_deleted', 'thumbnail_deleted',
 676    'links_deleted', 'articles_deleted', 'page_deleted', 'sections_deleted'.
 677  
 678  Changes in 4.5.0 (27 Aug 2012)
 679  
 680  * Minimum system requirement: PHP 5.2.
 681  * Modern default site theme (responsive, HTML5, CSS3).
 682  * Choice of HTML5 or XHTML document type as a preference.
 683  * Textile 2.4.1. See full changelog at
 684    https://textpattern.com/textile-changelog.
 685  * User interface realignment and clean-up.
 686  * Additional admin theme (Hive).
 687  * Beautified setup process.
 688  * Write, Plugin and Section panels save some changes without page refreshes
 689    (Ajax).
 690  * WordPress import tool imports image media attachments as article images, can
 691    use 'utf8' or 'latin1' source databases.
 692  * New advanced preference "Login info email address" allows to define a 'From:'
 693    address from which  a new user's login info is sent.
 694  * Check for new Textpattern version moved from Preferences to Diagnostics panel.
 695  * Removed raw PHP support in pages and articles.
 696  * Plugin status is preserved across plugin updates.
 697  * <txp:link_to_prev> and <txp:link_to_next> adhere to the sort order set by
 698    <txp:article>.
 699  * Deprecated 'escape' attribute for <txp:search_term />.
 700  * Removed 'align' attribute for <txp:image />, <txp:thumbnail />,
 701    <txp:article_image />.
 702  * <txp:css /> accepts a comma-separated list of style-sheet names for the 'name'
 703    attribute.
 704  * <txp:txp_die />: New attribute 'url'. Specifies location target for HTTP stati
 705    301, 302, 307.
 706  * <txp:article_custom>, <txp:file_download_list> preserve sorting order from
 707    'id' attribute.
 708  * <txp:images /> preserves sorting order from article image ids.
 709  * <txp:file_download> may be used as a container tag.
 710  * <txp:comment_form />: New attributes 'previewlabel', 'submitlabel',
 711    'rememberlabel', 'forgetlabel'.
 712  * New <txp:author_email> tag.
 713  * <txp:linklist /> accepts a comma-separated list of link ids in the new 'id'
 714    attribute.
 715  * <txp:images /> uses the sort order of images from the 'id' attribute if
 716    present.
 717  * Developer: Introduce gTxtScript() to help with the l10n of client-side
 718    strings.
 719  * Developer: Introduce txpspecialchars() as a recommended HTML5-safe alternative
 720    to htmlspecialchars().
 721  * Developer: New events 'article_saved', 'article_posted', 'comment.saved',
 722    'article_ui'.'partials_meta', 'article_ui'.'validate_save',
 723    'image_ui'.'fullsize_image', 'image_ui'.'thumbnail_image',
 724    'admin_criteria'.'author_list', 'admin_criteria'.'author_list',
 725    'admin_criteria'.'css_list', 'admin_criteria'.'discuss_list',
 726    'admin_criteria'.'file_list', 'admin_criteria'.'form_list',
 727    'admin_criteria'.'image_list', 'admin_criteria'.'link_list',
 728    'admin_criteria'.'list_list', 'admin_criteria'.'log_list',
 729    'admin_criteria'.'page_list', 'admin_criteria'.'section_list'
 730    (NB: 'image_ui'.'image_edit' and 'image_ui'.'thumbnail_edit' changed).
 731  * Developer: Introduce textpattern.Relay, a pub/sub hub for client-side events.
 732  * Developer: Introduce txpAsyncForm (a jQuery plugin for asynchronous posts from
 733    forms) and txpAsyncHref (a jQuery plugin for asynchronous posts from links)
 734  * Developer: Introduce safe_escape(), Constraint() and Validator() classes plus
 735    their descendents, callback_event_ref(), theme::announce_async()
 736  * Developer: Restrict plugin type '3' to load only at non-Ajax requests.
 737    Introduce plugin type '4' to be loaded on the admin side for both Ajax and
 738    non-Ajax requests. Introduce plugin type '5' to be loaded on the public side
 739    and on the admin side for both Ajax and non-Ajax requests.
 740  * Developer: Run custom post-update code from
 741    txpath.'/update/custom/post-update*.php' if this glob() exists.
 742  * Developer: Include custom code like page-caches before the page is assembled
 743    by setting $txpcfg['pre_publish_script'] to a valid filename.
 744  * Developer: Modified plugin type '1': Load only on non-Ajax requests on the
 745    admin-side.
 746  * Developer: Additional plugin types '4' (admin-side, only for Ajax requests),
 747    and '5' (public side; admin-side, only for Ajax requests).
 748  * Security: Admin-side disallows framing, sends "X-Frame-Options: SAMEORIGIN"
 749    header.
 750  * Security: The 'txp_login' cookie is set with a 'HttpOnly' attribute.
 751  * Security: Fixed a persistent XSS vulnerability in Textile discovered by Mauro
 752    Gentile.
 753  * Security: Fixed a XSS vulnerability in the setup process discovered by
 754    Jonathan Claudius of Trustwave SpiderLabs.
 755  * Security: Fixed a persistent XSS vulnerability in the access log panel
 756    discovered by Sasha Zivojinovic.
 757  * Bug and security fixes.
 758  * jQuery 1.7.2.
 759  
 760  Changes in 4.4.1 (18 Jun 2011)
 761  
 762  * Security: Add admin-side CSRF protection measures. Updates are highly
 763    recommended. Thanks, Neal Poole.
 764  * Upload of SWF images requires 'image.create.trusted' privilege (applies to
 765    publisher, managing editor, copy editor, and designer roles).
 766  * <txp:file_download_size /> improved from both i18n and l10n viewpoints.
 767  * Developer: CSRF protection API in bouncer(), form_token() and tInput().
 768  * Developer: CSRF token included in output from form(), aLink(), eLink(),
 769    dLink(), and wLink() functions.
 770  * phpass 0.4 / genuine.
 771  * jQuery 1.6.1.
 772  
 773  Changes in 4.4.0 (26 Mar 2011)
 774  
 775  * Security: Fix several vulnerabilities. Updates are *absolutely* recommended
 776    for sites running any older version. Thanks, Neal Poole.
 777  * Passwords are case-sensitive.
 778  * Hotlink protection for files: Downloads from a web-accessible '/files'
 779    directory are inhibited. The '/file_download/$id/example.foo' route is the
 780    only valid way to access downloadable files. Requires an Apache web server and
 781    usage of the sample .htaccess file.
 782  * Empty <txp:variable></txp:variable> container sets a variable's value to "".
 783  * WordPress import tool fixed for WP 3.x.
 784  * Context bug in messy mode fixed.
 785  * get_pref() now honours per-user prefs in all cases.
 786  * Developer: txp_validate() accepts a '$log' parameter to discern between 'real
 787    user login' vs. 'just validating credentials' usage.
 788  * Developer: sendAsyncEvent() accepts parameter $format.
 789  * Developer: Introducing escape_js() and send_script_response().
 790  * Developer: Taghandler functions *must not* contain upper case letters.
 791  * Developer: Taghandler functions *must not* be defined within a <txp:php>
 792    element.
 793  * Developer: phpass 0.3 / genuine for password portability, hashing, stretching,
 794    and salting. Old-style passwords will be migrated upon a user's first login.
 795    Persistent hash values in database are incompatible with previous versions.
 796  * jQuery 1.5.1.
 797  
 798  Changes in 4.3.0 (04 Nov 2010)
 799  
 800  * Security: Fixed two XSS vulnerabilities (thanks Jorge Hoya and High-Tech
 801    Bridge). Updates are recommended.
 802  * New Textpattern logo by courtesy of Philipp Schilling (belipe,
 803    http://www.psgd.de). Happy retirement to The Carver!
 804  * Feature: Optional alternate URL for static image resources. Defined in
 805    constant 'ihu'.
 806  * Feature: /category and /author lists for all content types, with conditionals
 807    and pagination.
 808  * Feature: Optional top-level 'Home' tab for dashboard plugins.
 809  * Feature: File titles.
 810  * Feature: Multiple categories/sections in feeds via
 811    http://example.com/rss/?category=foo,bar&section=baz,omg and
 812    http://example.com/atom/?category=foo,bar&section=baz,omg).
 813  * New tags: <txp:images />, <txp:image_info />, <txp:image_url />,
 814    <txp:image_date />, <txp:if_thumbnail />.
 815  * New tags: <txp:link_author />, <txp:image_author />,
 816    <txp:file_download_author />.
 817  * Changed: Verbose semantic admin-side markup.
 818  * Changed: Explicit 'Create new $thing' button for pages and styles.
 819  * Changed: <txp:image /> and  <txp:article_image /> accept 'width' and/or
 820    'height' attribute.
 821  * Changed: <txp:search_input /> accepts a 'match' attribute. Possible values:
 822    'exact', 'any' or 'all' (default).
 823  * Changed: <txp:css /> accepts a 'name' attribute. Attribute 'n' is deprecated.
 824  * Changed: <txp:image_index /> accepts a 'category' attribute. Attribute 'c' is
 825    deprecated.
 826  * Changed: <txp:breadcrumb /> accepts a 'separator' attribute. Attribute 'sep'
 827    is deprecated.
 828  * Changed: <txp:if_plugin /> accepts a 'version' attribute. Attribute 'ver' is
 829    deprecated.
 830  * Changed: <txp:if_custom_field /> accepts a "value" attribute. Attribute "val"
 831    is deprecated. Added attributes 'match' and 'separator'.
 832  * Changed: <txp:feed_link />, <txp:link_feed_link />, <txp:popup />,
 833    <txp:search_input /> accept a 'class' attribute.
 834  * Changed: Use percent-encoding in URLs as a RFC-1738-compliant fallback for
 835    languages lacking a suitable transliteration array.
 836  * Changed: Silence E_STRICT warnings in "live" production mode.
 837  * Removed: 'Friendly' CSS editor.
 838  * Developer: pluggable_ui() in the images tab.
 839  * Developer: Stylesheets are stored as plain text in the database - no more
 840    base64-encoding.
 841  * Developer: Textpacks, a method to install i18n strings from uploaded text
 842    files and from plugins.
 843  * Developer: article_format_info(), link_format_info(), and get_groups()
 844    convenience functions.
 845  * Developer: i18n strings are not loaded while Textpattern renders the
 846    public-side style sheet.
 847  * Textile 2.2 adds support for note lists, definition lists, thead, tbody,
 848    tfoot, table summary, table caption, table colgroup, glyphs for fractions,
 849    degrees and plusminus et cetera.
 850  * jQuery 1.4.3.
 851  * Incutio XML-RPC Library 1.7.4.
 852  
 853  Changes in 4.2.0 (17 Sep 2009)
 854  
 855  * Feature: Extendable admin-side themes. 'Classic' and 'Remora' theme contained
 856    in the core package.
 857  * Feature: Capability for multi-site file system layouts (thanks: Sam Weiss).
 858  * Feature: Role-based permission checks for images, links and files.
 859  * Feature: Save various pane toggle states.
 860  * Feature: Store author of links and files.
 861  * Feature: Automatic adjustment for DST (requires PHP 5.2+, fall back to manual
 862    adjustment for servers running older PHPs).
 863  * Feature: Timezone selector in preferences (requires PHP 5.2+, GMT-based
 864    selector as a fallback).
 865  * Feature: Default event preference setting (thanks: Mary).
 866  * Fixed: PHP 5.3 compatibility (thanks: Mary).
 867  * Fixed: When a user is deleted, reassign her assets.
 868  * Fixed: Tag builders for <txp:category /> and <txp:section />.
 869  * Fixed: Bogus "Article tags cannot be used outside an article context" warning
 870    in <txp:else />-branch of <txp:if_keywords>.
 871  * Fixed: Removed superflous &amp; encoding for article titles in
 872    <txp:recent_comments />.
 873  * Fixed: <txp:expires> uses "class" and "wraptag" attributes as intended.
 874  * New tag: <txp:link_id /> (thanks: Rick Silletti).
 875  * New tag: <txp:yield />.
 876  * Changed: Article timestamp is left untouched for draft, pending, or hidden
 877    articles published into the future.
 878  * Changed: <txp:file_download_list /> tag accepts a comma-separated list of file
 879    ids in a new "id" attribute (thanks: Rick Silletti).
 880  * Developer: pluggable_ui() serves as a base for custom admin-side user
 881    interface panels, see new '*_ui' events below.
 882  * Developer: New events 'log_it', 'plugin_lifecycle', 'plugin_prefs', 'txp_die',
 883    'article_ui', 'author_ui', 'category_ui', 'file_ui', 'image_ui', 'link_ui',
 884    'prefs_ui', 'section_ui'.
 885  * Developer: Per-user preferences.
 886  * Developer: Increased maximum plugin code size to MEDIUMTEXT (16 MiB).
 887  * Developer: Increased maximum preferences value size to TEXT (64 KiB).
 888  * Developer: Core support for unlimited custom fields (thanks: Gerhard Lazu).
 889  * Developer: Thumbnail dimensions are stored in the image table.
 890  * Developer: Sending requests to the admin-side with URL parameter 'app_mode'
 891    set to 'async' suppress any default admin-side output. Think Ajax.
 892  * Developer: Cached plugins are loaded in natural sort order.
 893  * Developer: Deprecated cleanfInput(), escape_output(), escape_tags(), getAtt(),
 894    gAtt(), and input() functions. These will be removed in next release.
 895  * Developer: Plugins can flag their interest in lifecycle events (install,
 896    uninstall, activate, deactivate). @see
 897    https://github.com/textpattern/textpattern-plugin-template.
 898  * Developer: Optional capability to jump to a plugin's options from the plugin
 899    tab. @see https://github.com/textpattern/textpattern-plugin-template.
 900  * jQuery 1.3.2.
 901  
 902  Changes in 4.1.0
 903  
 904  * Version 4.1.0 was assigned to the experimental "crockery" branch and never
 905    officially released.
 906  
 907  Changes in 4.0.8 (23 Jan 2009)
 908  
 909  * Fixed: Current section/category is overwritten in <txp:section_list> and
 910    <txp:category_list> (container or form mode).
 911  * Fixed: Registration and notification mails are not sent in PHP safe mode.
 912  * Fixed: Error message upon article save from MySQL 5 in 'strict' mode.
 913  * Fixed: Timeout during "clean URL test" causes WSOD in diagnostics tab.
 914  * Partly fixed: Search result excerpt breaks HTML entities.
 915  * Changed tag: <txp:if_section> without a name attribute is now TRUE on a
 916    section page (old behaviour is preserved on upgrades).
 917  * Changed tag: <txp:if_category name=""> is now FALSE on a category page (old
 918    behaviour is preserved on upgrades).
 919  * Changed tag: <txp:link_url /> escapes its output.
 920  * Changed tag: <txp:file_download_list /> uses 'wraptag', 'break', and 'label'
 921    attributes consistently like other tags.
 922  * Speed: faster plugin loading from the database.
 923  * Diagnostics tab: ignore line endings when checking for modified files and show
 924    full paths.
 925  * Pages tab: allow 'default' page to be deleted if not used by a section.
 926  * Developer: Fall back to standard page/permlink behaviour if custom_url_func()
 927    returns FALSE.
 928  * Developer: set_pref() accepts an optional "position" parameter.
 929  
 930  Changes in 4.0.7 (28 Nov 2008)
 931  
 932  * Parser: full nesting support, allowing unlimited nesting of identical tags.
 933  * Parser: attribute values are parsed when enclosed in single quotes.
 934  * Parser: unquoted attribute values are deprecated and will result in warnings
 935    when site status is not set to 'live'. Fix your templates and use double
 936    quotes to delimit attribute values.
 937  * Feature: Expiry time for articles, accompanied by related tags.
 938  * Speed: various components of the parsing process have been optimized, which
 939    compensates the impact of increased parser complexity, resulting in slightly
 940    faster parsing speed.
 941  * New tags: <txp:expires />, <txp:if_expired>, <txp:if_expires>.
 942  * New tag: <txp:if_keywords>.
 943  * New tags: <txp:if_first_section>, <txp:if_last_section>.
 944  * New tags: <txp:if_first_category>, <txp:if_last_category>.
 945  * New tag: <txp:if_variable>.
 946  * New tag: <txp:modified />.
 947  * New tag: <txp:rsd /> specifies the Really Simple Discovery endpoint for
 948    XML-RPC clients.
 949  * New tag: <txp:variable />.
 950  * Changed tag: <txp:article /> can be used as a container tag.
 951  * Changed tag: <txp:article /> allows new attributes 'wraptag' and 'break'.
 952  * Changed tag: <txp:article_custom /> can be used as a container tag.
 953  * Changed tag: <txp:article_custom /> allows new attributes 'wraptag' and
 954    'break'.
 955  * Changed tag: <txp:article_custom /> allows comma separated list for 'id'
 956    attributes (this doesn't imply a sort order).
 957  * Changed tag: <txp:category /> applies 'class' attribute to the <a> element
 958    when wraptag is empty.
 959  * Changed tag: <txp:category_list /> can be used as a container tag.
 960  * Changed tag: <txp:category_list /> accepts a 'children' attribute which limits
 961    the list depth to one level below the parent category when set to '0'.
 962  * Changed tag: <txp:file_download_list /> can be used as a container tag.
 963  * Changed tag: <txp:if_article_id /> defaults to the current article's id.
 964  * Changed tag: <txp:linklist /> can be used as a container tag.
 965  * Changed tag: <txp:recent_comments /> can be used as a container tag.
 966  * Changed tag: <txp:recent_comments /> allows new attribute 'offset'.
 967  * Changed tag: <txp:search_input /> allows new attribute 'html_id' to set the
 968    form's id.
 969  * Changed tag: <txp:section /> applies the 'class' attribute to the <a> element
 970    when wraptag is empty.
 971  * Changed tag: <txp:section_list /> can be used as a container tag.
 972  * XML-RPC: server now included in main Textpattern package, disabled by default.
 973  * Articles tab: added 'article image' and 'keywords' as search criteria.
 974  * Categories tab: categories cannot be accidentally deleted if they are still
 975    in use.
 976  * Write tab: Concurrent article edit warning.
 977  * Write tab: WYSIWYG preview for draft/pending/hidden articles.
 978  * Images tab: added 'alternate text' and 'caption' as search criteria.
 979  * Images tab: multi-edit functionality (delete, change category).
 980  * Images tab: setting both thumb width and height to zero or empty values
 981    disables auto-thumbnailing.
 982  * Links tab: multi-edit functionality (change category).
 983  * Files tab: multi-edit functionality (delete, change category).
 984  * Users tab: multi-edit functionality (delete, reset password, change
 985    privilege).
 986  * Users tab: sortable and paginated author list.
 987  * Users tab: 'last login' shown in author list.
 988  * Plugins tab: User-selectable plugin load order.
 989  * Plugins tab: sortable and multi-edit functionality (change order/status,
 990    delete).
 991  * More verbose "First Post" article with basic instructions and helpful links.
 992  * Developer: getTree() receives an optional 'table' name, returned array
 993    contains 'parent' field.
 994  * Developer: New event 'pretext_set'.
 995  * Developer: new plugin type '3' for admin-only plugins (0=public,
 996    1=admin+public, 2=library).
 997  * Developer: fInput now uses htmlspecialchars on the value parameter (previously
 998    only escape_title).
 999  * Developer: pagelinkurl() calls a custom URL handler if present. NB: The custom
1000    URL handlers function signature is modified, as an additional flag discerns
1001    pagelinks from permlinks.
1002  * Developer: $prefs['searchable_article_fields'] may contain an array of column
1003    names defining the fulltext-indexed set. A corresponding MySQL fulltext index
1004    must be established previously.
1005  * jQuery 1.2.6.
1006  * Ability to connect to the MySQL server through SSL.
1007  
1008  Changes in 4.0.6 (02 Feb 2008)
1009  
1010  * Security: add missing escape in SQL query (admin side).
1011  * Security: safer use of txp_login cookie + nonce (note: users are logged out
1012    after upgrading!).
1013  * Security: fixed XSS vulnerability (thanks DSecRG) and input validation in
1014    setup script.
1015  * Security: fixed local file include vulnerability (publisher only) in
1016    textpattern/index.php (thanks DSecRG and Victor).
1017  * Security: fixed XSS vulnerability and parameter value overflow in comments
1018    preview (thanks DSecRG).
1019  * Security: escape request method as shown on logs tab (thanks Victor).
1020  * Changed tag: <txp:thumbnail /> allows non-JS links to the full-size image.
1021  * Changed tag: <txp:article_custom /> allows comma-separated lists for category,
1022    section and author attributes (thanks Manfre).
1023  * Changed tag: <txp:linklist /> allows comma-separated list for category
1024    attribute.
1025  * Changed tag: <txp:file_download_list /> allows comma-separated list for
1026    category attribute.
1027  * Changed tag: <txp:recent_articles /> allows comma-separated lists for category
1028    and section attribute.
1029  * Changed tag: <txp:related_articles /> allows comma-separated list for section
1030    attribute.
1031  * Changed tag: <txp:search_result_excerpt /> allows a custom "break" attribute
1032    defaulting to an ellipsis.
1033  * Deprecated tag: <txp:sitename /> replaced by <txp:site_name />.
1034  * Deprecated tag: <txp:request_uri /> replaced by <txp:page_url />.
1035  * Deprecated tag: <txp:s /> replaced by <txp:page_url type="s" />.
1036  * Deprecated tag: <txp:c /> replaced by <txp:page_url type="c" />.
1037  * Deprecated tag: <txp:q /> replaced by <txp:page_url type="q" />.
1038  * Deprecated tag: <txp:id /> replaced by <txp:page_url type="id" />.
1039  * Deprecated tag: <txp:pg /> replaced by <txp:page_url type="pg" />.
1040  * Deprecated function: escape_output(), use htmlspecialchars() instead.
1041  * Deprecated function: gAtt() (and getAtt()), use lAtts() instead.
1042  * Deprecated variable: $txpcfg['txpath'], use constant 'txpath' instead.
1043  * New tag: <txp:if_search_results> </txp:if_search_results>.
1044  * New tag: <txp:search_term />.
1045  * New languages: Croatian, Korean, Português (Brasil), Serbian (Latin +
1046    Cyrillic), Turkish and Vietnamese (thanks: Filip Baraka, Alexsander Albert
1047    Santana, Vladimir Siljkovic, Süleyman Şentürk, Quang Anh Do).
1048  * Developer: using add_privs() for admin-side plugins is now required (used to
1049    be optional for publisher-only plugins).
1050  * Developer: dmp() prints debug output to a file in the temporary directory
1051    according to preferences. Define 'txpdmpfile' for the file name.
1052  * Developer: Added 'modified' and 'status' to global $thisarticle array.
1053  * Developer: Added 'is_logged_in()' function to check on the public side if the
1054    visitor is logged in on the admin side.
1055  * Speed: less SQL queries (-2 for individual article pages, -1 for other pages).
1056  * Speed: recent_comments tag (thanks Manfre) and admin side comments list only
1057    uses 1 query.
1058  * Added 'password reset' functionality (with confirmation email) on the login
1059    screen.
1060  * Update to jQuery 1.2.2 as a default JavaScript library.
1061  * Fix textile list incompatibility with PHP 5.2.4 (and higher).
1062  * Fix http-auth when using lighttpd or (mostly) apache+fcgi.
1063  * Fix HTTPS protocol check for ISAPI with IIS.
1064  * Fix use of article tags on a sticky article page.
1065  * Pages, categories and styles cannot be accidentally deleted if they are used
1066    on other tabs.
1067  * Corrections in the tag builder.
1068  * Refrain from showing sticky articles from non-frontpage sections in search
1069    results.
1070  * Enable separate search section for messy URL mode.
1071  * Many, many minor improvements.
1072  
1073  Changes in 4.0.5 (01 Jul 2007)
1074  
1075  * Fixed security issue on public-side (XSS) (thanks zarathu).
1076  * Fixed path disclosure issue (thanks zarathu).
1077  * Search for posted and last modified dates in article list.
1078  * New tag: <txp:hide /> as a container for comments and other internal content.
1079  * Changed tags: <txp:comments />, <txp:category_list />, <txp:section_list />
1080    and <txp:image_index /> support 'sort' attribute.
1081  * Distribute jQuery 1.1.2 as a default JavaScript library.
1082  * Keep image properties on replacement.
1083  * Add 'delete thumbnail' function.
1084  * Support back end branding: customizable logo and colour bar.
1085  * Table sort indicators.
1086  * Textile improvements.
1087  * Fix non-utf8 mails (iso 8859-1).
1088  * Better wrapping in admin-interface to prevent horizontal scrollbar.
1089  * Add comment status to comment notification mails.
1090  * Fix "infinite" pagination in rare edge cases.
1091  * Work around apache bug for file-downloads (in connection with mod_deflate).
1092  * Fix error messages on wrong logins for older MySQL versions.
1093  * Fix comment spam blocklist false positives (see FAQ for 4.0.4).
1094  * Fix file_download-tag from showing the same URL for different downloads (see
1095    FAQ for 4.0.4).
1096  * Fix disappearing comment preferences in certain circumstances (see FAQ for
1097    4.0.4).
1098  * Fix 'active class' in section_list, category_list.
1099  * Better cooperation with some proxies (and other HTTP/1.0 clients).
1100  * Smarter comment submit button emphasizes preview step.
1101  * Optionally hide spam comments in back end list.
1102  * Truncate longish article category titles in the write screen.
1103  * Handle thumbnailing of larger images.
1104  * Better MoveableType import.
1105  * Fix some more IIS issues.
1106  * New callback event: 'textpattern_end'.
1107  * New callback event: 'ping'.
1108  * New tag: <txp:article_url_title />.
1109  * Changed tag: <txp:permlink /> loses default title attribute.
1110  * Changed tag: <txp:file_download_link /> returns filename as an additional URL
1111    part.
1112  * Many, many minor improvements.
1113  
1114  Changes in 4.0.4 (17 Oct 2006)
1115  
1116  * RSS 2.0 support.
1117  * RSS and Atom feed fixes and improvements.
1118  * Many improvements to admin interface XHTML markup and CSS.
1119  * Many subtle improvements to the admin UI.
1120  * Add automatic detection of and working with SSL.
1121  * add nowidow-attribute to article tags.
1122  * Adapt navigation-elements to the user's permissions.
1123  * Lots of Textile improvements.
1124  * Fixed sending Last-Modified header.
1125  * Better indexing for faster article list queries.
1126  * Update to tag builders.
1127  * Show (source of) plugin-help before installation.
1128  * Improvements in translations (and translatables) (thanks Skubidu and others).
1129  * New translations: Indonesian, Hebrew, Hungarian, Romanian.
1130  * Improved handling of comma-separated values in tag attributes.
1131  * article, article_custom tags: new 'sort' attribute.
1132  * New conditional if_article_id.
1133  * author, category, category1, category2 tags: can link to any section by name.
1134  * Improved XHTML attributes on many tags (class, rel).
1135  * time and date tags: new attributes for overriding language, GMT.
1136  * css, feed_link tags: easier generation of XHTML 'link' tags.
1137  * New link tags: link_category, link_date, link_name, link_url.
1138  * Navigation tag improvements (new attributes, improved XHTML output).
1139  * Warn if article or comment tags are used in the wrong context.
1140  * Improved error checking, reporting and diagnostics.
1141  * Stricter 404 checking (missing category, author, messy article ID).
1142  * Simplify and improve comment preview and input form tags.
1143  * Improved article load/parse logic on individual article pages.
1144  * Workaround some rare FCGI problems with HTTP headers.
1145  * Fix some IIS clean URL issues.
1146  * Improved multi-edit support on admin pages.
1147  * Deprecate old-style PHP tags.
1148  * Don't lose your place in admin lists when returning from an edit.
1149  * Extra diagnostic info and pre-flight tests.
1150  * Better time zone handling.
1151  * Remember and automatically reuse thumbnail size settings.
1152  * Textile: fix inline class/style/lang.
1153  * Warn when article and comment tags are used in the wrong place.
1154  * New 'if_plugin' conditional checks for an active plugin, with optional version
1155    number.
1156  * Fix an occasional time zone bug.
1157  * Fix 404 errors on clean category URLs.
1158  * Add backtrace list to error messages in Debug mode.
1159  * Add limit attribute to search_result_excerpt tag.
1160  * Add escape and default attributes to custom_field tag.
1161  * Fix image-upload for outdated gdlib-installations (wet).
1162  * Fix label attribute breadcrumb function (richard).
1163  * Add if_author, if_article_author (with attribute 'name') (mary).
1164  * Allow multiple sections for if_article_section (like for if_section,
1165    if_category) (mary).
1166  * Display link category's title, rather than name, in the links page (mary).
1167  * Extend article_image tag to optionally display the article image thumbnail
1168    (mary).
1169  * Many minor bugfixes.
1170  
1171  Changes in 4.0.3 (29 Dec 2005)
1172  
1173  * Fixed 2 potential security holes(detected in internal code review). Update is
1174    recommended.
1175  * Textile i18n improvements.
1176  * Add a bulk Ban function for comments.
1177  * Automatically hide comments when banning an IP.
1178  * Fix comments 'page by'.
1179  * Fix double translated linebreaks in comments.
1180  * Fix nofollow in comments.
1181  * Fix preview without textile in certain edge cases.
1182  * Separate hidden comments into unmoderated and spam.
1183  * Add bulk changing of comment status (visible, moderated, spam).
1184  * Better error-handling in comments-form when critical fields are missing.
1185  * New tag: <txp:comments_error /> (and conditional <txp:if_comments_error>).
1186  * Style-able error-message and form-elements via CSS (class=comments_warn).
1187  * Plugin-Authors: Add callbacks for future spam-plugins [comment.save,
1188    comment.form].
1189  * Plugin-Authors: Add getComment() and comment_evaluator for future
1190    spam-plugins.
1191  * Plugin-Authors: Allow (optionally, transparently) for installing compressed
1192    plugins.
1193  * Plugin-Authors: Add window events using addEvent, to allow multiple events
1194    loading at window.onload, useful for admin side plugins.
1195  * Improve MySQL 5 compatibility.
1196  * Add comment edit link to notification emails.
1197  * Make comment-time format customizable in tag (mary).
1198  * Add offset-attribute to file_download_list (mary).
1199  * Make older, newer and link_to_home work more consistently with other nav-tags
1200    (mary).
1201  * Fix mailto: links.
1202  * Fix tag trace output for enclosing tags.
1203  * Update comment_count after import.
1204  * Add extra info to the tag trace (SQL queries, conditional tag results, page
1205    template and form names).
1206  
1207  Changes in 4.0.2 (01 Nov 2005)
1208  
1209  * Fix a bug in 404 handling on some fastcgi servers.
1210  * Fix a bug that prevented file_download_list from working properly.
1211  * Fix a redirection bug in the comment form.
1212  * Fix occasional category URL i18n problems.
1213  * Remove extra trailing slash in some breadcrumb links.
1214  * Make articles by author work properly.
1215  * Make feed_link support section and category correctly.
1216  * Add correct content-type to popup comments page.
1217  * Fix an obscure feed caching bug.
1218  * Fix a possible problem with circular dependencies when loading plugins.
1219  * Fix timestamps in Atom feeds.
1220  * Fix occasional Atom encoding issues.
1221  * UI improvements when creating/copying/deleting styles.
1222  * Improve performance of the language loader.
1223  * Make date-based permlinks work properly in comment emails.
1224  * Better handling of invalid login cookies.
1225  * Use page templates for 404 (and other) error pages.
1226  * Minor Atom validation improvements.
1227  * Improved comment conditionals logic; txp:if_comments now means 'if the current
1228    article has at least 1 comment'.
1229  * Minor performance improvements.
1230  * New txp:if_status and txp:page_url tags.
1231  * Prevent config.php whitespace from breaking stylesheets.
1232  * UI improvements to JavaScript toggles.
1233  * Improved comment input form HTML markup.
1234  * Improved txp:section and txp:category tags.
1235  * New tags: txp:if_different, txp:if_first_article, txp:if_last_article.
1236  * Localize the XML feed link title.
1237  * Better encoding of article titles.
1238  * Fix rare problems caused by magic_quotes_runtime.
1239  * Improved file upload forms.
1240  * New language: Latvian.
1241  * Support section and category titles in txp:breadcrumb.
1242  * Allow decimals=0 in txp:file_download_size tag.
1243  * Minor diagnostic info changes.
1244  * New labeltag attribute on most list tags.
1245  * Restore use_textile preference.
1246  * Minor HTML validation fixes.
1247  * Developers: new safe_upsert() database function.
1248  * Fall back to English if no language data is available.
1249  * Support comma-separated names in txp:if_category and txp:if_section.
1250  * Identify the offending tag when displaying error messages in templates
1251    and forms.
1252  * Add include_default attribute to txp:section_list.
1253  * Add support for changing status and section on multiple articles at once.
1254  * Fix nested category titles in txp:breadcrumb.
1255  * Improved comment message markup.
1256  * Restore the comments_closed message.
1257  * Better handling of per-article Use Textile selection.
1258  * Add class attribute to comments_invite for CSS classes.
1259  * Added 4 attributes to comments_invite: showcount, wraptag, textonly (just the
1260    invite-text) and showalways (also display on individual article-pages).
1261    Example:
1262    <comments_invite wraptag="p" showcount="0" textonly="1" showalways="1" />
1263  * Support c-style backslash sequences in tag attributes.
1264  * Fix some rare bugs in feeds, admin list paging.
1265  * Add a pageby attribute to txp:article, for multi-column lists.
1266  * Fix txp:link_to_next/prev so they work at the top of a page.
1267  * Minor speed improvements, new class and linkclass attributes for
1268    txp:breadcrumb tag.
1269  * Added txp:comments_preview and txp:if_comments_preview tags. Example usage:
1270    <txp:if_comments_preview>
1271      <div id="cpreview" style="background-color:#FF0">
1272        <b>Hello, the following is your preview</b>
1273        <txp:comments_preview />
1274        <txp:comments_form preview="1" />
1275      </div>
1276    </txp:if_comments_preview>
1277  * Fixed unparsed excerpts in Feeds.
1278  * Textile: smarter handling of relative link and image paths.
1279  * Textile: stop footnote links from clashing in article lists.
1280  * Added fi_FI locale support.
1281  
1282  Changes in 4.0.1 (06 Sep 2005)
1283  
1284  * Fixed some serious security issues. Updates are strongly recommended.
1285  * Fixed textile problems (missing block-elements in some cases; notextile;
1286    span-handling).
1287  * Fixed updating of comment_count when deleting comments.
1288  * Fixed bug in Atom feeds (multiple identical excerpts).
1289  * Added new permission level (article.edit.own.published, allows you to edit own
1290    articles _after_ publishing).
1291  * Added very basic 404 support (correct 404 Headers are sent).
1292  * Added new languages (Islenska, Suomi).
1293  * Fixed bugs in articles by author (clean and messy URLs).
1294  * Fixed category_list to use clean URLs when appropriate.
1295  * Fixed installation problems with certain database prefixes by limiting
1296    possible prefixes.
1297  * Fixed timezone issue with ymd permlinks.
1298  * Fixed GMT formatting of dates.
1299  * Fixed bugs with i18n-ascii.txt and added a few new items.
1300  * Added language overrides to dirifying url_titles.
1301  * Several improvements to url_titles (including not updating them until
1302    published).
1303  * Several improvements to diagnostics.
1304  * Added style and class attributes to txp:permlink.
1305  * Fixed bugs with multibyte strings in some URLs.
1306  * Added contextual information to page title on the admin side.
1307  * Fixed problems with larger file downloads.
1308  * Fixed file_download_link with multiple files.
1309  * Fixed logging of file downloads (only finished downloads are counted; aborts
1310    go to normal logs).
1311  * Fixed problems with sending mail on some systems.
1312  * Improvements to older/newer tags.
1313  * Developers: added more consistent URL generation via new pagelinkurl()
1314    function.
1315  * Developers: added callbacks to public side (for example to handle 404s).

title

Description

title

Description

title

Description

title

title

Body