Release 1.5.0 (bumped HTMLPurifier.php version number).
[htmlpurifier.git] / NEWS
blob9bd45a99564acad73cf745703e3dc10b02519039
1 NEWS ( CHANGELOG and HISTORY )                                     HTMLPurifier
2 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 = KEY ====================
5     # Breaks back-compat
6     ! Feature
7     - Bugfix
8       + Sub-comment
9     . Internal change
10 ==========================
12 1.5.0, released 2007-03-23
13 ! Added a rudimentary I18N and L10N system modeled off MediaWiki. It
14   doesn't actually do anything yet, but keep your eyes peeled.
15 ! docs/enduser-utf8.html explains how to use UTF-8 and HTML Purifier
16 ! Newly structured HTMLDefinition modeled off of XHTML 1.1 modules.
17   I am loathe to release beta quality APIs, but this is exactly that;
18   don't use the internal interfaces if you're not willing to do migration
19   later on.
20 - Allow 'x' subtag in language codes
21 - Fixed buggy chameleon-support for ins and del
22 . Added support for IDREF attributes (i.e. for)
23 . Renamed HTMLPurifier_AttrDef_Class to HTMLPurifier_AttrDef_Nmtokens
24 . Removed context variable ParentType, replaced with IsInline, which
25   is false when you're not inline and an integer of the parent that
26   caused you to become inline when you are (so possibly zero)
27 . Removed ElementDef->type in favor of ElementDef->descendants_are_inline
28   and HTMLDefinition->content_sets
29 . StrictBlockquote now reports what elements its supposed to allow,
30   rather than what it does allow
31 . Removed HTMLDefinition->info_flow_elements in favor of
32   HTMLDefinition->content_sets['Flow']
33 . Removed redundant "exclusionary" definitions from DTD roster
34 . StrictBlockquote now requires a construction parameter as if it
35   were an Required ChildDef, this is the "real" set of allowed elements
36 . AttrDef partitioned into HTML, CSS and URI segments
37 . Modify Youtube filter regexp to be multiline
38 . Require both PHP5 and DOM extension in order to use DOMLex, fixes
39   some edge cases where a DOMDocument class exists in a PHP4 environment
40   due to DOM XML extension.
42 1.4.1, released 2007-01-21
43 ! docs/enduser-youtube.html updated according to new functionality
44 - YouTube IDs can have underscores and dashes
46 1.4.0, released 2007-01-21
47 ! Implemented list-style-image, URIs now allowed in list-style
48 ! Implemented background-image, background-repeat, background-attachment
49   and background-position CSS properties. Shorthand property background
50   supports all of these properties.
51 ! Configuration documentation looks nicer
52 ! Added %Core.EscapeNonASCIICharacters to workaround loss of Unicode
53   characters while %Core.Encoding is set to a non-UTF-8 encoding.
54 ! Support for configuration directive aliases added
55 ! Config object can now be instantiated from ini files
56 ! YouTube preservation code added to the core, with two lines of code
57   you can add it as a filter to your code. See smoketests/preserveYouTube.php
58   for sample code.
59 ! Moved SLOW to docs/enduser-slow.html and added code examples
60 - Replaced version check with functionality check for DOM (thanks Stephen
61   Khoo)
62 . Added smoketest 'all.php', which loads all other smoketests via frames
63 . Implemented AttrDef_CSSURI for url(http://google.com) style declarations
64 . Added convenient single test selector form on test runner
66 1.3.2, released 2006-12-25
67 ! HTMLPurifier object now accepts configuration arrays, no need to manually
68   instantiate a configuration object
69 ! Context object now accessible to outside
70 ! Added enduser-youtube.html, explains how to embed YouTube videos. See
71   also corresponding smoketest preserveYouTube.php.
72 ! Added purifyArray(), which takes a list of HTML and purifies it all
73 ! Added static member variable $version to HTML Purifier with PHP-compatible
74   version number string.
75 - Fixed fatal error thrown by upper-cased language attributes
76 - printDefinition.php: added labels, added better clarification
77 . HTMLPurifier_Config::create() added, takes mixed variable and converts into
78   a HTMLPurifier_Config object.
80 1.3.1, released 2006-12-06
81 ! Added HTMLPurifier.func.php stub for a convenient function to call the library
82 - Fixed bug in RemoveInvalidImg code that caused all images to be dropped
83   (thanks to .mario for reporting this)
84 . Standardized all attribute handling variables to attr, made it plural
86 1.3.0, released 2006-11-26
87 # Invalid images are now removed, rather than replaced with a dud
88   <img src="" alt="Invalid image" />. Previous behavior can be restored
89   with new directive %Core.RemoveInvalidImg set to false.
90 ! (X)HTML Strict now supported
91   + Transparently handles inline elements in block context (blockquote)
92 ! Added GET method to demo for easier validation, added 50kb max input size
93 ! New directive %HTML.BlockWrapper, for block-ifying inline elements
94 ! New directive %HTML.Parent, allows you to only allow inline content
95 ! New directives %HTML.AllowedElements and %HTML.AllowedAttributes to let
96   users narrow the set of allowed tags
97 ! <li value="4"> and <ul start="2"> now allowed in loose mode
98 ! New directives %URI.DisableExternalResources and %URI.DisableResources
99 ! New directive %Attr.DisableURI, which eliminates all hyperlinking
100 ! New directive %URI.Munge, munges URI so you can use some sort of redirector
101   service to avoid PageRank leaks or warn users that they are exiting your site.
102 ! Added spiffy new smoketest printDefinition.php, which lets you twiddle with
103   the configuration settings and see how the internal rules are affected.
104 ! New directive %URI.HostBlacklist for blocking links to bad hosts.
105   xssAttacks.php smoketest updated accordingly.
106 - Added missing type to ChildDef_Chameleon
107 - Remove Tidy option from demo if there is not Tidy available
108 . ChildDef_Required guards against empty tags
109 . Lookup table HTMLDefinition->info_flow_elements added
110 . Added peace-of-mind variable initialization to Strategy_FixNesting
111 . Added HTMLPurifier->info_parent_def, parent child processing made special
112 . Added internal documents briefly summarizing future progression of HTML
113 . HTMLPurifier_Config->getBatch($namespace) added
114 . More lenient casting to bool from string in HTMLPurifier_ConfigSchema
115 . Refactored ChildDef classes into their own files
117 1.2.0, released 2006-11-19
118 # ID attributes now disabled by default. New directives:
119   + %HTML.EnableAttrID - restores old behavior by allowing IDs
120   + %Attr.IDPrefix - %Attr.IDBlacklist alternative that munges all user IDs
121     so that they don't collide with your IDs
122   + %Attr.IDPrefixLocal - Same as above, but for when there are multiple
123     instances of user content on the page
124   + Profuse documentation on how to use these available in docs/enduser-id.txt
125 ! Added MODx plugin <http://modxcms.com/forums/index.php/topic,6604.0.html>
126 ! Added percent encoding normalization
127 ! XSS attacks smoketest given facelift
128 ! Configuration documentation now has table of contents
129 ! Added %URI.DisableExternal, which prevents links to external websites.  You
130   can also use %URI.Host to permit absolute linking to subdomains
131 ! Non-accessible resources (ex. mailto) blocked from embedded URIs (img src)
132 - Type variable in HTMLDefinition was not being set properly, fixed
133 - Documentation updated
134   + TODO added request Phalanger
135   + TODO added request Native compression
136   + TODO added request Remove redundant tags
137   + TODO added possible plaintext formatter for HTML Purifier documentation
138   + Updated ConfigDoc TODO
139   + Improved inline comments in AttrDef/Class.php, AttrDef/CSS.php
140     and AttrDef/Host.php
141   + Revamped documentation into HTML, along with misc updates
142 - HTMLPurifier_Context doesn't throw a variable reference error if you attempt
143   to retrieve a non-existent variable
144 . Switched to purify()-wide Context object registry
145 . Refactored unit tests to minimize duplication
146 . XSS attack sheet updated
147 . configdoc.xml now has xml:space attached to default value nodes
148 . Allow configuration directives to permit null values
149 . Cleaned up test-cases to remove unnecessary swallowErrors()
151 1.1.2, released 2006-09-30
152 ! Add HTMLPurifier.auto.php stub file that configures include_path
153 - Documentation updated
154   + INSTALL document rewritten
155   + TODO added semi-lossy conversion
156   + API Doxygen docs' file exclusions updated
157   + Added notes on HTML versus XML attribute whitespace handling
158   + Noted that HTMLPurifier_ChildDef_Custom isn't being used
159   + Noted that config object's definitions are cached versions
160 - Fixed lack of attribute parsing in HTMLPurifier_Lexer_PEARSax3
161 - ftp:// URIs now have their typecodes checked
162 - Hooked up HTMLPurifier_ChildDef_Custom's unit tests (they weren't being run)
163 . Line endings standardized throughout project (svn:eol-style standardized)
164 . Refactored parseData() to general Lexer class
165 . Tester named "HTML Purifier" not "HTMLPurifier"
167 1.1.1, released 2006-09-24
168 ! Configuration option to optionally Tidy up output for indentation to make up
169   for dropped whitespace by DOMLex (pretty-printing for the entire application
170   should be done by a page-wide Tidy)
171 - Various documentation updates
172 - Fixed parse error in configuration documentation script
173 - Fixed fatal error in benchmark scripts, slightly augmented
174 - As far as possible, whitespace is preserved in-between table children
175 - Sample test-settings.php file included
177 1.1.0, released 2006-09-16
178 ! Directive documentation generation using XSLT
179 ! XHTML can now be turned off, output becomes <br>
180 - Made URI validator more forgiving: will ignore leading and trailing
181   quotes, apostrophes and less than or greater than signs.
182 - Enforce alphanumeric namespace and directive names for configuration.
183 - Table child definition made more flexible, will fix up poorly ordered elements
184 . Renamed ConfigDef to ConfigSchema
186 1.0.1, released 2006-09-04
187 - Fixed slight bug in DOMLex attribute parsing
188 - Fixed rejection of case-insensitive configuration values when there is a
189   set of allowed values.  This manifested in %Core.Encoding.
190 - Fixed rejection of inline style declarations that had lots of extra
191   space in them.  This manifested in TinyMCE.
193 1.0.0, released 2006-09-01
194 ! Shorthand CSS properties implemented: font, border, background, list-style
195 ! Basic color keywords translated into hexadecimal values
196 ! Table CSS properties implemented
197 ! Support for charsets other than UTF-8 (defined by iconv)
198 ! Malformed UTF-8 and non-SGML character detection and cleaning implemented
199 - Fixed broken numeric entity conversion
200 - API documentation completed
201 . (HTML|CSS)Definition de-singleton-ized
203 1.0.0beta, released 2006-08-16
204 ! First public release, most functionality implemented. Notable omissions are:
205   + Shorthand CSS properties
206   + Table CSS properties
207   + Deprecated attribute transformations