The latest, HTML version of this document is always available at http://plagger.org/trac.cgi/wiki/PlaggerChangeLog== 0.7.17 (2006/12/04) ===== Core === * Summary::Simple: Fix HTML extraction so it respect attributes (nikc) * Force stringify ID in safe_id * Namespace::MediaRSS: Try mrss namespace with and without the trailing slash=== New Plugins === * Filter::HTMLTidy: use HTML::Tidy to scrub HTML document=== Plugins Updates === * CustomFeed::Debug: reuse feed object to work with SmartFeed * Publish::Planet: update template to use Plagger::Text * Filter::EntryFullText: grab TITLE from HTML if there's no title set * CustomFeed::Simple: make URLs extracted with XPath absolute * Subscription::HatenaGroup: use Plagger::FeedParser rather than XML::Feed * CustomFeed::YouTube: update regexp (mizzy) * Subscription::LivedoorReader: don't use strip_html * Publish::Excel: don't use strip_html * CustomFeed::Simple: don't set title if it's already set in Subscription (typester) * Publish::Feed: added taguri_base config * Bundle::Planet: pass URI domain to taguri_base * Filter::DegradeYouTube: update regexp * CustomFeed::Mailman: updated regexp to work with wrapped subject * Publish::Gmail: added timeout config for mailroute when used with SMTP-TLS== 0.7.16 (2006/11/26) ===== Core === * Plagger::Date->parse_dwim now supports Japanese date format * $plugin->load_assets ignore .svn directory by default * update DateTime and DateTime::Locale dependencies=== New Plugins === * Summary::Japanese: Summary generator using Lingua::JA::Summarize::Japanese::Extract (miyagawa, ko) * Summary::AppleScript: Summary generator using MacOSX summary service (otsune) * Filter::DegradeYoutube: degrade YouTube embed video HTML (tokuhirom)=== Plugins Updates === * Filter::EntryFullText: Update patterns for Slashdot.jp, pmachine * Filter::TruePermalink: added ?fr=rdf (otsune) * CustomFeed::POP3: Made it more liberal to parse Date: header * Filter::Babelfish: Fixed bug around Plagger::Text * Filter::HatenaDiaryKeywordUnlink: Support annonymous diary (kentaro) * CustomFeed::Mixi: reworked regular expression to work with site updates. Now image links are added to enlcousres * CustomFeed::Debug: Allow "entries" key. Auto set type on enclosures if not set. * Filter::EntryFullText: support Japanese date format per Plagger::Date updates * Subscription::Bloglines: 'dont_use_notifier_api' to work around Notifer API bug * Fitler::2chRSSContent: work around with s2ch.net URL changes * Notify::IRC: Update defaulte templates colors (typester) * CustomFeed::Mixi: bumped WWW::Mixi deps * CustomFeed::MixiDiarySearch: HTML updates * Filter::EntryFullText: XPath support now works with non-Node element (nikc) * Publish::Feed: fixed bugs that it emits empty category tags and nobody author elemen== 0.7.15 (2006/11/01) ===== Core === * bump up Encode::Detect dependency so it's easier to install === New Plugins === * Summary::GetSen: Use GetSen web service to get summary=== Plugins Updates === * CustomFeed::YouTube: Update queries unencoded in YAML (mizzy) * Summary::Simple: Get the first sentence if it's plain text * Filter::StripRSSAd: support pheedo variant ads, RSScache.com * Publish::Gmail: now allows non-UTF8 encoding by setting 'encoding' * CustomFeed::Mixi: Updated regular expression to keep up with the site updates * Publish::Maildir: fixed enclosure bugs * Filter::Markdown: fixed configuration pass bug * Filter::GuessTimeZoneByDomain: bump up DateTime::TimeZone requirement * Publish::Gmail: don't die if enclosure URL is not found and thus not saved in the local * CustomFeed::Script: added SSL expire example code * Subscriptoin::Planet: Update Google Blog search to use Japanese version * Filter::EntryFullText: show debug message if YAML mandatory key is not found * Publish::Feed: fixed a critical bug that the content is always b64 encoded== 0.7.14 (2006/10/17) ===== Core === * include YAML::Loader in inc * Introduced new spell typo checker Test::Spelling * Merged hackathon-summary for a pluggable summary generation * Added Plagger::Text object for title, author, entry, summary and body * Better html2text function using HTML::TreeBuilder and (optional) HTML::FormatText * Plagger::Date parse* method now doesn't set Timezones by default * Move namespecific parsing logic into Namespace::* plugins=== New Plugins === * Summary::Auto: Auto-extract summaries * Summary::Simple: Default summary extractor using regular expression * Summary::English: Wrapper for Lingua::EN::Summarize * Summary::HatenaBookmark: Extract summary using Hatena Bookmark * Summary::TextOriginal: Wrapper for Text::Original * Summary::TrackbackRDF: Extract summary from Trackback RDF data * Filter::GuessTimeZoneByDomain: guess timezones of entry using URL domains * Filter::ForceTimeZone: force timezone regardless of they're UTC/Olson/Floating * Namespace::HatenaFotolife: Hatena fotolife module handler * Namespace::ApplePhotocast: Apple Photocast module handler * Namespace::MediaRSS: Media RSS module handler * Bundle::Defaults: Default plugins loader * Filter::Kansai: Converts Japanese text body to Kansai Dialect=== Plugins Updates === * Notify::UpdatePing: support weblogUpdates.extendedPing #419 * Notify::OpenBrowser: support FreeBSD * Filter::EntryFullText: fixed bad regular expressons in stage6 * CustomFeed::Script: load YAML output as Unicode * Publish::iCal: better Timezone handling. requires DateTime::Format::ICal * Filter::FloatingDateTime: use config 'timezone' if set * CustomFeed::Mixi: support my diary and calendar (otsune) * Filter::HatenaBookmarkUsersCount: Iterate links so that it support 50+ URLs * == 0.7.13 (2006/10/09) ===== Core === * Example of Kwalify schema file in examples/schema.yaml * Dumpes template path in Plagger::Template for debug-aid=== New Plugins === * Filter::LivedoorClipUsersCount: get livedoor Clip users count via API (otsune) * CustomFeed::Script: Call script via shell to get the feed as RSS/Atom or YAML (miyagawa) * Publish::iCal: Simple Feed to iCal generator (miyagawa, kentaro) * Notify::OpenBrowser: Open updated entries in a browser, cross-platform. (kazeburo, miyagawa, youpy)=== Plugins Updates === * Publish::CHTML: workaround for symlinks in Win32 (charsbar) * Publish::2chdat: Fixed typo and added escape for <> in the content * CustomFeed::AmazonAssociateReportJP: Fixed follow_link (otsune) * Notify::UpdatePing: Wrap ping sending code to trap errors (otsune) * Publish::MT: fixed POD * Publish::Palmdoc: Fixed UTF-8 error on feed title (cheebow) * Subscription::PingServer: Fixed unused dependency * Filter::FindEnclosures: Added stage6 and dailymotion assets (taro) * CustomFeed::Frepa: Updated regular expression to deal with site updates (nipotan) * Publish::PDF: Added 'html.tt' template which was missing * Publish::PDF: now accepts 'filename' as a parameter== 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::#"/">