mtchanges - Revision history for Movable Type

### Movable Type Changelog

- NAME
- SYNOPSIS
- CHANGES

- 2.661 (2004.01.15)
- 2.66 (2004.01.13)
- 2.65 (2003.12.18)
- 2.64 (2003.05.28)
- 2.63 (2003.02.23)
- 2.62 (2003.02.16)
- 2.61 (2003.02.16)
- 2.6 (2003.02.13)
- 2.51 (2002.10.29)
- 2.5 (2002.10.08)
- 2.21 (2002.06.28)
- 2.2 (2002.06.26)
- 2.11 (2002.05.03)
- 2.1 (2002.05.02)
- 2.0 (2002.03.20)
- 2.0b6 (2002.03.12)
- 2.0b5 (2002.02.27)
- 2.0b4 (2002.02.25)
- 2.0b3 (2002.02.23)
- 2.0b2 (2002.02.20)
- 2.0b1 (2002.02.18)
- 1.4 (2002.01.07)
- 1.31 (2001.12.13)
- 1.3 (2001.12.11)
- 1.2 (2001.11.04)
- 1.1 (2001.10.22)
- 1.00 (2001.10.08)
- 0.10 (2001.10.06)
- 0.09 (2001.10.06)
- 0.08 (2001.10.03)
- 0.07 (2001.10.02)
- 0.06 (2001.10.01)
- 0.05 (2001.09.30)
- 0.04 (2001.09.27)
- 0.03 (2001.09.26)
- 0.02 (2001.09.25)
- 0.01 (2001.09.23)

# NAME

mtchanges - Revision history for Movable Type

# SYNOPSIS

This document contains the revision history for Movable Type. Names in parentheses indicate the names of `user(s)` who pointed out the bugs, suggested the features, etc.

# CHANGES

## 2.661 (2004.01.15)

- Fixed issue with redirects being open and invalid XHTML.

## 2.66 (2004.01.13)

- Comments are throttled based on IP. The new config parameter ThrottleSeconds gives the number of seconds which must pass between comments before the same IP can post again.

- Author links are now served by meta redirect, so that commenters' links don't appear directly on the comment page.

- Improved email address validation in mt-send-entry.cgi.

## 2.65 (2003.12.18)

- Added Atom syndication feed template (atom.xml) and auto-discovery for Atom feed to main index template.

- Added <MTIfNonEmpty> and <$MTEntryModifiedDate$> tags, and added a `exclude_port` attribute to <$MTBlogHost$>.

- Fixed security issue with XML-RPC server.

- Added proper handling of offsets in ISO-8601 dates in XML-RPC requests. If timezone offset is omitted, timestamps are assumed to be in the weblog's timezone already; otherwise, the timezone offset is first applied, then the weblog's offset is applied on top of that. This new behavior can be turned off by adding `IgnoreISOTimezones 1` to mt.cfg.

- Made Google search errors in <MTGoogleSearch> non-fatal.

- Fixed relay issue with mt-send-entry.cgi.

## 2.64 (2003.05.28)

- Replaced RSS 0.91 template in default templates with an RSS 2.0 template, from the RSS validator site. (Thanks to the RSS validator folks.)

- Fixed some XSS bugs (comments, TrackBack, notification addresses, and search queries). (Reported by Dumky and others)

- Fixed width of #content div in Clean stylesheet so that it doesn't require scrolling in Windows IE.

- Fixed TrackBack auto-discovery and text filters--auto-discovery is now done against the filtered entry body rather than the unfiltered body. (Timothy Appnel)

- Added `<q>` to list of special tags to be detected at paragraph starts and turn off line break conversion. (Todd Dominey)

- Moved Search button up next to search box to make it less likely to cause confusion and inadvertent clicking of REPLACE.

- Strip linefeed characters from text being previewed.

- Fixed Windows file-locking problem when deleting temp files (during uploading). Thanks to Scot Hacker for tracking down the problem.

- Fixed error in mt.getPostCategories where entry does not have primary category.

- Fixed bug where Add new category... is available to authors without category-editing permissions.

- Set excerpt properly using get_excerpt in notification messages and search results. (Brad Choate)

- Added support for alternate PostgreSQL ports. (Tim Beadle)

- Added documentation for mt.supportedTextFilters.

- Fixed another pg_atoi problem (this one when saving an entry from the preview screen).

- Language for Date Formatting is now applied properly to notification messages. Thanks to Jakub Kazecki for the changes.

- Fixed bug where order of flerror and message in XML-RPC ping responses mattered (it shouldn't). (cobra libre)

## 2.63 (2003.02.23)

- Fixed faultCodes returned from XML-RPC server to override the default SOAP::Lite value, which wasn't an int (it should be). (Adriaan Tijsseling)

- Fixed Javascript error with MT It! caused by Windows security update. Thanks to Phil Ringnalda for the fix.

- Creative Commons licenses can now be removed (but should be done so sparingly, as the licenses are designed to be irrevocable). Also, added more warning text before setting up a license. Thanks to Matt Haughey for the help.

- Added a GenerateTrackBackRSS option to mt.cfg, which determines whether the individual RSS files for TrackBack items are created.

- mt-view.cgi (and Viewer.pm) is now disabled by default, to emphasize its experimental status. To enable it, add `SafeMode 0` to mt.cfg.

- Fixed a Postgres bug with the seconds getting cut off of the Authored On timestamp.

- Fixed default search templates to use `<$MTPublishCharset>`. (Autrijus Tang)

- Fixed a bug with the isPrimary argument to the mt.setPostCategories method (XML-RPC).

- Fixed Creative Commons RDF (was missing `</rdf:RDF>`). (Aaron Swartz)

- Auto-generated excerpts for sent and received TrackBacks now apply text formatting properly. (Brad Choate)

- Fixed bug where Postgres passwords were not used.

- Fixed bug with Berkeley DB to Postgres database conversion (pg_atoi problem). (Mike Chambers)

- `<MTLink>` now only tries to load index templates.

- Fixed rebuilds when using a localized version of MT.

- Select and Add New Category... on edit entry screen can now be translated.

- None and Convert Line Breaks text formatting options can now be translated.

- New Comment message subject can now be translated.

- Fixed bug where Next and Previous links on edit entry screen skipped drafts.

- Fixed bug where extended entry couldn't be set to the empty string from an XML-RPC client. (Adriaan Tijsseling)

- IncludeBlogs and ExcludeBlogs are now respected by mt-view.cgi. (Phil Ringnalda)

- mt-view.cgi no longer shows drafts. (Phil Ringnalda)

## 2.62 (2003.02.16)

- Fixed a security vulnerability.

## 2.61 (2003.02.16)

- Fixed extra update ping problem--if TrackBack ping URLs were added to the URLs to ping, the update pings would be sent again. No longer. (Phil Ringnalda)

- Fixed bug where turning on `NoHTMLEntities 1` would cause entities to be lost in entries.

- Added a `<$MTEntryTrackbackID$>` tag. Thanks to Christopher Laco for the patch.

- Added a NoCDATA setting to mt.cfg to turn off the CDATA encoding, if you don't like it.

- Fixed bug with PostgreSQL conversion, where after running mt-db2sql.cgi, sequences were not set to highest ID.

- Fixed character encoding problem, where utf8 characters would be corrupted in published pages.

- Fixed (for good) XHTML issues with search templates.

- Added a NoOverride setting to mt.cfg, to specify search settings that cannot be overriden by the search templates or the user.

- Language options in Preferred Language are now sorted by name.

- Added ol and i as allowed tags to the default sanitize spec.

- Fixed bug with text formatting not being applied for excerpts. Thanks to Brad Choate for the patch.

- Removed use of Ping in the ImageMagick MT driver, because it returns results in inconsistent forms; now use Read and Get instead. Thanks to Aaron Straup Cope for the pointer.

- Fixed bug where convert_breaks=``1'' did not work if both the entry and weblog had break conversion turned off.

- Changed filter ordering in MT::Template::Context::post_process_handler so that Sanitize and encode_xml play more nicely. (Phil Ringnalda)

- Fixed unitialized value related to $status_old. (Phil Ringnalda)

- Don't overwrite original content when utf8-encoding for MD5 check in MT::FileMgr::Local::content_is_updated.

- Fixed mt-upgrade25.cgi to check if version is greater than or equal to 2.5, rather than only equal to 2.5.

- Comment and TrackBack notification messages are now properly localized.

- Fixed rebuild problem with perl 5.004_04 and Sanitize (use of `foreach` modifier).

- Added Estonian date formats. (Anti Veeranna)

## 2.6 (2003.02.13)

- Added Text Formatting options. Instead of a simple Convert Line Breaks checkbox, you can now set a different formatting option for each entry. Plugins can add new options to the Text Formatting menu, which allows for greater integration with the formatting within the system (for example, Text Formatting will be applied on the preview screen).

- Added PostgreSQL and SQLite database drivers.

- Incorporated Brad Choate's Sanitize plugin, adding an mt.cfg setting for a global default and a per-blog setting to override it. Sanitize is turned on automatically for the following tags:
  - `<$MTCommentAuthor$>`
  - `<$MTCommentEmail$>`
  - `<$MTCommentURL$>`
  - `<$MTCommentBody$>`
  - `<$MTPingTitle$>`
  - `<$MTPingURL$>`
  - `<$MTPingBlogName$>`
  - `<$MTPingExcerpt$>`
- Added an `<MTLink>` tag to automatically generate the URL for an index template or an entry (by entry ID).

- You can now add a new category from the Primary Category menu on the new/edit entry screen by choosing Add new category... from the menu.

- Added a `Closed` status for Allow Comments and turned it into a pulldown menu rather than a checkbox. This allows you to turn off new comment posting for an entry, but leave up the old comments.

- Added support for Creative Commons Licenses. You can select a license in your blog configuration, and the appropriate metadata will be set on your weblog index page and in your RSS 1.0 file.

- Added metaWeblog.newMediaObject implementation for uploading files via XML-RPC.

- Added an RSD template and a `<link>` tag referencing it, which simplifies XML-RPC client configuration. (Ben Hammersley)

- Localization improvements:
  - More strings have been abstracted to language packs, including those in the default templates, which means that they can now be localized.

  - Password recovery, notification list, and comment/TrackBack notification messages can now all be localized in language packs.

  - Added a tag for the `<$MTPublishCharset$>` setting from mt.cfg, if using a different encoding. Default templates now use this tag, which defaults to `iso-8859-1`.

  - PublishCharset is now sent as the charset in notification messages and comment and TrackBack ping notifications.

- dirify now converts certain high-ASCII characters (accented characters, etc) to their low-ASCII characters, meaning that something like `crudité` will be converted to `crudite`.

- Fixed problem with updating pages when file sizes are the same and MD5 is not installed (now we compare file contents rather than sizes).

- Added MT::PluginData, a storage area for plugins. It uses the same data storage method being used by the rest of MT (eg Berkeley DB, MySQL, etc). Thanks to the mt-dev list for the idea.

- XML-RPC server now returns int instead of boolean for mt_allow_comments and mt_allow_pings.

- If comments are not allowed on an entry, they are now rejected at the core of the system, rather than just obfuscated by not putting up a form. This is a side effect of the new open/closed/none distinction.

- Changed comment forms in default templates to be more usable with respect to position of the ``Remember me'' elements. Thanks to Jeremy Hedley for the suggestions.

- In addition to removing any properly-formed HTML tags, MT::Util::remove_html now encodes any remaining `<` characters into `&lt;` entities. (Seth Woolley)

- Fixed problem with TrackBack auto-discovery and sending TB pings from entries created/edited via XML-RPC. Thanks to Annoying Old Guy for the debugging help and a patch.

- Fixed the non-HTML::Entities encode_html routine to not double-encode things that look like entities (numeric or otherwise).

- Added PingInterface, PingProxy, and PingNoProxy configuration settings for setting up proxy server info. Thanks to Christopher Laco for the patch.

- Improved encode_xml (and decode_xml). It now checks whether the string to be encoded looks like it contains HTML tags or entities, and wraps it in CDATA if it does. Thanks to Timothy Appnel for the code.

- Fixed bug in search engine where SearchTemplatePath setting could be overridden through the query string params. (Frank von Vliet)

- Made MT::App subclasses Apache::Filter-aware by using filter_register if Filter is turned on. Thanks to Christopher Laco for the patch.

- Fixed wide-character bug when using MD5, by utf8-encoding the data. Thanks to John @ John's Jottings for the patch.

- HTML in entry titles was not properly encoded in the main blog menu (it was on the list/edit entries screen). This is now fixed. (Richard Soderberg)

- Added note to installation docs on protecting mt.cfg with .htaccess file. (Patrick Gibson)

- `<$MTCGIRelativeURL$>` now returns the full CGIPath setting if it doesn't look like an absolute URL (rather than the empty string).

- Fixed bug in getting directory name on Win32 machines, where we were discarding the volume name. Now use dirname instead of splitpath.

- Errors that occur when sending pings are now logged in the activity log, and an error message placed on the saved entry screen.

- Fixed bug with password verification on certain FreeBSD versions of `crypt(3)` (where the implementation uses Blowfish), and made it work better in general by passing in the entire encrypted string and letting crypt deal with it (rather than trying to determine the salt).

- Fixed bug where `<$MTCategoryCount$>` would include a count of drafts in the category.

- Fixed bug where categories containing only drafts could still be listed by `<MTCategories>`. (girlie)

- Call MT::Entry::permalink in all places where it should be called (rather than building from archive_url, etc).

- Added sort_by and sort_order parameters to the search form, to allow for sorting within blogs in the search results.

- Added month=``last'' attribute to the `<MTCalendar>` tag to easily create a calendar for the previous month. (wgriffin)

- Fixed bug where pings would not be sent after previewing an entry.

- If PublishCharset is set in mt.cfg, send it in the HTTP headers for search results, comments, and TrackBack.

- Added Slovak date formatting and fixed Czech formatting. (Bill Shakespeare)

- When setting form elements, the search script now uses `selected="1"` and `checked="1"` instead of just `selected` and `checked`, for the sake of validity.

- Added mt.getRecentPostTitles, which is a bandwidth-friendly version of getRecentPosts, returning only title, date, post ID, and the user ID of the creator. (Adriaan Tijsseling)

- The XML-RPC server now sends and receives the mt_convert_breaks field as a String value, rather than a boolean, to support the Text Formatting options.

- Keywords can now be set and retrieved via the XML-RPC server in the mt_keywords field.

- TrackBack ping URLs can be set via the XML-RPC server in metaWeblog.newPost and metaWeblog.editPost, in the mt_tb_ping_urls field.

- Added code to untaint plugin filenames. (sdelmont)

- Authors who do not have access to edit author permissions should not be able to get to the permission-editing screen, even manually. This is now fixed. (Jonathan Auer)

- MT::Util::html_text_transform (the default ``convert line breaks'' code) will no longer add `<p>` tags around paragraphs that start with certain HTML tags (`pre`, `table`, `ol`, `ul`, `pre`, `select`, `form`, and `blockquote`). (Phil Ringnalda)

- Linefeed (\r) characters are now stripped from templates and entries.

- `<$MTArchiveTitle$>` and `<$MTArchiveLink$>` now work in Individual Archive Templates, and they do what you'd expect.

- Fixed bug with inconsistent results for `<$MTEntryCategory$>` in search result templates.

- A search query containing only whitespace is no longer considered a search; instead, the `<MTNoSearch>` container is rendered.

- Refactored database code so that most of it can be shared amongst the database drivers.

- Patched German date formatting so that %x and %X are language-sensitive. (Alex)

- Fixed bug where an empty return value in an archive template would be treated as an error. (Jason Kottke)

- Added `<br clear="all" />` to the main index template to work around the IE problems. (Blake)

- Fixed bug with global attribute overloading, where both the overloaded and the overloader would be called. (Timothy Appnel)

- Added error checking for `eval "use $user_class"`. (Dennis Haney)

- Change mod_perl docs to have extlib added to @INC. (Dennis Haney)

- Changed all visible instances of blog to weblog in the system and in the documentation.

- Changed the Convert line and paragraph breaks in comments option into a Text Formatting selector to select a Text Formatting option. (Kristine Beeson)

- Moved the Text Formatting option on the new/edit entry screen down below the Status and Authored On elements.

- Fixed security hole where any author could create a blog. (Paul Hammond)

- Set tab order in comment templates using tabindex, so that tabbing from name to email address to URL to comment text field still works. (Kristine Beeson)

- Fix unitialized value warning with empty DB password. (Adam Kalsey)

- Provide empty plugins directory in full install. (Anil Dash)

## 2.51 (2002.10.29)

- Added Windows right-click bookmarklet functionality, where you can use a `Post to MT Blog` right click option to open the bookmarklet. Thanks to Anil Dash for the code.

- Added a generic `<MTElse>` tag, which can be used to supply an ``else'' condition to any conditional. Thanks to Brad Choate for the code.

- Added an `<$MTEntryPermalink$>` tag, which does the right thing when displaying the link for an entry: if an individual archive, it is not followed by an anchor; otherwise, it is.

- When rebuilding files, only rewrite the original file if the content has changed. If the content is identical, leave the existing files in place, which won't update the modification time on the file. This allows better use of caching and conditional GETs when retrieving RSS (and other files). (Phil Ringnalda)

- Removed `<lastBuildDate>` from the default RSS 0.91 template and made `<pubDate>` what it should have been (the date of the most recent entry). This allows better use of caching and conditional GETs when retrieving RSS.

- Added a no_colon attribute to `<$MTBlogTimezone$>` to be used in constructing RFC822 dates, and fixed the format of `<pubDate>`.

- Fixed bug with password-protected TrackBack-enabled categories by changing the URL to stick the passphrase into the path_info.

- Fixed ImageMagick bug where older versions of Image::Magick would cause MT to give an error `Can't locate auto/Image/Magick/Resize.al` when creating a thumbnail. Thanks to Erin for the use of her server in figuring out the problem.

- Fixed bug with anchors in permalink URLs sent in TrackBack pings. (Brenna)

- Improved titles of MT screens so as to aid navigation, etc. (Justin Hall, and others)

- Added a `<$MTSearchResultCount$>` tag, which counts results across all blogs found in the search. (mcroft)

- Fixed bug with the TrackBack bookmarklet and single item TrackBack, where a typo was causing the checkbox with ping URL not to appear. (Anil)

- Set charset in HTTP header to the same encoding we set in the `meta` tag.

- Fixed problem with TrackBack URLs and servers that screw up the path info.

- Added decode_xml as a global tag attribute. (Timothy Appnel)

- Fixed bug where extra update pings would be sent on already-pinged entries, if the entries were saved from the preview screen.

- Added a SafeMode config setting, on by default, to check for security and/or other issues and disallow them, but which can be turned off.

- Disallow certain file extensions from being used in linked file templates, for security purposes: .cgi, .pl, .pm, and .cfg, if you're running in SafeMode. Thanks to Michael Croft for the note.

- Made ``Edit your Profile'' description clearer so that users know they select their language there. (Eduardo Arcos)

- Added PublishCharset option to mt.cfg to override the character encoding corresponding to your Preferred Language.

- Fixed bug with finding ppmquant when creating thumbnails of GIF images; MT::Image was looking only in the PATH.

- Changed text of `MORE...` link in default templates to `Continue reading E<lt>$MTEntryTitle$E<gt>`, to clearly identify the target of each link (for accessibility purposes). Thanks to Timothy J. Luoma for the suggestion.

- Fixed bug in import where auto-extracted titles were only copied, not cut out of the entry body. Also, fixed a bug where multi-line titles would not be recognized between ``title start'' and ``title end''.

- Added CONFIGURATION SETTINGS section to the manual with a description of all of the available mt.cfg settings.

- Fixed bug where archive config screen didn't work properly if it was viewed in a non-English language.

- Added a check for whether an alternate template (AltTemplate) has been specified for a given Template name in search. If not, give an error. The system previously gave a much more confusing error.

- Added option to `<MTGoogleSearch>` to pull query from entry keywords. (Jason Trommeter)

- Fixed `Can't use "No title" as a method name` bug (l10n-related).

- Fixed bug in dc:date in TrackBack RDF (no `T`). (Phil Ringnalda)

- You can now add the Keywords field to your bookmarklet.

- Keywords are now exported and imported properly.

- Fixed bug with `<MTPings>` showing all pings in the system if an entry doesn't have TrackBack enabled, but the tag is used.

- Fixed bug with the password recovery screen. (fmt)

- Added numeric check for limit to be used in SQL query. (Michael Stillwell)

- Fixed TrackBack URL when it contains a passphrase on category edit screen.

- Fixed `?` link for Local Archive Path in upload popup. It was showing the Local Site Path. (tylerted)

- Fixed a bug in MT::ObjectDriver::DBM that caused range searches not work when using join. This wasn't actually breaking anything in MT, but it was still a bug.

- Fixed a bug where AdminCGIPath was used where it shouldn've have been. (Jeremy Beker)

- Work around decimal places in old versions of MySQL with blog timezone.

- Fixed perl doc typo in MT::Placement. (Sen Nagata)

## 2.5 (2002.10.08)

- Localization: the MT interface can be available in multiple languages, on a per-author setting.

- Integrated Jay Allen's mt-search (Thanks, Jay!). We've made the following changes from version 1.31b:
  - Rewrote ``new comments search'' to make it more scalable (using recently_commented_on functionality)

  - Added a search log through the Activity Log.

  - Added search request throttling, to help against denial of service attacks.

  - Merged mt-search.cfg directives into mt.cfg.

  - Customized default search templates to use MT stylesheets.

  - Including Template Modules using `<MTInclude>` tags now works, though you should be careful if you have more than one blog in the system. See the documentation for more details.

  - Added an IncludeBlogs config setting and form field to allow for setting a list of blogs to include in the search (as an alternative to excluding a list of blogs). IncludeBlogs overrides ExcludeBlogs.

  - Changed AltTemplateN directives to just AltTemplate. You can now set an infinite number of alternate templates.

  - Renamed TemplateDir setting to SearchTemplatePath to avoid confusion with the TemplatePath setting.

  - Reworked as an MT::App subclass.

- Added ability to ping blo.gs and other services.

- Made default templates more accessible: added summary to calendar table; changed month name to a `<caption>` tag; changed day names to `<th>` headers and added abbreviations; blog title in banner is now linked back to main page; now use real header tags, eg `<h1>`; now use relative font sizes, eg `small`; use `<label>` on comment form elements. Thanks to Mark Pilgrim's 30 Days to a More Accessible Weblog.

- Image thumbnails can now be created using the NetPBM tools, if your system has those. Look at the ImageDriver and NetPBMPath settings in mt.cfg. The default is still to use ImageMagick.

- Added TrackBack auto-discovery, which can automatically find TrackBack ping URLs based on permalinks in entry bodies. These entries can then be pinged without any extra effort. Inspired in part by the pingback specification.

- Added a new stylesheet as the new default style for new blogs.

- Added a Keywords field to the new/edit entry screen, for storing search keywords/metadata, along with a `<$MTEntryKeywords$>` tag.

- Fixed RSS 1.0 template so that we're now using Dublin Core tags instead of RSS 0.9x extensions. Thanks to many concerned parties. :)

- Fixed a bug in the MySQL implementation with recently_commented_on when using MySQL 3.23.45 (or earlier?). Thanks to Adam Kalsey for the fix.

- TrackBack pings should now be sent using POST instead of GET.

- Added `encode_xml="1"` to the `<$MTEntryLink$>` tags in the default RSS templates (to encode ampersands, among other things).

- Update pings (eg weblogs.com, blo.gs, MT, etc) are now sent only when an entry is either new (and published), or was previously a draft, and is now published.

- Send entry title in subject of notification messages.

- Added two new date formatting tags, `%x` and `%X`. The former displays the language-sensitive date, and the latter the language-sensitive time.

- Improved the default settings for TemplatePath, ImportPath, PluginPath, and SearchTemplatePath, so that they are now based on the detected directory where MT is run from, rather than just ./foo (off of the current working directory).

- Added `<MTBlogs>`, a container tag to list all of the blogs in the system.

- Fixed thumbnail and HTML popup filenames when the uploaded image filename contains multiple `.` (periods). (Ask Bjørn Hansen)

- `<$MTCategory*$>` tags can now be used in category archive file templates.

- MT::Util::encode_xml now encodes apostrophes for XML. (Timothy Appnel)

- All container tags in MT::Template::Context now propagate conditions properly. (Brad Choate)

- Added sprintf global tag attribute. Thanks to Brad Choate for the patch.

- Increased height of main entry text window if there is no extended entry.

- Changed RDF so that TrackBack ping URL is now in trackback:ping. Should be backwards-compatible.

- Added AdminCGIPath setting to use if mt.cgi URI is different than public URI (eg if you're using https).

- `<$MTBlogEntryCount$>` no longer includes entries marked Draft. (Brad Choate)

- Added MT->version_number for just the numeric portion of the version.

- Changed TrackBack ping URLs to use path info for TrackBack ID instead of query string. This allows using POST requests.

- Tags can now be used with XMLish / (forward slash) at the end, which allows using a tag both as a container and as a variable tag. Multiline attributes are also possible. Thanks to Brad Choate for the patch.

- Search and replace (within MT) can now search in keywords.

- Set default date formatting language to English if not set.

- Added optional language attribute to `<$MT*Date$>` tags, allowing you to override your per-blog language date formatting setting. (Justin Hall)

- Added entry title to comment and TrackBack ping notification messages.

- Added `<MTPingsSent>` container to list the TrackBack pings sent from a particular entry.

- Added `<$MTBlogSitePath$>`, the Local Site Path from blog config.

- Fixed bug with OR in part of category name when using boolean with `<MTEntries category="Foo OR Bar">`.

- Container tags can now be nested within container tags of the same name (eg `<MTEntries>` inside another `<MTEntries>`) without using a template module. Thanks to Brad Choate for the patch.

- Default PingTimeout setting is now 15 seconds instead of 10.

- Added checkbox in bookmarklet TrackBack item when there is just one TB-enabled entry. Thanks to Phil Ringnalda.

- Fixed bug with half timezones and MySQL by changing blog_server_offset column to a float.

- Improved security when deleting objects--now we perform the ``has-permissions?'' check not only before displaying the option to delete in the UI, but also before deleting the actual object in the system.

- Fixed CGIMaxUpload example in mt.cfg; the underscore was causing the postmax to be set to 500 bytes, causing spurious `Uploaded file too large` errors.

- Daily, Weekly, and Monthly archives are now rebuilt in segments, N entries at a time, just like individual archives. N is based on a multiplier of the EntriesPerRebuild setting in mt.cfg.

- Moved all XML-RPC implementation methods into MT::XMLRPCServer, so that mt-xmlrpc.cgi is just a shell. This allows using the XML-RPC implementation with mod_perl.

- Added mt_allow_comments, mt_allow_pings, mt_convert_breaks, mt_text_more, and mt_excerpt extensions to the content struct in metaWeblog.newPost and metaWeblog.editPost, and to the return values in metaWeblog.getPost and metaWeblog.getRecentPosts.

- Only show ``5 most recent comments'' and ``5 most recent pings'' if there are any.

- Fixed bug with OR/AND booleans and categories: the OR/AND now respects the context in which it was used, and filters the list of entries already in context, rather than always listing all entries that match in the entire blog. Thanks to Ben Hatton and others.

- Added CommentScript, TrackbackScript, and SearchScript config variables to make it easier to configure MT for mod_perl or in situations where Perl scripts need .pl extensions.

- Documented the words=``N'' attribute to `<$MTEntryBody$>`.

- When rebuilding an index template, the rebuilt screen now has a ``View this page'' link.

- List 5 most recent pings on the main menu for a blog.

- Now use Resize instead of Scale when scaling images using ImageMagick. Also, remove all profile information from the image. Thanks to Michael S for the patch.

- TrackBack pings are now imported and exported like comments.

- When exporting, make sure to set date language to English, so that exported AM and PM will be in English.

- metaWeblog.newPost and metaWeblog.editPost now accept a dateCreated parameter in the struct in ISO.8601 format to specify the authored-on date. Thanks to Bill Kearney for the reminder.

- If an author's password is NULL, mt-db2mysql.cgi now converts it to the empty string before sticking it in MySQL.

- mt-check.cgi now displays the version of the module installed.

- Attributes hash ref is now localized before being passed in template tag handlers, which means they can modify the list of attributes in a localized scope. Thanks to Brad Choate for the idea.

- Template parser now parses attributes with embedded `$` characters properly (like `<$MTFoo bar="/baz$/"$>`). Thanks to Brad Choate for the pointer.

- Fixed bug with invalid (empty) ALLOW PINGS values.

- Added `title="page title"` to link created in bookmarklet posting window.

- Added validity checking for URLs sent in TrackBack pings.

- Only load files in the plugin directory whose extensions are .pl. (staggernation)

- Added show_email and show_url to `<$MTEntryAuthorLink$>` and `<$MTCommentAuthorLink$>`. These let you control whether the email address or URL is displayed in a particular instance of the tag. (syndromes)

- Added the following languages for date formatting:
  - Japanese (Justin Hall)
  - Icelandic (Einar Orn Einarsson, Ingvi)
  - Slovenian (gandalfar)
  - Czechoslovakian (Johanka)
  - Danish (henrik hammer berthelsen)
- Link from bookmarklet now includes title attribute with title of page. (Todd Dominey)

- Fixed postion to position in the default stylesheet. (Doug Feuerbach)

- Added a link to the edit-entry screen on the edit-comment screen to edit the entry on which the comment was made.

- Fixed bug where author count could include authors who no longer have permissions on the blog.

- Added mt.publishPost method to XML-RPC interface to rebuild the files for a particular entry.

- Improved detection of MT directory (now detected from Config parameter to MT::new).

- Changed TrackBack entry pulldown in bookmarklet to menu-long style. (girlie)

- TrackBack RDF data is now enclosed in HTML comment tags. Added comment_wrap attribute to `<$MTEntryTrackbackData$>` to turn off this wrapping.

- Added namespace URLs to the `<html>` tags in the default templates.

- Fixed bug when importing data when using the MySQL version when ``import as me'' is unchecked. (Kristine)

- If the path you specify as your DataSource in mt.cfg does not exist, you will now get an error. This should help in figuring out installation problems, perhaps.

- Added MT::Template::Context::add_global_filter to add a global tag attribute.

- Added NoLocking config option for use on systems using Berkeley DB where flock() and link() are both unimplemented (some Windows systems). Not to be used unless one knows what one is doing. Thanks to dws for the patch.

- Added the `<MTCommentEntry>` tag, a container tag representing the entry on which a comment was posted. So you can use `<$MTEntry*$>` tags inside of that container referring to the entry.

- Fixed dc:identifier and URL sent in TrackBack ping so that they include the numeric ID for the permalink, if the preferred archive type is not individual.

- Added the `<$MTStaticWebPath$>` tag, which displays the value of the StaticWebPath that you've set in mt.cfg.

- The comment sort order you've chosen in Blog Config | Preferences is now used to sort the comments used in `<MTComments lastn="N">`. You can override this with the new sort_order attribute. Thanks to morbus for the patch.

- Changed order of tag initialization in MT::Template::Context::init. Now tags created in plugins are set after the defaults, which means you can override the default tags. This should, of course, be done with caution. Thanks to Jay Allen for the reasoning.

- Fixed compatibility problem with older versions of DBD::mysql, where the auto-increment column value is returned through `$dbh->{insertid}`, rather than `$dbh->{mysql_insertid}`.

- Added MT::Template::Context::add_conditional_tag to add a conditional tag. This makes it easy for plugins to add conditional tags.

- Fixed bug causing double slashes in `<img>` code for thumbnails.

## 2.21 (2002.06.28)

- Very important bug fix to MySQL schema: Changed all *_created_on columns to the datetime type instead of the timestamp type. The latter could have very bad effects if used within the MySQL shell (although through MT's libraries it is not a problem). Thanks to shanson for finding this.

- The plugin framework can now create container tags (thanks to Adam Kalsey for pointing out that it couldn't before).

- Added encode_xml global tag attribute to escape special XML characters.

- Changed default RSS templates to use encode_xml=``1'' rather than encode_html=``1'', because the latter will encode characters into undefined XML entities.

- Added encoding=``iso-8859-1'' to default RSS templates. This means that users using other encodings will have to change the RSS templates.

- Made bind_columns usage compatible with older versions of DBI that expect the attributes hashref as the first arg.

- Fixed bug with Allow pings default not being unchecked after pressing save. (Robyn)

- Fixed MySQL usage under mod_perl to look in the right spot for the mt-db-pass.cgi file. Thanks to Ask Bjørn Hansen for the patch.

- Fixed mt-load.cgi to set email to the empty string, so that it's not NULL.

- Changed from using `lib->import` method back to `unshift @INC` because the former seemed to be causing problems for some people.

## 2.2 (2002.06.26)

- Added TrackBack, a peer-to-peer framework for communication between weblogs. Can track cross-weblog conversations/discussions, provides remote content repositories. Has password protection, IP banning, automatic RSS output, and email notification.

- Added MySQL backend support.

- Added the `<$MTBlogRelativeURL$>` tag to produce a relative URL to your main blog.

- Added `<link>` tag navigation (prev, next, start) to Individual and Date-based archive templates. Thanks to Mark Pilgrim.

- Strip HTML from author, email, and URL comment fields.

- Added decode_html global tag attribute to decode HTML entities.

- Added title=``1'' and excerpt=``1'' attributes to `<MTGoogleSearch>`. Thanks to Dave Sifry for the patch.

- Added the ability to easily add new tags via the plugins directory and the MT::Template::Context::add_tag method. Thanks to Felix S. Gallo for the idea.

- Improved text generated from uploaded image or file. (Brad Lauster)

- Changed appearance of pinging and rebuilding windows.

- Auto-select default post status when blog is selected in bookmarklet.

- Added permaLink element to the struct returned from metaWeblog.getPost and metaWeblog.getRecentPosts.

- Fixed bug with saving entry you created when you don't have rebuild permissions.

- Added PingTimeout setting.

- Split off rebuild and ping from save entry, so that they now occur on separate screens (though still automatically). This gives a better indication of status to the user, as well as enabling more ping options (like TrackBack).

- Added descriptions for categories and the `<$MTCategoryDescription$>` tag.

- If entry does not have title in search results, first 22 chars of body will be used instead.

- Fixed bug where entries saved as Draft would show up when using `OR` or `AND` in the `<MTEntries category="...">` tag.

- Fixed `related="1"` google search.

- Added Finnish as a date formatting option. (skithund)

- Made `<$MTEntryDate$>` work in comment listing template.

- Standardized stylesheet links in default templates.

- Changed admin:generatorAgent to the proper format (a URI).

- Added <link> tag for RSS template to default main index.

## 2.11 (2002.05.03)

- Updated documentation on linking to comments.

- Fixed bug with `<$MTCommentPreviewIsStatic$>` tag causing build errors when previewing comments. (Introduced in 2.1)

- Fixed bug with `<$MTArchiveCount$>` not working properly for category archives.

## 2.1 (2002.05.02)

- Added webMaster, language, lastBuildDate, and pubDate to both RSS templates.

- Added `encode_html="1"` to all RSS fields that didn't have it already.

- Added Norwegian dates.

- Added test for mt-check.cgi to determine whether we are running under cgiwrap or suexec.

- Added a new global tag attribute encode_url (thanks to Scott Andrew LePera and others for the idea).

- Changed the behavior of the publish flag in blogger.newPost; previously, if set to `false` the new entry would be saved as a draft. This was a bad idea, for various reasons. So now, no matter the value of the publish flag, the new entry is saved with post status == publish. It will just not be published until rebuilt manually. There is a new mt.cfg option, NoPublishMeansDraft, which when set to `1` enables the old behavior.

- mt-xmlrpc.cgi will now decode the `&apos;` entity properly.

- Added mt.getCategoryList, mt.getPostCategories, and mt.setPostCategories to the XML-RPC API. Thanks to Daniel Drucker for the original implementation of these methods.

- Added a metaWeblog.getRecentPosts method, which is like the blogger.getRecentPosts method, but returns more information about each entry (equivalent to the data returned from metaWeblog.getPost), including the entry title.

- Changed `#calendar` to `.calendar` in default stylesheet to match with usage in the templates.

- Fixed date in notification messages to use MT date-formatting, which means that it will now work properly on systems that don't support `%e`, and that it will use the selected date formatting language from the blog config.

- Fix bug with categories not being created in import if a category of the same name exists in a different blog. (Jonathon Delacour)

- Silence warnings in mt-xmlrpc.cgi execution.

- The export mechanism now exports your Post Status, Allow Comments, and Convert Breaks values for each entry, and the import mechanism will import them. This means that when you use export-import to transfer data, this metadata will not get lost in the transfer.

- Added `<$MTEntryFlag$>` and `<$MTEntryStatus$>` tags. They are not particularly useful in templates, but they are used in the export mechanism.

- mt-xmlrpc.cgi will now look for mt.cfg using the full path to the file, rather than just in the current working directory.

- Added HTMLPerms and UploadPerms to give even more control over the permissions of files created by the system--this can be used if you are generating PHP files on a server that needs the execute bit set on PHP files, for example. Thanks to mval@axium.net and mouse@axium.net.

- Subjects of notification email messages will now be converted to 7-bit to comply with the regulation that mail headers should be 7-bit. (dotWisner)

- Added `Content-Transfer-Encoding: 8bit` to notification messages in case contents contain 8-bit-encoded data. (dotWisner)

- Fixed a long-standing bug with email notifications using Mail::Sendmail (the SMTP usage), where the notifications would not get sent. Now they will get sent.

- Added a `rebuild_me` flag to MT::Template so that index templates can be set to not automatically rebuild; in this case, they need to be rebuilt manually using the `REBUILD` button on the template-editing page.

- Added the ability to rebuild one index template at a time.

- Big rebuilding speedup by caching all placements for a particular blog in memory so that usage of `<$MTEntryCategory$>` should now be much faster. This requires the new `blog_id` column in MT::Placement, which is why we need to the mt-upgrade201.cgi script.

- When using Mozilla or NS 6, textareas should now wrap properly (finally). Thanks to Ask Bjørn Hansen for the hack.

- Give an error message when rebuilding if an index template does not have an Output File set.

- Now use `spam_protect` in comment email tags in default templates.

- Added ``generator'' info to RSS 0.91 and RSS 1.0 index templates to idenfity Movable Type as the RSS generator.

- Fixed bug in import where importing comments using `NO ENTRY` could import comments into a different blog than the one intended.

- Fixed DOCTYPE URL in default templates.

- Speed boost: `<MTArchiveList archive_type="Category">` (and `<MTCategories>`) no longer load the list of entries in the category automatically; instead, they only load the list if you use an `<MTEntries>` tag inside of the container. Sample numbers: 10s for rebuilding the list 100 times before, 4s after the change.

- Added mt.supportedMethods method to mt-xmlrpc.cgi, to return a list of supported methods.

- In the ``view complete list of authors'' screen, you can now only delete authors who you have created, or yourself.

- `<$MTEntryExcerpt convert_breaks="1"$>` will now properly add <p> and </p> tags around an excerpt even if the excerpt is auto-generated.

- Added Google API hook for search and similar search in `<MTGoogleSearch>`.

- Added `<MTEntriesHeader>` and `<MTEntriesFooter>`. Thanks to wcowley for the patch.

- Now supports three metaWeblog methods: newPost, editPost, and getPost.

- Added note about using PERL5LIB in mod_perl setup instructions.

- When importing an entry, if it has comments listed in the import file, the allow_comments flag will automatically be set, even if the default is not to allow comments on new entries.

- The `offset` attribute to `<MTEntries>` will now work even when there is already a list of entries in context, which means that you can use it like this:

      <MTArchiveList archive_type="Monthly">
      <$MTArchiveTitle$>
      <MTEntries lastn="2"><$MTEntryTitle$><br /></MTEntries>
      <MTEntries lastn="2" offset="2"><$MTEntryTitle$><br /></MTEntries>
      </MTArchiveList>

- The file extension for popup HTML files generated from uploaded images is now determined by the archive file extension, if set, and `.html` otherwise.

- You can now use absolute paths in the Output file setting for index templates.

- Updated documentation on MT import format.

- If no format is provided to a date tag (eg. `<$MTDate$>`), the default format used is now influenced by the language setting.

- Wrote documentation for the MT::Util utility functions.

- Rewrote MT::Util::wdays_from_ts so that the weekday is calculated internally, rather than relying on Time::Local to convert an MT timestamp into epoch seconds to get the weekday. This allows usage of dates before 1970 and after 2037 in MT.

- Syndicate this site link in default templates now links to RSS 1.0.

- Fixed bug with `<$MTArchiveCategory$>` not showing the right category.

- Fixed bug with thumbnail URL with windows pathnames.

- Added half-timezones: `UTC+9.5`, `UTC+6.5`, `UTC+5.5`, `UTC+3.5`, `UTC-3.5`.

- Changed name of bookmarklet window from `MTpost` to `_blank` so that multiple windows can be opened at once.

- Add a `/` to the end of the StaticWebPath value if it doesn't already have one at the end.

- Made it clearer that saving the secondary categories does not rebuild.

- Fixed month names (Feb, Dec) for French dates, and Sunday for Swedish. Also, now just use AM/PM instead of du matin/du soir.

- Fixed link to export in Import & Export Entries.

- Changed Comment popup link in default templates so that it will work even without Javascript.

- Changed `{spam_protect}` to `{'spam_protect'}`, `{m}` to `{'m'}`, and `{y}` to `{'y'}` so as not to cause errors in the (very old) 5.004_04 version of Perl.

- Fixed permissions in 755.gif image in docs.

- Fixed bug where directories were not being automatically created on OS X; turns out OS X doesn't like `/` at the end of a directory in mkdir().

- Fixed encode_php (which I broke). Thanks to Brad Choate.

- Added NoHTMLEntities option to the mt.cfg option to specify whether HTML::Entities should be used in encoding characters into entities.

- Added the glue attribute to `<MTEntryCategories>`.

- Added the ability to use the static input field in comments to pass through a URL to redirect to after posting a comment. Thanks to Boxes & Arrows for the idea.

- Fixed cookie path when mt.cgi is at the root of a server, like http://www.foo.com/mt.cgi.

- Power edit window now resizable.

- Removed -T from mt.cfg and mt-send-entry.cgi.

## 2.0 (2002.03.20)

- Fixes for typos, broken links, etc.

- Fixed truncated `Delete` and `Cancel` buttons on edit comment screen.

- Fixed Mac IE problem in multiple category selection screen--when selecting all of the options in the left box, the right box would jump around on the screen. Fixed by adding a dummy category when the source box is going to be empty.

- `Preferred Archive Type` option will now only show archive types that you have selected in `Archiving`.

- Added a `changes saved` method after saving in power edit.

- Made `<MTComments lastn="N">` work when placed in entry context; it will only display the last `N` comments from that particular entry.

## 2.0b6 (2002.03.12)

- Added docs for entry screen customization.

- If editable authored-on date is not to be displayed on customized entry screen, display an uneditable version instead (because this is useful information).

- Fixed bug with creating thumbnails on Windows (binmode issue).

- Fixed bug where `<$MTArchiveTitle$>` on category archive would display incorrect category label (because it was retrieving the label from the first entry's primary category).

- Fixed bug where convert line breaks and allow comments values would not be set to default when using Custom entry screen settings without those two checkboxes.

- Fixed bookmarklet login bug that was introduced in 2.0b4 or somewhere.

- Power edit and list & edit entries now only show authors that are registered for the particular blog.

- Added the `encode_php` global tag attribute (thanks to Brad Choate for the patch).

- Fixed bug with saving profile without setting a password (introduced in 2.0b4).

- Moved setting of global app variables back into load_tmpl, because some other parts of the code call it directly, bypassing build_page.

- mt-xmlrpc.cgi now checks if it has XML::Parser; if not, it uses this knowledge to determine whether or not to decode HTML entities.

- Fixed bug in date/time-formatting: times in the hour of 12 PM were being displayed as 12 AM.

## 2.0b5 (2002.02.27)

- New and edit entry screens are now modular and customizable; you can set the fields you'd like to appear, and set where you would like the button bar (top or bottom of page).

- Increased width of Category pull-down in bookmarklet window.

- The form you get after you've uploaded a file will no longer submit in err when you press return; all submits are through the buttons using JS anyway, so the form submit is now disabled.

- Changed error screen so that there are now 2 buttons: CLOSE and GO BACK. So it's clearer what happens when you click the buttons.

- Refactored build_page and load_tmpl code; CMS-specific logic now goes into MT::App::CMS::build_page, and parameter-setting goes into MT::App::build_page. So load_tmpl now just loads the template.

- Fix import so that new imported entries get `Convert Line Breaks` set properly.

- When listing Five most recent entries on editing menu, grab first 22 characters of entry body if no entry title.

## 2.0b4 (2002.02.25)

- Added `border="0"` for thumbnail image after choosing popup image; also fixed the invalid XHTML.

- Fix thumbnail creation error by providing Image::Magick with the image format on $magick object creation.

- Fix bug on category-editing page where an error will be displayed if the user who created a category has been deleted.

- When creating a new author, give an error if no password is provided.

- Fix bug with Convert Line Breaks being unchecked for pre-2.0 entries even if the default in blog config is set to on. blog

- Cache format hashes for dates after creating them.

- Added another speed enhancement, particularly for large archive pages, by caching the MT::TemplateMap preferred object for an archive type.

- Moved excerpt below entry body and extended entry body in bookmarklet window to match layout on edit/new entry pages.

## 2.0b3 (2002.02.23)

- New `New Entry` and `Upload File` icons for left nav.

- Added troubleshooting section for mt-load.cgi and DataSource errors.

- Added `Post Status` pulldown to import so that `"Status" default` in blog config can be overriden. Added help links to import options.

- Added Javascript validation for every DELETE button that deletes items from a list; if nothing is checked, now gives a JS alert.

- HTML-formatting buttons (bold, italic, URL, etc.) will now only show up when using a browser that supports them.

- mt-upgrade.cgi now detects if MT databases are already upgraded; if so, it stops, and doesn't try to upgrade again.

- When running under mod_perl, use Apache::Request instead of CGI.pm, because it's faster, less bulky, etc. Required changes to any code calling CGI.pm functions other than param.

- Deleting entries from the power edit screen will now return you back to the power edit screen (as opposed to list & edit entries).

- Saving the power edit screen will now maintain the same page that you were on when you saved, rather than starting back at the beginning.

- Fixed a bug in MT::ObjectDriver::DBM where offset would not be applied when using a join.

- Fixed heights on power-edit input boxes and on thumbnail boxes.

- Fixed Monthly rebuild slowness (thanks to Norch for the shell access so I could debug it). Turns out it was due to some unimplemented short-circuit logic. In addition, templatemaps are now cached to speed up rebuild even further.

- Category and author Filter pulldowns are now sorted alphabetically.

- Fixed Email Address => IP Address on IP Banning screen.

- Fixed help links (broken when help file names were shortened).

## 2.0b2 (2002.02.20)

- Sort categories and authors in power-edit screen.

- Changed input box styles back to 20px so that they are not too small in Windows.

- Added caching of templates when rebuilding archives; this means that for each archive type, each archive template need only be loaded once. Hopefully this will improve performance.

- Fixed bug where `Convert Line Breaks` setting was not applied to preview page.

- Shortened manual split page names so that they don't get truncated.

- Export now exports in ascending chronological order. (morbus, and others)

- Added <p> and </p> around the welcome message on the editing menu, so that anything typed in (even without adding HTML) will get the proper type formatting.

- Untaint template's linked file path; we allow anything, assuming that the user who set it up knows what he/she is doing. (Norch)

- Fixed recently_commented_on, which was broken because it was resorting the entries into the wrong order.

- Fix warning when select `all entries` for limit pulldown on list & edit entries.

- Added bookmarklet config option to include `Convert Line Breaks` checkbox on bookmarklet window.

- Fixed bug where `Convert Line Breaks` would not get set when posting from bookmarklet. (RoyalTS)

- Fixed bug with German date/time display. (RoyalTS)

- Fixed typo in mtchanges.html. (morbus)

## 2.0b1 (2002.02.18)

- Lots of changes to the UI: leftnav, topnav, edit-entry screen, new-entry screen, etc.

- Blog Editing Menu has now changed greatly to provide space for a welcome message (editable in blog config), blog stats, and links to 5 most recent posts and comments.

- Added the ability to do NFS-safe database locking using .lock files and link(). This is not something most people should worry about; if it affects you, it's likely that you will know it. :) Thanks to Kelsey Cummings for ideas and code.

- `Hold` and `Release` are now `Draft` and `Publish`.

- `<MTEntries lastn="1">` within calendar should display the most recent post from that day, not the earliest. Fixed.

- In old versions, search and replace would not work unless you had the permission to edit all entries. Now it does--if you don't have permission to edit a particular entry, it is just not searched/replaced.

- Added notes on Win32 installation, cgiwrap install, cgi-bin install, etc. Added example pictures of set permissions window in FTP program.

- When posting a comment, if comment text is not provided the system will give an error.

- Split up manual into sections, one HTML page per section.

- `encode_js` no longer encodes `/` characters, because there is no reason to do so.

- Added thumbnail creation interface (requires Image::Magick) for creating thumbnails of images uploaded through the system.

- Added the ability to select a language other than English for date formatting and display.

- Added a script for ``mail this entry''

- Added boolean AND/OR logic to the `<MTEntries>` `category` attribute.

- Added power-editing interface.

- Status of imported entries will now be set to the default status assigned in blog configuration (rather than always Release, as was the case before).

- Changed `class="container"` to `id="container"` in default templates. (Thanks to Brad Lauster)

- Added graphical editing shortcuts to bookmarklet window.

- Use HTML::Entities for HTML-entity encoding if it's available; if not, use the standard routines we've been using.

- Added `<$MTBlogEntryCount$>` and `<$MTBlogCommentCount$>`.

- Added RSS 1.0 template to the default templates. Thanks to Rael Dornfest for sending it.

- Added `<$MTBlogTimezone$>` tag, which displays the timezone as an offset from UTC in `+|-hh:mm` format.

- Added the `<$MTArchiveDateEnd$>` tag, which represents the end date of a date-based archive (`Daily`, `Weekly`, or `Monthly`) and thus can only be used in a date-based context. It is a standard date tag, in that it accepts a `format` attribute like any other date tag.

- Made `archive_type` attribute to `<MTArchivePrevious>` and `Next` work.

- Fixed graphical editing shortcuts so that if nothing is selected, nothing happens--this will prevent the issue where empty tags are added at the top of the page when nothing is selected.

- Added comment IP banning.

- Split configuration screen into 4 screens: core setup, preferences, archive setup, IP banning.

- Added the ability to assign multiple archive templates to a single archive type; added an interface for associating archive templates with archive types, added `MT::TemplateMap` object, etc.

- Improved error message when an error occurs reading mt.cfg, or when the file cannot be found.

- Fixed bug where `<MTEntries lastn="N">` on a `Category Archive` would grab the wrong set of entries (not in the correct order).

- Changed notification message sending so that only one will be sent to the author of the entry, rather than `N / 20`, where `N` is the number of notification addresses on the list.

- Added more sort and display options to `<MTEntries>`: `recently_commented_on` attribute, and `sort` and `sort_by` options.

- Fixed parsing response from weblogs.com ping, which changed formats slightly and broke the regular expression.

- Added ability to truly delete categories.

- Now use a better hack to get non-UTF8 data in mt-xmlrpc.cgi: we run the data through `$foo = pack 'C0A*', $foo`, which strips the UTF8 encoding and flag. So at least we can now use XML::Parser, if it's there.

- Added `lastn` attribute to `<MTComments>`.

- Added `<$MTCommentEntryID$>`.

- Added `offset` attribute to `<MTEntries>`.

- A category archive page will no longer be generated for non-categorized entries (in 1.x an empty archive page with the name cat_.html would be generated).

- Added MT::App::print and MT::App::send_http_header, both of which do the Right Thing under either CGI or mod_perl.

- Fixed script name detection in MT::App::script, particularly under mod_perl.

- Eliminated mt-export.cgi and mt-import.cgi by moving import and export into the MT::App::CMS class (with some modifications to enable them to still run with unbuffered output).

- Added `ImportPath` directive to mt.cfg; defaults to ./import, and allows setting the path to the import directory.

- When a new entry is posted, the activity log will now be updated with the author and entry ID.

- Added IP address logging for comments, along with new tags `<$MTCommentIP$>` and `<$MTCommentPreviewIP$>`.

- Moved all comment code from mt-comments.cgi to MT::App::Comments, a new app subclass of MT::App.

- Changed calendar in default templates to add `<span class="calendar">` into every cell.

- Split up individual entry rebuild into segments of N entries at a time so as not to kill servers. (40 entries at a time is the default.)

- Force rebuild window to focus when it loads.

- Fixed bug where an apostrophe (`'`) in an author name would cause a JS error on List & Edit Entries.

- Added `<$MTBlogArchiveURL$>`, the blog Archive URL.

- Added `<MTCategories>` and `<$MTCategory*$>` tags to list all categories.

- `<MTArchiveList archive_type="Category">` is now the same thing as `<MTCategories>`. Also, categories are listed in alphabetical order.

- Added `<MTEntryCategories>` to list all categories to which an entry belongs.

- `<$MTEntryCategory$>` now displays the entry's primary category.

- Added the `category` attribute to `<MTCalendar>` to only display entries from a certain category in the calendar.

- In `<MTEntries>`, if a list of entries is already in context (for example, in a date-based archive template), `category` and `author` can now be used to filter that list.

- Added `lastn` attribute to `<MTArchiveList>`.

- All file-management operations are now abstracted out to the MT::FileMgr class.

- Added `public_key` field for author.

- Made the rebuilding entry failed error message more verbose--now it contains the name of the entry on which the rebuild failed. Useful when tracking down problems with entries. (David Gagne)

- Fixed a bug in the XML-RPC code where HTML entities would not be decoded; thought the XML parser was doing this. But it wasn't.

- In the List Notifications screen, the notification records will now be sorted by email address.

- Added `spam_protect` attribute to all tags which can show the user's email address to protect from spambots.

- Added `<$MTVersion$>` tag.

- Added single-quoting where warnings were popping up in Perl 5.004_04.

- Added docs about `%Z` (timezone) date tag format.

- Added an index on entry `modified_on` column.

## 1.4 (2002.01.07)

- New default templates no longer use &lt;label&gt; tag in the `Remember info?` checkbox for the ``remember me'' JS, because it was breaking XHTML validation.

- Fixed Linked File Templates so that, when linking a template to a new file that doesn't yet exist, the permissions will be set correctly (based on umask settings in mt.cfg).

- Added new default templates and made them customizable by stylesheets.

- Added the `Comment Error Template` to specify the layout of the page a user receives when there is an error with his/her comment submission (eg. an invalid or missing email address).

- Usage of `<$MTCommentPreviewState$>` in the `Comment Preview Template` is now deprecated; handling of this tag will not be removed from MT, because existing users are certainly still using it. But it is no longer recommended as the best method for comment previewing (instead see the new default templates for editable comment previews).

- Changed the &lt;title&gt; tags of the default templates so that they are more descriptive by default of the content in the page (and no longer just `MOVABLE TYPE : TEMPLATE`).

- Added `<MTGetVar>` and `<MTSetVar>` for use in passing around values to template modules, etc. (Yaacov Akiba Slama)

- Added troubleshooting docs on fixing ``Moved hosts, can't login'' DB problems.

- Added an editable comment preview form to the Comment Preview default template, using `encode_html="1"` and `convert_breaks="0"`.

- Added `<MTArchiveNext>` and `<MTArchivePrevious>` containers for displaying links to the next and previous date-based archives, respectively.

- Added `encode_js` filter. (Yaacov Akiba Slama)

- Added `zero_pad` and `space_pad` filters.

- Fixed bug where, when posting via bookmarklet, `allow comments` on a new entry would be turned off even if the default is set to true, in the situation where the `allow comments` checkbox is not included on the bookmarklet. (Volker Weber)

- Fixed a bug in mt-check.cgi where the module description (and reason for inclusion) would not be displayed.

- Changed `%l` to `%I` in the default date/time format string, because `%l` is unsupported in some strftime implementations.

- Removed `<a name="comments">` from the default Comment Listing template, as this was causing problems with the form of the same name.

- Added a `convert_breaks` attribute to the `<$MTEntryBody$>`, `<$MTEntryMore$>`, and `<$MTCommentBody$>` tags. This allows you to override the `Convert line and paragraph breaks` on a case-by-case basis, if desired.

- Added `<MTCalendar>` and associated tags for a monthly calendar display of entries.

- Now, if default-templates.pl cannot be found by mt-load.cgi, the actual error message will be given, which can be useful for determining path errors.

- Fixed bug where using `<MTArchiveList>` and `<MTEntries>` within an `Individual archive template` would overwrite the entry object in the stash.

- Added `trim_to` global tag attribute. (morbus)

- You can now use `lastn="N"` in an `<MTEntries>` tag within an `<MTArchiveList>` container to only display the last N entries within a certain archive grouping; for example, to display the last N entries in each category.

- Index templates and template modules are now sorted alphabetically in `List Templates`. (morbus)

- Added `remove_html` global tag attribute. (morbus)

- `dirify` now strips HTML tags (eg. <br>) and entities (eg. &amp;). (morbus)

- In import dates, AM/PM is now optional; if not present the hour will be treated as on a 24-hour clock.

- Fixed bug where setting `words in excerpt` to `0` would not work properly (ie. excerpt would still be generated using 20 words).

- Made upload popup link `onclick` attribute `return false`.

- Added index on comments for created_on column.

- Added <$MTCommentID$> tag.

- Fixed small comment bugs: if URL or email address was completely undefined (not blank, but undefined), this would cause a `Build error`; and the PreviewURL, PreviewAuthor, and PreviewEmail tags were not using the correct Comment context.

- Fixed error message (`importing` => `exporting`) in mt-export.cgi.

- Fixed error message when opening up index template file fails (error message included `tempfile`).

- Now require at least version `0.8` of `File::Spec`, because of the use of `splitpath` (below). Changed mt-check.cgi to reflect this.

- Use `File::Spec->splitpath` to split up path into directories and filename; this should fix a bug on Windows when rebuilding files.

## 1.31 (2001.12.13)

- Fixed nasty bug that occurred when using ``Link this file to a template'' feature, and manifested when rebuilding indexes, causing the rebuild process to hang.

- Fixed discepancies in `Creating a new blog` section in manual.

- Fixed typo in search and replace link to export feature.

- Fixed bug that occurs when two `entry_id` input fields are present (because of list vs. scalar context--now force scalar context).

- Fixed bug where, after uploading a file without an extra path, its URL would contain an extra forward slash (`/`) (same with popup HTML URL).

## 1.3 (2001.12.11)

- Fixed bug where `days="N"` would override `category="Foo"` in `<MTEntries>` tag. (cwodtke)

- Added DBM file locking (shared lock when reading, exclusive when writing).

- Export process now exports excerpts, and import now imports them.

- When you upload a file, if a file by that name (at that location) already exists, you now get a confirmation screen to overwrite the file, or not. (Requires that File::Temp is installed.)

- Added search and replace functionality.

- You can now upload files into specific directories beneath the Local Site Path and Local Archive Path.

- When reading from DB files, `MT::ObjectDriver::DBM` will now open the DBM files in read-only mode, rather than read-write mode.

- Fixed bug where `<$MTInclude$>` of a template module would not propagate conditions down to the template module contents; this meant that conditional statements like `<MTIfEntryIfExtended>` would not work in a template module. Now they do.

- Added Javascript ``Remember me'' to default templates (Individual Archive Template and Comment Listing).

- Added `<$MTBlogHost$>` tag, which prints out the host part of the Site URL config setting. For comment cookies.

- After uploading a file, in addition to being able to create a new entry with a link to the file/embedded image, you can now just view the HTML that would have been used in that new entry. This is useful when uploading multiple files per entry.

- Fixed logout page so username and `Logout` link are no longer displayed in the navigation bar.

- Converting paragraph and line breaks is now set separately for entries and comments. (If you are upgrading, make sure to turn this on for all blogs that you want it on for, because it is a separate setting.)

- Added Archive File Templates, which allows you to specify the output file for a particular archive type, using regular MT template tags, allowing better organization of archive directories.

- Changed XML RSS default template so that title and excerpt are now HTML-encoded to prevent XML errors.

- Introduced four new global tag attributes: `encode_html`, `dirify`, `lower_case`, and `upper_case`.

- In new comment notification email, added a link to the comments on the entry.

- Added `debug` `MailTransfer` setting, which just writes out the mail message to STDERR.

- When emailing comments in mt-comments.cgi, if the user leaving the comment enters an email address, use that for the From: address in the email message.

- Reorganized default config file to provide descriptions of config settings, more instructional text, etc.

- Added `NoTempFiles` config file option to turn off use of temp files when writing output files.

- Added link to `Edit this entry` after posting an entry via the bookmarklet.

- Noted IE bug (`Content-Type` override) that can cause export problems.

- Added the `convert_breaks` attribute to the `<$MTEntryExcerpt$>` tag.

- Excerpt is now created on the fly when sending a notification, if you haven't entered an excerpt for an entry.

- Fixed List & Edit Entries so that unprivileged authors are not allowed to delete entries.

- Added XML-RPC server implementation of the Blogger API.

- Added `<$MTCommentOrderNumber$>` tag.

- In mt-check.cgi, added checks for File::Spec, DB_File, LWP::UserAgent, and SOAP::Lite (the last two are optional installs). Also added instructions on installing each of these modules.

- Automatically-generated `img` tags (after uploading images) now contain `alt` attributes.

- Category pulldown in bookmarklet is now sorted alphabetically.

- After an entry is deleted, prompt the user to rebuild.

- Remove whitespace at the ends of the meta (`AUTHOR`, `TITLE`, etc.) lines in the import file when importing.

- Improved application code that determines paths to reduce reliance on `SCRIPT_NAME` environment variable. (Aaron Straup Cope)

- Added `DBUmask`, `HTMLUmask`, `DirUmask`, and `UploadUmask` settings for the mt.cfg file. These are to be used to adjust permissions set on files and directories created by MT. Removed manual `chmod` calls. (Aaron Straup Cope)

- In mt-comments.cgi, check whether an author has an email address saved in his/her profile; if not, don't try to email new comments (this was causing an error `No Recipients Found`).

- Changed default templates so that the popup comments links do not have `href="#" onclick=...` but are not just `href="javascript:..."`.

- In mt-comments.cgi, when redirecting back to the comments popup window after adding a comment, automatically append a slash at the end of `CGIPath` if no slash is present.

- Fixed `<$MTCommentAuthor$>` and `<$MTCommentAuthorLink$>` so that they return the empty string (not an error) if no author name is given in the comment, and thus will no longer cause rebuild errors.

- Fixed context for `<MTEntryNext>` and `<MTEntryPrevious>` containers so that conditional tags (`<MTEntryIfExtended>`, for example) can be used.

## 1.2 (2001.11.04)

- Fixed bug when system's crypt implementation uses MD5 passwords (MT was not picking up the proper salt). (Monica Reyes)

- Added form-validity checking to mt-comments.cgi for checking email address and URL. (Aaron Straup Cope)

- Set `$CGI::POST_MAX` to 1MB, which means that uploads must be 1MB or less, to prevent denial of service attacks. (Aaron Straup Cope)

- Added mt-export.cgi, which will export all of your MT entries into a format that can be suitably re-imported through the import mechanism. It is also useful for keeping backups of your entries. Functionality is linked from `Import & Export Entries`.

- Fix bug in mt-comments.cgi where redirect after posting to popup comments would break styles (because redirect was using CGI::url(-base => 1), which is a newer feature in CGI.pm).

- Added link to manual (`HELP`) in topnav.

- When images are uploaded, and `Popup Image` is chosen to create a new entry, an HTML file will be created automatically to enclose the uploaded image, if you have defined an `Uploaded Image Popup Template`. New template tags `<$MTImageURL$>`, `<$MTImageWidth$>`, and `<$MTImageHeight$>` added for use in the new template. Added a default `Uploaded Image Popup Template`.

- Added template linking functionality; allows users to manage their templates externally from the MT application, and have them automatically sync-ed into the MT database. Thanks to Ron Pacheco for patches and ideas.

- Can now import comments from Greymatter.

- Can now import to a particular category, either through the CATEGORY key (eg from a system that supports categorization, like NewsPro), or by selecting a default category for all new entries.

- Fixed bug where import would create a new author with the same name as an existing author; if an author already exists, now, entries are assigned to the existing author.

- Can now import extended entries from Greymatter and keep the extended portion separate from the main blog entry.

- Import now handles indentation and leading spaces more robustly.

- Fix bug where MTEntryDate inside MTEntryPrevious and MTEntryNext do not refer to the correct entry. (sunpig)

- Added movabletype.org recently updated ping functionality for donors.

- Added ``Syndicate this site'' link to default index template.

- When deleting objects, check to see if we can load the object successfully before trying to call `remove` on it.

- HTML-encode titles of entries on list & edit entries, so that if an entry title contains HTML (eg. an anchor tag), it doesn't break the display.

- Added <$MTArchiveCount$> tag: number of entries in a specific archive grouping.

- Use timegm_nocheck so that we don't get fatal errors when a date is out of range.

- Changed `use base` to manual setting of @ISA in all libraries to improve compatibility with older perls, where base.pm is not a core install.

- Improved error message when Local Site Path or Local Archive Path is unset when doing a rebuild.

- Auto-check or -uncheck ``allow comments'' in bookmarklet when selecting a blog, based on the configuration for that blog.

- Added `<$MTEntryAuthorEmail$>`, `<$MTEntryAuthorURL$>`, and `<$MTEntryAuthorLink$>` tags.

- Added `file` attribute to the `<MTInclude>` tag, for pulling in an external file.

- Fix JS bug in bookmarklet category selector. (nasty)

- Fixed bugs in MTEntries category=``'' and MTInclude module=``'' where, if you have different categories/modules named the same thing across two different blogs, only the first would ever be loaded. (Brad Choate)

- Added support for weblogs.com XML-RPC ping. Added blog config option to turn off the ping (it is on by default).

- In List & Edit Entries, if an entry does not have a title display the first 22 characters of the entry body, followed by an ellipsis, rather than just displaying [No title].

## 1.1 (2001.10.22)

- Made <$MTDate$> work as a ``system date'', or the current date/time at which the page is being rebuilt.

- Added Pragma: no-cache header to keep Opera from caching pages. (Jay)

- Changed default templates to use iso-8859-1 (Latin 1) encoding instead of utf-8.

- Added Blog Configuration option for the number of words in an auto-generated excerpt.

- Added comment previewing, using the new Comment Preview template. Default templates now ship with comment previewing enabled, and the comments links on the main index automatically link to the popup comments; the individual entry template contains a static version of the comments.

- Deleting an entry will now delete all of the comments associated with that entry.

- Made bookmarklet windows customizable by selecting whether users want to include category, excerpt, etc.

- Ran all scripts with taint mode on (-T), and fixed all warnings and errors. Thanks to dchase for the patches.

- Added Nickname field to author record, along with new MTEntryAuthorNickname tag to display it. This allows having a different name for display than for login.

- Fixed file corruption bug when uploading files on Win32 machines; needed to use binmode. (sunpig)

- Support for custom, user-created template modules, which can be included using the new `MTInclude` tag. (Christina Wodtke and many others)

- Modified CGI scripts to get their full path from $0, and use that plus lib and extlib and the @INC directories, along with specifying the full path to mt.cfg. This should improve out-of-box compatibility with IIS.

- Fixed bug where MTArchiveList above MTEntries on an archive template would cause the MTEntries to display just the most recent list of entries. (notfully)

- When logging out, we set a cookie with an expiration date in the past; increased the amount of time in ``the past'' from 1 day to 1 year. (Laura)

- Added MTDateFooter container tag. (silvercube)

- Fixed bug with MTDateHeader not being output when posts from the same day but different months were one after the other (eg. a post from November 11, then a post from October 11). (hellgren)

- Moved default templates into lib/MT/default-templates.pl, so that they can be loaded by multiple scripts/libraries. Changed mt-load.cgi to read templates from here, and also changed blog creation to install default templates in every new blog.

- Added support for sending mail through SMTP, using Mail::Sendmail; broke out mail-sending stuff into MT::Mail. (Bill Turner)

- Fixed bookmarklet bug where trying to bookmarklet a page with ampersands ('&') in the URL would chop off everything after the ampersand. (nasty)

- Fixed MT::App::redirect so that it redirects to a full URL (including the host name and protocol), which fixes a problem on IIS. Also fixed redirects in mt-comments.cgi. (Matt Haughey)

- Added 'title' attributes to all icons in left mininav, and now set window.status with appropriate tips for each icon.

- Fix bug with stashed entries staying around after building archive lists. The symptom is that the `lastn="N"` attribute was not working properly. (Philip Winn)

- Documentation fixes (typos, etc.). (Cory Preus)

- Fixed Edit Categories screen when category labels have quotes in them; this was causing the labels to show up blank; they needed to be HTML-encoded. (Jenn Redwolf)

- Fixed ``attempt to use unitialized value as ARRAY reference'' error when sending a notification without setting up any notification addresses. (Christina Wodtke)

- Clarified that you must remove indentation from Blogger/Greymatter/NewsPro export templates when pasting.

- Added appropriate context for MTArchiveDate tag outside of MTEntries context, on Date-Based Archive Template; added context for MTArchiveCategory tag outside of MTEntries context, on Category Archive Template. (Christina Wodtke)

- Fixed TMPL_INCLUDEs on WinNT by giving HTML::Template the path to the tmpl/cms directory. (Bill Turner, Axel Kollmorgen)

## 1.00 (2001.10.08)

- First public release.

- Improved diagnostics for some default-template-related, rebuild-related error messages. (Christina Wodtke)

- Added ``Creating a new blog'' instructions to manual, and link to this section of the manual when creating a new blog. (Christina Wodtke)

- Added MTEntryPrevious and MTEntryNext containers to refer to the previous and next entries, respectively. These tags should work in any entry context. (Christina Wodtke)

- Tried to make install doc a little clearer by moving some Unix-specific stuff down into ADDITIONAL NOTES.

- Added (?) help prompts that point to relevant sections of the manual; added some blog configuration option docs to the manual.

- Improved layout of notification messages.

## 0.10 (2001.10.06)

- Added the `<$MTCGIPath>` tag and the CGIPath config file setting for easy linking to your MT CGI scripts.

- Added a config setting for setting the default value of the ``Status'' field on the create an entry page; so you can set it to Release if you always want it set to Release by default. (Christina Wodtke)

- Added an ``allow anonymous comments?'' config option; if set, no checking is done to determine if the visitor making the comment has provided an email address and author name. If unset, both author name and email address are required. (Christina Wodtke)

- In the edit entry screen, if a comment author has not provided a name, there was no way to get to the editing screen for that comment; so now, [No author] is displayed if there is no author name.

- Added an `archive_type` attribute to the `MTEntryLink` tag; this allows you to create a link to an entry's archive page other than the preferred archive type. The default behavior is still to link to the archive page for the preferred archive type. (Christina Wodtke)

- Transform carriage returns into <br> tags when `Convert Paragraph and Line Breaks` is on. (Adam Wood)

## 0.09 (2001.10.06)

- Improved look and functionality of default templates; also added default templates for all archive types.

- Set more default options when creating a new blog or editing 'First Blog'.

- Added instructions for exporting NewsPro entries into the correct format; thanks to Jeremy W for sending along the instructions, which are now in the manual.

- Added author attribute to MTEntries tag, so you can grab all of the posts by a particular author (can also be combined with category and lastn). (Jeremy W)

- In comment notifications, the text between the brackets is now the name of the blog, not `Movable Type`.

- Added alt tags to the images in the mininav. (Matt Haughey)

- Fixed a bug in mt-comments.cgi that made it select the wrong comments listing template (ie. one from a different blog).

- Added a Status pulldown to the bookmarklet popup so that authors can post HOLD items (rather than having everything RELEASE), if they wish.

- Fixed a bug in tag argument parsing with a string like foo=``bar's baz''; the single quote would end the double quote, which would lead to `foo` having a value of `bar` (and not `bar's baz` like it should).

- Fixed allow_comments_default setting of allow comments box on new entries. (Christina Wodtke)

- Alphabetize category list in edit categories, and in pulldown menu on edit entry/create new entry screen. (Adam Gerstein)

- Sort comments in edit-editing screen by created on date, in descending order.

- Fixed a bug in mt-load.cgi. Also, added IMPORTANT INSTRUCTIONS to mt-load.cgi to delete it after running it the first time. Failure to delete it is a security risk, because someone else could then run it (conceivably).

- Added index.html to the distribution, which is just a simple 404 page, which prevents people from doing the directory listing.

- Added error checking to mt-add-notify.cgi.

## 0.08 (2001.10.03)

- Added mininav to left side of all system pages (once you have selected a blog to edit, that is). Items in nav are dependent upon permissions, of course. (Josh Buchanan)

- Added activity log; currently it records logins, logouts, unsuccessful authentications/password recoveries, etc. because that seems most useful from a system maintenance perspective.

- Added ability to rebuild just a single set of pages from a particular archive type, eg. all Weekly archives. Also, split up ``Rebuild all files'' so that it rebuilds in steps: Individual => Daily => Weekly, etc. This should lessen the load of any one rebuild.

- Fixed bug with weekday names (%A date format template) not displaying properly on some systems. (Jeremy W)

- Fixed bug with MTArchiveList when a Preferred Archive Type has not been set. (Jeremy W)

- Fixed MTEntries so that you can specify both lastn and category, and it will display the last N entries in that category. (Daniel Talsky, Jeremy W)

- Some changes to widths of textareas in bookmarklet and edit/create entry screens, and to width of pulldown menu for category.

- Changed look of ``Your existing blogs'' items: upper-case blog name, add bullet. (Matt Haughey)

## 0.07 (2001.10.02)

- Added uniqueness validation on author name; you can no longer create two authors with the same name, nor change your author name in your profile to the name of another author.

- Rebuild popup now lets you rebuild just your indexes (index templates), if desired.

- Added a View Site link to the ``rebuilt'' page, so you can view the site right after rebuilding.

- Made all REBUILD links in status messages a link to the rebuild popup window, but only if the user has rebuild permissions.

- mt-comments.cgi now rebuilds all entry archives after adding a new comment, even when using popup window comments.

- Changed format of weekly archive page names so as not to clash with daily archive pages; weekly archive pages are now called week_YYYY_MM_DD.html (they used to be just YYYY_MM_DD.html).

- Changed format of category archive page names so as not to just use category IDs; new format is lower-case munged version of category name (remove all non-alphanumeric characters, change spaces to underscores, and consecutive underscores to one single underscore). For example: `Fun & Games` gets translated to `fun_games.html`.

- Improved error messages when using a template tag out of context; for example, using a MTEntryTitle tag outside of an MTEntries container on an index/date-based/category template (it is legal on an individual entry template, because the entire template is in entry context). (Sara Flemming)

- Added a `No archives` option to the Preferred Archive Type pulldown on the `Edit blog configuration` screen; the lack of such an option, combined with the Javascript validation, made it effectively possible to disable archiving for a blog.

## 0.06 (2001.10.01)

- Fixed the built-in RSS template so that it validates with RSS version 0.91.

- Fixed bug with previewing entry introduced by convert paragraph breaks option and code. (Adam Gerstein, Sara Flemming, Matt Haughey, Jeremy W)

- Check that version of installed HTML::Template is greater than 2, because we need certain features that were only added later on. (TW Walsh)

- Actually include mt-import.cgi in the distribution this time. (Caroline van Oosten de Boer)

- Fixed a bug where the conditional settings for MTEntryIfAllowComments and MTEntryIfExtended tags would not be picked up properly on Individual Archive Templates.

- Need to HTML-encode all ampersands before displaying in editing boxes; this prevents the browser from turning &nbsp; in a textarea into an actual non-breaking space, for example.

- In the `Blog editing menu`, fixed the `Edit blog configuration` icon link; it was different than the text link, and it was incorrect, and caused an error saying ``No permissions''. (Adam Gerstein)

## 0.05 (2001.09.30)

- Added mt-import.cgi, which imports blog entries from either Blogger or Greymatter (or, for that matter, any system that can get the entries into the right format) into Movable Type. Also added an import interface through the main Movable Type interface, and docs for importing to the manual.

- Fixed bug with MTDateHeader contents actually appearing before the start of the <MTEntries> contents, each time through the loop. (Daniel Talsky)

- Added a ``Convert paragraph breaks'' option to specify whether paragraphs should be enclosed within <p> and </p> tags. (Matt Haughey)

- Added some Troubleshooting docs to the manual, as well as information about setting up the db directory outside of the webroot.

- After saving a template, users will ``rebuild files'' permissions will now be able to rebuild files from the ``template saved'' message. (Matt Haughey)

## 0.04 (2001.09.27)

- Changed internal timestamp format so that timezone offsets are not recalculated on every rebuild. Changed from epoch time (seconds since 1970) to `YYYYMMDDHHMMSS`.

- Added uneditable name of template to top of editing page for non-index templates; this limits possible confusion over which template you are actually editing. (Steven Jarvis)

- Made `MTCommentAuthorLink` web links open in new window. (Steven Jarvis)

- Bookmarklet Javascript now works in IE 5.5 (needed to use document.selection in that browser). (Caroline van Oosten de Boer)

- Added `created_by` column to author object, in preparation for allowing author deletion, but only of authors that you have created.

## 0.03 (2001.09.26)

- Added Bookmarklet posting functionality, with a link to setup on the main project administration menu.

- In List Entries, if a post does not have a title display [No title] instead as a link.

- Changed login cookie path from / to /path/to/mt/. For example, if you installed MT at /my/mt/mt.cgi, the path for the cookie would now be /my/mt/.

- MT::Util::send_mt_mail now checks for more default locations of sendmail, instead of giving up, until it finds one that works. It now checks /usr/lib/sendmail, /usr/sbin/sendmail, and /usr/ucblib/sendmail (list taken from Mail::Mailer). (Steven Jarvis)

- Added Javascript form validation for the edit blog configuration/create new blog form.

- Added MTCommentAuthorLink tag, which links the comment author name using a succession of rules: looks first for URL, then for email address, then just displays the name without a link. (Steven Jarvis)

- Deprecated MTCommentName in favor of MTCommentAuthor; removed the former from the documentation, although it still works (and likely always will).

- Made uploading files compatible with versions of CGI.pm without CGI::upload method (versions prior to 2.47). Run CGI::upload in an eval, check for errors, and use CGI::param if we get errors. (Steven Jarvis)

- Added a password recovery feature, linked from the login page. Also added a birthplace setting to the ``edit profile'' page; this must be filled out in order for an author to recover his/her password.

- Added a config setting StaticWebPath to the mt.cfg config file. This allows you to host the MT images and stylesheets in a directory different than where you host your MT installation (CGI scripts, etc.). This is necessary on some servers, where you have to install MT into your cgi-bin, which doesn't accept non-CGI scripts in that directory. (Taegan D. Goddard)

- Fixed display bug in blog editing menu where VIEW SITE would have space up above it, when a user does not have full permissions.

- Don't include ``Send a notification'' section when editing an entry if the user does not have notification-sending permissions.

## 0.02 (2001.09.25)

- Added FTP URLs to installation instructions. (Daniel Talsky)

- Fix some warnings. (Caroline van Oosten de Boer)

- Fix bug with spaces at the ends of lines in mt.cfg file. (Caroline van Oosten de Boer)

- Fix bug with saving new entry--author was not being set for the new post. (Matt Haughey)

- Fix bug with profile link in header linking to the wrong profile on the entry-editing page for an entry by another author.

- Fix bug where creating a new author would switch your login credentials to those of the new author (ie. you would then be logged in as the new author, no longer as yourself). (Matt Haughey)

- Added <$MTArchiveTitle$> tag.

- Fix bug where uploading a file with backslashes in the path (eg. from Windows) would not get the path cut off properly. (Caroline van Oosten de Boer)

- Changed Image-Size installation method, because the old method was not resulting in a working installation, due to the module using AutoLoader to split up the routines. (Caroline van Oosten de Boer)

- Updated installation doc to reflect new Image-Size installation method, along with incorporating instructions for performing some steps in a Unix shell, among other things. (Matt Haughey, Steven Jarvis)

- Fixed mt-comments.cgi so that it supports adding comments when the comment system is using inline/static comments (as opposed to comment popup windows). The archive pages for the entry, along with the index pages, are now rebuilt after a comment is added, and the user is redirected back to the individual entry archive page. (Caroline var Oosten de Boer)

- Added <$MTEntryCommentCount$> tag: number of comments on a particular entry.

- On Edit Blog Configuration screen, moved File Extension for archive files down into ``Archive Configuration'' section. (Steven Jarvis)

- In the Movable Type admin UI, the Movable Type logo now returns you to the Project Administration area, rather than the movabletype.org site.

- In List Entries, when author does not have ``edit all posts'' privilege, but selects to view posts by another author, entry title is no longer a link.

## 0.01 (2001.09.23)

- Initial beta release

Copyright © 2001-2003 Six Apart. All Rights Reserved.