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