# Changelog

Only public releases are listed here.

## 1.9.2 "Kyoto" (Stable)

- Bug fixes
- Enhanced security
- Moved some advanced plugins to plugins.b2evolution.net

## 1.9.1-beta "Chris"

- Enhanced security
- Minor bug fixes

## 1.9-beta "Casino Royale"

- Enhanced stats (fplanque)
- Different item edit views: simple, advanced (blueyed, fplanque)
- Fixed previewing, if $redirect_to_postblog setting is used (blueyed)
- Cleaned up blog management (fplanque)
- Stay in same blog when accessing blog settings (fplanque)
- Visual skin selector (fplanque)
- Filemanager: basic image preview while browsing (blueyed)
- Post contents get pre-rendered and cached at edit time in order to speed up complex displays. The cache data gets invalidated automatically, e.g. if a plugin gets updated. However, just in case, there's a "Delete item cache" action in the "Tools".
- Ping services are now implemented as plugins with b2evolution.net and Pingomatic included. There is also a "Generic ping plugin" which can be used for common RPC ping services. (blueyed)
- Different modes of hitlog/session pruning: per page, as cron job or "off" (fplanque, blueyed)
- Bonus template for standalone contact form. (fplanque)
- Enhanced result tables (progidistri, fplanque, blueyed)
- Enhanced handling of locale dateformats (especially when editing posts with other date format chars than "d", "m" and "Y"/"y") (blueyed)
- mailto:-links and relative links are valid again are get converted to absolute ones in feeds (blueyed)
- Added $htsrv_url_sensitive config variable which gets used where password are involved (blueyed)
- "Time difference" can now handle values like "1.5" hours. (blueyed, balupton)
- Plugins
  - Enhanced smilies plugin (Yabba)
  - Plugins can get localized/translated (blueyed)
  - Plugin name and short description of installed plugins can be edited by the admin (blueyed)
  - Plugins should not use a constructor anymore, but the PluginInit() method instead. The previous AppendPluginRegister() method has been "renamed" to PluginInit(). (blueyed)
  - Plugins can be grouped (see Plugin::group and Plugin::sub_group) (balupton, blueyed)
  - Added b2evo_Callbacks Javascript object to help plugins interact with the textarea and each other (blueyed)
  - Optimized expensive queries in calendar plugin (fplanque)
  - Added events/hooks: Logout, DisplayTrackbackAddr, GetCronJobs, ExecCronJob
  - Added hook RenderItemAsText, removed general RenderItem
  - Added hooks DisplayItemAsHtml, DisplayItemAsXml and DisplayItemAsText; removed general DisplayItemAllFormats (blueyed)
  - Added hook ItemApplyAsRenderer for lazy renderers, which asks the Plugin if it wants to get added or removed as a renderer (blueyed)
  - Added hooks GetProvidedSkins and DisplaySkin, so a Plugin can register skin handlers, e.g. for displaying something like Google Sitemaps (blueyed)
  - Added hook ItemSendPing: gets called, when pinging for new items (blueyed)
- Developer stuff:
  - Enhanced form abortion detection javascript (fplanque)
  - Application errors (from debug_die()) now get logged like normal PHP errors. See $log_app_errors in /conf/_advanced.php. Experimental. (blueyed)
  - Charset handling improved; added $force_io_charset_if_accepted setting (blueyed)
  - Cleaned up skins (fplanque)
  - Optimized performance of (Abstract)Settings, especially get() (blueyed)
  - Debuglog gets saved in user's session, to simplify debugging when redirects get used, e.g. when a comment gets posted (blueyed, yabba)

## 1.8.7 "Tokyo" (Stable release)

- Enhanced security.

## 1.8.6 "Anne" (Stable release)

- Fixed displaying yearly archives (fplanque)
- Enhanced Security

## 1.8.5 "Oktoberfest" (Stable release)

- Fixed file upload restriction on allowed filetypes (blueyed)
- ldap_plugin: Fixed fatal error when setting group for new user (blueyed)
- Fixed fatal error in next_posts_link() if used on a non-item page, e.g. msgform (blueyed)
- Do not override $db_config['connection_charset'], if set (blueyed)
- Fixed possible fatal error during install (while collecting col_info for CREATE and DROP queries) (blueyed)
- Fixed Javascript in blog permission editing tab (blueyed)
- Fixed Movable Type import tool (blueyed)
- Fixed upgrade from b2/cafelog (blueyed)
- Plugin API: Added "app_min" dependency; Deprecated "api_min" dependency (blueyed)
- Many more minor fixes (blueyed)

## 1.8.2 "Serenity" (Stable release)

- Avoid generating ambiguous passwords (blueyed, fplanque)
- Auto-P plugin fixes (blueyed)
- Removed dependency on PHP tokenizer extension (blueyed)
- Fixed feedback submission in basic and wpc_default skins (blueyed)
- next_post() and previous_post() template functions allow limiting to current blog and do that by default now (blueyed)
- Minor bug fixes
- Japanese localization (jmuto)

## 1.8.1 "Milestone" (Release Candidate)

- Members of the admin user group (not just user #1) can easily validate their account with 1 click (blueyed)
- More improvements to account validation through email (blueyed)
- Fixed static page generation (fplanque)
- Fixed feed stubs, especially for blogs that allow skin switching
- Fixed "Ban" URLs on the stats pages
- Fixed output for windows-1251/cp1251 (cyrillic) charset (blueyed)
- Reintroduced the previous ru-RU locale next to the new ru-RU-cp1251
- Fixed display by date mode (fplanque)
- Fixed next/previous post links
- Moved credits to the real bottom of the skins
- Plugins enhancements:
  - API: Added Plugin::get_plugin_url() method
  - Added events: AfterUserInsert, AfterUserUpdate, AfterUserDelete
  - Fixed the Auto-P plugin again (blueyed)
  - LDAP plugin: Fixed creating new usergroups based on template group (blueyed)

## 1.8 "Summer Beta"

- Validation of email address to activate user's account on registration (enabled by default) (blueyed)
- Users and anonymous visitors can opt-out from receiving emails through message form (blueyed)
- Extended plugin architecture: (blueyed)
  - Event-driven instantiation of Plugins
  - Interface for Settings and UserSettings
  - Easy setup for a database schema a plugin wants
- Antispam:
  - Basic guestbook spambot defeating techniques -- basic spambots account for over 90% of the comment spam!! (fplanque)
  - Comment moderation (enabled for each blog by default) (fplanque)
  - Broadened keyword matching (fplanque)
  - Publish/Delete comments based on spam karma threshold, reported by plugins (blueyed)
  - "Basic Antispam Plugin":
    - Double-checking referers moved there (blueyed)
    - Option to check content in trackbacks about link to your blog; enabled by default (blueyed)
    - rel="nofollow" is now optional and used for 48 hours by default (blueyed)
    - Option to disable feedback from anonymous visitors (blueyed)
  - DNS Blacklist antispam plugin (blueyed)
  - Blocking requests where the referer has been detected as spam is now optional. Also it does not block requests to the backoffice any longer. (blueyed)
- Usability:
  - "Exit to blogs..." link respects selected blog (blueyed)
  - Preview for comments in frontoffice (blueyed)
- ItemList2 class which will replace ItemList. Better performance, security, stability and new features:
  - Filtering of posts on assignees with assgn=1 or assgn=1,2 or assgn=-1,2 or assgn=-
  - Filtering of posts on extra statuses with status=1 or status=1,2 or status=-1,2 or status=-
- Scheduled tasks (cron) framework (fplanque)
  - Automatic retrieval of antispam blacklist (fplanque)
- db_delta() functionality that allows easier upgrading (blueyed)
- MySQL 5 strict mode compatibility (blueyed)
- Fixed/Rewritten Auto-P plugin (blueyed)
- ETag-header- and GZip-compression-support moved into transport optimizer plugin (blueyed)
- Removed no longer supported Geeklog and Miniblog upgraders. (It is still possible to upgrade from those by upgrading to b2evo 0.9 and then to b2evo 1.x
- Added /conf/_basic_config.php which holds just the basic settings (as _config.php before, but without the including the other files). You should merge your settings from _config.php to _basic_config.php.
- Many many many bug fixes...

## 1.6 "Phoenix Alpha"

The main focus of this new version was to remove the b2 legacy code from the evoCore framework in order to move to a more stable, reliable and scalable architecture (with Objects and all the rest...). This was mostly behind the scenes work without immediate features to show off for gratification. However, the new evoCore now allows to add functionnality more quickly and more efficiently.

Anyway, there are already quite a few new features available:

- File manager (blueyed)
- Multiple domain support (blueyed, fplanque) (TODO: (cookie/admin) Debugging!)
- Mailing lists: Subscriptions for new posts and/or new comments (fplanque)
- Who's online? (jeffbearer, blueyed, fplanque)
- Email form to contact authors without revealing their email address (jeffbearer, blueyed, fplanque)
- Paged display in antispam (fplanque)
- Improved hit logging (bluyed, fplanque)
- Stats enhanced with Flash charts (fplanque)
- Added options to allow a blog stylesheet or a user stylesheet to override the skin stylesheet. (edgester) (TODO: Only the "custom" skin works with the options at the moment. Other skins must be modified.)
- Lost password: sends a link to allow password changing instead of generating a new password right away (blueyed)
- New setting in the blog's advanced tab for choosing the comment's policy on a per blog basis. You can now choose if you want to allow comments on a blog, if you want to be able to disable them on each post, or if you don't want any comments at all (gorgeb)
- Added Global Features section to admin settings (halton)
  - Online help: started implementation (halton) (TODO: online help server, relocate function)
  - Blog by email: moved settings from config file, started alternate implementation (halton)
- Post editing extensions:
  - Alternative backoffice layout(s). A skin can be chosen in the backoffice user profile. (fplanque, blueyed)
  - "Deprecate now" function (fplanque)
- Post browsing extensions:
  - Complete contextual browsing: you can combine several filters: author, month, category, etc (fplanque)
  - Browse by author (fplanque)
  - Calendar: Links to next/prev month/year are only provided if there are posts in that direction (blueyed)
  - Calendar: Fixed contextual accuracy (fplanque)
  - Fixed ability to select multiple authors at once (via URL params) (fplanque)
  - Added ability to combine categories in search (fplanque)
  - New URL parameter 'dstart' allows to start browsing at specified date (same fprmat as 'm'). useful with unit = 'days'.
  - New URL parameter 'unit' allows overriding of configuration to select what to display: 'posts' or 'days' (fplanque)
  - Slightly enhanced week handling (weeks start on sunday or monday depending on user locale) (requires MySQL >= 4) (fplanque)
- Post extensions (fplanque)
  - Extra status
  - Post type
  - Popup calendar for dates
  - Assigned to
  - Priority
  - Deadline
  - Counting number of views for each item (template tag $Item->views()) (jeffbearer, blueyed, fplanque)
- Permissions:
  - Group based blog permissions (halton)
  - Extended group permissions (fplanque)
  - Blog permissions presets; Member, Editor, Admin (blueyed, fplanque)
- Packaged plugins:
  - Wacko markup plugin (fplanque)
  - WikiLinks plugin (fplanque)
  - LDAP authentification plugin (blueyed)
  - Some previously built-in features have been moved to plugins (fplanque)
- Code:
  - Day at the start of the week moved to properties of the locales (blueyed)
  - Subpaths now include trailing slashes (that was another odd b2 legacy...) (blueyed, fplanque)
  - User profile validity checking (fplanque, blueyed)
  - AdminUI object that allows easy skinning of the backoffice (blueyed, fplanque)
  - Enhanced debugging (blueyed)
  - Unit tests in /tests, using simpletest framework (blueyed)
- Fixes:
  - Fixed Mozilla/Firefox's scrolling to the top of the textarea when clicking on toolbar buttons
  - Atom 1.0 compatibility
  - And many more.. (yabba...)

## 0.9.1 "Dawn"

- Scalability: Speed improvements, especially on loaded systems.
- Referer spam gets detected early and triggers an error message in order to save resources on the server.
- Antispam: complete comment text will be searched for blacklisted keywords.
- Antispam: HTML entities can now be used in keywords.
- Extended browsing capabilities (fplanque)
- Trackbacks & Pingbacks will be shown on the "last comments" page
- Restricted URL input into feedback to defeat comment spam
- Use of rel="nofollow" for feedback author URLs to defeat comment spam
- Removed public statistics in order not to attract referer spam.
- The antispam blacklist is not displayed by default anylonger if it gets longer than 100 entries (and it will indeed get much longer than that...)
- Wacko markup plugin (fplanque)
- WikiLinks plugin (fplanque)

## 0.9.0.12 "Amsterdam"

- New locales
- New skin ("natural pink")
- Security fixes
- Minor bug fixes

## 0.9.0.11 "Paris"

- New locales (fi-FI,en-NZ)
- Updated locales (it-IT, zh-TW,ja-JP...)
- Antispam blacklist checking: (fplanque)
  - has been made case insensitive
  - when cleaning up, comment text will also be searched in addition to the comment url
  - spam filter preview lists display the IP address of the spammer
- Fixed and enhanced weekly archives. They now display the post count and the week number. (fplanque)
- Auto pruning of stats after a given # of days ($stats_autoprune) (fplanque)
- Changed display order in stat summary
- Updated $blacklList and $search_engines
- Minor bug fixes

## 0.9.0.10 "Copenhagen"

- Fixed broken upgrade in "Madrid"
- Updated locales
- Allow moving of categories between blogs ( conf/_admin : $allow_moving_chapters = true; )
- Allow moving of posts between blogs ( conf/_admin : $allow_cross_posting = 3; )
- Allow redirecting to main blog if post is permalinked through wrong blog ( conf/_advanced : $redirect_to_postblog = true; )

## 0.9.0.9 "Madrid"

- Updated locales (Lucas, Walter, Mago, Jun and the others... ;)
- New default style for the backoffice (fplanque)
- Style switcher for the back-office (fplanque). You can add your own style into /blogs/admin, simply by naming it custom.css . The style switcher will recognize it automatically.
- Extended IIS compatibility (isaac, blueyed, fplanque)
- Weekly archives offset fixed
- Minor bug fixes
- Additional code documentation (fplanque)
- Movable Type import script improved
- Smiley toolbar is disabled by default (to enable it, open /plugins/toolbars/_smilies.toolbar.php and change `var $display = false;` to `var $display = true;`)

## 0.9.0.8 "Oslo"

- Upgrade procedure will fix /' and /" in older comments (fplanque)
- "(un)check all" button on permissions page (blueyed)
- New template tags for "edit post" and "edit comment" (fplanque, kiesow)
- New XHTML checker definition with extended support of XHTML 1.0 tags. Transitional by default. Strict definition provided but commented out (fplanque)
- Full compatibility with w.bloggar (fplanque)
- bugfixes... (fplanque, blueyed)
- security fixes (fplanque)

## 0.9.0.5 "Berlin"

- A load of little bug fixes (blueyed, fplanque)
- Movable Type Import (blueyed)
- Geeklog Import (jeffbearer)
- Upgrade procedure will fix /' and /" in older posts (fplanque)
- pt-BR localization is back and enhanced (walter)
- Added switch for easy disabling of category selection checkboxes in _categories.php (fplanque)
- Added more customizations options to the Calendar (fplanque)
- WordPress CSS compatible skins [wpc_*]

## 0.9.0 "Europe"

- Install and start using b2evo without editing a single config file (fplanque)
- Localized install screens (blueyed)
- Most settings moved to backoffice
- Improved antispam with full control on what you report to the centralized blacklist (fplanque)
- RSS & Atom Feeds for Comments (fplanque)
- Comment authors are automatically identified with their profile if they are logged in (fplanque)
- Comment permalinks (fplanque)
- New template tags (object oriented) (this is the visible part of the code cleaning iceberg ;) (fplanque)
- Enhanced Calendar (counts posts, links to archive of month, browse by year...) (blueyed)
- More link type options (fplanque)
- Search Engine Friendly Permalinks: use post title in the url (URL titles) (fplanque)
- Community blogs: protected posts are now restricted to blog members and are no longer visible by any logged in user. (fplanque)
- Optional output buffer handling, which provides ETags-support and handles gzip compression. (blueyed)
- Plug-in system, with value added plugins included: (fplanque)
  - Texturize plugin.
  - Auto-P plugin.
  - Textile 2.0 plugin.
- Comments can be closed / open / disabled (post per post). (fplanque)
- Full locale support instead of lightweight language support.
- Locales can be fully administered in the backoffice now. (blueyed)
- b2evo will redirect to correct blog if permalinks point to wrong one (fplanque)
- Blogrolls have been renamed to Linkblogs which should be a little easier to understand.
- Backoffice improvements.

## 0.8.9

- new Basic skin with NO CSS for beginners (forgot to mention that before ;)
- Private blogs: assign individual user rights for each blog
- User groups / Roles based security
- Comments can be set open or closed on a post by post basis
- Several conf options moved from the _conf files to the backoffice.
- More blog dependant settings
- Users can choose if they want to receive notifications or not for new comments/trackbacks/etc on their posts
- The HTML checker now allows tables in posts by default
- Made RSS 2 valid. Added icon to feedvalidator.org.
- Atom 0.3 support.
- Quicktags made compatible with mozilla (ron)
- Automatic loading of /conf/hacks.php if this file exists

## 0.8.7

- Dynamic Anti-Spam table, with one-click referer bans
- Antispam deluxe: search referrer logs and comments for newly identified spammers (funky M)
- Centralized blacklist management: share spam list with all b2evo users. (funky M)
- Pruning of old stats
- Moblogging support
- Quick publishing button for drafts
- Backoffice relooked
- Fixed category editing (changing parent)
- Ping to Technorati
- Minor bug fixes

## 0.8.6.2

- Spell checker doesn't require PERL any more (moved to PHP)
- Fixed lost password retrieval
- Added quicktag button for <!--nextpage-->
- Better trackback
- Better pingback
- Default skin checking (too many people set it up improperly).
- Minor bug fixes (but a lot of them! :P)

## 0.8.6.1

- Fixed displaying/hiding private/protected posts
- Fixed display of blogroll categories
- Fixed XML special chars handling in pings
- Fixed spellchecker
- We now display an error message in case of a skin misconfiguration so that bloggers realize new readers cannot access their blog!
- New comment notices now include an edit/delete link for fast spam handling
- Enhanced paged display in back-office
- Display and translation fixes

## 0.8.6 (Final release)

- Minor bug fixes

## 0.8.5.5-Release Candidate

- Bug fixes
- Login screens cleaned up

## 0.8.5.3-beta

- Passwords are now stored encrypted in the database (by Swirlee)
- Security pacthes (by Sakichan)
- Heavy code refactoring.
- New template functions: user_login_link(), user_register_link(), user_logout_link(), user_admin_link(), user_profile_link()
- New login/registering system.
- You can login directly on whichever function page you want. b2edit.php, b2browse.php, b2stats.php, etc... pick the backoffice homepage you prefer.
- New post statuses: protected, private and deprecated
- Complete b2evo bookmarklet and sidebar
- You can now switch to another blog in the middle of a post and preserve all your current edits (uses javascript)
- Comment spam prevention (vig-rx syndrome): blocks comments and posts containing blacklisted URLs (if you have had vig-rx posting on your blog, you know why you need this ;) This also applies to referrer spam.
- Smilies are now displayed in their correct chosen order. They are not displayed when they are deactivated.
- $allow_cross_posting = 0 will disable cross posting among multiple categories.
- Stats summary.
- Fully configurable directory structure.

## 0.8.3-beta1

- Blog list moved to a standalone skin module + it is disabled by default in the conf. Too many people seem to be confused about having this on their blog template. Enabling is a easy as setting $display_blog_list = 1; at any time (main switch in b2evo_conf.php).
- Code refactoring
- New front page for 'my blogs' explaining a little more what's going on there ;)
- Cross posting among multiple blogs has been disabled by default. Again too many people seem to be confused about this. Enabling is as easy as setting $allow_cross_posting = 2; in b2evo_conf.php.
- Fixed filtering by author
- wordcount support (by Swirlee)
- Full localization even without gettext!

## 0.8.3-alpha1

- Cookie fix when using b2evo on a special port number
- Fixed many PHP notices
- Gettext internationalization
- xml:lang and lang attribute handling
- charset handling
- Better XHTML compliance (moving towards Strict)
- XML-RPC Blogger API now supports draft publishing
- Checking PHP version on install
- Better UTF-8 support

## 0.8.2 (Final release)

- Security fixes
- Fixed pingbacks in b2mail.php
- Fixed taborder in b2edit.php

## 0.8.2-RC3

- Fixed user reported bugs
- Tootips + shortcut keys on tag buttons
- Fixed timezone handling

## 0.8.2-RC2

- Categories ordered by name
- Fixed time difference for new post dates
- Fixed bug preventing from editing comment dates

## 0.8.2-RC1

- Ability to link each post to an URL
- Dynamic blogroll (the blogroll is just another blog on the system)
- Supports multiple blogs per page
- Supporting special blog #1 aggregating all blogs on the system
- Sending email notifications with significant 'from' address
- Checking if comment authors' email addresses are valid
- Fixed calendar some more (hum... legacy...)
- Clean links for monthly/weekly/daily/post-by-post archives, including from calendar. (e-g: /blog/2003/06/ )
- Archives show number of posts per month or day
- Ability to limit number of archive links displayed
- Ability to display full archive directory in main display area
- Categories show number of posts per cat
- Not accepting HTML tags in comments by default for security reasons.
- single_month_title(-) now displays day of month or week number when available
- Search can now be done on all words (AND), some words (OR) or whole sentence ("")
- Displayed stats on blogs are filtered by the current blog
- Slightly enhanced backoffice stats view, including ability to delete spam hits from stats
- New & improved edit screen
- Support for textile
- New preview
- Better post browsing in backoffice
- In back-office: ability to display past or future posts only
- In back-office: ability to display draft or published posts only
- Supports using blogs as upcomming events calendars
- Ability to limit viewable posts between two datestamps.
- evoSkins now include a skininfo.html file for your information.
- Automatically set wanted permissions and owner on newly created stub files
- plain text urls, email, aim and icq addresses will be automatically converted to links, whereever they are displayed
- Integrated XHTML validator (by Sakichan)
- Filtering of illegal tags
- cleaned up RSS feeds, better compliance to RSS 2 spec
- Using GM times in RSS feeds (it's the only ones Syndirella can handle)
- fixed bug with /archives/ page
- Better cookie management. Cookies will be shared between www.yoursite.com and yoursite.com. However, if there are multiple b2evolution installs on the same site those will not share cookies (this is especially important if /~username/ subdirectories are used...)
- Support for non permanent cookies
- Some more code cleanup
- Some more security fixes

## 0.8.0 (Final release)

- Fixed calendar
- Cosmetic changes

## 0.8.0-RC3

- Fixed relative path includes
- Fixed file upload
- Cosmetic and skin changes, new skin: 'guadeloupe'.

## 0.8.0-RC2

- Fixed bookmarklet
- Fixed sidebar

## 0.8.0-RC1

- Fixed skin switcher when PHP register globals is ON. (Don't forget to delete the skin cookie if you have been using previous versions)
- Support for b2 old-style blog templates