PackageTrack
Sign in Get early access

s9e/text-formatter

Multi-purpose text formatting and markup library. Plugins offer support for BBCodes, Markdown, emoticons, HTML, embedding third-party media (YouTube, etc...), enhanced typography and more.

2.19.3 3.5M downloads/mo #2708 most downloaded on Packagist s9e/TextFormatter

What this package is like to depend on

Last release 9 months ago

14 Nov 2025

Release timing varies

gaps range from 2 weeks to 9 months

Nearly every release is documented

notes for 135 of 137 stable releases

Nothing withdrawn

no release was ever pulled

11 years old

137 releases · first in 2015

3 releases in the last 12 months

see the full history below

Release timeline

137 releases · Aug 2015 to Nov 2025
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 137
  1. 2.19.3 14 Nov 2025
    Release notes

    Full commit log

    Changed

    • 2c7c4d072 MediaEmbed: fix YouTube
    Open source →
    Release notes

    Full commit log

    Changed

    • 2c7c4d072 MediaEmbed: fix YouTube
    Open source →
  2. 2.19.2 14 Nov 2025
    Release notes

    Full commit log

    Changed

    • 85d45dcb8 MediaEmbed: updated YouTube
    • 1a6fd790b MediaEmbed: updated Youku
    Open source →
    Release notes

    Full commit log

    Changed

    • 85d45dcb8 MediaEmbed: updated YouTube
    • 1a6fd790b MediaEmbed: updated Youku
    Open source →
  3. 2.19.1 26 Oct 2025
    Release notes

    Full commit log

    Added

    • 99e57d380 MediaEmbed: added ConfigurableHostInterface
    • 8346e81d3 MediaEmbed: added Crankers
    • 9e4296987 MediaEmbed: added PeerTube
    • f87358afa MediaEmbed: added missing source file

    Removed

    • f6bdc27a5 MediaEmbed: removed Livestream (defunct)

    Fixed

    • 479af5fd2 MediaEmbed: fixed PeerTube helper

    Changed

    • b20fb7bcb Disable network tests by default
    • 7aef5f425 Fix deprecation warnings on PHP 8.5
    • 5de379d6d Fix more deprecation warnings on PHP 8.5
    • e0aea781e MediaEmbed: updated Imgur
    • ce6eaaa14 MediaEmbed: updated On3
    • 303959a41 MediaEmbed: updated Pastebin
    • cb1368cf2 MediaEmbed: updated Rumble
    • 05febbbe9 MediaEmbed: updated Threads
    • 5a32f548c RegexpConvertor: updated Unicode properties
    • ffa2386ed Remove unsupported PHP 8.1 from CI
    • c22e88f0b Updated docs
    Open source →
    Release notes

    Full commit log

    Added

    • 99e57d380 MediaEmbed: added ConfigurableHostInterface
    • 8346e81d3 MediaEmbed: added Crankers
    • 9e4296987 MediaEmbed: added PeerTube
    • f87358afa MediaEmbed: added missing source file

    Removed

    • f6bdc27a5 MediaEmbed: removed Livestream (defunct)

    Fixed

    • 479af5fd2 MediaEmbed: fixed PeerTube helper

    Changed

    • b20fb7bcb Disable network tests by default
    • 7aef5f425 Fix deprecation warnings on PHP 8.5
    • 5de379d6d Fix more deprecation warnings on PHP 8.5
    • e0aea781e MediaEmbed: updated Imgur
    • ce6eaaa14 MediaEmbed: updated On3
    • 303959a41 MediaEmbed: updated Pastebin
    • cb1368cf2 MediaEmbed: updated Rumble
    • 05febbbe9 MediaEmbed: updated Threads
    • 5a32f548c RegexpConvertor: updated Unicode properties
    • ffa2386ed Remove unsupported PHP 8.1 from CI
    • c22e88f0b Updated docs
    Open source →
  4. 2.19.0 26 Apr 2025
    Release notes

    Full commit log

    Added

    • 0ad200815 MediaEmbed: added AbstractConfigurableHostHelper::getHosts()
    • 922ca9e50 MediaEmbed: added Bluesky
    • c126dec98 MediaEmbed: added Nacho Video
    • fcd2c8af5 MediaEmbed: added Omny

    Changed

    • 5eabf320b MediaEmbed updated SoundCloud
    • ac657d73b MediaEmbed: updated Apple Podcasts
    • c30ea7129 MediaEmbed: updated Bandcamp
    • acb7c7f77 MediaEmbed: updated Bluesky
    • 22c5386c5 MediaEmbed: updated Facebook
    • 15d62a2dc MediaEmbed: updated Facebook
    • bc9958e65 MediaEmbed: updated Facebook
    • 309108d80 MediaEmbed: updated Instagram
    • 9e72cf786 MediaEmbed: updated Instagram
    • 425d20910 MediaEmbed: updated VK
    • 4a1e208b3 MediaEmbed: updated VK
    • 4d84cce94 MediaEmbed: updated VK
    • 9288d086f RegexpConvertor: updated Unicode properties
    • e4c43adb7 Updated hljs-loader
    • fd428797b refactor: Remove redundant use statement
    Open source →
    Release notes

    Full commit log

    Added

    • 0ad200815 MediaEmbed: added AbstractConfigurableHostHelper::getHosts()
    • 922ca9e50 MediaEmbed: added Bluesky
    • c126dec98 MediaEmbed: added Nacho Video
    • fcd2c8af5 MediaEmbed: added Omny

    Changed

    • 5eabf320b MediaEmbed updated SoundCloud
    • ac657d73b MediaEmbed: updated Apple Podcasts
    • c30ea7129 MediaEmbed: updated Bandcamp
    • acb7c7f77 MediaEmbed: updated Bluesky
    • 22c5386c5 MediaEmbed: updated Facebook
    • 15d62a2dc MediaEmbed: updated Facebook
    • bc9958e65 MediaEmbed: updated Facebook
    • 309108d80 MediaEmbed: updated Instagram
    • 9e72cf786 MediaEmbed: updated Instagram
    • 425d20910 MediaEmbed: updated VK
    • 4a1e208b3 MediaEmbed: updated VK
    • 4d84cce94 MediaEmbed: updated VK
    • 9288d086f RegexpConvertor: updated Unicode properties
    • e4c43adb7 Updated hljs-loader
    • fd428797b refactor: Remove redundant use statement
    Open source →
  5. 2.18.0 24 Jul 2024
    Release notes

    ⚠️ This release contains API changes. See docs/Internals/API_changes.md for a description. ⚠️

    Full commit log

    Added

    • 613f6361c MediaEmbed: added SiteHelpers API

    Changed

    • 8cf698f84 MediaEmbed: updated Spreaker
    • 9ac3f008c Updated AbstractNormalization
    • a96383c6e Updated GitHub action
    • a025c6e11 Updated dependencies
    • c06092c26 Upgraded GitHub actions
    Open source →
    Release notes

    ⚠️ This release contains API changes. See docs/Internals/API_changes.md for a description. ⚠️

    Full commit log

    Added

    • 613f6361c MediaEmbed: added SiteHelpers API

    Changed

    • 8cf698f84 MediaEmbed: updated Spreaker
    • 9ac3f008c Updated AbstractNormalization
    • a96383c6e Updated GitHub action
    • a025c6e11 Updated dependencies
    • c06092c26 Upgraded GitHub actions
    Open source →
    Release notes

    The following classes have moved namespace and are (silently) deprecated:

    • s9e\TextFormatter\Plugins\MediaEmbed\Configurator\AbstractConfigurableHostHelper

    • s9e\TextFormatter\Plugins\MediaEmbed\Configurator\MastodonHelper

    • s9e\TextFormatter\Plugins\MediaEmbed\Configurator\XenForoHelper

    The preferred way to access helpers is through the plugin's configurator. For example:

    • $configurator->MediaEmbed->getSiteHelper('mastodon')

    • $configurator->MediaEmbed->getSiteHelper('xenforo')

    Open source →
  6. 2.17.3 26 May 2024
    Release notes

    Full commit log

    Changed

    • 3001de226 MediaEmbed: updated Giphy
    • 7b7c14b61 MediaEmbed: updated Instagram
    • 3a31a34c1 MediaEmbed: updated JSFiddle
    • 34912a84e MediaEmbed: updated Medium
    • 4fd5739d6 MediaEmbed: updated VK
    • eafb249cc MediaEmbed: updated dark theme selector in Telegram and Twitter
    Open source →
    Release notes

    Full commit log

    Changed

    • 3001de226 MediaEmbed: updated Giphy
    • 7b7c14b61 MediaEmbed: updated Instagram
    • 3a31a34c1 MediaEmbed: updated JSFiddle
    • 34912a84e MediaEmbed: updated Medium
    • 4fd5739d6 MediaEmbed: updated VK
    • eafb249cc MediaEmbed: updated dark theme selector in Telegram and Twitter
    Open source →
  7. 2.17.2 25 Apr 2024
    Release notes

    Full commit log

    Added

    • 487e3c48b MediaEmbed: added On3 DB

    Removed

    • 8d91c8b3f MediaEmbed: removed BleacherReport

    Changed

    • bf99a935d MediaEmbed: updated 247Sports
    • 05b9223e2 MediaEmbed: updated WSJ
    • ac0b75ee0 MediaEmbed: updated example URLs
    • 742e3da89 Return the response body when a HTTP error occurs during scraping
    Open source →
    Release notes

    Full commit log

    Added

    • 487e3c48b MediaEmbed: added On3 DB

    Removed

    • 8d91c8b3f MediaEmbed: removed BleacherReport

    Changed

    • bf99a935d MediaEmbed: updated 247Sports
    • 05b9223e2 MediaEmbed: updated WSJ
    • ac0b75ee0 MediaEmbed: updated example URLs
    • 742e3da89 Return the response body when a HTTP error occurs during scraping
    Open source →
  8. 2.17.1 28 Mar 2024
    Release notes

    Full commit log

    Fixed

    • ce28c14bd FilterSyntaxMatcher: fixed parseFilterArg() signature

    Changed

    • 134bffb2b Extended optimizations related to equality tests to inequality tests
    • f8c5a455f Replaced array callbacks with first class callables where applicable
    • c7609e321 Updated docs
    • e43f99a47 Use in_array() in strict mode wherever applicable
    Open source →
    Release notes

    Full commit log

    Fixed

    • ce28c14bd FilterSyntaxMatcher: fixed parseFilterArg() signature

    Changed

    • 134bffb2b Extended optimizations related to equality tests to inequality tests
    • f8c5a455f Replaced array callbacks with first class callables where applicable
    • c7609e321 Updated docs
    • e43f99a47 Use in_array() in strict mode wherever applicable
    Open source →
  9. 2.17.0 24 Mar 2024
    Release notes

    Full commit log

    Added

    • c9f762aad Added JavaScript support for str_replace() as an attribute filter
    • 54546445f Added deprecation warning to docs
    • a3aa58984 AttributeFilterChain: added support for constructor arguments in default filters
    • 5a937310a AttributeFilterCollection: added support for arguments passed to default filters
    • 84ee03aad FilterSyntaxMatcher: added support for named arguments
    • 4599040f4 MediaEmbed: added Captivate
    • ddadd0525 MediaEmbed: added XenForo

    Fixed

    • 56da3f431 Fixed links in docs
    • 9dc8b1a69 Fixed nullable types for PHP 8.4

    Changed

    • 894615027 MediaEmbed: updated Imgur
    • 7372cd01f MediaEmbed: updated Kaltura
    • fb4b6d957 MediaEmbed: updated Mastodon
    • 0941fde59 Updated copyright notice
    • 99dffbce7 Updated dependencies
    Open source →
    Release notes

    Full commit log

    Added

    • c9f762aad Added JavaScript support for str_replace() as an attribute filter
    • 54546445f Added deprecation warning to docs
    • a3aa58984 AttributeFilterChain: added support for constructor arguments in default filters
    • 5a937310a AttributeFilterCollection: added support for arguments passed to default filters
    • 84ee03aad FilterSyntaxMatcher: added support for named arguments
    • 4599040f4 MediaEmbed: added Captivate
    • ddadd0525 MediaEmbed: added XenForo

    Fixed

    • 56da3f431 Fixed links in docs
    • 9dc8b1a69 Fixed nullable types for PHP 8.4

    Changed

    • 894615027 MediaEmbed: updated Imgur
    • 7372cd01f MediaEmbed: updated Kaltura
    • fb4b6d957 MediaEmbed: updated Mastodon
    • 0941fde59 Updated copyright notice
    • 99dffbce7 Updated dependencies
    Open source →
  10. 2.16.0 07 Jan 2024
    Release notes

    ⚠️ If you generate your own bundles, be sure to regenerate them after upgrading as their signature as been updated. ⚠️

    Full commit log

    Added

    • a41591323 Bundles: added type declarations

    Removed

    • b1d809a0c MediaEmbed: removed Amazon
    • f9ff2282d MediaEmbed: removed Streamja

    Changed

    • d9d50711d AbstractChooseOptimization: optimized isEqualNode() for the common case
    • e4eb30c89 AbstractChooseOptimization: replaced isEqualNode() implementation
    • f97349402 MediaEmbed: updated Bandcamp
    • 7c95e9d51 MediaEmbed: updated Threads
    Open source →
    Release notes

    Full commit log

    Added

    • a41591323 Bundles: added type declarations

    Removed

    • b1d809a0c MediaEmbed: removed Amazon
    • f9ff2282d MediaEmbed: removed Streamja

    Changed

    • d9d50711d AbstractChooseOptimization: optimized isEqualNode() for the common case
    • e4eb30c89 AbstractChooseOptimization: replaced isEqualNode() implementation
    • f97349402 MediaEmbed: updated Bandcamp
    • 7c95e9d51 MediaEmbed: updated Threads
    Open source →
  11. 2.15.1 21 Dec 2023
    Release notes

    Full commit log

    Added

    • e1ec00821 AbstractNormalization: added workaround for weird DOM quirks
    • 07f2468de MediaEmbed: added Twitter oEmbed endpoint

    Fixed

    • e595860bb DisallowUnsupportedXSL: fixed the range of allowed characters in dynamic attributes

    Changed

    • 25714e6dc Bumped the requirements for s9e/sweetdom
    • 14d759679 OptimizeChoose: minor code simplification
    • 31ae9abd5 OptimizeChoose: reorganized code
    • fc9795083 OptimizeChooseText: remove empty text nodes during optimization
    • d8e08b723 UninlineAttributes: refactored how xsl:attribute elements are created
    • 195118a53 Updated dependencies
    Open source →
  12. 2.15.0 03 Dec 2023
    Release notes

    Full commit log

    Added

    • 44b040c98 Added GitHub workflow
    • f0fbc6f84 TemplateNormalizations: added OptimizeChooseAttributes pass
    • 3da387000 TemplateNormalizations: added support for SweetDOM

    Removed

    • bb1a1d2ac MediaEmbed: removed NBC Sports
    • bc785a197 MediaEmbed: removed Stitcher

    Fixed

    • d5b261549 MediaEmbed: fixed TikTok oEmbed endpoint

    Changed

    • 4e54aa38d ElementInspector: updated to the latest HTML specs
    • 3601bb871 Emoji: updated to Unicode 15.1
    • 8e6a8b119 MediaEmbed: updated IMDb
    • f788f1d86 MediaEmbed: updated Podbean
    • 7574739cb MediaEmbed: updated Spreaker
    • 6c327465b ParsedDOM: simplified some DOM manipulations
    • b6fb13a79 RecursiveParser: use unnamed captures for arguments
    • 04f5bc417 RegexpConvertor: updated Unicode properties
    • c2c6c69dc TemplateNormalizations: simplified code through argument unpacking
    • fddea0221 Updated dependencies
    • 20e789066 XPathConvertor: optimize away superfluous string() calls
    Open source →
  13. 2.14.3 11 Nov 2023
    Release notes

    Full commit log

    Changed

    • cd53829c3 BBCodes: updated default CODE
    • c5891a573 MediaEmbed: updated Facebook
    • ee1965642 MediaEmbed: updated Facebook
    • b429c7b60 MediaEmbed: updated Facebook
    • 593490f42 MediaEmbed: updated Facebook
    • 135de3549 MediaEmbed: updated Twitter
    • 334e96d72 MediaEmbed: updated Twitter
    • 6fb87d797 MediaEmbed: updated YouTube
    • 55cae0cdf Updated README
    Open source →
  14. 2.14.2 05 Oct 2023
    Release notes

    Full commit log

    Changed

    • 440d40901 Enable PHP8 functions in bundled renderers
    • 8188d7ace MediaEmbed: updated Reddit
    • 528665cc3 RulesGeneratorList: updated remove()
    • f33cdf622 Updated RTD config
    Open source →
  15. 2.14.1 14 Sep 2023
    Release notes

    Full commit log

    Added

    • 38e323231 MediaEmbed: added Threads
    • d1887fad1 MediaEmbed: added support for YouTube clips

    Removed

    • d34f9d3c1 MediaEmbed: removed defunct site Gfycat

    Changed

    • a35d090d2 MediaEmbed: updated Facebook
    • 473cb5958 MediaEmbed: updated Facebook
    • b06918f8f MediaEmbed: updated Instagram
    • 9cd4fc514 MediaEmbed: updated Spotify
    • ae32e676d MediaEmbed: updated Spotify
    • cbf872bb7 MediaEmbed: updated TrendingViews
    • 6653f07f7 MediaEmbed: updated Twitter
    • 1817f1b79 MediaEmbed: updated YouTube
    • 2d73167e4 Reorganized TemplateNormations
    • 66fcff366 Updated README
    Open source →
  16. 2.14.0 08 Jun 2023
    Release notes

    Full commit log

    Added

    • 5b58f4485 Added ParsedDOM API to safely manipulate XML

    Changed

    • 052cde47b BBCodes: updated hljs-loader
    • e824143f7 MediaEmbed: updated SlideShare
    • 84be6040c MediaEmbed: updated SlideShare
    • 31553ea9a MediaEmbed: updated Telegram
    • 422f66269 MediaEmbed: updated TikTok
    • 0b2abb6e3 MediaEmbed: updated Tumblr
    • ab81d37a8 MediaEmbed: updated YouTube
    Open source →
  17. 2.13.1 11 Feb 2023
    Release notes

    Full commit log

    Added

    • f84dbded0 MediaEmbed: added Bunny Stream
    • 922025f00 MediaEmbed: added support for YouTube Live URLs

    Changed

    • 8b473fee9 Improved PHP 8.2 support
    • 285322ab8 MediaEmbed: updated Tumblr
    • d1441d7ae MediaEmbed: updated Tumblr
    • 961b39811 Parser: remove U+FFFE and U+FFFF from input and output
    • 889296b3b Updated PHPUnit to 9.6
    Open source →
  18. 2.13.0 30 Jan 2023
    Release notes

    Full commit log

    Added

    • 536cbdf1f Autoimage: added support for custom file extensions
    • eb8a5c487 Autovideo: added support for custom file extensions
    • d4750cdbb MediaEmbed: added MastodonHelper
    • 9ad74ecac MediaEmbed: added support for custom Mastodon instances

    Changed

    • 7f7481ab9 MediaEmbed: updated Mastodon
    • ba76ce0b0 MediaEmbed: updated Rutube
    • 9724b7906 MediaEmbed: updated TikTok
    Open source →
  19. 2.12.3 26 Dec 2022
    Release notes

    Full commit log

    Changed

    • c0ce8f099 ElementInspector: updated HTML specs
    • 41b342149 Emoji: replaced the default assets URL
    Open source →
  20. 2.12.2 30 Nov 2022
    Release notes

    Full commit log

    Added

    • ece847b93 MediaEmbed: added Mastodon

    Changed

    • af7a4ddcb BBCodes: updated default CODE
    • 0989028dc Emoji: updated to Unicode 15.0
    • bb5aadcbb Litedown: updated inline spoilers' onclick handler
    • 62d23f557 MediaEmbed: updated Spotify
    • ce3edbd40 MediaEmbed: updated Tumblr
    Open source →
  21. 2.12.1 23 Oct 2022
    Release notes

    Full commit log

    Added

    • 4460ef815 MediaEmbed: added Rumble oEmbed endpoint
    • 02eefa9cf MediaEmbed: added Rutube oEmbed endpoint

    Removed

    • d3d27b7bd MediaEmbed: removed bad header from Rutube

    Changed

    • 3b117c891 MediaEmbed: updated Facebook
    • 8b3919d87 MediaEmbed: updated Facebook
    • 9fb6cd493 MediaEmbed: updated Facebook
    • f0879ef04 MediaEmbed: updated dynamic iframes
    Open source →
  22. 2.12.0 05 Oct 2022
    Release notes

    Full commit log

    Added

    • 71e5bbe78 Added CSP headers to live preview demos
    • 6ceca4fff Added doc
    • 5ce43ed08 JavaScript: added messaging-related externs

    Removed

    • 440817eb0 JavaScript: removed support for Internet Explorer

    Changed

    • 20a3c1333 BBCodes: updated default SPOILER
    • 87223f85e Bumped requirements to PHP >= 7.4
    • 266f84b50 FunctionCache: don't add a semicolon if there's aleady one followed by whitespace
    • babb3f094 JavaScript: hash function content as key in function cache
    • ac7984af4 JavaScript: made the XSLT generator public
    • c4f347bc2 JavaScript: moved function cache generator to its own class
    • dd4553f4f JavaScript: unescape braces before generating the function cache key
    • 6404747b1 JavaScript: updated externs
    • ff36ac05d JavaScript: updated externs
    • 47cba5e05 JavaScript: use ES6 syntax for variable declarations
    • 8f58dcb9f JavaScript: use arrow functions where appropriate
    • cf678e15b MediaEmbed: replaced var with let in onload handlers
    • a9ac9d364 MediaEmbed: updated Odysee
    • b4f8a86df MediaEmbed: updated TikTok
    • c3e1c382b Updated live preview demo
    • d55692342 Updated live preview demos
    Open source →
  23. 2.11.5 19 Sep 2022
    Release notes

    Full commit log

    Removed

    • e3245de01 BBCodes: removed redundant higlighting in CODE

    Fixed

    • c87eb3f35 BBCodes: fixed Closure Compiler warning in CODE

    Changed

    • 02f0d41f2 BBCodes: updated hljs-loader in CODE
    • cdd9d190e ElementInspector: updated to latest specs
    • df8440c2b JavaScript: prefill the function cache with static code
    Open source →
  24. 2.11.4 17 Aug 2022
    Release notes

    Full commit log

    Added

    • 87a284e38 MediaEmbed: added Wavekit

    Changed

    • e0dcd772b BBCodes: updated default CODE
    • 4919d8bd3 MediaEmbed: updated MixCloud
    • b23054412 Updated dependencies
    • 69de62652 Updated docs
    Open source →
  25. 2.11.3 13 Jun 2022
    Release notes

    Full commit log

    Added

    • e0fab7776 MediaEmbed: added support for private playlists in SoundCloud
    Open source →
  26. 2.11.2 05 Jun 2022
    Release notes

    Full commit log

    Fixed

    • ba4b7a84b Fixed whitespace

    Changed

    • c34737eb5 Allow trailing plus sign in Autolink
    • 6d4c3e097 Updated MkDocs
    Open source →
  27. 2.11.1 15 May 2022
    Release notes

    Full commit log

    Added

    • 7cd2a60be MediaEmbed: added Gfycat oEmbed data
    • 16d598964 MediaEmbed: added support for dark theme in Instagram
    • 66afa69e6 MediaEmbed: added support for dark theme in Reddit
    • 6fca64d7e MediaEmbed: added support for dark theme in Telegram

    Removed

    • 5e294db63 MediaEmbed: removed Vocaroo's old Flash player

    Fixed

    • c199a448a Fixed callable type annotations

    Changed

    • 840acf54c ElementInspector: updated element definitions
    • 0f6b6372a MediaEmbed: updated Acast
    • 2822347ca MediaEmbed: updated Getty
    • 6b6fc560c MediaEmbed: updated Odysee
    • e0d2ecbb2 MediaEmbed: updated Rumble
    • 683a50394 MediaEmbed: updated Spotify example URL
    • e3c00295b MediaEmbed: updated Streamable
    • 17904dd79 MediaEmbed: updated TikTok
    • 2483eaf1b MediaEmbed: updated Twitter
    • 0cbd29fde MediaEmbed: updated Twitter
    • bfd6323d0 MediaEmbed: updated Vimeo
    • 3fcab01e0 MediaEmbed: updated Vimeo
    • 53ce06e23 MediaEmbed: updated WSHH
    • 9c8a36d2d Updated external dependencies
    • d11508589 Use correct parameter type in setParameters docblock
    • 4f02bf465 XmlFileDefinitionCollection: allow '0' to be cast to an integer
    • bc0d88317 XmlFileDefinitionCollection: do not convert non-string values
    Open source →
  28. 2.11.0 02 Oct 2021
    Release notes

    Full commit log

    Added

    • bc58b94ed Added support for PHP 8.1
    • cf6fb85ce MediaEmbed: added Audius

    Changed

    • 1d5e3e2a1 Emoji: updated to Unicode 14.0
    • e8ff4904d MediaEmbed: updated Facebook
    • 7b7dcd3cb Updated BBCodes doc
    Open source →
  29. 2.10.0 11 Aug 2021
    Release notes

    Full commit log

    Changed

    • 2bacb5d24 BBCodes: give explicitly-paired BBCodes slightly better priority
    • 1c00f2624 MediaEmbed: ignore Gist archive links
    • 11c766817 MediaEmbed: updated Acast
    • e75f9f3d2 MediaEmbed: updated Gist
    • a81e56567 MediaEmbed: updated TrendingViews
    • f80f790b0 NormalizedCollection: ignore invalid keys in delete() and exists()
    Open source →
  30. 2.9.4 09 Jul 2021
    Release notes

    Full commit log

    Added

    • 6d3c5af8e MediaEmbed: added Acast
    • 0c4e0c15c MediaEmbed: added YouMaker
    • dcf3cbf98 RegexpConvertor: added early return for empty regexps

    Changed

    • c88fe3653 BBCodes: updated default CODE BBCode
    • 62b4e7f4b BBCodes: updated default CODE BBCode
    • 29d5bcf16 Change code highlighting theme from github-gist to github.
    • 37fadd4e9 MediaEmbed: scrape from HTTP headers as well as body
    • 6e66120f0 MediaEmbed: updated 247Sports
    • 83629d2c4 MediaEmbed: updated Medium
    • 03c9dd73a Use HLJS 11.0.1
    Open source →
  31. 2.9.3 30 May 2021
    Release notes

    Full commit log

    Changed

    • fd0df9fe2 BBCodes: updated default CODE BBCode
    • 699577a02 Quick renderer: do not transform switch statements
    Open source →
  32. 2.9.2 17 May 2021
    Release notes

    Full commit log

    Fixed

    • 5df3c57b9 StylesheetCompressor: fixed an issue with UTF-8 chars incorrectly split
    Open source →
  33. 2.9.1 09 May 2021
    Release notes

    Full commit log

    Added

    • 2091db6b6 FixUnescapedCurlyBracesInHtmlAttributes: added support for arrow functions
    • 129691ddd MediaEmbed: added Odysee

    Removed

    • ce1817bf0 MediaEmbed: removed defunct sites Break, GameTrailers, and Mixer

    Changed

    • 16a01b3df ElementInspector: updated definitions from HTML specs
    • 70e05f3c3 JavaScript: replaced substr() with substring()
    • 632452c0a MediaEmbed: updated Odysee
    • fa6ce8f1a MediaEmbed: updated YouTube
    • b680fbcd0 Replaced ternaries with null coalescing operators
    • e51239b7e UrlFilter: updated regexp and JavaScript version
    Open source →
  34. 2.9.0 17 Apr 2021
    Release notes

    Full commit log

    Added

    • 4256d1f08 MediaEmbed: added Apple Podcasts
    • beb0082bc XPathConvertor: added support for PHP 8.0 string functions

    Changed

    • f801b61f2 MediaEmbed: updated IMDb
    • 44f22bfc8 MediaEmbed: updated Wistia
    • bd16776c5 Updated bundles
    • f1fe19a42 XPathConvertor: made the optional PHP features togglable
    • 26ac52914 XSLT: explicitly set htmlspecialchars() escape mode
    Open source →
  35. 2.8.6 29 Mar 2021
    Release notes

    Full commit log

    Changed

    • 4b83f7c67 BBCodes: updated default CODE BBCode
    • c7b72ac82 MediaEmbed: updated Podbean
    • ed19f57c0 MediaEmbed: updated SoundCloud
    • 6a233cf46 MediaEmbed: updated TikTok
    • 739cd5f10 MediaEmbed: updated WorldStarHipHop
    Open source →
  36. 2.8.5 15 Mar 2021
    Release notes

    Full commit log

    Added

    • 33168acaa MediaEmbed: added AMP metadata

    Changed

    • b52de21fd EnforceContentModels: generate breakParagraph rules where applicable
    • 813be2c3d MediaEmbed: updated Megaphone
    • 126771444 MediaEmbed: updated Sportsnet
    Open source →
  37. 2.8.4 02 Mar 2021
    Release notes

    Full commit log

    Added

    • 03edc53a0 MediaEmbed: added support for fb.watch URLs

    Fixed

    • f3a88bece Litedown: fixed an issue with fenced code blocks inside of lists

    Changed

    • 19699dc2f Emoji: ignore aliases that are followed by U+FE0E
    • 36e505ced MediaEmbed: updated BBC News
    • e838f3779 MediaEmbed: updated Rutube
    • 9f08233e6 MediaEmbed: updated Twitch
    • 03af8d8e2 Parser: simplified outputTag()
    • a11f4c232 TaskLists: recheck tags at the end of configuration
    Open source →
  38. 2.8.3 10 Feb 2021
    Release notes

    Full commit log

    Fixed

    • 4d0b7595f Emoji: fixed a PHP error that can occur with empty aliases
    • 327f06a6a Emoji: fixed an issue with some Unicode aliases

    Changed

    • cf913ebbe BBCodes: updated default CODE BBCode
    • 38f158f2f MediaEmbed: updated Anchor
    Open source →
  39. 2.8.2 23 Jan 2021
    Release notes

    Full commit log

    Added

    • b5d664bb3 MediaEmbed: added Imgur oEmbed info
    • c21685645 MediaEmbed: added Instagram Reels
    • 06d5e490f PHP renderer generator: added a fast path for handling static node names

    Removed

    • f357b2e64 TemplateParser: removed unused parameters

    Changed

    • 0dd855c9e MediaEmbed: updated Streamable
    • 23ee8a5d5 MediaEmbed: updated Wistia
    • f14bd4eca TemplateParser: mark boolean attributes in the representation
    Open source →
  40. 2.8.1 27 Dec 2020
    Release notes

    Full commit log

    Fixed

    • 6909b2327 TemplateHelper: fixed handling of HTML special characters in highlightNode()

    Changed

    • 0a661c962 AttributeFilters: refactored HashmapFilter and MapFilter
    • c8ae84391 BBCodes: updated default CODE BBCode
    • 816182d45 MediaEmbed: updated BitChute
    • 16d018d6e MediaEmbed: updated TikTok
    • 704b16b4f RegexpFilter: reworked safeness checks
    Open source →
  41. 2.8.0 09 Dec 2020
    Release notes

    Full commit log

    Added

    • bb8c095e6 FilterSyntaxMatcher: added explicit octal notation
    • ea51b491d MediaEmbed: added Falstad Circuit Simulator
    • 159784fb2 MediaEmbed: added JSFiddle
    • 7baf9538c MediaEmbed: added Rumble
    • 935957bb4 MediaEmbed: added support for dark themes

    Removed

    • c7548f5e1 MediaEmbed: removed discontinued FOX Sports site

    Changed

    • 0edf2e91b MediaEmbed: updated JSFiddle
    • 6b99842fe MediaEmbed: updated Libsyn
    • 16a1e596a MediaEmbed: updated Twitter
    • df91465b8 Updated bundles
    Open source →
  42. 2.7.6 15 Nov 2020
    Release notes

    Full commit log

    Changed

    • 2b9267496 BBCodes: updated default CODE BBCode
    • a583e346c MediaEmbed: updated 247Sports
    • 0b138efc4 MediaEmbed: updated Amazon
    • 923310847 MediaEmbed: updated BBC News
    • 338e48986 MediaEmbed: updated Spotify
    • 30b0a11c8 MediaEmbed: updated Stitcher
    • 47c929c02 MediaEmbed: updated dumpert
    Open source →
  43. 2.7.5 21 Sep 2020
    Release notes

    Full commit log

    Changed

    • c49e5a430 BBCodes: updated default CODE BBCode
    • 480398516 BBCodes: updated default CODE BBCode
    • c88642cdc Emoji: updated to Unicode 13.1
    • 5a6c80ea0 MediaEmbed: updated Getty Images
    • 14923f953 MediaEmbed: updated Gfycat
    • 693b57ae9 MediaEmbed: updated Medium
    Open source →
  44. 2.7.4 20 Aug 2020
    Release notes

    Full commit log

    Added

    • e62774c4e MediaEmbed: added Clyp
    • 79c359ed8 MediaEmbed: added Mixcloud oEmbed data

    Changed

    • 039a08e49 BBCodes: updated default CODE BBCode
    • 5aa06ccda MediaEmbed: updated BBC News
    • 6ac0b25b2 MediaEmbed: updated Kaltura
    • 74ee840cd MediaEmbed: updated Spotify
    • 9f6654eb9 MediaEmbed: updated Stitcher
    Open source →
  45. 2.7.3 20 Jul 2020
    Release notes

    Full commit log

    Added

    • b65d3a585 MediaEmbed: added Castos
    • d96e5b47b MediaEmbed: added CodePen
    • c7265bc7a MediaEmbed: added Kaltura
    • 33da8e189 MediaEmbed: added TradingView
    • 1fa8bcd3b MediaEmbed: added Vimeo oEmbed info

    Changed

    • c81c92802 CallbackGenerator: explicitly cast callback to string
    • 715710926 MediaEmbed: updated MSNBC
    • e9b901e96 MediaEmbed: updated Medium
    Open source →
  46. 2.7.2 22 Jun 2020
    Release notes

    Full commit log

    Changed

    • 4fd902b91 BBCodes: updated default CODE BBCode
    • b2823a510 BBCodes: updated default CODE BBCode
    • b13470f70 MediaEmbed: updated Audiomack
    • a5cce0a8e MediaEmbed: updated Twitch
    • 615378133 MediaEmbed: updated Twitch
    Open source →
  47. 2.7.1 06 Jun 2020
    Release notes

    Full commit log

    Added

    • c34a75ea4 MediaEmbed: added Wistia

    Changed

    • 7f2a0a843 BBCodes: updated default CODE BBCode
    • 388e4fbfc JavaScript: updated externs
    • 4d2792bc4 MediaEmbed: reinstated unofficial support for hashless VK URLs
    • ca83829e5 RegexpConvertor: reorganized code
    • b141e1098 RegexpConvertor: updated Unicode properties
    • c5c2d2cbf TaskList: replaced template manipulation with SweetDOM
    Open source →
  48. 2.7.0 30 May 2020
    Release notes

    Full commit log

    Added

    • ea4658c5b Added template manipulation via SweetDOM
    • dc61d807c Litedown: added support for self-generated "id" attributes in headers

    Removed

    • f9eb0e264 Autolink: removed dead code
    • 2e127910c PHP Renderer: removed redundant removal of meta-elements

    Changed

    • cc0c621c2 Litedown: improved compatibility with original Markdown rules for parentheses in links
    Open source →
  49. 2.6.0 17 May 2020
    Release notes

    Full commit log

    Added

    • 62942bbc2 Added AddAttributeValueToElements and SetAttributeOnElements template normalizers
    • d4d0b66ec MediaEmbed: added GIPHY
    • ef7a64e6b MediaEmbed: added loading="lazy" attribute to iframes
    • f136125c1 MediaEmbed: added support for GIPHY videos

    Changed

    • a79accfd0 Emoji: updated Twemoji URL
    • ea42a6e90 Emoji: updated to Unicode 13.0
    • 3f51c0852 MediaEmbed: updated Facebook
    • 782bbadbb Renderers: ensure that floating point numbers are displayed in the C locale
    • a1d089576 SetRelNoreferrerOnTargetedLinks: refactored to extend AddAttributeValueToElements
    • e08158d2f TaskLists: ignore task IDs during live preview
    • 1b5d46223 XSLT: ensure that the decimal separator is a dot regardless of locale
    Open source →
  50. 2.5.0 29 Apr 2020
    Release notes

    ⚠️ This release contains functional changes. See docs/Internals/Changes.md for a description. ⚠️

    Full commit log

    Added

    • f2d1ff160 Added TaskLists plugin
    • c12c0db9c Fatdown: added TaskLists
    • 96912cdeb Litedown: added support for automatic links

    Changed

    • 885f7e234 Renderer: improved performance of safety check
    • 436c2d8d9 Utils: improved the performance of various functions
    Open source →
    Release notes

    The Litedown plugin now supports automatic links and creates an EMAIL tag.

    Open source →
  51. 2.4.1 11 Apr 2020
    Release notes

    Full commit log

    Added

    • 5c358aa8f DisallowUnsupportedXSL: added xsl:attribute and xsl:element checks

    Changed

    • af2944f19 DisallowUnsupportedXSL: refactored attribute requirements
    • 7e3c1a8c0 MediaEmbed: updated Facebook
    • 7290f8b4e PHP renderer: match libxslt serialization of minimizable attributes in HTML
    • 7414ca9d5 Quick renderer: replaced hardcoded value with constant
    Open source →
  52. 2.4.0 31 Mar 2020
    Release notes

    Full commit log

    Added

    • 6d9dcd09c TemplateChecks: added DisallowUncompilableXSL
    • 039015605 TemplateChecks: added DisallowUnsupportedXSL, enabled by default

    Changed

    • a5ddda129 DisallowUnsafeDynamicURL: improved detection of safe URLs
    • 27dbc900b MediaEmbed: updated Spotify
    Open source →
  53. 2.3.7 10 Mar 2020
    Release notes

    Full commit log

    Fixed

    • 12bdf56b7 JavaScript: fixed scripts not being executed on Blink browsers

    Changed

    • 544f430f9 BBCodes: updated default CODE BBCode
    • 61d3dcf2a BBCodes: updated default CODE BBCode
    • 194bc5388 BBCodes: updated default CODE BBCode
    • 98fa77467 JavaScript: updated externs
    Open source →
  54. 2.3.6 24 Feb 2020
    Release notes

    Full commit log

    Changed

    • 3eae3fbe1 MediaEmbed: updated definitions
    Open source →
  55. 2.3.4 18 Feb 2020
    Release notes

    Full commit log

    Added

    • 9db9113e6 Autolink: added support for trailing underscores
    • 4de32bb77 JavaScript: added minifier hints for plugin regexp

    Fixed

    • c7d1b9e72 Autolink: fixed an issue where valid characters could be removed from the end of a URL
    • 3b08570a2 TemplateNormalizer: fixed an issue where the XSL namespace could become unregistered in XPath

    Changed

    • 3d1969853 MediaEmbed: updated MSNBC and Tumblr
    • c1e06bc87 MediaEmbed: updated TikTok
    • 9bf0d3823 MediaEmbed: updated XboxClips, now GameClips.io
    • 19674d155 XPathConvertor: do not add extraneous calls to boolean() in conditions
    Open source →
  56. 2.3.3 23 Jan 2020
    Release notes

    Full commit log

    Removed

    • b79f84836 MediaEmbed: removed defunct site CollegeHumor

    Changed

    • 0af04297e BBCodes: updated default CODE BBCode
    • 385992df9 MediaEmbed: updated Vocaroo
    • 138821eac Tag: reorganized code
    • ad91b2d37 XPathHelper: improved minification of boolean operators
    • 6943368f2 XPathHelper: improved minification of consecutive non-word characters
    • 55782b27a XPathHelper: remove redundant parentheses in minify()
    • 26004e063 XPathHelper: replaced string encoder in minify()
    • 00510a5b6 XPathHelper: simplified and improved minification of operators
    Open source →
  57. 2.3.2 10 Jan 2020
    Release notes

    Full commit log

    Added

    • f6c496721 Autolink: added support for rootless URLs
    • 0f7166909 FilterSyntaxMatcher: added support for numeric literal separator
    • d519bad01 HTMLEntities: added support for HTML5 entities
    • 076524e87 MediaEmbed: added support for Spotify podcasts
    • 1bd195933 TemplateLoader: added support for HTML 5 entities in HTML templates
    • ba20ec844 TemplateLoader: added support for HTML 5 entities in XSLT templates

    Changed

    • 3fe1f6482 BBCodes: updated default CODE BBCode
    • b3cea0820 FilterSyntaxMatcher: improved support for escaped characters
    • 94071e2fe TemplateLoader: improved handling of HTML5's AMP entity
    • 33d90df58 XPathHelper: rewritten string encoder
    Open source →
  58. 2.3.1 26 Dec 2019
    Release notes

    Full commit log

    Added

    • abc127c7d MediaEmbed: added Spreaker
    • 0aaff6af6 XPathConvertor: added support for booleans in math expressions

    Removed

    • 0d8acace1 MediaEmbed: removed defunct site Plays.tv

    Fixed

    • 84f8f35fd Parser: fixed trimFirstLine rule ignored on paired tags

    Changed

    • 0764f9e3c XPathConvertor: do not backtrack on attribute names
    • 07df31fbe XPathHelper: improved minification of substractions
    • b19a9207e XPathHelper: use the XPathConvertor parser for complex expressions
    Open source →
  59. 2.3.0 17 Nov 2019
    Release notes

    Full commit log

    Added

    • 7dde9892c Added support for custom header in generated PHP files
    • 727da332c Bundle: added getParser() and getRenderer() definitions to base class
    • e707f6f28 BundleGenerator: added support for bundling the JavaScript source
    • 5c576086a MediaEmbed: added Anchor
    • 2ec9591ce MediaEmbed: added Megaphone

    Changed

    • 729fbb540 MediaEmbed: updated CNBC
    • a669a53d4 Parser: simplified the computation of allowed tags in new context
    • e4030cf6a StylesheetCompressor: split into smaller chunks to appease Google Closure Compiler
    • 30654b4f5 Updated JavaScript Logger
    Open source →
  60. 2.2.0 27 Oct 2019
    Release notes

    ⚠️ This release contains API changes. See docs/Internals/API_changes.md for a description. ⚠️

    ⚠️ This release contains functional changes. See docs/Internals/Changes.md for a description. ⚠️

    Full commit log

    Added

    • b52eb84f3 AbstractConstantFolding: added support for folding conditional expressions
    • da7387e1b FoldConstantXPathExpressions: added support for boolean expressions
    • eeb5ec68f FoldConstantXPathExpressions: added support for simple comparisons
    • a2c8cc0be InlineXPathLiterals: added support for true() and false()
    • cd6eede77 Live preview: added support for data-s9e-livepreview-hash attribute
    • e560157b9 Live preview: added support for data-s9e-livepreview-onupdate attribute/event
    • fd984e34e MediaEmbed: added Mixer
    • 4ef14d2c5 TemplateNormalizations: added DeoptimizeIf
    • f7dddb9a6 TemplateNormalizations: added OptimizeChooseDeadBranches
    • 179035702 XPathConvertor: added support for true() and false()

    Removed

    • 414f457ed MediaEmbed: removed defunct site Tinypic
    • abf0bea88 Ruleset: removed useless code

    Fixed

    • f52add17f Fixed Google Closure Compiler warnings in live preview

    Changed

    • 6d8d0e82c AbstractConstantFolding: improved performance
    • 4d08e2493 Amend document typos
    • 492288d7b BBCodes: updated [code] BBCode
    • 510176e04 BBCodes: updated [code] BBCode
    • ad030d0a6 BBCodes: updated [code] BBCode
    • 98acaa712 BBCodes: updated var descriptions in bundled BBCodes
    • e8501554b ContextSafeness: consider backticks unsafe in JavaScript
    • e7baa21e2 ElementInspector: updated to HTML 5.3
    • 8ef407006 Emoji: updated to Unicode 12.1
    • 71c5b4d15 Escaper: escape tildes by default
    • 0e277e649 FoldArithmeticConstants: restricted additive identity folding
    • 507cdadd4 FoldConstantXPathExpressions: ignore irrational numbers
    • 74d308561 JavaScript: updated externs
    • bde1c604d Live preview: improved handling of update event
    • ba54cfa16 Live preview: renamed data-s9e-livepreview-postprocess to data-s9e-livepreview-onrender
    • 6b35b43c7 MediaEmbed: updated Audioboom
    • 912a5f52c MediaEmbed: updated CNN
    • 3e0df2054 MediaEmbed: updated Facebook
    • e92f180d6 RecursiveParser: use a DEFINE group for group expressions
    • 99b7f0b84 RegexpConvertor: updated properties to latest Unicode specs
    • 8b2ba9100 XPath: reorganized code
    • ed9e70daa XPathConvertor: simplified grouping of boolean operators and expressions
    Open source →
    Release notes

    The following methods are silently deprecated and will be removed in the next major release:

    • s9e\TextFormatter\Configurator\TemplateChecker::disable()

    • s9e\TextFormatter\Configurator\TemplateChecker::enable()

    Open source →
    Release notes

    The data-s9e-livepreview-postprocess attribute has been renamed to data-s9e-livepreview-onrender. The old attribute name remains as an alias but will be removed in 3.0.0. See the list of live preview attributes.

    The Escaper plugin now escapes ~ by default.

    The backtick character ` is now considered unsafe when user input is used in a JavaScript context.

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive