1############################################################################### 2# AmphetaDesk::AmphetaDesk (c) 2000-2002 Disobey # 3# CHANGELOG http://www.disobey.com/amphetadesk/ # 4############################################################################### 5 6 70.94 (released ) 8 9 100.93.1 (released October 31st, 2002) 11 - swapped out quasi's "$toencode = ~s/([^a-zA-Z0-9_\-.])/uc 12 sprintf("%%%02x",ord($1))/eg;" for URI::Escape's "$toencode = 13 uri_escape($toencode, "^a-zA-Z0-9_.-");". this performs the 14 same thing, but is crossplatform for MacPerl/MacOS. 15 - an rss feed's email is now saved in the channel opml. 16 - subscription data for a channel is now updated after each parse. 17 - if using the default settings, immediately save a mySettings.xml. fixes 18 a dumb minor (out of date?) bug where I had to pre-instruct people to "Save 19 My Settings" before they could follow mySettings.xml hacking instructions. 20 - we now save our channels and settings before shutting down. 21 - added frontends to start_radio_webserver and http_referer. 22 - awesome: mac classic version is working correctly (thanks Axel!). 23 - awesome: win95 version is working correctly (requires seperate download). 24 - bugfix: the Win32 gui now correctly maximizes the window when opening 25 from the systray, and we've moved it over to a doubleclick not a single. 26 - bugfix: if we have matching filenames, we now randomize to four places 27 not just two. this solves a rare circumstance where someone could 28 subscribe to 99 or more Moreover feeds - it's now 9999 (thanks, Kearney) 29 - feature: support for Radio Userland coffee mug icons. off by default. 30 - featurette: implemented geomisk's old "tidy_house" routine as 31 MyChannels::remove_old_channel_files. thanks again, geomisk. 32 - bugfix: we weren't correctly defaulting to "index.html" on a 33 directory webserver request within Win32 (we forgot \\ in our regexp). 34 - removed the following code: $SIG{PIPE} = 'IGNORE' unless $^O =~ /Mac/; 35 - we no longer @EXPORT head() from AmphetaDesk::AmphetaDesk::WWW. the explanation 36 is one of fickleness, but it comes down to removing a warning 37 about redefining CGI.pm's head(). This shouldn't be that much 38 of a problem anyways since head() was ONLY used within WWW.pm, 39 and people can still suck it in with "use AmphetaDesk::AmphetaDesk::WWW qw/head/" 40 if they absolutely need to. chalk this one up to my analness. 41 - moved webserver code from amphetadesk.pm to webserver.pm. 42 - removed the following code: BEGIN { $SIG{'__WARN__'} = sub { 43 warn $_[0] unless (caller())[0] =~ /Win/; } }. This was being used 44 to stop copious Win32::GUI warnings. These have been fixed in the 45 latest Win32::GUI download. Thanks Aldo Capini! 46 - templates: the index.html, my_channels.html, and add_a_channel.html 47 were changed over to a new to_browser/send_to_browser system that 48 cuts out the zillions of concat's we were doing before. since perl 49 handles joining arrays better than concating strings, this should 50 increase speed of those pages, plus reduce memory usage. small template 51 things (like the headers, the popup, the settings page, etc.) send 52 directly to $OUT as usual, since the array gains would be infintesimal. 53 - bugfix: added 'use lib' to wrapper script for explicit inclusion into 54 the Win32 version (stupid perl2exe, argh). Thanks, deus_ex. 55 - featurette: added ReuseAddr to our HTTP::Daemon for address uh, reuse. 56 - moved the template parsing code into the new AmphetaDesk::AmphetaDesk::Templates. 57 - featurette: support for <content:encoded> from mod_content. 58 - docs: kudos moved from news page to its own, and was updated. 59 - bugfix: removed our ugly img onClick hack, and replaced it with a 60 proper a/href, with "return false" set on the js for non-js browsers. 61 - bugfix: importing feeds no longer clobbers existing attributes if 62 the feed already exists (we append imported attributes to existing entries). 63 - bugfix: we no longer crash on feeds that have more than one <channel>. 64 - docs: lots of changes to the finding_more.html page, including adding 65 a stronger bookmark, fixing the broken FoRK example, warning about 66 Sherch's age, and adding new entries: RacingNewsOnline.com, NWFusion.com, 67 Mail-Archive.com, Daypop.com, fyuze.com, Snewp.com, and Yahoo Finance. 68 - docs: add kudos.html to move it off the news page. 69 - featurette: now supports authenticated proxies (Ian Dash and others). 70 - bugfix: we handle the rss 2.0 "id" attributes on item (AmphetaDesk::XML::Simple 71 turns id's automatically into another tree level), and also no longer 72 die if there is only one item in a channel (Jeremy Zawodny). 73 - code shui: removed a level of indentation in our AmphetaDesk::AmphetaDesk.pm 74 by "next unless defined $connection" instead of "if ()". 75 - bugfix: under win32, we set our "already clicked" menu item checker 76 for "Open Browser" immediately, as opposed to after the browser has 77 been opened. this fixes a race condition where an impatient user 78 could request to "Open Browser" before the first one finishes. 79 - bugfix: amphetadesk now spits out http headers (thanks Dave Beckett). 80 - featurette: png images may now be displayed. 81 - security fix: you can now choose whether to allow AmphetaDesk::AmphetaDesk 82 to accept outside (nonlocal) connections. This is determined 83 by a new user_allow_nonlocal_conn setting, and defaults to "no". 84 - security fix: URLs are now checked for funny business. 85 - converted some more date instances to HTTP::Date. 86 - bugfix: we no longer die on a myChannels.opml with only one channel. 87 - bugfix: 404 pages no longer divulge the full path on the HD (Eric). 88 - updated the README.txt to suggest expat 1.95.3 instead of .2. 89 - bugfix/win32: worked around segfault concerning UTF-8 BOMs. 90 - bugfix/os x: updated to expat 1.95.3 to fix UTF-8 BOM segfault. 91 - bugfix: our shutdown() to the webserver wasn't formatted correctly. 92 - bugfix: fixed "Argument "" isn't numeric in bitwise or" error on 93 line 53 of the Mac OS X gui. $flags was '', but now starts out as 0. 94 - bugfix: we don't echo that we're loading the OPML file twice anymore. 95 - bugfix: os x wrapper comments no longer echo if we run from the shell. 96 - bugfix: the AmphetaDesk::AmphetaDesk.log was opened in ~ and not the install dir. 97 98 990.93 (released June 13th, 2002) 100 - updated to the latest AmphetaDesk::XML::Simple and AmphetaDesk::Text::Template. 101 - documentation updates. lots. still more to do. 102 - all images changed over to the new set done by Eric Vitiello. Rock. 103 - fixed minor bug where invalid scriptingNews would say there 104 were no parsable items as opposed to an xml parsing error. 105 - to prevent our popup delete window from bring the view back to the 106 top of the page, we moved the onClick to the image itself, and used a 107 cursor style to duplicate the UI element. see for crossplatform notes: 108 http://developer.netscape.com/evangelism/docs/articles/cursor/ 109 - added email icons to the headers of the templates. 110 - tweaked the index.html template a bit to prevent runaway <pre> 111 tags, and to make the entire page load faster (thanks redmonk). 112 - lots of Classic Mac fixes here and there. 113 - added toplevel README.txt's for the subdirectories. 114 - added encode_to_dec into AmphetaDesk::AmphetaDesk::Utilities, which fixes the 115 issue of del_urls not working properly when the channels URL 116 has it's own query string (their query string was being read as ours). 117 - proxy configuration via mySettings.xml has been added. 118 - final round of alpha testing begins. 119 - quickie drop in of environment proxy code (thanks Klaus). 120 - Compress::Zlib added to AmphetaDesk::AmphetaDesk.pl. Preparation for v0.94. 121 - the channel_count is now spit out into the log so much. 122 - moved special globals from "vars" to "my" instead. 123 "vars" is deprecated for 5.6.0+, but we're not 124 going to "our" since we want perl 5.004 compat. 125 - moved all our stupid date code in MyChannels.pm to use 126 the matching functions from HTTP::Date. Much nicer. 127 - Radio Userland, AmphetaDesk::AmphetaDesk, and similar OPML files can now be 128 imported from a URL via "add_url". Since these files can be 129 HuuUGe, we don't download the channels at the time of the 130 import, but rather on the next restarting of AmphetaDesk::AmphetaDesk. 131 - Radio Userland mySubscriptions.opml imports are now possible, 132 assuming you rename to myChannels.opml and stick in data/. 133 - added "user_channels_check_interval" which AmphetaDesk::AmphetaDesk will use 134 to repetitively check for new channels every X minutes. The minimum 135 setting (which can not be changed) is 2 minutes. 136 - added an email/envelope graphic to the templates page, which 137 will only show if we can figure out an email from the feed. 138 - CDATA'd rdf:values from RSS 1.0's mod_content are now shown. 139 - scriptingNews support has been added back in, same data structure. 140 141 to figure out where we are in the file system, making relative 142 directories much safer to use. this fixes a bug where AmphetaDesk::AmphetaDesk 143 could be installed in /usr/bin, but would break if a user tried 144 it from the /tmp directory (since the relative paths would be 145 to /tmp and not /usr/bin). This was really only an issue on Linux. 146 - default template has moved to templates/default, and gui/ has moved to 147 templates/default/gui, allowing future support for template subdirs. 148 also did some quick edits in Settings.pm to support the new subdir. 149 - strip_newlines_and_tabs data in myChannels.opml. 150 - cleaned up some uninit warnings in strip_newlines_and_tabs. 151 - the my_settings.html now works correctly. 152 - if a channel has no items to display, then we show an error in the HTML. 153 - second round of alpha testing has begun. 154 - added popup window for deleting off the main page, thanks to eric. 155 - errors in the RSS feed are now passed to the template for display. 156 - switched over to http::daemon and cgi.pm as opposed to homebrew. 157 - template system has been made more generic, and there are now 158 no "special" template names, like add_a_channel.html or my_channels.html. 159 "index.html" is, however, required if you want auto-directory serving. 160 - fixed up the various GUI libraries. 161 - get_response and set_response have been added to ::Utilities, 162 which are quickie routines to set messages to be displayed 163 in the HTML pages. The header template has also been updated 164 to show these messages if they exist. Once their shown, they're 165 permanently removed until the next set_response is triggered. 166 - we no longer need the "id" attribute in our OPML, as we've 167 moved to using the xmlurl as the unique id (a safer choice). 168 - ?del is now ?del_url to more closely match ?add_url. 169 likewise, a ?del_urls now exists as well to match ?add_urls. 170 - if get_my_channels_data isn't passed a $setting to retrieve, 171 then it will return a hash ref of all settings. this allows the 172 templates to be slimmer (less calls to that routine). 173 - updated README.txt to be remotely applicable. 174 - stopped Win32 DoEvents from logging thousands of warnings. 175 - first round of alpha testing has begun. 176 177 - split the template pages into header/footers. 178 - added "title" attributes to most of the template pages. 179 - fixed the UserAgent string so it's more in line with others. 180 - added "last modified" and "added" dates to my_channels.html 181 - more good code from eric, which involves checking for duplicate 182 filenames and URLs, as well as fixing a moreover title bug that 183 caused duplicate filenames to be a regular issue. 184 - eric vitello jumps on as a developer. contributes good code to 185 getting MyChannels.pm up to snuff. this has now been moved over to 186 AmphetaDesk::Text::Template and is much smarter code. Usability wise, people now 187 "check" to delete the item, instead of unchecking. The opposite of 188 what existed before, but makes a bit more sense (the old way only 189 existed like that because of lazy programming). 190 - we no longer consult the filesystem for the last time a channel 191 has been downloaded (we now consult date_downloaded, which is a 192 new attribute in our myChannels.opml file) mirror() still checks 193 against the filesystem, but that's normal / intentional. 194 - "request_timeout" added a setting, and "strict_xml" removed. 195 - added {app}->{os}, which gets spitout in the logfile. 196 - we no longer need to ship a mySettings.xml file, as one is 197 created at runtime if none can be found. this helps upgrades too 198 as we will no longer have to worry about overwriting. this has 199 also been addressed with myChannels.opml. 200 - we now use File::Spec to figure out paths, not $dlmtr; 201 - our logfile is now opened FIRST. the logfile location has 202 changed to the root directory for ease of finding and sending. 203 logfiles are now kept around until they're over 250k. 204 - error() is now just a wrapper around note() since we can 205 be pretty sure that the logfile is opened correctly. 206 - modularization has begun. 207 208 - modified the URLs so that they are relative, making it easier for 209 AmphetaDesk::AmphetaDesk to be used over a network (previously links referred 210 back to the user's local machine, not necessarily the Ampheta box). 211 - when minimizing the window on Win32, it now goes directly to the 212 Systray, as opposed to going to the taskbar, and doing weird stuff. 213 - fixed bug where the channel count wouldn't be updated after a 214 modification of the user's myChannels.opml. the counting should 215 probably move into the actual create routine. 216 - installed INTerrupt handler so that users who Ctrl-C in a Linux 217 or OSX terminal will have the webserver shut down properly. 218 - added Simon's Kittle code to stop Linux from crashing on add channel. 219 - fixed bug that would cause the myChannels.opml to be erased if 220 bad GET based data was passed off to it. its still affected by POST. 221 - the socket read timeout error is much more userfriendly now. 222 - README.txt updated with upgrade notes and Linux install walkthrough. 223 - added a number of user quotes to the docs/news.htm page, and 224 included a quick little blurb about them on the docs/index.htm. 225 likewise, reworded some of the docs/index.htm options to be less scary. 226 - we've changed how we handle CDATA sections. previously, we would 227 remove any CDATA tags when "fix XML" was turned on. now, we leave 228 them alone, but add a conditional to not encode links if we see 229 a CDATA in the feed (previously, we "fixed" links that were not 230 properly encoded - this caused problems with CDATA sections, 231 where the links could be unencoded). this does not effect 232 any <strict_xml> parsing (thanks Steve Yost). 233 - old versions added to docs/index.htm. 234 - added README.txt as "Installation" notes to docs/index.htm. 235 - added OS X note concerning "which version?" to docs/index.htm. 236 - added "shared libs" and "README.txt" docs/to files_and_dirs.htm. 237 - the screenshots.htm now loads the ss- images from disobey.com. 238 this is so we don't have to ship them in the archive files, as 239 they were taking up an awful lot of space. 240 - a simple docs/README.txt file has been added. 241 - original Artistic License replaced with NcFTP revision. 242 - build instructions (docs/build.htm) have been added. 243 244 2450.92 (released October 5th, 2001) 246 - sigh. Mac GUI has been put on hold again. show stopping bug. 247 - some more Mac GUI fixes. it doesn't scale very well though (at 248 120 channels, which is my selection, it slows to a insane crawl). 249 - went through the TODO and move a bunch of stuff to "after 1.0" so 250 that we can hurry up and get a flippin' release out. 251 - removed spitout of http headers and how they were parsed. 252 - fixed bug where files name like picture$2312 (a common Manilla 253 construct) would cause us to die if they were used in a relative 254 link and not as an absolute. 255 - fixed "broken pipe" program killer that happened when we tried to 256 read from an image file that didn't exist locally (caused due to 257 relative links within an rss feed). 258 - fixed some core problems with how we handle entity encoding. now, 259 we only encode entities if the channel has failed an initial parse 260 using AmphetaDesk::XML::Simple. This allows unencoded entities from US-ASCII 261 types to be properly shown in AmphetaDesk::AmphetaDesk (thanks again to 262 Karl Ove Hufthammer for being the pesky foreign user and making 263 sure we get this crap right). we do, however, encode some 264 entities that are common when people are using the 'windows' 265 encoding. 266 - fixed a problem with <title>'s having an attribute (for example 267 xml:lang="eng"), which would cause the <title> tag to not display. 268 now, if we find something similar, we check a bit deeper and 269 try to rectify the situation. we only do this for title, and not 270 description (description gets far too fun with possible attributes, 271 possible unencoded HTML, etc). Thanks again to the ever observant 272 Karl Ove Hufthammer. 273 - added a "strict_xml" configuration setting. turning this setting 274 on (via manual editting of mySettings.xml) will cause AmphetaDesk::AmphetaDesk 275 to not try ANY fixing of common problems with XML feeds. basically, 276 we sent the feed unchanged to the parser and hope the user got it 277 right. this is more conducive to "if the XML is wrong, then the 278 parser should not display" ideal. 279 - after going through all of the logfiles that people have sent, we've 280 fixed a number of minor errors: <br>'s are now converted to <br /> 281 because it's simple to do; ´'s are now converted to apostraphes 282 (search for ´ in the code if you want more info); Happily enough, 283 most of the display errors in v0.91 have been fixed with the change 284 in parsing of this version. 285 - the webserver will now try to jump onto three ports before dying. 286 these are all configurable, of course, and the doc's have been updated. 287 there was a change in logic - {urls}->{port} includes the currently 288 chosen and running port of AmphetaDesk::AmphetaDesk. likewise, the new {port_default}, 289 {port_secondary} and {port_tertiary} point to the three possible 290 port choices. 291 - fixed some comment in the various OS libraries. 292 - we now correctly close the logfile and webserver before exiting. 293 - fixed silly != / ne bug in Linux.pl. 294 - fixed an infinite loop when an http server redirects us repeatedly. 295 - in channel display, we no longer show blank entries or HASH(ddddd) 296 entries (which can manifest because of unencoded HTML). 297 - warnings / notes improved upon. most user logging has been configured 298 to spit out the program name and to report the error to the program's 299 email address. other warnings and so forth have been tightened as well. 300 - drastically reduced the amount of "quit AmphetaDesk::AmphetaDesk" error messages - 301 instead, we try to continue on with limited functionality. now, we only 302 die if one of required files or directories can not be found, if we 303 can't load the myChannels.opml, and if we couldn't start the webserver. 304 We no longer quit when the myChannels.opml file can't be saved, 305 when we can't load the channel list, when a valid URL wasn't passed, 306 or when we can't find a template file (as any file that is not 307 defined internally could become a template file, such as relative 308 links within an RSS file, etc.). 309 - Error messages now come with more verbiage containing a possible 310 solution. All admonish the user to report the error to {app}->{email} 311 when the problem is more than just a file missing (reinstall, bucko!). 312 - fixed line feed issues in our log files on the Mac. 313 - added "letter_next" and "letter_prev" for use within the 314 "add a channel" page. this allows quicker browsing than having 315 to hunt and peck the right letter and screw up. 316 - cleaned up some bad error messages in the "add unknown channel" 317 code, as well as added a log message to the GUI window when 318 the channel was successfully added. 319 - the title column of the "add a channel" and "my channels" 320 pages has been set to 200 pixels to prevent annoying resizing. 321 - new html-in-rss parser has been added, which listens only to 322 encoded HTML tags (i sincerely doubt we'll ever support unencoded 323 HTML, cos that's just so anti-RSS that it drives me nuts). 324 - show stopping entries like <xml> and <title> are now fixed. 325 - all links now listen to the users target= preference. 326 - added &gui_after_html_display, necessary for the Macintosh GUI; 327 stubs have been added to the Windows and Linux GUI libraries. 328 - added "Tools" menu to the Windows GUI. 329 - we now correctly close our logfile at the end of a run. 330 - various minor html documentation changes for IE6 beta viewing. 331 - minor template changes for better viewing in Opera and IE6 beta. 332 - standardized all documentation to use "AmphetaDesk" and not 333 any derivatives there of (like "amphetaDesk" or "Amphetadesk"). 334 - first attempt at Macintosh GUI has been committed. 335 - added screenshots and pirillo's custom skin to documentation. 336 - added the bottom navigation bar to docs to match ui templates. 337 - added NewsIsFree.com, Sherch.com and Network54.com to finding_more.htm. 338 339 3400.91 (released July 2nd, 2001) 341 - fixed bug where we wouldn't close if our child process was still 342 hanging around (caused by forking to run a browser different than 343 the default and then not killing the bastard). 344 - fixed a silly bug that stopped encoded characters in a URL from 345 being accepted as part of a typed website address for the 346 "add an unknown channel" feature. this fix makes 347 NewsIsFree.com integration possible (and nifty!). 348 - AmphetaDesk::AmphetaDesk no longer crashes when Opera has been set as the 349 default browser (it worked fine when the path to Opera was 350 specified in mySettings.xml). The bug was caused by Opera's 351 reliance on Multiple Document Interface (or so some more 352 knowledgable people have told me). 353 - finally stopped resizing in the Windows gui. 354 - added right click menu to the systray icon for the Windows gui. 355 - added "refresh channels" and "open window" to the systray 356 icon for the Windows gui. and "exit" too, but that's boring. 357 - fixed some minor template problems with new channel listings. 358 - fixed a minor template form issue with Mozilla. 359 - changed the default letter to "0" in the "add a channel" 360 page. that just makes more sense, since it's first in our nav. 361 - updated the three master channel lists. 362 - fixed bug in version check code that would get confused with 363 different types of line returns in the Macintosh version. 364 - we now check for duplicate entries in the "add a channel" list 365 based on xml url, not the title as we had previously done. this 366 fixes an obscure bug where channels with the same name would 367 be lumped (and by default, checked) into one entry. 368 - stderr is now redirected to our logfile. we also sleep after 369 spitting out any message for 10 seconds so that the DOS 370 window on Windows doesn't disappear too quickly. 371 - moved most of the divider lines into the respective routines. 372 - added a lot more logging information to help debug. 373 - added an error message for when the webserver dies. this lets 374 the Windows 2000 people know what the problem is and that we 375 know about it. 376 - in our &process_initial_request routine, we know check to see 377 if $url is defined before sending the results back. if $url 378 is undefined, we set it to the main page of AmphetaDesk::AmphetaDesk (which 379 should work around some random browser idiocies when it actually 380 makes a request to the server, but a url can't be determined). 381 - server timeouts have been removed from &head and &get, as well 382 the timeout was lowered from 20 seconds to 10 seconds. 383 - we now print out the remote server headers if it doesn't contain 384 Content-Length or Last-Modified headers. that's just weird. 385 - Added $TEMPLATE->{total_my_channels}, $TEMPLATE->{total_channel_items}, 386 and $TEMPLATE->{total_channels} which just provide various counts. 387 Find more information in the skinning.htm documentation. 388 - Some minor template changes after usability testing - removed some 389 of the more obscure terms, added some more whitespace, and duplicated 390 the navigation at the bottom of the page. Eventually, they'll be a 391 template that will remove all this "helpful" crap for people who 392 know it all. 393 - Reduced the head() request to 512 bytes, instead of 2096. 394 - Added {app}->{url} into all HTTP User-Agent lines. 395 - Our checks for server headers in head() are now case insensitive. 396 397 3980.90 (released May 29th, 2001) 399 - added UTF-8 character encoding meta tag to all XHTML documents, 400 thanks to Karl Ove Hufthammer for bringing this to us. 401 - template variables that were specifically used in the list_item 402 pages are now prefaced with "list_"... this is to prevent 403 confusion about template variables having the same name, 404 but different meanings based on what page was being shown. 405 - fixed <link_target>. instead of undef'ing, it defaults to 406 "_blank". if someone wants links to open in the same window, 407 we set it to "_parent". that's a good solution. yeah. 408 - the settings <gui> was moved into <names>. it makes more sense. 409 - 'echofactor' removed from the "finding_more.htm" page. 410 - the 'www' directory has been renamed to 'templates'. 411 - "news and update" page added to the documentation. the 412 matching rss feed added to the default channel lists. 413 - <added> added to the service lists - in conjunction, we now show 414 channels which have been added in the past month in a different 415 background color, based on this value. 416 - <link_target> added to user preferences. 417 - More entries added to the finding_more.htm docs. 418 - Template changes: channel_title.html is now called 419 channel_header.html. likewise, channel_footer.html is now displayed 420 only if it exists. All template filenames have been renamed to 421 .html, and channel_list_item_new.html has been added (which is 422 displayed if the currently nonexistant <added> tag is newer than a 423 month). There has also been tons of template variable changes, as 424 well as the addition of a rather mediocre skinning.htm to the 425 documentation. 426 - Fixed bug where network timeouts would happen twice. 427 - Added mySettings.xml workaround for Netscape and other browsers that 428 don't automatically open up - the user can now enter a full file 429 path of the browser, and we'll attempt to open that app, while 430 passing it the URL requested. 431 - mySettings.xml frontend has been integrated and related 432 documentation has been added (xml_my_settings.htm). 433 - Morbus, being bored one day, looked at every single line of 434 code all over again, and tweaked and hemmed and hawed. tons 435 of myriad comment updatings, space cleansing, and so forth. 436 - We've added a Timeout of .1 second to our internal webserver, The 437 Timeout will ensure that the webserver is nonblocking (moving on in 438 the infinite loop after 1/10 second), which helps the GUI listen for 439 requests. 440 - We now override xml::simple's xmldeclaration with our own, which 441 solves the xml syntax error with [version='1'] when it should 442 be [version="1.0"]. 443 - Error messages and name related data that was hardcoded has been 444 moved to its $SETTINGS equivalents for better customization. 445 Eventually error messages should live in mySettings.xml as well, 446 but that will come later. 447 - Because of the improved $SETTINGS configuration, we now have 448 better error checking for missing files (like the various 449 template files and myChannels.opml, etc.). 450 - The logfile is now opened again in the main script - only the 451 filehandle is referenced in Miscellaneous.pl. Our problem with 452 the log not being written because of a crash was because we 453 didn't autoflush the buffer in our old code. This is fixed. 454 - Tons of variable name changes in line with improved $SETTINGS 455 and $TEMPLATE changes - the whole thing has basically been redone 456 for better support of mySettings.xml and distribution power. 457 - One channel bug resolved (we still need to check some of the 458 uninit'd values that seem to pop up every now and then). 459 - Added the tidy_house() routine to clean out old channel files 460 - files_and_dirs.htm added to documentation. 461 - Tons of minor documentation fixes and additions. 462 - Micropayment links secretly added. Let's see if they'll notice. 463 - Turned (back) on the service list download - if the recent channels 464 list hasn't been updated for a week, we check for a new one. If it 465 doesn't exist, we download it (which allows us to not ship that at 466 the expense of a longer first startup for users). 467 - Only newly added channels are downloaded from the "add a channels" 468 screen now - previously, we would recheck all our myChannels. 469 - Artistic license added to docs. 470 - Because the XML parser has been nicely tested and the only errors 471 that show up are due to mismatched tags, we no longer spit out 472 xml error messages to the user, we just send them to the log. 473 - We now display an error message when there are no channels to display 474 on the initial page (ie. all channels timed out and no local files). 475 - The version check actually works now. 476 - ¬e split up into ¬e/&gui_note. 477 - Various default channel changes, including the removal of 478 The Motley Fool and the addition of Lockergnome... 479 480 4810.24 (released March 19th, 2001) 482 - chose an almost entirely new set of default channels. 483 - fixed bug where numerically named services would never show. 484 - a simple error message is now displayed when no channels exist 485 under a chosen letter in the "add a channel" page. 486 - fixed bug where our parse_template routine thought that a "0" 487 was a nonexistant value, even though it could be (ie. a "0" could 488 mean that we want to see all services matching a number.) 489 - stuck the "display_home_page" routine back where it belongs, but 490 still as a routine. reasoning being it's the only block of code 491 called more than once in the main file, and it'd be lonely being 492 the only routine at the bottom of the file. 493 - documentation updated to match new <header> block within service 494 list, as well as to be more organized and crosslinked. 495 - cleanup changes to ServiceMaintenance.pl to make it more useful. 496 - added timeout setting using IO::Select of 20 seconds. this combat 497 slow networks, and should fix Geomisk's nephew's crappy connection. 498 - documentation can now be served/read by the webserver. 499 - "add channel from url" feature has been added. 500 - the large channel list is no longer loaded when people go 501 to "My Channels" and delete a channel (this saves a few seconds 502 if the user hadn't requested to see the channel list earlier). 503 - "xmlUrl" and "htmlUrl" from myChannels.opml have been changed 504 to "xmlurl" and "htmlurl" respectively. our code will read both 505 but only write the lowercase versions. 506 - naming.htm added to documentation. 507 - history.htm added to the documentation, as well as documentation 508 links added to the default templates. Just integrating help. 509 - removed Red Herring from myChannelsDefault.opml. 510 511 5120.23 (released March 6th, 2001) 513 - fixed stupid misspelling in check_version. 514 - removed all global variable passing. 515 - program name is now a variable (and is now used in all socket calls). 516 - channel downloading within download_my_channels is now more 517 informative, and allows us to more easily troubleshoot missing 518 channels (and dead/failing ones). 519 - the "unlink" on the filename has been secured, since technically 520 it's outside data (people could modify the myChannels.opml). We 521 leave the unlinks on the log file deletions alone though, since 522 the directory comes from Cwd and the filename internally. 523 - invalid xml entities/characters are now encoded when the channel 524 fails to be loaded the first time around. this should fix almost 525 all "invalid entity" errors (hopefully). there will still be 526 errors concerning missing tags, but we don't care about those. 527 - make_valid_xml moved into Miscellaneous.pl. 528 - large channel lists added, along with alphabetical breakdowns by page. 529 the current channel lists are not all that we know of on the net, but 530 enough to be a proof of concept. the list will be expanded in the 531 future. 532 - scriptingNews regexps are now eval'd. 533 - Development moved to SourceForge. 534 - ServiceMaintenance.pl added - creates and maintains service lists. 535 - "xml_services_lists.htm" added to documentation. 536 - "xml_my_services.htm" added to documentation. 537 - removed "text" from myChannels.opml - it was a throwback to 538 Winer's mySubscriptions.opml, and has been replaced with "title". 539 - we now add "&go=1" onto the end of the delete url's so that 540 IE 5.5 on the PC won't think that it should display an 541 xml file because of the extension in "?del=filename.xml". The 542 "&go=1" is ignored by AmphetaDesk::AmphetaDesk. 543 - fixed bug where "weekdayword" and "weekdaywordabbr" were never 544 being correctly set. this eventually caused undef errors in 545 &unencode_some_html and &strip_newlines_and_tabs. 546 - channels that have no items to display are no longer 547 displayed (previously, we saw just the title of the channel). 548 - make_valid_xml improved with better fixing for the <xml> 549 statement not being on the first line of the passed data. 550 - all empty elements within the channel xml are now suppressed 551 via &load_channel_data - this should fix some rather random, 552 but confusing bugs (and probably introduce some more, but hey...) 553 - new logo and slightly larger globe added. all images compressed. 554 - &load_channel_data has been added - this understands both 555 raw xml data, as well as a filename... likewise, make_valid_xml 556 understands either raw xml data, or a filename. 557 - delete_channels now removes the filename from data/channels. 558 - delete references channel filename as opposed to xml-url. 559 - more html changes - icon key is now in header. 560 - fixed the stupid logic error in this file. 561 562 5630.22 (released January 21st, 2001) 564 - unencode_certain_html added - converts "/lt/gt to "<>. 565 - changed the delete code to reference xmlUrl and not htmlUrl. 566 - changed the delete code from "delete.ahtml?del=" to 567 "my_channels.ahtml?del=" - the main reason for this is that 568 delete.ahtml will never exist as a template file, so we 569 shouldn't define it. 570 - tons of html changes to clean the ui. 571 - added delete from home page feature. 572 - lots of routines now use the global variables instead of passing. 573 - download_channels_in has been renamed to download_my_channels. 574 - loading of the channel list is now cached for quicker access. 575 - lots of new routines to make the script even more blackboxed: 576 create_channel_filename, load_my_channels, sort_my_channels_by_filename, 577 strip_newlines_and_tabs, load_channel_list, and write_my_channels. 578 - comment and code cleaning - general gold plating. 579 - merged myChannels into the big list and checked them off. 580 - fixed the Netscape/Mozilla bug where POST requests would 581 never be properly resolved (due to erroneous content-length). 582 583 5840.21 (released January 15th, 2001) 585 - we now only load filenames that are defined in myChannels.opml. 586 - make_valid_xml no longer dies if the file can't be opened. 587 - < and > are changed to < and > in our item descriptions 588 so that anyone who properly encodes HTML will show correctly. 589 - Our template channel items are now undef'ed each time through 590 to fix a bug where a <description> from item 1, would appear 591 on all further items that didn't have a <description>. 592 - Removed flocking. Really only a one user system. 593 - Fixed bug where the submit button became a new channel. 594 - Fixed bug with Windows freezing / force-quitting. 595 - Downloading after channel add has occurs after the page displays, 596 not before (as before). This is so the page displays without an 597 overly lengthy delay. This simulates "background downloading". 598 - Cleaned up some uninit's when the channel $html wasn't there. 599 - Content-length and POST changed so more browsers will work. 600 This has currently been tested on: NS 4.7.x (Mac), IE 5 (Mac), 601 iCab 2.x (Mac) and IE 5 (Win). 602 - Timeout for socket connection has been moved to 15 seconds. 603 People like me who have 40 channel subscriptions will wait 604 forever (quite rightly so) to download them all. Non - 605 responding sites are a pain waiting to timeout. 606 607 6080.20 (released January 13th, 2001) 609 - Add and remove channel code has been added. 610 - myChannelsDefault is no longer referenced in the code. 611 - Channel list is now updated once a day. 612 - Globe and XML image added to HTML templates. 613 - Filenames are now part of the OPML file. 614 - HTML and XML urls are now available in channel title display. 615 - Timeouts for downloads changed to 30 seconds. 616 - Tweaking of ¬e output - lot cleaner output to the user, 617 and more helpful output to our log file. How slow is this? 618 619 6200.17 (released January 12th, 2001) 621 - Channels and lists are only downloaded if the saved versions 622 are older than 1 hour. This makes the script even quicker. 623 - GET/POST now properly parsed for form data. 624 - List items and channel news are stripped of newlines and tabs. 625 - channel list is optimized but it's kludgey. needs fixing. 626 - .opml and .xml added to content-type extensions. 627 - HTML cleaned up a bit, and section names finalized. 628 - The old log is deleted before a new log starts. 629 - &mirror now supports modification dates and works so much nicer. 630 - Version checking is now mirrored. 631 - The main $socket loop is now autoflushed. 632 - ¬e and &error moved to Miscellaneous.pl. 633 - Date stamp on logging shortened, since we overwrite each run. 634 - All code switched to the rewritten LWP routines. 635 - All routines are now labeled with what they can return, as well 636 as the conditions for those situations. Most routines are non-fatal; 637 if something bad happens, then the script will just keep on going. 638 - The only routines that can kill the script are the parse_template 639 routine (cos if we can't parse templates, we won't be able to show 640 anything to the user), and the error routine (whose sole purpose is 641 to kill the script anyways). 642 - Timeouts during downloads are set to 45 seconds. 643 644 6450.16 (released January 9th, 2001) 646 - All LWP functions rewritten using non-module code (besides 647 IO::Socket). This was mainly because a *compiled* runtime 648 on the Mac would fail on every LWP routine besides get(). 649 - Channel download is now sorted alphabetically. 650 - Channel news display is now sorted by last modified. 651 652 6530.15 (released January 7th, 2001) 654 - Removed unneccesary junk from the OPML. 655 - Versioning code has been added. 656 - Finalized logo appearance. 657 - Fixed the annoying corrupted image problem for Windows. 658 - We now use mirror() instead of getstore() for downloading. 659 - Cleaned up comments for parse_file. 660 - Directories now skipped when searching for channels. 661 - Initialize.pl changed to Miscellaneous.pl. 662 - We now check to see if all our directories exist. 663 - Delimiter choosing cleaned up. 664 - Removed tainting. 665 - Port set to 8888 to reduce conflicts. 666 - OS specific libraries added. 667 - Stupid delimiter error fixed. 668 - Library handling changed a bit. 669 - Quick code to display all news headines added. 670 - Quick code to download all channels in the subscriptions. 671 - Simple, default mySubscriptionsDefault.opml added. 672 - Added simplistic &error, which is just a die-ing shell to ¬e. 673 - WebServer.pl and Initialize.pl appear. 674 675 6760.1 (released January 5th, 2001) 677 - First public release. 678 679 680