Public release changelog

# 4.x series

Skins and plugins from v2 & v3 are compatible with v4 and should run without problems.

## 4.1.7-stable

- Security enhancements.
- Minor bug fixes.

## 4.1.6-stable

- Fixed: MySQL error in installer during blog cache invalidation.
- Fixed: Smilies toolbar in comments stopped working after upgrade to v4.1.5.
- Fixed: Unread message status update after message delete.
- Fixed: Use evo_charset in htmlentities().
- Fixed: Archives plugin.
- Fixed: XSS vulnerability.
- Other minor bug fixes.

## 4.1.5-stable

- Use UTF-8 as internal b2evolution charset in PHP 5.4.
- Added a little entropy to throw off spambots.
- Added demo of the Sidebar Links widget to Blog B.
- Fixed: Properly extract keywords from Google Image searches.
- Fixed: An error occurred on cache invalidation if the system doesn't have blogs.
- Fixed: An error occurred on saving skin settings if there were empty containers.
- Fixed: Tags from pages, podcasts and intro posts will not show in Tag Cloud widget.
- Fixed: Display of line numbers in Code highlight plugin.
- Other minor bug fixes.

## 4.1.4-stable

- Now supports PHP 5.4.
- Fixed: Allow HD YouTube video code in Videoplug plugin.
- Fixed: Properly quote complex jQuery selectors.
- Fixed: Do not allow user session timeout values lower than $crumb_expires.
- Fixed: Demo mode restrictions.
- Fixed: Remove SQL and JS injection opportunities.
- Other minor bug fixes.

## 4.1.3-stable

- Added extra security check to file upload process.
- Restricted file setting edits in demo mode.
- Improved detection of known search engines, improved performance.
- Upgrade TinyMCE editor to version 3.4.8.
- Fixed: UI response when deleting comment from recycle bin.
- Fixed: Use of blog locale in AJAX forms.
- Fixed: substr_count() made compatible with PHP < 5.1
- Fixed: In-skin login charset issue.
- Fixed: Not encoding ampersands in tag URLs.
- Fixed: Loading required _url.funcs.php file in cron job mode.
- Fixed: PHP error with undefined function array_combine().
- Fixed: Intro-Sub was not properly overriding Intro-Cat.
- Fixed: Hide "Write new post" and "Comments" links from dashboard if user doesn't have permission, and other small permission checks update.
- Fixed: Private message notifications emails in case of group conversations.
- Fixed: Sub template [_item_block.inc.php] not found.
- Other minor bug fixes.

## 4.1.2-stable

- The page cache will be invalidated if the blog settings or some important global settings are changed.
- Added hint in maintenance.html generated during backup so that site admins know how to get rid of it.
- Added quick moderation also for published comments.
- Added missing file: /rsc/img/jquery_theme/ui-bg_glass_75_ffffff_1x400.png
- Bug fixes

## 4.1.1-stable

- ETag support on page caching. This will notably prevent you from seeing a cached evobar after logging out. (@francoisplanque)
- Simplified Evobar menu structure (@francoisplanque)
- Refactored user profile editing. (@evofactory)
- Enhanced back-office navigation. (@evofactory)
- Enhanced user tools widget. (@evofactory)
- Colorbox can be optionally turned off in skins. (@evofactory)
- UI cleanup (@francoisplanque)
- Bug fixes (@sam2kb, @evofactory, @francoisplanque)
- i18n POT file update
- Added Spanish (es-ES) language pack (@rhamnusia)

## 4.1.0-beta

- Comments & Antispam:
  - Comments can now be deleted with a single click... no more javascript confirmation... no more wasting time when slaughtering spam. Of course we though of the occasional mistake: deleted comments now remain in the "Recycle bin" so they can be recovered with just another click... until, of course, you empty the recycle bin.(@evofactory)
  - Comment paging in the front end. Optional. # of comments per page is configurable. (@sam2kb)
  - Comment feeds configuration. Comment feeds can now be disabled per blog. It's also possible to just include a small excerpt for every comment. (@sam2kb).
  - Default commenter avatars can now be configured to different graphic styles: b2evo default, Gravatar, Identicon, Monsterid or Wavatar (@sam2kb)
  - Feature to elevate an interesting comment into a post were you can elaborate on what the commenter said. Look for the "Elevate into a post" link at the top right of the comment edit form. The comment is quoted in the new post and the original comment is deprecated. (@evofactory)
  - It is now possible for users to subscribe to comment replies / get notified by email when new comments are posted on a specific post. (@evofactory)
  - Comment attachments. It is now possible to attach images and other types of files to comments. This feature can be disabled or restricted to logged in users. The file types that can be uploaded by anonymous users are configurable (only GIF, JPG and PNG by default). (@evofactory)
  - The comment & contact forms are now loaded in Javascript/AJAX by default (go to Blog Settings > Advanced Settings > Caching to control this). This makes it harder for spam bots to post spam (If they still do, it goes into the moderation queue anyways). (@evofactory)
  - Tool to delete all comments & hits matching the blacklist. (@sam2kb)
- Blog skin design & features:
  - Colorbox (jQuery Lightbox alternative) integration: clicking on images attached to posts will now automatically open a zoom window. When multiple images are attached to a post it's possible to start a slideshow. (@francoisplanque)
  - Slightly redesigned login & registration forms. A little less clutter and a little more help text. (@evofactory).
  - Nicer search form design on the evopress skin. (@evofactory)
  - Users can now edit their user profile in the front office without going to the admin. (@evofactory)
  - It is now possible to display login and registration forms inside of the skin in order to keep visual consistency when users log in. Turn this on in Blog settings > Advanced. (@evofactory)
- User management:
  - It is now possible to ask users for their gender. (@evofactory)
  - Showing Gender & Country in user list. (@evofactory)
  - Showing confirmed status in user list. (@sam2kb)
  - Registration form accepts a source param. ?source=... that will be attached to the new user profile (30 characters max). Can be used for tracking newsletter or ad returns. (@evofactory)
  - Specific user groups can be given permission to access the shared file root or not. (@evofactory)
  - Tab to view the list of blogs belonging to a user in the user profile (backoffice only) (@sam2kb)
  - Full support of non-ASCII usernames/logins (@sam2kb)
  - Users can now upload an avatar/profile picture directly into the User form without going through Files Management (@evofactory)
- User permissions on blogs:
  - The advanced user permissions screen has been refactored.
  - Editing timestamps is now a specific permission and no longer a "level based" permission.
  - There are now separate permissions for editing comments depending on their status (published, deprecated, draft).
- Plugins:
  - Added possibility to define new blog types in a plugin so that users can create blogs with preconfigured settings for specific tasks. Install the test plugin for a demo implementation of this. (@sam2kb)
  - Basic antispam plugin: remove repetitive characters and trim whitespace (@sam2kb)
- Statistics:
  - Improved search engine detection algorithms (@sam2kb)
  - Better handling of regional character sets and "serp ranks".
  - Search engines definitions moved to /inc/sessions/model/_search_engines.php.
- Installer:
  - The installer will now create default scheduled jobs for: pruning the stats (hit log & session log), pruning the page cache & updating the antispam blacklist. (@evofactory)
- Backoffice:
  - Autocompletion when adding tags to a post (@blueyed)
  - Page cache repair tool. (@evofactory)
- Performance:

- Enhanced Block Caching for widgets with better cache keys and ability to manually turn off Block Caching for any widget. (@francoisplanque)
- Enhanced Page Caching with auto repair of the directory structure if needed. Page caching is now turned on by default. (@evofactory)

- Bugfixes (@sam2kb, @blueyed, @francoisplanque, @evofactory)

## 4.0.2-beta

- Fixed tinyurls (@evofactory)
- Allow closing of antispam popup by pressing Escape (@evofactory)
- Enhanced slug manager (@fplanque)

## 4.0.1-beta

- Better dashboard AJAX handling (@evofactory)
- Paged comments (AJAX) in the backoffice (@evofactory)
- Cleaner navigation for crossposted posts. You now stay in the same blog and teh page includes a "canonical tag". If you prefered the old way, change $cross_post_nav_in_same_blog in the advanced conf file. (@evofactory)
- Twitter plugin now uses OAuth (requires PHP5). (@evofactory)
- Many bug fixes...

## 4.0.0-alpha

- Skins:
  - Separate search page -- disp=search -- destined to gather advanced search params (@francoisplanque)
  - Post index feature -- disp=postidx (@francoisplanque)
  - Site map feature (HTML, not XML which already existed) -- disp=sitemap (@francoisplanque)
  - Help page -- disp=help (@francoisplanque)
  - Skins can now embed the login form - experimental - implemented for sending private messages (@evofactory)
- Widgets:
  - Avatar widget (@blueyed)
  - Enhanced Menu link widget (@francoisplanque)
  - Enhanced Common navigation links widget (@francoisplanque)
  - Tag cloud widget now has a random order option (@waltercruz)
- RSS Feeds:
  - It is now possible to choose the size of the images included in RSS feeds (@evofactory)
- Post editing:
  - When typing a new post, it is now possible to create a new category on the fly without leaving the edit screen (@evofactory).
  - Images can now be linked to the top of a post or at the top of the "more" section. (@blueyed)
  - Better handling of "Publish!" button on post form (@francoisplanque)
  - Better handling of "Add/link files" on new posts - 1 single click will save draft & open file attach window (@evofactory)
  - Improved actions after upload - you can now link the file to the current post or insert an <img> tag into the post text (@blueyed,@francoisplanque)
  - In addition to upload, there is now an option to get images from an URL (@blueyed)
  - Linked files can now be visually located (@blueyed)
  - Option to link multiple files with one click (@sam2kb)
  - Mass post creation feature - useful for importing data to be released over time (@evofactory)
  - Option to stay in backoffice after publishing a post (instead of viewing the blog) (@evofactory)
  - Automatic post slugs will only include 5 words by default -- but you can always manually enter your own and longer slug (@evofactory)
  - Multiblog cross positing as well as extra category posting options can now be configured through the backoffice (@evofactory)
  - Ability to mass edit post attributes (Title vs slug vs <title> tags). (@evofactory)
- Comments & Antispam:
  - Comments can now display avatars (including Gravatars) (@sam2kb)
  - Option to display comments by ascending or descending order (@tblue)
  - A quick moderation link in comment notifications by email allows to moderate comments with minimum # of clicks. No login necessary! (@evofactory)
  - Dashboard:
    - Refreshing comments on dashboard through Ajax (@evofactory)
    - It is now possible to remove spam URLs from comments with a single click in the dashboard (@evofactory)
    - It is now possible to call the Antispam tool as an Ajax overlay in the dashboard. (@evofactory)
  - Backoffice comment editing:
    - It is now possible to change "Allow message form" guest comments (@tblue)
    - It is now possible to move comments from one post to another (@evofactory)
    - 1 click Publish button -- visible only if Comment is a Draft (@evofactory).
  - Comment list in teh admin:
    - There is now a list view in addition to the full text view (@evofactory)
    - Various filters are now possible (@evofactory)
  - Extended antispam tool: (@evofactory)
    - Separate permissions allow moderators to separately moderate drafts, published and deprecated comments. (@evofactory)
    - The antispam tool now also checks user profiles. (@evofactory)
- File management:
  - When you try to delete an image, b2evo now gives you a list of all posts to which that image is linked. (@evofactory)
  - The filemanager can now use _evocache folders instead of .evocache which will increase compatibility with more web hosts (@evofactory).
- Messaging:
  - Messaging module giving users the ability to exchange private messages in the admin area. (@evofactory)
  - Possibility to contact blog, post or comment authors through private messages (PMs) instead of email. (@evofactory)
- Maintenance:
  - Integrated backup feature (Database and files) (@evofactory)
  - Automated upgrade feature - EXPERIMENTAL - WARNING: for testing only at this point. It will overwrite your current version! (@evofactory)
  - Scheduled task to prune *old files* (>24 hours) from the full page cache (@evofactory)
  - Tool to clear *all files* full page cache (/cache directory) (@sam2kb)
  - Tool to clear thumbnail caches (.evocache directories) (@sam2kb)
  - Tool to optimize database tables (MyISAM tables used for sessions & logs)
- Users & Groups:
  - Users may now create new blogs for themselves (depending on group permission - Go to Users > Select a group > Blogging permissions) (@evofactory)
  - Admin/users now have better control on whether or not they can have multiple concurrent sessions. (@evofactory)
  - Option to have different session timeouts for different users (@evofactory)
  - Option to have nicknames used as IDs set by the admin, not the user. (@evofactory)
  - Modules & Plugins can now define their own group permissions (@evofactory)
  - Added post type permissions (@tblue)
- XML-RPC:
  - XML-RPC can now be disabled (@tblue,@waltercruz)
  - MetaWeblog API: Use mt_keyword field to get/set post tags. Affected methods: metaWeblog.newPost, metaWeblog.editPost, metaWeblog.getRecentPosts, metaweblog.getPost. (@tblue)
  - MovableType API: Implemented mt.supportedMethods. (@tblue)
  - MovableType API: Implemented mt.publishPost (@tblue,@waltercruz)
  - MetaWeblog API: Implemented mt_allow_comments and mt_excerpt (@tblue,@waltercruz)
  - WordPress API: basic support for the following methods: wp.getPageList, wp.getUsersBlogs, wp.getPageStatusList, wp.getPostStatusList, wp.getCategories and wp.uploadFile (@waltercruz)
  - Improved metaWeblog.newMediaObject (@tblue)
  - Fixed API method signatures (return values) (@tblue)
  - Use correct charsets. (@tblue)
  - Check extra categories before checking permissions to post to them (sends correct XML-RPC error on failure). (@tblue)
- Plugins:
  - Adsense plugin now has 'per blog' settings (@sam2kb).
  - New plugin: Watermark. Adds text watermark to generated thumbnails e.g. copyright notice (@sam2kb).
  - Twitter plugins now uses optimized private tiny urls (@evofactory)
  - Code highlight plugin: Correctly unfilter item contents. (@sir_yabs/@tblue)
- General:
  - Durations can now be entered in days/hours/minutes/seconds instead of large amounts of seconds (@evofactory)
  - Installer will take care of testing .htaccess and install it if proven compatible with current webserver (@evofactory)
- Performance:
  - Optimized for PHP5 (still works on PHP4 but we strongly recommend PHP5)
  - BlockCache stored to memrory (APC Cache & more): every widget is now cached individually and regenerated only when needed (provided it declares proper dependency keys). This provides a significant performance boost. More underway. (@francoisplanque)
  - User agent type is now saved directly into the hits table instead of a costly lookup in user agents table (@francoisplanque)
  - SQL optimizations (@blueyed):
    - SQL_NO_CACHE for queries selecting from T_sessions/T_hitlog
    - Remove information about seconds from item issue and start date, so that those queries can get cached for up to one minute
- Technical mumbo-jumbo:
  - Debug mode can be turned on & off through the URL with a password (@francoisplanque)
  - Support iconv() on urltitle generation (@tblue)
  - Fixed a bug in fetch_remote_page() (wrong $info array keys). (@tblue)
  - Item::get_tags(): Bugfix and optimization: Remember items without tags and do not try to fetch tags for them on the next call. (@sir_yabs, @tblue)
  - Plugin hooks: Always trigger AfterCommentUpdate/AfterItemUpdate, not only if Comment/Item has changed. (@sir_yabs/@tblue)
  - Added hooks to let plugins handle disp modes: GetHandledDispModes & HandleDispMode (@sir_yabs, @francoisplanque)
  - Added hooks: AfterCollectionInsert, AfterCollectionUpdate, AfterCollectionDelete, DisplayProfileFormFieldset, ProfileFormSent, AfterFileUpload, BeforeThumbCreate (@sam2kb)
  - Extended skin tag params (@leeturner)
  - Increased core modularity
  - Upgraded to TinyMCE 3.2.7 (@blueyed)
  - CommentList has been rewritten to CommentList2 offering greater flexibility (especially on filtering) and matching the programming style of ItemList2 (@evofactory)
  - Other bug fixes (@sam2kb,@francoisplanque,@evofactory)

# 3.x series

Skins and plugins from v2 are compatible with v3 and should run without problems.

## 3.3.4-stable

- Enhanced skin containers reload for skin developers (@francoisplanque)

## 3.3.3-stable

- Allow users to act on uploaded files (@francoisplanque/@tblue)
- Made avatars optional.
- Integrated 2 new skins.
- Updated SEO presets from Rand Fishkin.

## 3.3.2-stable

- Improved Auto Links plugin (@francoisplanque)
- Fixed bug allowing multiple plugins to have per-blog specific settings (@francoisplanque)
- Additional bug fixes (@francoisplanque/@tblue)
- Check whether user is allowed to edit post when updating it (saving to DB) (@tblue)
- XML-RPC:
  - Added missing permission checks (@tblue)
  - Improved metaWeblog.newMediaObject (@tblue)
  - Fixed API method signatures (return values) (@tblue)
  - Use correct charsets. (@tblue)
  - Check extra categories before checking permissions to post to them (sends correct XML-RPC error on failure). (@tblue)

## 3.3.1-stable

- Improved Archive plugin (tblue246)
- Improved Auto Links plugin (fplanque)
- Improved Auto-P plugin (blueyed)
- Fixed display of new plugin widgets (tblue246)
- Fixed canonical URLs for multipage posts (tblue246)
- Fixed multiblogs.php & a_noskin.php (fplanque)
- Updated master language file (POT)
- Cleaned up skins/CSS
- Additional bug fixes

## 3.3.0-rc1

- Skins:
  - Skins can now have skin-specific translations ("locales" folder in the skin's folder, directory structure is the same as for plugin translations). (tblue246)
  - All skins now support setting RSS feeds to 'none' (leeturner2701)
- SEO:
  - <meta> desc and <meta> keywords per blog post (leeturner2701)
  - Category descriptions can be used as meta description on category pages (walter)
- Admin:
  - Remember whether or not the TinyMCE editor was last used on a per post and per blog basis. (fplanque)
  - Prevent clicking on "Publish NOW!' when a post is set to protected or private (tblue246)
- Installer:
  - B2evolution no longer ships with _basic_config.php . It ships with _basic_config.template.php instead. That way, uploading a new release never overwrites the previous base config. The installer now creates _basic_config.php based on _basic_config.template.php + entered form values. (fplanque)
  - Language/locale selection moved to a place where it's visible! (fplanque)
  - Only one locale is now activated by default (the one selected during install). (fplanque)
  - Simplified main screen (fplanque).
- Plugins:
  - Twitter plugin no longer requires curl (yabs)
  - New plugin hook: BeforeSessionsDelete (yabs, blueyed)
- Other:
  - i18n/charset handling improvements (sam2kb)
  - Bug fixes! (blueyed, tblue246, sam2kb, yabs, leeturner2701, fplanque)

## 3.2.0-beta

- Skins:
  - Post attachments. Non image files that are linked to a post will be listed and linked below the post. (sam2kb)
  - All default skins now support featured posts and intro posts. (fplanque).
  - Category, tag, archive and search pages now only display post excerpts by default. (Requires a 3.x skin; otherwise the skin will display full posts as before). This can be controlled in the Blog settings > SEO. (fplanque)
  - Skins can now have a _skin.class.php file to override default Skin behaviour and provide skin specific settings. Demo: the custom skin has configurable header colors. The settings can be changed through Blog Settings > Skin Settings (fplanque) -- Anyone is welcome to extend those settings for any skin you like.
  - Skins can now have an item.css file to specify content formats. This will be reused in WYSIWYG editors. (fplanque)
- URLs & SEO:
  - Homepage: option to 301 redirect to canonical homepage. (fplanque)
  - Date archives: option to 301 redirect to canonical urls. (fplanque)
  - Option to support rel="canonical" instead of or when 301 redirect cannot be used. (fplanque)
  - Options to select how much content to display (excerpt|teaser|normal) on different types of pages. (fplanque)
  - Tag pages: Prefix only mode allows urls like http://.../tag/tag-name with no trailing character (blueyed)
  - Optional rel="tag" attribute (blueyed)
  - Return to a clean url after posting a comment (fplanque)
  - Posts excerpts can be used as meta description for posts and pages
- Logging & stats:
  - Detect new Google "ajax search" urls as search referers. (fplanque)
  - Log "serprank" (start= or cd=) param if given in search url. (fplanque)
  - Added goal tracker: /htsrv/track.php (fplanque)
- UI:
  - User Interface cleanup (fplanque)
  - The blog is now always displayed after publishing a post. If anyone doesn't actually want this, we can make it an option. (fplanque)
  - TinyMCE upgraded to 3.2.4.1 — missing buttons are fixed. (fplanque)
- Plugins:
  - Plugins can now have Settings that are specific to each blog. (fplanque)
  - Included twitter plugin based on twitterlution and extended to handle blog specific twitter accounts.(Lee Turner, fplanque)
- Other:
  - Combined CSS files in order to reduce number of CSS files loaded. (Yes I combined more than I splitted ;) Stubs are left in place for backward compatibility and to prevent 404 errors. (fplanque)
  - Bug fixes (tblue, blueyed, waltercruz, fplanque, sam2kb, yabs)
  - CSS fixes (tblue, blueyed, fplanque)
  - Internationalization fixes (tblue)

## 3.1.0-beta

- UI:
  - Integrated WYSIWYG editor (TinyMCE) (blueyed,fplanque)
  - New evobar menu: extended, extensible by plugins and a little animation too (fplanque)
  - Integrated jQuery UI datepicker (Afwas)
- Blog features:
  - Intro posts: added typecolumn in browse screen and made more silent regarding noindex, sitemaps & notifications.
  - The default category for new posts can now be chosen explicitely for each blog.
  - Categories can now be reordered manually (instead of alphabetical display). This is a system wide general setting.
  - Automatic generation of excepts (fplanque)
  - Basic version history of post edits (click on the little clock icon in the post lists) (fplanque)
- Widgets:
  - Cleaned up AJAX drag & drop interface (fplanque)
  - Universal Item List widget now combines the functionality of Post List, Page List, Link List, Link Blog... + combinations. Pretty powerful :) (fplanque)
  - Related posts widget (fplanque)
  - Extended widget possibilities (fplanque,yabba,tblue)
  - Widgets can be enabled/disabled. (Tblue)
  - Sidebar Links item type + widget now allow to display a linkroll without using a separate blog. (walter,fplanque
- Other:
  - Optimized speed/reduced # of queries (blueyed)
  - Cleaner URLs when browsing through multiple pages. (fplanque)
  - Fixed locale selection during install.
  - Do not display locale selector on edit screen if only one locale is available.
- Bugfixes. Many! (Tblue,blueyed,walter)

## 3.0.0-alpha

- General features
  - User avatar support
  - User fields support: MSN/Live IM, Yahoo IM, AOL AIM, ICQ ID, Skype, Main phone, Cell phone, Office phone' Home phone, Office FAX, Home FAX, Website, Blog, Linkedin, Twitter, Facebook, Myspace, Flickr, YouTube, Digg, StumbleUpon, Role, Organization, Division, VAT ID, Main address, Home address... (what else? ;)
  - Featured posts let you have the latest featured post on top of others with special formatting. (requires a skin that implements get_featured_Item() )
  - Intro posts let you content specific have intros on top of your category and tag pages. Same for the home page. (requires a skin that implements get_featured_Item() )
- Photoblogging
  - It is now possible to select multiple images in the file manager and either
    - create multiple posts (1 per image)
    - or create 1 post with all images attached
  - Photo posts will be in draft status by default, allowing you to add titles and comments before publishing.
  - Photo index widget to show your latest photos in a blog sidebar.
  - Support of "cropped" thumbnails (the image will always fill the whole thumbnail area)
  - Thumbnail sizes can be configured in /conf/_advanced.php
- Enhanced stats & analytics
  - Complete hit log view
  - Faster queries
  - Goal tracking (TODO finish)
  - Keyphrase analytics
- Performance
  - Page level caching. Can be enabled for each blog indivually (Advanced blog settings
- Admin interface
  - Yabbarriffic drag & drop widget reordering (you can even move a widget from one container to another)
  - File manager now supports a shared directory (/media/shared/global/)
  - Enhanced dashboard.
  - Added usability shortcuts.
  - Improved iPhone compatibility.
- Post editing
  - Added "Save & edit" button
  - Added 1 click "Publish NOW !" button
  - Enhanced handling of attached images & files.
  - Posts can be explicitely ordered by the use of the order field. This can be set on each post in expert edit mode (in the right column).
  - Post can now have custom fields. Custom fields can be defined for each blog under "Blog Settings > Features".
  - The issue date can now be set to an explicit date or just to "now" in which case it will be updated without the need to explicitely type in the current date/time.
  - Urltitles (slugs) can now be up to 200 chars long.
  - You can now specify a different title to be displayed in the <title> tag than the regular title of your post
- Logging and stats
  - Session and Hit logging as well as debug info display are now done systematically at PHP shutdown. Therefore calls to $Hit->log() and debug_info() are no longer needed within skins. (It doesn't hurt to let them there either.)
  - Keyphrase logging
- More SEO settings:
  - Customizable 404 pages
  - Customizable 404 responses (200, 301, 302, 303, 404 and 410 !)
  - Description and keywords META tags are inserted into the main page only to avoid duplicate content
- Enhanced blog by email (tilman)
- Reworked demo blog created at install
- Blog properties
  - Longer blog name (up to 255 chars)
  - Autogeneration of category/chapter slugs(url names)
- Comments
  - Whoever has permission to *edit* comments will now have extended permissions on *new* comments too, including posting <a> tags.
- Bug fixes

# 2.x "Nevada" series

Skins version 2 are pretty stable starting at version 2.1.

## 2.4.6-stable

- Additional antispam measures
- External Feeds/Feedburner support (walter, fplanque)
- Fixed trackback (tblue)
- Fixed multiple category parent/child recursion issues. It should no longer be possible to "lose" categories by creating loops. (fplanque)
- Extended DTD for <embed> tag
- Additional bug fixes (yabs, blueyed, tblue, walter, fplanque...)

## 2.4.5-stable "Monument Valley"

- Search widget radio buttons are now optional.
- New skin: GlossyBlue (including support for default widget containers)
- More skin template params
- The installer now creates a demo photoblog
- Enhanced backoffice display speed
- More tag URL options
- Enhanced URL resolution for categories and tags
- Enhanced sitemaps
- Fixed the bug where thumbnails are not created in skins when the viewer is not logged in
- Additional bug fixes

Note: In real life Monument Valley is actually located on the border between Utah and Arizona. Not really in Nevada. Just so you know... :P

## 2.4.2-stable "Palms"

- New skins (including support for default widget containers)
  - Terrafirma
  - PixelGreen
  - Vastitude
- Improved compatibility with older skins.
- Fixed calendar bug when entering DST on the last week of the month.
- Fixed bug with date entry (months were off by 1 month, again...)
- Fixed bug with individual post footers.
- Fixed additional minor bugs.

## 2.4.1-stable "Nevada"

- Enhanced comment forms with optional customization features. Removed extra fieldsets. (fplanque)
- Added some basic quicktags in simple edit mode. (fplanque)
- Cosmetic enhancements. (fplanque)
- iPhone optimizations. (fplanque)
- Fixed wording in various places.
- "Blog Logo" renamed to "Image / Blog logo".
- Plenty of small bug fixes...

## 2.4.0-rc2 "Venetian"

- Admin screens:
  - Select list for installs with more than 7 blogs. (fplanque)
  - XHTML validator, security rules and antispam checkinh can now be configured on a per usergroup basis. XHTML validation can also be specifically disabled for XML-RPC calls. (fplanque)
  - Enhanced upload screen. (fplanque)
  - Extended system checks (fplanque, blueyed).
  - Additional help icons throughout the admin interface. (fplanque)
- Podcast support: (fplanque)
  - enter the URL of an mp3 file into 'Link to url:' and select 'Type: Podcast'.
  - Embedded mp3 player.
  - <enclosure> support in RSS 2.
- Improved comment handling:
  - Do not send notification if to author if he comments on his own post (personman2).
  - Auto publish comments from users with permission to moderate comments (fplanque).
  - Option to edit comments while in antispam banning mode (fplanque).
- New skin features:
  - The evobar is now fixed on top of the screen.
  - New Template tags: (fplanque)
    - $Blog->footer_text()
    - $Item->footer()
  - Enhanced thumbnails (including PNG support). (fplanque)
- Tag URLs: (fplanque)
  - Cleaner tag URLs.
  - Canonic handling of tag URLs.
- XML-RPC has been debugged and reorganized. Each API is now in its own file:
  - Blogger API debugged (fplanque)
    - blogger.newPost no longer requires a cat ID (<category>123</category>) to be passed. It will use the first/default cat available in the targetted blog.
  - b2 API debugged (fplanque)
  - MetaWeblog API debugged (fplanque)
  - Movable Type API debugged (fplanque)
  - Added Really Simple Discoverability (RSD) support (fplanque).
- Better default install: The installer will now create the default blogs with cleaner URLs by default. We do believe these will work on 99% of the current Linux hosts. It is always possible to change the URL scheme in the Blog Settings.
- Security enhancements...
- Bug fixes (fplanque, yabba, blueyed)

## 2.3.0-rc1 "Renaissance"

- Widgets
  - Tag cloud widget (fplanque)
  - Comment list widget (yabba)
  - Many additional widget params (yabba)
  - UI enhancements (fplanque, yabba, awall)
- Nofollow handling in comments. Can be disabled on a comment by comment basis. (fplanque)
- Skins: (fplanque)
  - Modular templating of comments makes it easier to customize comment display without going through PHP code.
  - WordPress compatibility layer makes it easier to port WP themes to b2evo skins.
  - Miami Blue skin ported to 2.x and included.
  - XML feeds can now optionally include full posts. (fplanque)
- Additional SEO settings:
  - Additional presets by Andy Beal, Rand Fishkin and Michael Gray.
  - Additional internal nofollow handling (fplanque)
- Enhanced WP importer (fplanque)
  - tag import
  - empty slug handling
- Installer updates (fplanque)
  - Better out-of-the-box experience including Blog A being pre-assigned as default.
  - Blogroll added by default to blog A & B.
- Bugfixes (yabba, blueyed, fplanque)

## 2.2.0-beta "Vegas Again"

- Photoblog: (fplanque)
  - more accurate photo index.
  - better browsing to previous/next post in single post mode
- User interface cleanup (upload, antispam, etc.) (fplanque)
- Date archives, category pages and tag pages: it is now possible to set how many posts are displayed on each of those pages. (fplanque)
- Additional SEO settings (fplanque)
  - Presets by Aaron Wall & Stephan Spencer
  - It is now possible to use internal nofollows on specific links (sspencer)
- Normalized skin template names (fplanque)
- Security fixes (blueyed)
- XHTML compliance (yabba, hari)
- Bug fixes (blueyed, afwas, fplanque)

## 2.1.0-beta "Las Vegas"

- New skin API is stable - all skins except "Photoblog" can be considered stable.
- More SEO settigns
- Refactored blog settings
- Enhanced commenting system:
  - Comment ratings
  - Cleaned up comment submission form
  - Cleaned up comment editing form
  - Better filtering of URLs entered in comment form
- User interface fixes
- Bug fixes

# 2.0 "Chicago" series

Plugins from 1.10 will generally work with this version.

Skins from 1.10 need some changes (upgrade instructions). NOTE: the 2.0 skintags are not final yet!

## 2.0.2-alpha "Millenium Park"

- Strengthened upgrade - tested on version 0.9 to 2.0 (francois)
- Advanced SEO configuration (francois)
- Menu widget containers (francois)
- UI improvements (francois)
  - File upload
  - Skin install
  - Various / CSS
- Oprional category prefixes (walter, francois)
- Skin cleanup; new/updated tags:
  - request_title( array() )
  - skin_container( array() )
  - messages( array() )
  - item_prevnext_links( array() )
  - mainlist_page_links( array() )
- Additional skins
- WordPress importer (hari)
- Bug fixes...

## 2.0.1-alpha "Navy Pier"

- Fixed Movable Type importer (francois)
- Display/CSS improvements (francois)
- i18n preparation (daniel, francois)
- Skin tag update: Item::feedback_link( array() ) now uses array params.
- Plenty of little fixes (francois, yabba, walter)

## 2.0.0-alpha "Chicago"

- Enhanced Blogs:
  - Pages: use out-of-flow posts for general information pages. (fplanque)
  - You can write Excerpts for posts and use them in XML feeds (instead of full contents). (fplanque)
  - Each blog has now an owner; skins have a link to contact the owner on all default skins (fplanque)
  - Photoblog features (fplanque)
  - XML Feeds for comments on individual posts (fplanque)
- Enhanced Skins:
  - evoSkins 2.0 offering superior flexibility in customizing different views based on what is being displayed ($disp) (fplanque)
  - evoSkins 2.0 implement widget containers: (fplanque)
    - Containers can receive widgets directly from the backoffice. No file editing necessary. (fplanque)
    - Widgets can be provided by plugins ("SkinTag" reloaded).
    - Widgets receive default presentation params from the skin's container in order to automagically adjust their look to the skin they're used in (fplanque).
    - Widget can be configured to behave/display differently in every location where they are displayed. (fplanque)
    - Cascading widget params: overall defaults < widget defaults < container/calltime params < widget specific configs (saved in DB)
  - Default widgets:
    - Blog list:
      - Public blog list : Display list of all blogs marked as public.
      - Same owner's blog list : Display list of all blogs owned by the same user.
    - Blog header:
      - Blog logo : Include a logo/image from the blog's file root.
      - Blog title : Display blog title
      - Blog tagline :Display blog's tagline
    - Blog contents:
      - Page list : Display list of all pages
      - Post list : Display list of all posts
      - Category list: Display list of categories for the blog
    - Meta contents:
      - Long Description of this Blog : Display this blog's long description.
      - Free HTML : Display a block of free HTML code.
    - Tools:
      - Common Navigation Links : Display these links: Recently, Archives, Categories, Latest Comments
      - Content Search Form : Display search form
      - XML Feeds (RSS / Atom) : Display list of all available XML feeds.
      - User Tools : Display user tools: Log in, Admin, Profile, Subscriptions, Log out
    - Other contents:
      - Linkblog Display : list of entries from the linkblog, grouped by category.
    - Widgets provided by Plugins:
      - Calendar Widget : This skin tag displays a navigable calendar.
      - Archives Widget : This skin tag displays a list of post archives.
      - Who's online : This skin tag displays who is online
  - Links to move to previous & next post in single post display mode. (fplanque)
- Enhanced Back-office:
  - Reorganized backoffice (fplanque)
  - New "Chicago" backoffice skin (fplanque)
  - Removed annoying "ping" screen after posting/editing (fplanque)
  - Dashboard (fplanque)
    - In context comment moderation directly from the dashboard (fplanque)
  - New category/chapter management interface (fplanque)
  - In context editing: you will go back where you left after editing a post or a comment. Even if you where in the skin (i-e. not in the back-office). (fplanque)
- Enhanced Filemanager:
  - Added integrated File editor into the File manager. Allows editing of skin files. (fplanque)
  - Massive refactoring of the File Manager / interface cleanup (fplanque).
  - Automatic generation and caching of thumbnails for images in the File Manager. (fplanque)
  - Ability to create (photoblog) posts with selected files in file manager. (fplanque)
- Enhanced Security:
  - Backoffice system checks page to help secure your server and assist in troubleshooting (fplanque)
  - Login form: If Javascript is available the password gets hashed by the client before it gets sent "over the wire". It uses a random salt generated by the server for this on every login attempt.
    It's still recommended to set $htsrv_url_sensitive to an SSL URL, but at least this helps a bit. Plugins which need the raw password can hook into the new LoginAttemptNeedsRawPassword event and return true there. (blueyed)
- Enhanced Configuration:
  - Several options can now be set on a per Blog basis in the backoffice:
    - Default ordering of posts: by date, by title, by priority... (fplanque)
    - Number of posts (or days) per page to display (fplanque)
    - Number of posts for RSS/Atom feeds (fplanque)
    - Content of feeds (excerpts, full posts...) (fplanque)
    - Archive mode (monthly, weekly, daily...) (fplanque)
    - Permalink and other link formats (fplanque)
    - Allowing users to subscribe to email notifications (fplanque)
  - Removed special behavior of blog #1. Any blog can now aggregate any other combination of blogs. Look into Advanced Settings for the aggregating blog. (fplanque)
  - Made default chmod settings for dirs/files editable (blueyed)
  - Workflow properties are now hidden by default. Can be enabled on a per blog basis (fplanque)
  - User feature settings can be reset to defaults, including PluginUserSettings (blueyed)
  - "Multiple sessions per user" setting. This will ensure logout from public computers if unchecked. (blueyed)
- Enhanced User permissions:
  - Each blog now has a unique "owner" — multiple blogs belonging to the same owner can be interlinked. (fplanque)
  - For single user blogs there is no longer a need to set advanced permissions, just assign the owner. (fplanque)
  - Blog owners can now have control over their blog settings without necessarily having control over their blog url and other sensitive settings. (fplanque)
  - Blog owners can be given permission to view stats on their own blog (and only their blog). (fplanque)
  - Advanced permissons can be enabled on a blog by blog basis when needed (fplanque)
  - Advanced permissions include ability to give edit perm only for posts written by users with a lower level, or equal level. (fplanque)
- Enhanced SEO:
  - Automatic XML sitemap generation (fplanque)
  - Made permalinks / URL titles Google friendly (fplanque)
  - Clean category/chapter URLs (fplanque)
  - Added a wide variety of permalink formats to chose from (fplanque)
  - New post visibility status 'redirect': allows to redirect old posts to a new location. (fplanque)
  - 301 redirects of post requests to their canonical permalink URL (useful to unify older URLs) (fplanque)
  - 301 redirects of category requests to their canonical URL (useful to unify older URLs) (fplanque)
  - All redirects are now either 301 or 303 (No more stinkin' 302s) (fplanque)
- Enhanced evoCore framework:
  - Posts can be filtered by locale, e.g: ?lc=fr or ?lc=fr-FR (more to come) (fplanque)
  - Category searches can be focuses 'wide' (including extra categories) or 'main' (main category only) (fplanque)
  - Better precision for viewcounts (fplanque)
  - Replacing of special characters in auto-generated URL titles (blueyed)
  - Entities support for HTML checker (blueyed)
  - Optimized speed/memory usage
  - Multiple plugins/skins can require the same css or javascript and it will only be included once (personman, fplanque)
  - A lot of refactoring (fplanque)
- Enhanced stability :
  - Many fixes in XML-RPC APIs
  - Fixed URL modes for Blogs (fplanque)
  - Fixed and enhanced item/file links (fplanque)
  - Several fixes in the Weekly Archives (fplanque)
- Enhanced Plugins:
  - Added events: LoginAttemptNeedsRawPassword, AdminDisplayCommentFormFieldset, SkinEndHtmlBody, AdminBeforeItemEditDelete
- Enhanced purity :>> Cleanup of depreciated features:
  - Pingbacks are dead. R.I.P. (no maintainer...)
  - User skin switching. Only the admin can switch skins now.
  - ...postcounts for categories will probably die soon (not enough value over processing time)

# 1.10 "Florida" series

Skins from 1.9 can be used in this version.

## 1.10.3 "Key West" (stable)

- Included AdSense plugin.
- Bug fixes.

## 1.10.2 "Florida" (Stable)

- Standardized links to RSS feeds.
- Minor fixes.

## 1.10.1-beta "Orlando"

- Email notifications for comments now include a link that positions the browser directly on the new comment for quicker editing/deleting. (fplanque)
- HTML Checker can be configured to allow style="" attributes. (Yabba)
- More XHTML Strict when requested. (Yabba)
- Skin code cleaned up a little bit (100% backward compatible).
- jQuery now gets shipped with b2evo in /blogs/rsc/js/jquery.min.js. It gets included in all backoffice pages. (blueyed)
- Made trackback completely silent when disabled, for even less spam.
- Fixes
  - Fixed fatal error, if ini_set() is disabled
  - Some more little fixes reported by our devoted testers in the Forums. Thank you! :)

## 1.10.0-beta "Miami"

- Antispam filtering on private/email messages.
- Improved spam defeating methods.
- "Contact the admin" link on all skins.
- New bundled plugins :
  - Added Sitemaps plugin(blueyed, fplanque)
  - Added Code highlight plugin (yabba, fplanque)
  - Added Video plug plgin (fplanque)
  - Updated Quicktags plugin (fplanque)
- New bundled skins :
  - Added l33t_gray skin (demented kitty)
  - Added Miami Blue (miami condo real estate)
- Bug fixes :
  - Fixed logging of refering spam (when spam refs are not blocked)
  - Fixed group permissions
  - Fixed "Undeclared entity error" with the htmlchecker, e.g. if " " got used. (blueyed)
  - Locales have been standardize to ISO-3166
  - Additional bug fixes.
- Developer stuff:
  - Standardized Meta robots handling with robots_tag(); set $robots_index and $robots_follow to NULL if you want to completely with a plugin. Set them to true within a plugin to have them handled by the core.
  - Added hooks: FilterItemContents, UnfilterItemContents (fplanque)
  - Improved hooks: LoginAttempt, MessageFormSent. (blueyed)
  - Less javascript required for toolbars.

# 1.9 series

Skins from 1.8 can be used in this version.

## 1.9.3 "Rainforest" (Stable)

- Fixed "basic antispam de-activates itself". (blueyed)
- Fixed inclusion of sub-categories in item list (e.g. ?cat=1). (blueyed)
- Fixed handling of formats in pre-rendering content. You should delete the cache from the "Tools" menu after upgrading. (blueyed)
- Some more minor fixes.

## 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 series

Skins from 1.6 will need some changes.

## 1.8.7 "Tokyo" (Stable)

- Enhanced security.

## 1.8.6 "Anne" (Stable)

- Fixed displaying yearly archives (fplanque)
- Enhanced Security

## 1.8.5 "Oktoberfest" (Stable)

- 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)

- 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-RC "Milestone"

- 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-beta "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" series

Skins from 0.x will need some changes.

## 1.6-alpha "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 series

## 0.9.2 "Sparkle" (Stable)

- Bug fixes
- More spam detecting techiques (fplanque)
- More locales: Basque eu_ES, Icelandic is-IS, Polish pl-PL, Estonian ee-ET, Russian ru-RU

## 0.9.1 "Dawn" (Stable)

- 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" (Stable)

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

## 0.9.0.11 "Paris" (Stable)

- 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" (Stable)

- 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" (Stable)

- 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" (Stable)

- 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" (Stable)

- 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" (Stable)

- 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 series

## 0.8.9 "Spring" (Stable)

- 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 "Cream" (Stable)

- 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 "Snow" (Stable)

- 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 "Lightning" (Stable)

- 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 "Thunder" (Stable)

- Minor bug fixes

## 0.8.5.5-RC

- 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-beta

- 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-alpha

- 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 (Stable)

- 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 (Stable)

- 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

Copyright © 2003-2012 by François Planque & others · GNU GPL license · Contact