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; &acute's are now converted to apostraphes
282    (search for &acute 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  - &note split up into &note/&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 &quot/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  - &lt; and &gt; 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 &note 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  - &note 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 &note.
673  - WebServer.pl and Initialize.pl appear.
674
675
6760.1 (released January 5th, 2001)
677  - First public release.
678
679
680