The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
The latest, HTML version of this document is always available at http://plagger.org/trac.cgi/wiki/PlaggerChangeLog

== 0.7.12 (2006/09/15) ==

=== Core ===

 * [Backward Incompatible] Updated $feed->id implementation to return unique ID
 * Requires XML::RSS::LibXML 0.23
 * allow '-' as a config name to read from STDIN
 
=== New Plugins ===

 * Search::Grep: Search engine using flat file and grep (ko)
 * Filter::UnicodeNormalize: Normalize entry body using Unicode::Normalize (otsune)
 
=== Plugins Updates ===

 * Misc plugins updates to use Plagger::Util filename_for
 * Subscription::LivedoorReader: modified_on can be null
 * BloglinesContentNormalize: hack space before empty elements
 * Rule::URLBL: fixed bug with non-HTTP URLs
 * Filter::StripRSSAd: Update for Bloglines
 * CustomFeed::Simple: Support XPath based link extraction
 * Publish::CHTML: use id_safe for safe feed ID generation
 * Filter::EntryFullText: support XPath with custom_feed_follow_xpath
 * Filter::TruePermalink: Don't die if it detects infinite reditrection loop

== 0.7.11 (2006/08/30) ==

=== Core ===

 * Makefile.PL now prioritizes "default" plugins first, then otherwise alphabetically sorted
 * testcritic test is now not in distribution since it's unnecessary and annoys people
 * Updated POD document of some core modules (Mark Fowler)
 * $ua->mirror(URI, $path) now works
 * t::TestPlagger: allow strings rather than regexp in file_contains
 * tools/plugin-start: optionally call svn/svk if it's detected

=== New Plugins ===

 * Notify::Command: generic command caller plugin for notification (miyagawa)

=== Plugins Updates ===

 * Publish::Feed: fixed RSS 2.0 webMaster validity problem
 * Search::Rast: moved some code to plugin.init. updated document
 * Subscription::XPath: Accept non-absolute link as well
 * Filter::StripRSSAd: some spacing fix for bloglines nasty content updates
 * Filter::BloglinesContentNormalize: strip 
 added by Bloglines
 
== 0.7.10 (2006/08/29) ==

=== Core ===

 * Added Test::Perl::Critic test
 * Fixed 2 args open to 3 args to follow PBP
 * Added video/mp4 MIME type to mime_type_of
 * Fixed bug in mime_type_of in extracting mp3 from "foo.bar.mp3"
 * Refactored enclosure detection code to Util. Added ogg to known list by hardcoding
 * bumped up XML::Atom and XML::Liberal requirement
 * tools/chimp-smoker: fixed bug in get_branch
 * Encode::Detect is no more recommended module by default
 * Fixed ConfigLoader bug that it doesn't do rewrite_config correctly (by charsbar)
 
=== Plugins Updates ===

 * Filter::TruePermalink: refactored assets loading code. Store redirection result even if it's empty
 * Fitler::TruePermalink: Don't handle HTTP response body when it checks redirection, to skip huge files like mp3
 * Filter::EntryFullText: refactored assets loading code.
 * Fitler::StripRSSAd: refactored assets loading code. Renamed pattern files to .pat
 * Filter::StripRSSAd: Added slashdot.jp and pheedo.jp handler
 * Publish::Feed: use permalink to set to entry link

== 0.7.9 (2006/08/24) ==

=== Core ===

 * Fixed BaseDirURI logic to allow empty dirname on Mac OSX (Yappo)
 * Added tests to lots of plugins thanks to Testathoners
 * Added Plagger::Walker util class to serialize feed data
 * Merged from hackathon-mt branch. Added Plagger->set_context method
 * Split bootstrap into new() and run() to be used in persisten programs
 * Added $context->search() stub to get Plagger::Feed object from Search::* backends
 * Added bin/plagger-search prototype CLI
 * Added bin/plagger-atom-stream-consumer, very experimental AtomStream consumer
 * Updated Plagger::Template->new() parameter
 * assets_path: can now be localized per plugins using config:assets_path
 * lots of fixes to tests so it can work on Windows
 * decode config.yaml as UTF-8 automatically before run, unless you specify global:no_decode_utf8=1
 * chimps-client: create lock dir to avoid double excecution
 * Split feed parsing logic from Aggregator::Simple to Plagger::FeedParser so plugins can use. 
 * Added $ua->fetch_parse($feed) and $ua->find_parse($url)
 * Fixed misusage of Term::Encoding (Yappo)
 * Support entry level image in RSS 0.91 and 2.0


=== New Plugins ===

 * Publish::JSON: Serialize feed to JSON (miyagawa)
 * Publish::Serializer: Dump feed to various format using Data::Serializer (naoya, miyagawa)
 * Notify::Audio: Play sound files when feed comes. Support playing enclosure files as well (miyagawa, youpy)

=== Plugins Updates ===

 * Publish::Gmail: support APOP authentication in POP before SMTP
 * Filter::Delicious: use Plagger::UA for caching.
 * CustomFeed::Yahoo360JP: removed from the distro since no one is using it and it's broken
 * Widget::Simple: Added lots of widgets (hsbt, jiro, drawnboy)
 * Filter::EntryFullText: Fixed XHTML numeric entities issue when using XPath (spotted by otsune)
 * Filter::2chRSSContent: Strip AD entry
 * CustomFeed::YouTube: fix regexp to get page content (mizzy)
 * Subscription::OPML: Fixed bug where containers are not correctly loaded because of array reference
 * Subscriptoin::OPML: Ditch XML::OPML and rewrite OPML parser using XML::LibXML::SAX
 * Filter::EntryFullText: extract_capture defaults to 'body' (suggested by otsune)
 * Search::Rast: implemented searcher.search API (Yappo)
 * Filter::TruePermalink: Fixed ref=rss YAML. Removed redirectors.yaml and instead introduced 'follow_redirect' config (default: 1)
 * Notify::IRC: use color code scheme to colorize feed title and author (#movabletype)

== 0.7.8 (2006/08/18) ==

=== Core ===

 * More fixes to Chimps client to deal with dependencies
 * Win32 fix to $t::TestPlagger::BaseDirURI
 * Deal with Unicode filenames on Win32
 * DWIM config filter for t::TestPlagger
 * Cookies parser warns if cookie file is not found (reported by otsune)
 * Fix to t/core/cache.t for more time interval (charsbar)
 * More tests to more plugins!
 * Set cache base to File::Temp::tempdir in tests
 * Bump up XML::Feed requirement to 0.12
 * refactored include/recipes handler to Plagger::ConfigLoader so bin/* scripts can use
 * Fixed Aggregator::Simple bug to deal with single MediaRSS element in Flickr feeds
 * Added tools/plugin-start.pl to start a new plugin module
 * test_requires_network() now can take an argument host to test (youpy)
 * Update include_deps in Makefile.PL to include YAML dependencies

=== New Plugins ===

 * UserAgent::RequestHeader: Add arbitary HTTP request header based on URL (miyagawa)
 * Filter::ExtractAuthorName: Extract author name from RFC 2822 address in RSS 2.0 (miyagawa)
 * Widget::Simple: config based simple Widget creator (miyagawa)

=== Plugin Updates ===

 * Publish::CHTML: Insert generated time in HTML (otsune)
 * Filter::BreakEntriesToFeeds: Support rules (suggested by otsune)
 * Search::Estraier: use "estmaster stop". Work with estmaster 1.3.x config files (reported by youpy)
 * Filter::Delicious: scrape big users count (taro)
 * Filter::Thumbnail: Add 'set_per_entry' config

== 0.7.7 (2006/08/10) ==

=== Core ===
 
 * Misc test fixes to work on Win32 (reported by charsbar)
 * use File::HomeDir on Win32 if available rather than $ENV{HOME}
 * Plagger::Date->set_time_zone now doesn't die even if it can't figure out TZ 
 * require HTML::Parser 3.51 to handle nasty HTML entities in tag attributes (reported by mizzy)
 * Fix core/cache.t to sleep a little bit (suggested by charsbar)
 * require XML::Feed 0.11 to handle Atom links without @rel (jwang)
 * Fix to Publish::Feed to emit valid Atom 1.0
 * Fix parsing RSS 2.0 category tags with @domain (reported by typester)
 * Add Plagger::UserAgent hooks
 * Support Atom 1.0 category extraction (reported by jwang)
 * SUpport Atom 1.0 entry date handling without published (reported by jwang)
 
=== New Plugins ===

 * UserAgent::AuthenRequest: Add per-site credentials to Plagger::UserAgent (typester)
 * Filter::GuessLanguage: guess language using Text::Language::Guess and other technique (charsbar)

=== Plugins Updates ===

 * Notify::IRC: move to publish.entry so Rule plugin can work per entry (reported by clkao)
 * EntryFullText: Coule updates to sites (otsune)
 * Filter::Babelfish: use Filter::GuessLanguage (charsbar)
 * CustomFeed::YouTube: HTML layout update (yoshiki)
 * Publish::MT: hack SOAP::Transport::HTTP to use Plagger::UserAgent instead of LWP

== 0.7.6 (2006/08/07) ==

=== Core ===

 * $context->run_hook can now take callbacks to pass result value
 * Use title specified in Subscription (Suggested by John Wang) #344
 * Aggregator::Simple: looks_like_feed handles RSS 1.0 feed more generously
 * CustomFeed::Simple: fixed UUV warnings
 * Now plugin dependencies are defined in separate files in deps/
 * Plagger::Date now supports $date->format( DateTime::Format object )
 * SmartFeed::All: dedupe_entries now respects feed source domain, older date entry and full content feed. #333
 * Publish::Feed: Make sure that generated Atom 1.0 and RSS feeds are valid using feedvalidator

=== New Plugins ===

 * Search::KinoSearch: Use KinoSearch as a search backend (miyagawa)
 * Filter::Babelfish: Use WWW::Babelfish to translate entry content (charsbar)
 * Notify::NetSend: Use NetSend to notify entries (jiro)
 * Publish::Excel: Store feed entries body to .xls spreadsheet (jiro)

=== Plugins Updates ===

 * EntryFullText: Fix YouTube handler.
 * Search::Estraier: Added unit test. Support searcher.search API
 * StripRSSAd: Add namaan.net ad entry stripper
 * Publish::SWF: Added j/k keyboard shortcut (akihito)

== 0.7.5 (2006/07/26) ==

=== Core ===

 * Merge from branches/refactoring-planet
 * Plagger::UserAgent now deals with local files to get their MIME type correct
 * Big refactoring done for $plugin->templatize() usage. #229
 * Start using Test::Base for unit tests and convert most of existent tests to TB based
 * Plagger->bootstrap() now returns $context
 * Added $plugin->load_assets method in a base class 
 * decode $content before feed auto-discovery to avoid HTML::Parser warnings
 * Bump up XML::Feed requirement to 0.09 so it can generate RSS 2.0 with content:encoded. #104
 * remove inc from svn
 * $feed->primary_author to return feed author by invsesting entries authors 

=== New Plugins ===

 * Bundle::Planet: to load bunch of plugins under the table to create Planet site with a few lines of config
 * Filter::StripTagsFromTitle: Strip tags found in title. #289
 * Filter::HTMLScrubber: standalone HTML filter to scrub HTML, merged from feature-server (typester)
 * Publish::FOAFRoll: generate foafroll RDF ala Planet
 
=== Plugin Updates ===

 * Publish::Planet: accept style_url as a list. #316
 * Publish::Planet: Fixed typo in sixapart-std template. #309
 * Publish::Planet: members_list is now deprecated and on by default
 * Publish::Planet: Bye to HTML::Tidy and HTML::Scrubber
 * Publish::Planet: 'skin' config is now renamed to 'theme'
 * Publish::Planet: skip non-http URLs
 * Subscription::Planet: add URL based search. #286
 * Subscription::Planet: language based goruping. #288
 * Bundle::Planet: Add OPML generation support
 * Bundle::Planet: Add FOAFRoll generation support
 * Aggregator::Null: fixed the fatal bug so it works
 * Rule::Fresh: now you can use human readable duraion format like '7 days'. Requires Time::Duration::Parse
 * Publish::Feed: 'full_content' config (defaults to 1) specified whether to publish fullcontent in the feeds
 * Publish::Feed: now generate Atom 1.0 by default if you use XML::Atom >= 0.20
 * Publish::OPML: Now OPML validator compatible

== 0.7.4 (2006/07/24) ==

=== Core ===

 * Support parsing multiple enclosures in RSS 2.0
 * require URI::Fetch 0.071 which is not broken
 * Aggregator::Simple: More Liberal RSS 2.0 detection code
 * Rule::Deduped: Use entry's datetime as a part of key if it's there
 * Purge cache on the global destruction phase of every run. #306
 * Fix Mac dependencies 
 * RSS 2.0 feed will have the 1st enclosure with the URL defined. #325
 * CustomFeed::Simple now resolves relative link before parsing. #325
 * SmartFeed now allows setting 'link' (otsune, Dave Cross)
 * Don't override XML::LibXML with Liberal other than feed parsing. #324, #328
 * plugin_path now can be a scalar
 * Use Term::Encoding to detect terminal encoding automatically if available. #329
 * Updated Encode.pm dependency for callbacks.
 * Filter::EntryFullText now allows to write XPath expression to extract entry body (youpy)
 * Replace 'FOREACH foo IN bar' with 'FOREACH foo = bar' for TT backward compatibility (cmarcelo)

=== New Plugins ===

 * CustomFeed::PerlMonks: Newest nodes on perlmonks (Jeff Bisbee)
 * Publish::LivedoorClip: Post entries to Livedoor Clip (Yappo)
 * Notify::Balloon: Notify updates using BalloonNotify on Win32 (miyagawa) 
 * Publish::PowerPoint: Publish slides off of feeds (charsbar)
 * Publish::SWF: Publish Flash .swf file off of feed entries (akihito)

=== Plugins Updates ===

 * Notify::IRC: better document, ick_taken error handling (Thanks to Jeff Bisbee), update template
 * Notify::IRC: refactored internal code and check IKC on init (Jeff Bisbee)
 * Subscription::LivedoorReader: Better JSON error handling
 * CustomFeed::Debug: Now being able to set datetime
 * Widget::Delicious: Update the post URI to v4. No username needed anymore.
 * Widget::HatenaBookmarkUsersCount: Use image based API if XMLRPC is not enabled (default)
 * Publish::Gmail: use permalink rather then entry.link
 * CustomFeed::AmazonAssociateReportJP: Added ordersReport (otsune)
 * CustomFeed::YouTube: update regular expressions (mizzy)
 * Filter::BreakEntriesToFeeds: Added 'use_entry_title' config

== 0.7.3 (2006/06/22) ==

=== Core ===
 
 * Added Net::SMTP::TLS as a dependency
 * rewrite_config doesn't die if there's permission error
 * rewrite_config escapes regexp meta characters (Reported by s_fujiwara)
 * Don't include t/core in the distro now
 *   

=== New Plugins ===

 * Filter::FetchEnclosure::Curl: download enlcosures using Curl 
 * CustomFeed::MixiDiarySearch: CustomFeed handler for mixi.jp diary search 
 * Rule::Deduped: dedupe entries based on URL
 * CustomFeed::2chSearch: CustomFeed to handle find.2ch.net SERP
 * Notify::Beep: Beep your PC for feed notification using Audio::Beep
 * Subscription::Bookmarks: Extract subscription from Bookmarks of IE, Firefox and Safari (miyagawa, youpy)
 
=== Plugins Updates ===

 * Publish::Gmail: wrap MIME::Lite errors in eval
 * Filter::FindEnclosures: Added yourfilehost.com, Mainichi Interactive and TypePad.com enclosure finder 
 * CustomFeed::Flickr: refactored from scratch and added enclosure support 
 * Filter::FetchEnclosure::ParallelUA: support Cookie sharing
 * Filter::EntryFullText: misc upgrader files (topia, otsune, youpy, drawnboy)
 * Notify::SSTP: added missing template (secondlife)
 * Filter::2chRSSContent: Support id-less boards
 * Publish::Gmail: don't send email when there's no entry #297 
 * Filter::EntryFullText: Added config parameter "force_upgrade"
 * Rule::URLBL: support DNS caching 
 * Filter::TruePermalink: Don't rewrite permalink but link
 * Publish::JavaScript: code tweaks and document updates
 * Filter::EntryFullText: use Last-Modified to populate entry date even if there's no match 
 * Publish::CHTML: don't die if entry body contains non-sjis mappable entities. Change default to cp932
 * Subscription::Planet: Added feedster.jp
 * CustomFeed::Mixi: don't try to get unknown owner_id in RecentComment

== 0.7.2 (2006/06/02) ==

=== Core ===

 * Make Cookies instances Singleton (suggested by Yappo)
 * Calls env_proxy on Plagger::UserAgent so that HTTP_PROXY env variable is respected (woremacx)
 * Add w3m cookie files support
 * Aggregator::Simple globally overrides LibXML parser with Liberal if possible
 * Recommend newest XML::Liberal 0.11 so that liberal XML parsing would take the best effect 
 * $ua->mirror can take $req so that plugins can add custom HTTP headers like Referer. #208
 * Change flv MIME value to video/x-flv
 * Media RSS support in RSS parsers to extract enclosures and thumbnails. #141
 * XML::Feed, XML::Atom, XML::LibXML and XML::RSS::LibXML are now core required modules. #176
 * Support Hatena Fotolife and Apple photocast namespaces for thumbnail extraction. 

=== New Plugins ===

 * Filter::LivedoorKeywordUnlink: strip and normalize links to livedoor keywords (miyagawa)
 * Subscription::File: subscribe to URLs in plain text file (wolverian)
 * Subscription::FOAF: subscribe to friends' weblogs in FOAF:knows (wolverian)
 * Subscription::Feed: subscribe to item links in RSS/Atom Feeds (miyagawa)
 * Filter::FetchEnclosure::Xango: Xango-based asynchronous POE downloader (dmaki)
 * Filter::FetchEnclosure::Wget: use wget command line tool for async download (miyagawa)
 * Filter::FetchEnclosure::ParallelUA: use LWP::Parallel for async download (miyagawa)
  
=== Plugins Updates ===

 * Filter::2chRSSContent: Updated regexp so that it works without milliseconds (miagawa)
 * Filter::FeedBurnerPermalink: Work with Atom 1.0 feed to extract permalink
 * Subscription::Bloglines: Try with mark_read=0, then fallback to loop mode if it failed, to avoid data loss
 * CustomFeed::YouTube: updated regexp for thumbnail servers (fujiwara)
 * Filter::EntryFullText: move the place of hook before date parser to hack date format
 * Filter::BreakEntriesToFeeds: Don't change feed title. #220
 * Filter::FetchEnclosure: Added fake_referer config to add Referer header. 
 * Publish::Gmail: attaches inline img enclosures as multipart/related and replace img src with Content-IDs.
 * Publish::Gmail: attach_enclosures is now optional, defaults to off.
 * Fliter::RSSLiberalDateTime: Fixed bug around minus timezones
 * Filter::EntryFullText: Support icon extraction
 * Filter::EntryFullText: Added NoNetwork option to URI::Fetch so that it's much faster
 * Filter::EntryFullText: thinkit.co.jp and pasonatech.co.jp (otsune)
 * Subscription::Planet: Added new Bloglines feed search 
 * Filter::*Permalink: removed in favor of TruePermalink
 
== 0.7.1 (2006/05/24) ==

=== Core ===

 * Added woremacx, topia and cheebow as AUTHORS
 * Plagger::Cookies and Plagger::Mechanize allows Plagger to share cookies with your browser like Firefox, IE or Safari.

=== New Plugins ===

 * Notify::UpdatePing: notify updates via XMLRPC pings (miyagawa)
 * Notify::Tiarra: notify updates via Tiarra control socket (topia)
 * Publish::PalmDoc: publish updates to PalmDoc (cheebow)
 * Publish::OutlineText: publish updates as outline text (cheebow)

=== Plugins Updates ===

 * Filter::Regexp: now you can use utf-8 regular expressions (woremacx)
 * Widget::Delicious: Support one_click_post to automatically post by clicking (s_nobu)
 * Filter::FindEnclosures: Now it's extensible using meta-plugins. Added youtube.pl as an example. Thanks to mizzy
 * CustomFeed::Simple: deduplicate links by URLs. Don't add links associated with images without alt (miyagawa)
 * Filter::TruePermalink: Added YouTube, MSN Mainichi
 * Publish::MT: Fixed blog_id config bug. #252
 * Subscription::LivedoorReader: Adds ApiKey as a sticky query to their API (suggested by mala)
 * Publish::Gmail: Don't trim lines over 1000 by using quoted-printable.
 * CustomFeed::GoogleNews: now accepts keyword search result page as well
 * Filter::HatenaRSS: Update OPML URL. Uses Cookie sharing framework.
 * CustomFeed::Frepa: Uses Cookie sharing.
 * CustomFeed::Mixi: Uses Cookie sharing.
 * CustomFeed::Yahoo360JP: Uses Cookie sharing.
 * Subscription::LivedoorReader: Uses Cookie sharing.
 * Notify::Campfire: Uses Cookie sharing.

== 0.7.0 (2006/05/17) ==

=== Core ===

 * Shiny new Enclosure support!
 * Dependency for MIME::Types
 * Fix $cache->path_to auto creation bug
 * Allow plugins/Foo/Bar.pm directory strcuture to be backward compatible
 * Added regression and plugins tests suite for the first time


=== New Plugins ===

 * Filter::FetchEnclosure: Download enclosures automatically to local
 * CustomFeed::YouTube: Search YouTube and find enclosures (mizzy)
 * Filter::RewriteEnclosureURL: Rewrite enclosure's URL when you republish downloaded enclosures
 * Filter::POPFile: Use POPFile XMLRPC API to classify feeds (charsbar)
 * Filter::TagsToTitle: Add tags to title as prefixes (charsbar)
 * Filter::FindEnclosures: Automatically discover enclosures in entry content
 * Filter::HEADEnclosureMetadata: Send HEAD requests to enclosures to get Length and correct filename
 * Subscription::XPath: extract subscriptions from XHTML using XPath (youpy)
 * Subscription::PlanetINI: extract subscriptions from Planet's config.ini file

=== Plugins Updates ===

 * Publish::2chdat: Internal fix to use id_safe method
 * Subscription::Bloglines: support enclosures taken from sync API
 * Publish::Gmail: Attach enclosures if they're downloaded locally with FetchEnclosure
 * Filter::TruePermalink: Now supports rewriting enclosure URL as well.
 * Filter::TruePermalink: Support recursive mode and redirector resolution
 * Publish::Feed: Support enclosure creation in RSS 2.0 and Atom feeds
 * Filter::SpamAssassin: Nuked some options (charsbar)
 * Filter::HatenaKeyword: Use title to extract keywords as well
 * Filter::StripRSSAd: Added pheedo.jp pattern. Now can strip entry if it contains certain pattern.
 * 
== 0.6.6 (2006/05/12) ==

=== Core ===

 * Added sites upgrade files (woremacx)
 * Don't truncate newline after password rewrite #200
 * Share $feed object between subscription and update
 * encode detection now uses XML encoding declaration first
 * Unhandled feed is removed from $context->subscription
 * Plagger::Date->parse doesn't force preference timezone if parsed datetime is floating
 * Load plugins from plugins/*/lib #212

=== New Plugins ===
 
 * Filter::HatenaKeywordTag: Use Hatena Keyword API to auto-tag (secondlife)
 * Search::Estraier: Search plugin to use Hyper Estraier Node API (miyagawa)
 * Subscription::XOXO: load subscription from XOXO microformats (miyagawa)
 * Publish::2chdat: Create 2ch subject.txt and *.dat files (miyagawa)
 * Filter::2chRSSContent: Fix rss.s2ch.net feed content (miyagawa)
 * Filter::Markdown: Filter entry body using Markdown syntax (s_nobu) 

=== Plugins Updates ===

 * Notify::IRC: added password config to plagger-ircbot #197
 * Filter::TruePermalink: Updated Y! Blogsearch pattern. Added reedit.com
 * rename Publish::Spotlight to Search::Spotlight #207
 * CustomFeed::Mixi: support "ashiato". Update WWW::Mixi deps
 * Rule::URLBL: now works with $args->{entry} to be used with Filter::Rule
 * Publish::Planet: get members from subscription rather than update #198
 * CustomFeed::BloglinesCitation: Handle local datetime PST #187
 * Filter::EntryFullText: now work with rule

== 0.6.5 (2006/04/28) ==

=== Core ===

 * Aggregator::Simple: Allow bad content-type feeds like text/plain (miyagawa)
 * Aggregator::Simple: Hack nasty Unicode unflagness in Atom feed with XML::Feed (miyagawa, reported by otsune)

=== New Plugins ===

 * Subscription::LivedoorReader: Fetch subscription via LDR (miyagawa)
 * Filter::CompositeFeed: pack all the feeds into entries of single feed (miyagawa)
 * Filter::AtomLinkRelated: Use link rel="related" as a link in Atom feeds (miyagawa)
 
=== Plugins Updates ===
 
 * Filter::TruePermalink: minor updates in refrss (otsune) updated Yahoo! blog redirector (miyagawa)
 * Filter::ResolveRelativeLink: don't die even if there's no link found
 * Subscription::OPML: broken OPML feed support with XML::Liberal (miyagawa)
 * Filter::EntryFullText: Lots of feed upgrade files (manabou, woremacx, kazeburo)
 * Filter::StripRSSAd: support branded feed domain in FeedBurner (miyagawa)
 * Widget::HatenaBookmarkUsersCount: Autoload Filter::HBUC (reported by otsune)
 * CustomFeed::Frepa: defaults to all feed types
 * Publish::Delicious: Fixed interval bug
 
== 0.6.4 (2006/04/19) ==

=== Core ===

 * Fixed MANIFEST to include assets
 * Reorganized assets directory naming. Keep cases of plugin names. #106
 * More feed upgrader files (manabou, youpy)
 * Update XML::RSS::LibXML to avoid non-UTF8 feed breakage (Thanks to dmaki, Reported by manabou)

=== New Plugins ===
 
 * Filter::BloglinesContentNormalize: normalize HTML attributes in Bloglines body (miyagawa)
 * Filter::TruePermalink: Permalink rewriting framework (youpy, miyagawa)

=== Plugins Updates ===

 * Filter::StripRSSAd: now load pattern files from assets directory #179 (miyagawa)
 * Filter::StripRSSAd: Add npr.org valueclick feed ads. Updated Google AdSense pattern
 * CustomFeed::Mixi: Make cache TTL of fetch_body longer to avoid Footprint issue (miyagawa)
 * Subscription::2chThread: Accept multiple thread URLs (youpy)
 * Deprecate NamaanPermalink, 2chRSSPermalink and YahooBlogSearchPermalink in favor of TruePermalink (miyagawa)
 * Subscription::Planet: nuked MSN Search, added Technorati Tag search

== 0.6.3 (2006/04/15) ==

=== Core ===

 * EntryFullText: Fixed bug that date format is not properly decoded as UTF-8
 * requires URI::Fetch 0.06. #168
 * Added various sites upgrader files (miyagawa, s_nobu, ko, mamorou, nTeTs, youpy)
 * Added atode.cc sample in examples directory

=== New Plugins ===

 * Filter::BreakEntriesToFeeds: Break entries in each entry as a feed containing single entry (miyagawa)
 * Filter::2chRSSPermalink: Fix rss.s2ch.net feeds permalink (youpy)
 * Subscription::2chThreadList: Add 2ch threads to Subscription using rss.s2ch.net feeds (youpy)

=== Plugins Updates ===

 * Subscription::Planet: Allow multiple keywords set in config files. Allow non utf-8 URI escape (Suggested by secondlife)
 * CustomFeed::Mixi: Fix newline are not correctly extracted in Messages feed. Fixed first-time access bug without cookies
 * Subscription::Bloglines: Fix atom:id bug when permaLink="false"

== 0.6.2 (2006/04/10) ==

=== Core ===

 * When character set declared is invalid, falls back to auto detection (Reported by typester)
 * Fix Atom feeds handling when there's no content
 * requires URI::Fetch 0.06 which has better redirection support
 * Fixed $plugin->assets_dir bug that it doesn't respect global config (Reported by s_nobu)
 

=== New Plugins ===

 * Filter::HatenaDiaryKeywordUnlink: strip links to Hatena Diary Keywords (miyagawa)
 * CustomFeed::GoogleNews: Create custom feeds off of Google News (miyagawa)
 
=== Plugins Updates ===

 * CustomFeed::Yahoo360JP: Separate blast feed as a different feed (miyagawa)
 * Filter::EntryFullText: Added lots of site upgrade files (miyagawa, typester, s_nobu)
 * CustomFeed::Frepa: Fix buddy icon link to your own comment (miyagawa)
 * Subscription::Bloglines: Fix $entry->permalink bug when atom:id is tag (miyagawa)
 * Subscription::Config: now allows empty list of feeds (miyagawa)


== 0.6.1 (2006/04/03) ==

=== Core ===

 * New Feed Upgrade framework: CustomFeed::Simple and Filter::EntryFullText
 * Supports .pl and .yaml file based site upgrader scripts
 * Plagger::Util has decode_content and extract_title
 * Support metadata in config.yaml
 * Support automatic config rewriting for password fields using Base64 for now
 * New dependencies: Module::Pluggable::Fast and HTML::ResolveLink
 * Uses Encode::Detect and falls back to Encode::Guess to guess charset of HTML
 * New author: typester (Daisuke Murase)
 * Added lots of site upgrade scripts

=== New Plugins ===

 * Filter::YahooBlogSearchPermalink: Fixes permalink redirector of Y! Blog Search (.jp) (miyagawa)

=== Plugins Updates ===

 * WebService::Bloglines: Fix guid stringification bug (typester)
 * CustomFeed::iTunesRecentPlay: Amazon Web Services Integration (mizzy)
 * CustomFeed::Frepa: Fixed blast error logic (secondlife)
 * Subscription::Planet: Added Yahoo! Blog Search, Feedster and BlogPulse



== 0.6.0 (2006/04/02) ==

=== Core ===

 * revamped CustomFeed API 
 * Aggregator::Simple supports RSS/Atom auto-discovery. #20
 * Fixed CustomFeed multiple instances bug. #110 
 * Autoload Aggregator::Simple when no Aggregator is used. #125
 * Added $context->is_loaded($plugin). #125
 * $plugin->log is now supported
 * Uses newly added $plugin->plugin_id method to avoid cache gotcha. #95
 * $plugin->cache->path_to automatically creates sub directories. #118
 * SmartFeed now uses permalink to dedupe entries
 
=== New Plugins ===

 * Filter::FeedFlareStripper: Strip FeedFlare from FeedBurner feeds (miyagawa)
 * Widget::BloglinesSubscription: Link to edit subscription of Bloglines #123 (miyagawa)
 * Subscription::DBI: manage subscriptions using database (Franck Cuny)
 * CustomFeed::SVNLog: Create feeds from subversion log (Michiya Honda)
 * Filter::Profanity: replace profane terms to !%$@# (miyagawa)
 * Filter::Thumbnail: create thumbnail screenshot to use as feed icon (miyagawa)
 * Widget::BulkfeedsSpamReport: Report feed as Splog to Bulkfeeds. #135 (miyagawa) 
 * Filter::NamaanPermalink: extract permalink from redirector URL (miyagawa)
 * Filter::Romanize: uses kakasi to filter content into Roman (miyagawa)
 * Subscription::Planet: Aggregates entries from various RSS search engines (youpy)
 * Subscription::PingServer: Load pinged feeds to ping servers as subscription (ko)
 * Filter::Rule: generic rule based feed trimming (miyagawa)
 * Publish::Takahashi: Published feed entry titles as takahashi.xul file (miyagawa)
 * Filter::EntryFullText: Fetch Full-Text using site handler files (miyagawa)
 * Rule::URLBL: rule used with Aggregator to skip URLBL'ed feeds (ko)
  
=== Plugins Updates ===

 * Filter::StripRSSAd: More Google AdSense patterns, FeedBurner ads, seesaa.jp
 * Filter::FeedBurnerPermalink: Now work with RSS 1.0 feeds. #122
 * CustomFeed::Frepa: Update HTML pattern.
 * Filter::Base: new base class to handle HTML-only filter. #88
 * Publish::Speech: MacOSX impementation supported (Ryo Okamoto)
 * Publish::Planet: don't use HTML::Tidy for now. Fixed templates
 * Aggregator::Xango: Now requires Xango 1.04. Support RSS/Atom auto-discovery
 * Publish::Gmail: overwrite X-Mailer header
 * CustomFeed::Frepa: support FriendStatus and RecentComment (tokuhirom)
 * CustomFeed::Mixi: support Message and RecentComment (tokuhirom)
 * Subscription::Bloglines: Set RSS 2.0 guid as permalink (typester)

== 0.5.7 (2006/03/13) ==

=== Core ===

 * $entry->id tries hard to get unique ID
 * $entry->feed_link to point feed's link
 * Rename define_recipes and recipes

=== New Plugins ===

 * Publish::Maildir: Store updates to local mailbox (s_nobu)
 * Publish::IMAP: Store updates to IMAP mailbox (s_nobu)
 * CustomFeed::Debug: Create feed using config.yaml for debugging (naoya)
 * Filter::Emoticon: filter emoticons of MSN, Yahoo! or Google Talk (naoya)
 
=== Plugin Updates ===

 * Publish::MTWidget: fixed template rebuild bug (Thanks to charsbar)

== 0.5.6 (2006/03/08) ==

=== Core ===

 * New AUTHORS: Yuichi Tateno, Gosuke Miyashita, Casey West, Jesse Vincent, Naoya Ito and Kenichi Ishigaki
 * Make ~/.plagger directory not readable by other users. (Thanks to typester)
 * Better package management and pod tests (obra)
 * config examples/ directory (cwest)
 * Templates and other plugins resource rename (cwest)
 * SmartFeed now has $entry->source to point to source feed (miyagawa)
 * $context->templatize($plugin, $file, $var) conveniene method (miyagawa)
 * Plagger::Date now uses local timezone as a default, when there's no config
 * Added aggregator.aggregate.filter experimental hook for Aggregator::Simple (miyagawa)
 * Implement define_recipes, recipes and includes directive in config for DRY (Yappo, secondlife)
 * $plugin->cache->path_to() to point plugin specifc temp file (miyagawa)
 * Added 'plugin.init' hook (miyagawa)

=== New Plugins ===

 * Notify::SSTP: Notify updates to Sakura Script Transfer Protocol (secondlife)
 * Publish::Playlog: Use Atom Publishing Protocol to post iTunes playlog (mizzy)
 * CustomFeed::iTunesRecentPlay: iTunes' recent playlist as a custom feed (mizzy)
 * SmartFeed::All: All updates as one feed (miyagawa, cwest)
 * Publish::CSV: publish updates as Comma Separated Value format (naoya)
 * Filter::HatenaFormat: filter hatena format (naoya)
 * Publish::MT: publish updates using MT XML-RPC API (naoya)
 * Publish::Planet: Planet-Planet clone in Plagger (cwest)
 * Publish::OPML: publish OPML files based on subscription (miyagawa)
 * CustomFeed::FlickrSearch: Use Flickr API to create custom feeds (cwest)
 * CustomFeed::AmazonAssociateReportJP: Fetch Amazon's associate report (naoya)
 * Filter::ImageInfo: fetch information of $feed->image and $entry->icon (miyagawa)
 * Subscription::HatenaGroup: fetch Hatena Group blogs as subscription (tokuhirom)
 * Filter::BlogPet: Strip BlogPet's post (naoya)
 * Filter::SpamAssassin: Use SpamAssassin to strip spam posts (charsbar)
 * Filter::RSSLiberalDateTime: parses pubDate sring liberally (miyagawa)

=== Plugins Updates ===

 * Aggregator::Xango: Added conditional GET support #93 (Daisuke)
 * CustomFeed::Mixi: Support links to deleted entry #96 (miyagawa)
 * Aggregator::Simple: Fixed error handling bug when URL is 404 #97 (miyagawa)
 * CustomFeed::POP3: Create one feed per one mail (tokuhirom)
 * Publish::Gmail: Fixed bad MAIL FROM: when used with Sendmail (Thanks to maru.gs)
 * Subscription::Config: Support array of just URLs (miyagawa)
 * Publish::PSP: template typo fix in permalink (miyagawa)
 * Rule::Fresh: no datetime field means it's fresh (miyagawa)
 * Subscription::Bloglines: Liberal parser support. Fallbacks to loop mode when it still finds error (miyagawa
)
 * Aggregator::Simple: uses XML::RSS::Liberal if it's installed (miyagawa)
 * Publish::Gmail: resizes feed and entry images when it's too big (miyagawa)
 * Filter::StripRssAd: Support Pheedo ads pattern (miyagawa)
 * Rule::Fresh: Handle empty dates better (cwest)
 * Aggregator::Simple: handle Atom 1.0 date fields (miyagawa, cwest)
 * Widget::HatenaBookmarkUsersCount: Support '#' in the URL (otsune)
 * CustomFeed::Frepa: Fixed to support Frepa's new HTML (miyagawa)

== 0.5.5 (2006/03/03) ==

=== Core ===

 * Added --version and shorter -c & -v to plagger script
 * $entry->body_text now decode HTML entities correctly. #82
 * New Plagger::Cache framework, accessible via $plugin->cache
 * Added cookie_jar method to cache. $plugin->cache->cookie_jar
 * config.yaml is now found using FindBin, rather than the current directory (Naoya Ito)
 * New AUTHORS: Yoshiki Kurihara, Fumiaki Yoshimatsu, Masafumi Otsune, Takeshi Nagayama and fuba

=== New Plugins ===

 * Filter::HatenaDiaryKeywordLink: Automatically link Hatena Diary Keywords in entry body (tokuhirom)
 * Publish::Feed: Output Atom and RSS feeds using XML::Feed (clouder)
 * Filter::ResolveRelativeLink: Fix relative links in entry body (miyagawa)
 * CustomFeed::Yahoo360JP: Login to Yahoo! 360 Japan and fetch blogs and blasts (miyagawa)
 * Filter::BulkfeedsTerms: Use Bulkfeeds API to fetch specific terms in entry (miyagawa)
 * Filter::2chNewsokuTitle: Add prefix and postfix to entry title ala 2ch.net Newsoku style (miyagawa)
 * Notify::Eject: eject your CD drive to notify feed updates! :-) (Yappo, fumiakiy, otsune)
 * Publish::Pipe: use UNIX pipe to notify the updates to commands (e.g: lpr, /usr/bin/say) (youpy)
 * Notify::Campfire: Notify feed updates to 37 signals' Campfire chat service (nagayama)
 * Filter::Regexp: Update entry body by a regular expression in config (miyagawa)
 * Publish::HatenaBookmark: post updates to Hatena Bookmark using Atom Protocol (fuba)
 * CustomFeed::POP3: Fetch email using POP3 protocl and creates feed off of it (tokuhirom)
 * Filter::RSSTimeZoneString: Fix RSS 2.0 bad timezone string in RFC 822 date format (miyagawa)
 * Filter::FloatingDateTime: Fix floating datetime (dc:date and such) to your local timezone (kazeburo)

=== Plugins Updates ===

 * Publish::Delicious: fix UTF-8 escape bug.
 * Subscription::Bloglines: Added 'fetch_meta' option to fetch folder structure and feed URL
 * Subscription::Bloglines: Fix annoying UTF-8 bad sequences by upgrading to WebService::Bloglines 0.10
 * Filter::TTP: Added 'text_only' option to filter text element only in HTML. #76
 * Fitler::StripRSSAd: Now it works with Bloglines subscription. Added Google AdSense pattern.
 * Publish::IRC, Publish::MSAgent and Publish::Growl are now renamed to Notify::*
 * Publish::Gmail: fixed typo in "Permalink" footer
 * CustomFeed::Mixi, CustomFeed::Frepa now uses Cache framework to store persistent cookies
 * CustomFeed::Frepa: support PNG buddyicon
 * Publish::Gmail: do POP before SMTP authentication only once per whole publish
 * Subscription::OPML and Aggregator::Simple now use URI::Fetch and Cache framework for conditional GET

== 0.5.4 (2006/02/27) ==

=== Core ===

 * Makefile.PL has a much better dependencies definition #59 (Thanks to Daisuke Maki)
 * Fixed multiple categories handling bug in Aggregator::Simple (Thanks to koyachi)
 * Added body_text, title_text convinience methods to Feed and Entry
 * Now uses FindBin module to find templates directory in a better way (youpy)
 * New authors: Daisuke Maki, Tokuhiro Matsuno and Tsutomu Koyachi

=== New Plugins ===

 * Aggregator::Xango - POE based high-speed parallel crawling (daisuke)
 * Publish::PDF - Create PDF files based on feeds (miyagawa)
 * Publish::Speech - Make the feeds as an audio using Text-to-Speech (miyagawa)
 * Publish::MSAgent - Let Microsoft Agent speak feeds content (miyagawa)
 * Publish::Growl - Send feed notifications to Mac OSX Growl (kazeburo)
 * Filter::tDiaryComment - strip comments from tDiary RSS (tokuhirom)
 * Filter::TTP - replace ttp: with http: (tokuhirom)
 * Filter::DeliciousFeedTags - split del.icio.us "foo bar baz" tags into array (miyagawa)
 * Publish::Delicious - post entries to del.icio.us automatically (koyachi)

=== Plugins Updates ===

 * Publish::Spotlight: Now it fallbacks to osascript when Mac::Glue is not installed
 * Publish::MTWidget: Added an option to rebuild the blog templates after updating widgets
 * Publish::Gmail: Added an option to support POP3 before SMTP (tokuhirom)

== 0.5.3 (2006/02/25) ==

=== Core ===

 * Added aggregator.finalize, publish.entry and publish.init hook
 * Added Plagger::Rule::Fresh to match with 'fresh' entries (thanks to youpy)
 * Fixed bug with SmartFeed creating duplicated entries #61
 * Support log:level global configuration flag to set min loglevel

=== Plugins ===

 * Added Publish::Spotlight to create WebBookmark searchable with Spotlight (youpy)
 * Added Search::Namazu to create HTML files searchable with Namazu (miyagawa)
 * Added Search::Rast to index entries with Rast (Yappo)
 * Added Publish::MTWidget to publish Movable Type Sidebar Manager widget (miyagawa)
 * Added an option 'show_icon: 1', to show users pic in Frepa and Mixi custom feeds
 * Fixed Subscription::Mailman to handle subject prefixes without index
 * Publish::IRC now has 'announce: action' option to use CTCP ACTION rather than NOTICE
 * Filter::StripRSSAd now strips Rakuten Hiroba (plaza.rakuten.co.jp) ad pattern
 * Fixed CustomFeed::Frepa to complete the trimmed title under fetch_body mode
 * Fixed typo in Subscription::HatenaRSS

== 0.5.2 (2006/02/22) ==

 * Added Subscription::HatenaRSS plugin to fetch subscription from Hatena RSS (http://r.hatena.ne.jp/)
 * Added Subscription::Odeo plugin to fetch subscription from Odeo (http://www.odeo.com/): #43
 * Added Publish::IRC plugin to notify updates to IRC channel: #46 (Masayoshi Sekimura)
 * Fixed critical bug that Rule::Expression is broken: #51
 * Fixed Mailman CustomFeed bug around English localization: #49
 * Added Filter::RSSStripAd plugin to strip ads of Google AdSense or RssAd.jp: #33

== 0.5.1 (2006/02/17) ==

 * Updated package name from "plagger" to "Plagger"
 * Fixed MANIFEST problem that doesn't contain "config.yaml.sample"

== 0.5.0 (2006/02/17) ==

 * First release